|
|
|
@ -60,7 +60,6 @@ const onUpdateSort = (data: { prop: string; order: "ascending" | "descending" | |
|
|
|
columnSortData.delete(data.prop); |
|
|
|
} |
|
|
|
|
|
|
|
selectedMergeKeys.value=Array.from(columnSortData.keys()) |
|
|
|
getPageData(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -68,7 +67,7 @@ const onUpdateSort = (data: { prop: string; order: "ascending" | "descending" | |
|
|
|
const spanMap = computed(() => { |
|
|
|
const map = {} |
|
|
|
const pos = {} |
|
|
|
|
|
|
|
selectedMergeKeys.value=Array.from(columnSortData.keys()) |
|
|
|
// 按优先级排序的合并列,获取排序列 |
|
|
|
selectedMergeKeys.value.forEach((key, index) => { |
|
|
|
map[key] = [] |
|
|
|
@ -105,7 +104,7 @@ const spanMap = computed(() => { |
|
|
|
return map |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
// 支持合并表单 |
|
|
|
const objectSpanMethod = ({ row, column, rowIndex, columnIndex }) => { |
|
|
|
const key = column.property |
|
|
|
|
|
|
|
@ -152,7 +151,40 @@ const getPageData=async ()=>{ |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
const tableChildren = (field:string,dataList:any) => { |
|
|
|
let jieguo = "" |
|
|
|
if(Array.isArray(dataList)){ |
|
|
|
dataList.forEach((item) => { |
|
|
|
if(typeof(item)=="object"){ |
|
|
|
for (let key in item) { |
|
|
|
if (field == key){ |
|
|
|
if(jieguo!=""){ |
|
|
|
jieguo = jieguo+"<div style='width: 100%;height: 1px;border-bottom: 1px solid #EBEEF5; margin: 8px 0;'></div>"+item[key] |
|
|
|
}else{ |
|
|
|
jieguo = item[key] |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|
return jieguo |
|
|
|
} |
|
|
|
|
|
|
|
onMounted(()=>{ |
|
|
|
columnSortData.clear() |
|
|
|
//处理默认分组 |
|
|
|
if(props.viewSetup.form.title&&props.viewSetup.form.title.length){ |
|
|
|
props.viewSetup.form.title.forEach(ele => { |
|
|
|
if(props.viewSetup.form.sort==2){ |
|
|
|
columnSortData.set(ele, ""); |
|
|
|
}else{ |
|
|
|
columnSortData.set(ele,'DESC'); //默认desc |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
nextTick(()=>{ |
|
|
|
getPageData() |
|
|
|
}) |
|
|
|
@ -162,16 +194,13 @@ defineExpose({ |
|
|
|
groupColumnSearch |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
</script> |
|
|
|
<template> |
|
|
|
<div> |
|
|
|
<el-row :gutter="20"> |
|
|
|
<div id="special-table-container"> |
|
|
|
<el-row :gutter="20" > |
|
|
|
<el-table |
|
|
|
:data="tableDataList" |
|
|
|
:span-method="objectSpanMethod" |
|
|
|
@sort-change="onUpdateSort" |
|
|
|
:header-cell-class-name="setHeaderClass" |
|
|
|
border |
|
|
|
> |
|
|
|
<template v-for="item in columnsFilter" :key="item.id || item.label"> |
|
|
|
@ -210,14 +239,13 @@ defineExpose({ |
|
|
|
:label="item.label" |
|
|
|
:min-width="(item.label?.length || 2) * 15 + 30" |
|
|
|
header-align="center" |
|
|
|
sortable="custom" |
|
|
|
align="center" |
|
|
|
> |
|
|
|
<template #default="scope"> |
|
|
|
<template v-for="sunItem in item.children" v-if="item.pattern == 'table'"> |
|
|
|
<el-table-column v-if="sunItem.fieldClass == ''" :prop="sunItem.field" :label="sunItem.label" header-align="center" align="center" :min-width="readerColumnSun(sunItem)"> |
|
|
|
<el-table-column v-if="sunItem.fieldClass == ''" :prop="sunItem.field" :label="sunItem.label" header-align="center" align="center" :min-width="(sunItem.label?.length || 2) * 15 + 30"> |
|
|
|
<template #default="scopeChilder"> |
|
|
|
{{scopeChilder.row[item.field]}} |
|
|
|
<div v-html="tableChildren(sunItem.field,scopeChilder.row[item.field])"></div> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</template> |
|
|
|
@ -246,7 +274,6 @@ defineExpose({ |
|
|
|
config="" |
|
|
|
:min-width="(item.label?.length || 2) * 15 + 30" |
|
|
|
header-align="center" |
|
|
|
sortable="custom" |
|
|
|
align="center" |
|
|
|
> |
|
|
|
<template v-if="item.fieldClass == 'associatedForms'" #default="scope"> |
|
|
|
@ -270,7 +297,7 @@ defineExpose({ |
|
|
|
<el-pagination |
|
|
|
v-model:current-page="props.searchSend.page" |
|
|
|
v-model:page-size="pageSize" |
|
|
|
:page-sizes="[3, 9, 12, 30, 50, 100]" |
|
|
|
:page-sizes="[30, 50, 100]" |
|
|
|
:background="true" |
|
|
|
layout="total, sizes, prev, pager, next, jumper" |
|
|
|
:total="totalNum" |
|
|
|
|