From c95c78bfab9f707ace016cf0ae5a82748b961611 Mon Sep 17 00:00:00 2001 From: xhj Date: Tue, 23 Jan 2024 13:37:58 +0800 Subject: [PATCH] pgd --- .../renderer/combination/Combination.vue | 118 ++++++++++++------ src/views/sjzx/bomwh.vue | 2 +- 2 files changed, 82 insertions(+), 38 deletions(-) diff --git a/src/plugins/vxe-table/renderer/combination/Combination.vue b/src/plugins/vxe-table/renderer/combination/Combination.vue index b9c3b22..0913e18 100644 --- a/src/plugins/vxe-table/renderer/combination/Combination.vue +++ b/src/plugins/vxe-table/renderer/combination/Combination.vue @@ -232,23 +232,39 @@ export default { load () { const { renderParams, getI18n } = this const { $table, column } = renderParams - //修改筛选功能,显示可筛选数据内容 - // const visibleData = $table.data - // const { visibleData } = $table.getTableData() - // const visibleData = $table.data - - const { visibleData } = $table.getTableData() + const { fullData,visibleData } = $table.getTableData() const option = column.filters[0] const { checks } = option.data const colValMaps = {} const colValList = [] + + let data=fullData; + + const _filters=this.getAllFilters($table) + + let columnIndex=0; + if(option.data.index>1||!option.data.index){ + for (const item of _filters) { + if (item.columnName===column.field){ + columnIndex=item.index + break; + } + data=data.filter((data)=>item.checks.indexOf(data[item.columnName])>-1) + } + } + + //const { vals } = option.data + const vals=Object.keys(XEUtils.groupBy(visibleData, column.field)).map((val) => { + return val + }) + // 根据显示的数据,生成可搜索的列表 - visibleData.forEach((item, index) => { + data.forEach((item, index) => { const value = XEUtils.toString(XEUtils.get(item, column.property)) if (!colValMaps[value]) { const vItem = { key: index, - checked: checks.includes(value), + checked: option.checked?vals.includes(value):true, value, label: $table.getCellLabel(item, column) || getI18n('vxe.renderer.combination.empty') } @@ -262,33 +278,9 @@ export default { }) // 将相关的信息记录 this.column = column - this.option = option - this.colValList = colValList - console.log(this.colValList) - this.valList = colValList.sort(function(a, b) { - // 先按照 value.length() 排序升序 - if (a.value.length < b.value.length) { - return -1; - } - else if (a.value.length > b.value.length) { - return 1; - } - else { - // 如果 value.length() 相等,则按照 value 排序升序 - if (a.value < b.value) { - return -1; - } - else if (a.value > b.value) { - return 1; - } - else { - return 0; - } - } - }); - + this.valList = colValList this.hasFilter = $table.isFilter(column.property) }, getI18n (key, args) { @@ -323,18 +315,71 @@ export default { confirmFilterEvent (evnt) { const { renderParams, option, valList } = this const { data } = option - const { $panel } = renderParams + const { $panel,$table,column } = renderParams + const filters=$table.getCheckedFilters() + const _filters=[] + filters.forEach((filter)=>{ + filter.datas.forEach((item)=>{ + _filters.push(item) + }) + }) data.f1 = '' data.f2 = '' data.fType1 = '' data.fType2 = '' data.sMenu = '' data.checks = valList.filter(item => item.checked).map(item => item.value) + data.columnName=column.field + data.valList=valList + + if (!data.index){ + data.index=this.getMaxIndex($table)+1 + }else{ + const { fullData,visibleData } = $table.getTableData() + let _data=fullData; + for (let i=0;iitem.checks.indexOf(data[item.columnName])>-1) + } + //除最后一次筛选列以外的增加算法 + if (data.index!==this.getMaxIndex($table)){ + for (let j=data.index;j<_filters.length;j++){ + const item=_filters[j]; + const _column=$table.getColumnByField(item.columnName) + const option = _column.filters[0] + _data.forEach(d=>{ + if (option.data.checks.indexOf(d[item.columnName])===-1){ + if (option.data.valList.indexOf(d[item.columnName])===-1){ + option.data.checks.push(d[item.columnName]) + } + } + }) + $table.setFilter(item.columnName,[option]); + } + } + + } + // 调佣筛选面板的 changeOption 方法,用于改变当前选项 $panel.changeOption(evnt, true, option) // 最后触发确认筛选按钮 $panel.confirmFilter(evnt) }, + + getAllFilters($table){ + const filters=$table.getCheckedFilters() + const _filters=[] + filters.forEach((filter)=>{ + filter.datas.forEach((item)=>{ + _filters.push(item) + }) + }) + return _filters; + }, + getMaxIndex($table){ + const _filters=this.getAllFilters($table) + return XEUtils.max(_filters,(item)=>item.index)?.index||0 + }, resetFilterEvent (evnt) { const { renderParams } = this const { $panel } = renderParams @@ -634,7 +679,7 @@ export default { font-size: 12px; } .vxe-tmpl-filter-combination { - width: 340px; + width: 240px; user-select: none; .combination-search { padding: 0 10px 0 30px; @@ -654,7 +699,6 @@ export default { .combination-search-list-body { .vxe-list--virtual-wrapper { height: 120px; - width: 340px; } } .combination-search-item { @@ -664,7 +708,7 @@ export default { } .combination-search-checkbox { .vxe-checkbox--label { - max-width: 340px; + max-width: 140px; } } .combination-search-body-empty { diff --git a/src/views/sjzx/bomwh.vue b/src/views/sjzx/bomwh.vue index ff89063..8237cf0 100644 --- a/src/views/sjzx/bomwh.vue +++ b/src/views/sjzx/bomwh.vue @@ -1165,7 +1165,7 @@ export default { }, bomClick(){ - if (this.queryParam.cbbm === '') { + if (this.queryParam.dcch === '') { this.$message.warning('选择船只编号') return }