export default { initViewColumns(isReset) { //初始化自定列配置 if (isReset) { this.resetViewColumns(); } if (!this.orginColumnFields) { this.orginColumnFields = this.columns.map((c) => { return c.field; }); } this.viewColumns = this.columns .filter((c) => { return !c.hidden && !c.render; }) .map((c) => { return { field: c.field, title: c.title, show: !c.hidden }; }); if (isReset) { return; } this.getCacheViewColumn(); }, getViewCacheKey(){ return 'custom:column'+this.table.name; }, getCacheViewColumn() { try { let columns = localStorage.getItem(this.getViewCacheKey()); if (!columns) return; columns = JSON.parse(columns); if (columns.some(x=>{return !this.viewColumns.some(c=> {return c.field==x.field})})|| this.viewColumns.some(x=>{return !columns.some(c=> {return c.field==x.field})}) ) { localStorage.removeItem(this.getViewCacheKey()) return; } let sortTableColumns = []; //弹出框的列 let _viewColumns = []; columns.forEach((column) => { let _column = this.viewColumns.find((c) => { return c.field == column.field; }); if (_column) { _column.show = column.show; _viewColumns.push(_column); } let tableColumn = this.columns.find((c) => { return c.field == column.field; }); if (tableColumn) { tableColumn.hidden = !column.show; sortTableColumns.push(tableColumn); } }); //重新排版弹出框自定义列 let otherColumns = this.viewColumns.filter((c) => { return !_viewColumns.some((s) => { return c.field == s.field; }); }); //重新排版弹出框自定义列 _viewColumns.push(...otherColumns); this.viewColumns.splice(0); this.viewColumns.push(..._viewColumns); this.sortViewColumns(sortTableColumns); } catch (error) { console.log('设置默认自定义列异常:' + error.message); } }, sortViewColumns(sortColumns) { if (sortColumns.length) { let hiddenColumns = this.columns.filter((c) => { return !sortColumns.some((s) => { return c.field == s.field; }); }); sortColumns.push(...hiddenColumns); this.columns.splice(0); this.columns.push(...sortColumns); } }, resetViewColumns() { if (!this.orginColumnFields) { return; } let _columns = []; this.orginColumnFields.forEach((x) => { _columns.push( this.columns.find((c) => { return c.field == x; }) ); }); let otherColumns = this.columns.filter((c) => { return !this.orginColumnFields.some((s) => { return c.field == s; }); }); _columns.push(...otherColumns); this.columns.splice(0); this.columns.push(..._columns); }, showCustomModel() { if (!this.viewColumns.length) { this.initViewColumns(); } this.viewColumnsClone = JSON.parse(JSON.stringify(this.viewColumns)); this.viewModel = true; }, closeCustomModel() { this.viewModel=false; if (this.checkColumnChanged()) { this.viewColumns = JSON.parse(JSON.stringify(this.viewColumnsClone)); } }, checkColumnChanged() { return ( JSON.stringify(this.viewColumns) != JSON.stringify(this.viewColumnsClone) ); }, saveColumnConfig() { let hasShowColumn = this.viewColumns.some((x) => { return x.show; }); if (!hasShowColumn) { return this.$message.error('至少选择一列显示'); } this.viewModel = false; if (this.checkColumnChanged()) { let sortColumns = []; this.viewColumns.forEach((column) => { let _column = this.columns.find((c) => { return c.field == column.field; }); if (_column) { _column.hidden = !column.show; sortColumns.push(_column); } }); this.sortViewColumns(sortColumns); } try { localStorage.setItem(this.getViewCacheKey(), JSON.stringify(this.viewColumns)); } catch (error) { console.log('获取自定义列异常:' + error.message); } } };