Browse Source

修复table类型字段的导出

han_v2
han2015 4 months ago
parent
commit
fcda0fd663
  1. 10
      src/components/DesignForm/app/index.vue
  2. 16
      src/components/DesignForm/exportPanel.vue

10
src/components/DesignForm/app/index.vue

@ -993,7 +993,7 @@ const getPageData = () => {
// //
function doImportTableData(){ function doImportTableData(){
dynamicVNode.value=h(importPanel,{ dynamicVNode.value=h(importPanel,{
fields:props.fieldsDetailList, fields:props.fieldsDetailList.filter(val=>val.type!=="table"),
formId:props.versionid, formId:props.versionid,
commitFunc:()=>{ commitFunc:()=>{
getPageData() //table getPageData() //table
@ -1033,7 +1033,8 @@ function doExportTableData(){
let maxline=0; let maxline=0;
// //
for (let val of fields){ for (let val of fields){
line.push((item[val.field] as string).replaceAll(",",",")) if(typeof(val)==="string") line.push((item[val.field] as string).replaceAll(",",","))
else line.push(item[val.field])
} }
// //
@ -1080,7 +1081,7 @@ function doExportTableData(){
}) })
// //
if((array.length-1)!==datas.total) alert(`实际数据总量${datas.total}, 导出数据总量${array.length}`) if((array.length-1)!==datas.total) alert(`导出记录数${datas.total}, 共计${array.length-1}`)
const filename= props.pickAppMenu.label+".csv" const filename= props.pickAppMenu.label+".csv"
const csvString = array.join('\n'); const csvString = array.join('\n');
@ -1100,7 +1101,8 @@ function doExportTableData(){
} }
dynamicVNode.value=h(exportPanel,{ dynamicVNode.value=h(exportPanel,{
fields:columnsFilter.value, fields:columnsFilter.value.filter((item)=>item.pattern!=="table"),
subtabs:columnsFilter.value.filter((item)=>item.pattern==="table"),
subFields:subTableFieldsFilter.value.fields, subFields:subTableFieldsFilter.value.fields,
commitFunc:exportFunc, commitFunc:exportFunc,
closeFunc:()=>dynamicVNode.value=null closeFunc:()=>dynamicVNode.value=null

16
src/components/DesignForm/exportPanel.vue

@ -4,6 +4,7 @@ import { ElDialog } from 'element-plus';
const props = withDefaults(defineProps<{ const props = withDefaults(defineProps<{
fields:any[], fields:any[],
subtabs:any[],
subFields:any[], subFields:any[],
commitFunc:(fields:{field:string,label:string}[],subs:{table:string,field:string,label:string}[])=>void, commitFunc:(fields:{field:string,label:string}[],subs:{table:string,field:string,label:string}[])=>void,
closeFunc:()=>void, // closeFunc:()=>void, //
@ -14,15 +15,19 @@ const checkList=ref<string[]>([])
// //
const subCheckList=ref<string[]>([]) const subCheckList=ref<string[]>([])
//
const subTables=ref<string[]>([])
onMounted(()=>{ onMounted(()=>{
props.fields.forEach((val)=>{ props.fields.forEach((val)=>{
if (val.attribute===''){ if (val.attribute==='' && val.type!=""){
checkList.value.push(val.field) checkList.value.push(val.field)
} }
}) })
// //
props.subFields.forEach((val)=>{ props.subFields.forEach((val)=>{
subCheckList.value.push(val.field) subCheckList.value.push(val.field)
}) })
}) })
@ -37,6 +42,7 @@ function handleData(){
// //
props.subFields.forEach((val)=>{ props.subFields.forEach((val)=>{
if(subCheckList.value.includes(val.field)){ if(subCheckList.value.includes(val.field)){
sub.push(val) sub.push(val)
} }
@ -55,10 +61,10 @@ function handleData(){
</template> </template>
</el-checkbox-group> </el-checkbox-group>
<div v-if="props.subFields.length>0" style="margin-top: 40px;"> <div v-for="tab in subtabs" style="margin-top: 40px;">
<h3>请选择子表导出的字段</h3> <h3>{{ tab.label }} : 表导出的字段</h3>
<el-checkbox-group v-model="subCheckList"> <el-checkbox-group v-model="subCheckList">
<el-checkbox v-for="item in props.subFields" :key="item.field" :label="item.label" :value="item.field" /> <el-checkbox v-for="item in props.subFields.filter(val=>val.table===tab.field)" :key="item.field" :label="item.label" :value="item.field" />
</el-checkbox-group> </el-checkbox-group>
</div> </div>

Loading…
Cancel
Save