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); 
 | 
    } 
 | 
  } 
 | 
}; 
 |