Files
vxe-table/lib/excel/src/excel.js
xuliangzhan 116af0e1bf update
2019-08-07 18:54:47 +08:00

221 lines
5.3 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _table = _interopRequireDefault(require("../../table"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var methods = {};
var excelEditConfig = {
trigger: 'dblclick',
mode: 'cell',
showIcon: false,
showStatus: false
};
Object.keys(_table.default.methods).forEach(function (name) {
methods[name] = function () {
return this.$refs.xTable[name].apply(this.$refs.xTable[name], arguments);
};
});
var excelContextMenu = {
header: {
options: [[{
code: 'exportAll',
name: '隐藏列'
}, {
code: 'exportAll',
name: '取消所有隐藏'
}]]
},
body: {
options: [[{
code: 'clip',
name: '剪贴(Ctrl+X)'
}, {
code: 'copy',
name: '复制(Ctrl+C)'
}, {
code: 'paste',
name: '粘贴(Ctrl+V)'
}], [{
code: 'insert',
name: '插入'
}, {
code: 'remove',
name: '删除'
}, {
code: 'clearData',
name: '清除内容(Del)'
}], [// {
// code: 'filter',
// name: '筛选',
// children: [
// {
// code: 'clearFilter',
// name: '清除筛选'
// },
// {
// code: 'filterSelect',
// name: '按所选单元格的值筛选'
// }
// ]
// },
{
code: 'sort',
name: '排序',
children: [{
code: 'clearSort',
name: '清除排序'
}, {
code: 'sortAsc',
name: '升序'
}, {
code: 'sortDesc',
name: '倒序'
}]
}], [{
code: 'exportAll',
name: '导出数据.csv'
}]]
}
};
var _default = {
name: 'VxeExcel',
props: _objectSpread({
columns: Array
}, _table.default.props),
data: function data() {
return {
excelStore: {
uploadRows: []
}
};
},
computed: {
tableProps: function tableProps() {
var $props = this.$props,
editConfig = this.editConfig;
return _objectSpread({}, $props, {
border: true,
resizable: true,
showOverflow: null,
contextMenu: excelContextMenu,
mouseConfig: {
selected: true,
checked: true
},
keyboardConfig: {
isArrow: true,
isDel: true,
isTab: true,
isCut: true,
isEdit: true
},
editConfig: Object.assign({}, excelEditConfig, editConfig),
optimization: {
scrollX: {
gt: 100,
oSize: 6,
rSize: 20
},
scrollY: {
gt: 100,
oSize: 30,
rSize: 80
}
}
});
}
},
watch: {
columns: function columns(value) {
this.loadColumn(value);
}
},
mounted: function mounted() {
var columns = this.columns;
if (columns && columns.length) {
this.loadColumn(this.columns);
}
},
render: function render(h) {
var $slots = this.$slots,
$listeners = this.$listeners,
tableProps = this.tableProps;
return h('vxe-table', {
class: 'vxe-excel',
props: tableProps,
on: _objectSpread({}, $listeners, {
'context-menu-click': this.contextMenuClickEvent
}),
ref: 'xTable'
}, $slots.default);
},
methods: _objectSpread({}, methods, {
contextMenuClickEvent: function contextMenuClickEvent(_ref, evnt) {
var menu = _ref.menu,
row = _ref.row,
column = _ref.column;
var $table = this.$refs.xTable;
var property = column.property;
switch (menu.code) {
case 'clip':
$table.handleCopyed(true, evnt);
break;
case 'copy':
$table.handleCopyed(false, evnt);
break;
case 'paste':
$table.handlePaste(evnt);
break;
case 'insert':
$table.insertAt({}, row);
break;
case 'remove':
$table.remove(row);
break;
case 'clearData':
$table.clearData(row, property);
break;
case 'clearFilter':
$table.clearFilter();
break;
case 'clearSort':
$table.clearSort();
break;
case 'sortAsc':
$table.sort(property, 'asc');
break;
case 'sortDesc':
$table.sort(property, 'desc');
break;
case 'exportAll':
$table.exportCsv({
isHeader: false
});
break;
}
}
})
};
exports.default = _default;