xhj 1 year ago
parent 066213c959
commit c95c78bfab

@ -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;i<data.index;i++){
const item=_filters[i];
_data=_data.filter((data)=>item.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 {

@ -1165,7 +1165,7 @@ export default {
},
bomClick(){
if (this.queryParam.cbbm === '') {
if (this.queryParam.dcch === '') {
this.$message.warning('选择船只编号')
return
}

Loading…
Cancel
Save