|
|
|
|
@ -4,7 +4,7 @@
|
|
|
|
|
:z-index="zIndex"
|
|
|
|
|
:value="isShow"
|
|
|
|
|
show-footer
|
|
|
|
|
title="特殊日期"
|
|
|
|
|
title="导出"
|
|
|
|
|
show-confirm-button
|
|
|
|
|
:width="defaultModalSize.width"
|
|
|
|
|
:height="defaultModalSize.height"
|
|
|
|
|
@ -26,9 +26,18 @@
|
|
|
|
|
<el-checkbox v-for="field in mainFields" :label="field.name" :key="field.id">{{ field.label }}</el-checkbox>
|
|
|
|
|
</el-checkbox-group>
|
|
|
|
|
|
|
|
|
|
<!-- <h4>存在子表单</h4>
|
|
|
|
|
<div v-for="field in relationsFields" :key="field.id" style="padding-left: 10px;">
|
|
|
|
|
<h5>{{ field.label }}</h5>
|
|
|
|
|
<template v-if="sub2ModelFields.length>0">
|
|
|
|
|
<h4>存在子表单</h4>
|
|
|
|
|
<el-checkbox :indeterminate="isIndeterminate2" v-model="checkAll2" @change="handleCheckAllChange2">全选</el-checkbox>
|
|
|
|
|
<div style="margin: 15px 0;"></div>
|
|
|
|
|
<el-checkbox-group v-model="selectedFields2" @change="handleCheckedFieldsChange2">
|
|
|
|
|
<el-checkbox v-for="(field,index) in sub2ModelFields" :label="field.name" :key="index">{{ field.label }}</el-checkbox>
|
|
|
|
|
</el-checkbox-group>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- <div v-for="(field,index) in sub2ModelFields" :key="index" style="padding-left: 10px;">
|
|
|
|
|
<h5>{{ field }}</h5>
|
|
|
|
|
|
|
|
|
|
</div> -->
|
|
|
|
|
</div>
|
|
|
|
|
@ -62,15 +71,20 @@ export default {
|
|
|
|
|
config: {
|
|
|
|
|
fields: []
|
|
|
|
|
},
|
|
|
|
|
sub2ModelFields:[],
|
|
|
|
|
fileName: `导出_${this.$moment().valueOf()}`,
|
|
|
|
|
selectedFields: [],
|
|
|
|
|
checkAll: false,
|
|
|
|
|
isIndeterminate: false,
|
|
|
|
|
//子表单
|
|
|
|
|
selectedFields2: [],
|
|
|
|
|
checkAll2: false,
|
|
|
|
|
isIndeterminate2: false,
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
computed: {
|
|
|
|
|
mainFields() {
|
|
|
|
|
return this.config?.fields?.filter(i => i.type !== 'relation')
|
|
|
|
|
return this.config?.fields?.filter(i => i.type !== 'relation' && i.type !== 'file')
|
|
|
|
|
},
|
|
|
|
|
relationsFields() {
|
|
|
|
|
return this.config?.fields?.filter(i => i.type === 'relation')
|
|
|
|
|
@ -79,19 +93,29 @@ export default {
|
|
|
|
|
methods: {
|
|
|
|
|
handleCheckedFieldsChange(value) {
|
|
|
|
|
let checkedCount = value.length;
|
|
|
|
|
this.checkAll = checkedCount === this.config?.fields?.length;
|
|
|
|
|
this.checkAll = checkedCount === this.mainFields?.length;
|
|
|
|
|
this.isIndeterminate = checkedCount > 0 && checkedCount < this.config?.fields?.length;
|
|
|
|
|
},
|
|
|
|
|
handleCheckAllChange(val) {
|
|
|
|
|
this.selectedFields = val ? this.config.fields?.map(i => i.name) : [];
|
|
|
|
|
this.selectedFields = val ? this.mainFields?.map(i => i.name) : [];
|
|
|
|
|
this.isIndeterminate = false;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
handleCheckedFieldsChange2(value) {
|
|
|
|
|
let checkedCount = value.length;
|
|
|
|
|
this.checkAll2 = checkedCount === this.sub2ModelFields.length;
|
|
|
|
|
this.isIndeterminate2 = checkedCount > 0 && checkedCount < this.sub2ModelFields.length;
|
|
|
|
|
},
|
|
|
|
|
handleCheckAllChange2(val) {
|
|
|
|
|
this.selectedFields2 = val ? this.sub2ModelFields?.map(i => i.name) : [];
|
|
|
|
|
this.isIndeterminate2 = false;
|
|
|
|
|
},
|
|
|
|
|
async getFields(id) {
|
|
|
|
|
try {
|
|
|
|
|
const { customModel } = await fieldConfig(id)
|
|
|
|
|
this.config = customModel
|
|
|
|
|
this.config.fields.forEach(i => {
|
|
|
|
|
i.name = 'data.' + i.name
|
|
|
|
|
i.name = i.name
|
|
|
|
|
})
|
|
|
|
|
this.fileName = `${customModel.name}_${this.$moment().valueOf()}`
|
|
|
|
|
} catch (err) {
|
|
|
|
|
@ -140,18 +164,33 @@ export default {
|
|
|
|
|
return parts.join('&');
|
|
|
|
|
};
|
|
|
|
|
try {
|
|
|
|
|
let export_fields = {}
|
|
|
|
|
this.selectedFields?.forEach(field => {
|
|
|
|
|
let key = field
|
|
|
|
|
export_fields[key] = this.config?.fields?.find(j => j.name === key)?.label
|
|
|
|
|
})
|
|
|
|
|
await download('/api/oa/flow/list-groups', 'get', {
|
|
|
|
|
...this.select,
|
|
|
|
|
type: this.$route.params.type,
|
|
|
|
|
is_export: 1,
|
|
|
|
|
export_name: this.fileName,
|
|
|
|
|
export_fields
|
|
|
|
|
}, this.fileName+'.xlsx', paramsSerializer)
|
|
|
|
|
let export_fields = {
|
|
|
|
|
'no':'编号'
|
|
|
|
|
}
|
|
|
|
|
if((this.selectedFields && this.selectedFields.length>0) || (this.selectedFields2 && this.selectedFields2.length>0)){
|
|
|
|
|
this.selectedFields?.forEach(field => {
|
|
|
|
|
let key = field
|
|
|
|
|
export_fields[key] = this.config?.fields?.find(j => j.name === key)?.label
|
|
|
|
|
})
|
|
|
|
|
if(this.selectedFields2 && this.selectedFields2.length>0){
|
|
|
|
|
this.selectedFields2?.forEach(field => {
|
|
|
|
|
let key = field
|
|
|
|
|
export_fields[key] = this.sub2ModelFields?.find(j => j.name === key)?.label
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await download(`/api/oa/flow/list/${this.$route.params.type}`, 'get', {
|
|
|
|
|
...this.select,
|
|
|
|
|
type: this.$route.params.type,
|
|
|
|
|
is_export: 1,
|
|
|
|
|
export_name: this.fileName,
|
|
|
|
|
export_fields
|
|
|
|
|
}, this.fileName+'.xlsx', paramsSerializer)
|
|
|
|
|
}else{
|
|
|
|
|
// this.$Message.warning("请选择需要导出的字段")
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} catch (err) {
|
|
|
|
|
console.error(err)
|
|
|
|
|
}
|
|
|
|
|
@ -164,7 +203,7 @@ export default {
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"select.custom_model_id"(newVal) {
|
|
|
|
|
this.getFields(newVal)
|
|
|
|
|
// this.getFields(newVal)
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|