import { FormSchema } from '@/components/Form'; import { BasicColumn } from '@/components/Table'; import { useDictStore } from '@/store/modules/dict'; import { ref } from 'vue' const dictStore = useDictStore(); const reformTasksDicts: Array = dictStore.selectDictArray("reformTasks") const roomDicts: Array = dictStore.selectDictArray("superLeader") import { getWorkPlaceTypeDict, getContactorDict, getUserDictByRoles } from '../initiatesProjects/initiatesProjects.api' export const columns: BasicColumn[] = [ { title: '项目编号', width: 150, dataIndex: 'id', ifShow: false, }, { title: '项目名称', dataIndex: 'projectName', width: 300, resizable: true, align:'left', slots: { customRender: 'projectName' }, }, { title: '行政区划', dataIndex: 'adminDivision', resizable: true }, { title: '责任单位', dataIndex: 'dutyWorkplace', resizable: true }, { title: '单位属性', dataIndex: 'workplaceProperties', resizable: true }, { title: '改革所属项目', dataIndex: 'reformName', format: 'dict|reformTasks', resizable: true }, { title: '上级指导处室', dataIndex: 'superLeader', format: 'dict|superLeader', resizable: true }, { title: '项目状态', dataIndex: 'stage', format: 'dict|projectStage', filters: 'dict|projectStage', resizable: true }, ]; export const searchFormSchema: FormSchema[] = [ { label: '项目名称', field: 'projectName', component: 'Input', labelWidth: 'auto' //colProps: { span: 6 }, }, { label: '行政区划', field: 'adminDivision', component: 'Input', labelWidth: 'auto' //colProps: { span: 6 }, }, { //标题名称 label: '责任单位', //字段 field: 'dutyWorkplace', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'Input', labelWidth: 'auto' }, { //标题名称 label: '单位属性', //字段 field: 'workplaceProperties', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'Input', labelWidth: 'auto' }, { field: 'reformName', label: '改革所属项目', component: 'DictSelect', componentProps: { dictType: 'reformTasks', }, itemProps: { validateTrigger: 'blur' }, labelWidth: 'auto' }, { field: 'superLeader', label: '上级指导室', component: 'DictSelect', componentProps: { dictType: 'superLeader', }, labelWidth: 'auto' }, ]; export const formSchemas: FormSchema[] = [ { //标题名称 label: '项目id', //字段 field: 'id', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'Input', //标题宽度,支持数字和字符串 // labelWidth: 150, // //标题长度,超过位数隐藏 // labelLength: 3, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, ifShow: false, }, { //标题名称 label: '项目名称', //字段 field: 'projectName', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'Input', //标题宽度,支持数字和字符串 // labelWidth: 150, // //标题长度,超过位数隐藏 // labelLength: 3, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, { label: '行政区划', field: 'adminDivision', //子标题名称(在主标题后面) component: 'Input', //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, // { // label: '项目类型', // field: 'projectType', // component: 'Select', // colProps: { span: 12 }, // //填写组件Select的属性 // componentProps: { // options:projectTypeDict() // }, // //默认值 // defaultValue: 1, // required: true, // }, { label: '主要任务', field: 'description', //子标题名称(在主标题后面) component: 'InputTextArea', //一列占比总共24,比如一行显示2列 colProps: { span: 24 }, required: true, }, { //标题名称 label: '责任单位', //字段 field: 'dutyWorkplace', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'Input', //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, { //标题名称 label: '单位属性', //字段 field: 'workplaceProperties', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'Input', //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, { //标题名称 label: '建设周期(月)', //字段 field: 'constructionPeriod', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'InputNumber', componentProps: { //数值精度 precision: 0, //步数 step: 0.1, min: 0, }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, { //标题名称 label: '总投资(元)', //字段 field: 'totalMoney', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'InputNumber', componentProps: { //带标签的 input,设置后置标签 addonBefore: '保留两位小数', //数值精度 precision: 2, //步数 step: 1, min: 0, }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, { //标题名称 label: '中央资金(元)', //字段 field: 'centralMoney', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'InputNumber', componentProps: { //带标签的 input,设置后置标签 addonBefore: '保留两位小数', //数值精度 precision: 2, //步数 step: 1, min: 0, }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, { //标题名称 label: '省级资金(元)', //字段 field: 'provincialMoney', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'InputNumber', componentProps: { //带标签的 input,设置后置标签 addonBefore: '保留两位小数', //数值精度 precision: 2, //步数 step: 1, min: 0, }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, { //标题名称 label: '市级资金(元)', //字段 field: 'cityMoney', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'InputNumber', componentProps: { //带标签的 input,设置后置标签 addonBefore: '保留两位小数', //数值精度 precision: 2, //步数 step: 1, min: 0, }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, { //标题名称 label: '区县级资金(元)', //字段 field: 'countyMoney', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'InputNumber', componentProps: { //带标签的 input,设置后置标签 addonBefore: '保留两位小数', //数值精度 precision: 2, //步数 step: 1, min: 0, }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, { //标题名称 label: '自筹资金(元)', //字段 field: 'selfMoney', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'InputNumber', componentProps: { //带标签的 input,设置后置标签 addonBefore: '保留两位小数', //数值精度 precision: 2, //步数 step: 1, min: 0, }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, { //标题名称 label: '2023年支付(元)', //字段 field: 'payamount2023Money', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'InputNumber', componentProps: { //带标签的 input,设置后置标签 addonBefore: '保留两位小数', //数值精度 precision: 2, //步数 step: 1, min: 0, }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, { //标题名称 label: '2024年支付(元)', //字段 field: 'payamount2024Money', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'InputNumber', componentProps: { //带标签的 input,设置后置标签 addonBefore: '保留两位小数', //数值精度 precision: 2, //步数 step: 1, min: 0, }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, { //标题名称 label: '2025年支付(元)', //字段 field: 'payamount2025Money', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'InputNumber', componentProps: { //带标签的 input,设置后置标签 addonBefore: '保留两位小数', //数值精度 precision: 2, //步数 step: 1, min: 0, }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, { field: 'reformName', label: '改革所属项目', component: 'DictSelect', componentProps: { dictType: 'reformTasks', }, itemProps: { validateTrigger: 'blur' }, colProps: { span: 12 }, required: true, }, { field: 'superLeader', label: '上级指导室', required: true, component: 'DictSelect', componentProps: { dictType: 'superLeader', }, itemProps: { validateTrigger: 'blur' }, colProps: { span: 12 }, }, { //标题名称 label: '项目联系人', //字段 field: 'projectContacts', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'ApiSelect', componentProps: ({ formModel, formActionType }) => { return { // api: () => getUserDictByRoles({ roles: "projectContact" }), showSearch: true, filterOption: (input: string, option: any) => { return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 }, onChange: async (value, option) => { // formModel.manageContactor = undefined; // reset city value const { updateSchema, setFieldsValue } = formActionType; if (option?.phone) { setFieldsValue({ phone: option.phone }) } }, }; }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, { //标题名称 label: '联系电话', //字段 field: 'phone', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'Input', //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, dynamicDisabled: true, }, { //标题名称 label: '管理单位', //字段 field: 'manageOrg', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'ApiSelect', componentProps: ({ formModel, formActionType }) => { return { // api: () => getWorkPlaceTypeDict({ roleCode: "manageOrg" }), params: {}, onChange: async (value) => { // console.log(e) let manageContactorDict = await getContactorDict({ workPlace: value, roleCode: "manageOrg" }) // formModel.manageContactor = undefined; // reset city value const { updateSchema, setFieldsValue } = formActionType; updateSchema({ field: 'manageContactor', componentProps: { options: manageContactorDict, }, }); let ischange = true; if (manageContactorDict?.length > 0) { manageContactorDict.forEach(element => { if (formModel.manageContactor == null || element.value == formModel.manageContactor) { ischange = false return; } }); } if (ischange) { setFieldsValue({ manageContactor: "" }) } }, }; }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, }, { //标题名称 label: '管理单位负责人', //字段 field: 'manageContactor', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'Select', componentProps: (({ formModel }) => { return { options: [], } }), //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, }, { //标题名称 label: '监管单位', //字段 field: 'supervisor', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'ApiSelect', componentProps: ({ formModel, formActionType }) => { return { // api: () => getWorkPlaceTypeDict({ roleCode: "supervisor" }), showSearch: true, filterOption: (input: string, option: any) => { return option.value.toLowerCase().indexOf(input.toLowerCase()) >= 0 }, onChange: async (value) => { let supervisorContactorDict = await getContactorDict({ workPlace: value, roleCode: "supervisor" }) // formModel.manageContactor = undefined; // reset city value const { updateSchema, setFieldsValue } = formActionType; updateSchema({ field: 'supervisorContactor', componentProps: { options: supervisorContactorDict, }, }); let ischange = true; if (supervisorContactorDict?.length > 0) { supervisorContactorDict.forEach(element => { if (formModel.supervisorContactor == null || element.value == formModel.supervisorContactor) { ischange = false return; } }); } if (ischange) { setFieldsValue({ supervisorContactor: "" }) } }, }; }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, }, { //标题名称 label: '监管单位负责人', //字段 field: 'supervisorContactor', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'Select', componentProps: { options: [], }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, }, { //标题名称 label: '承建单位', //字段 field: 'contructor', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'ApiSelect', componentProps: ({ formModel, formActionType }) => { return { // api: () => getWorkPlaceTypeDict({ roleCode: "contructor" }), onChange: async (value) => { // console.log(e) let contructorContactorDict = await getContactorDict({ workPlace: value, roleCode: "contructor" }) // formModel.manageContactor = undefined; // reset city value const { updateSchema, setFieldsValue } = formActionType; updateSchema({ field: 'contructorContactor', componentProps: { options: contructorContactorDict, }, }); let ischange = true; if (contructorContactorDict?.length > 0) { contructorContactorDict.forEach(element => { if (formModel.contructorContactor == null || element.value == formModel.contructorContactor) { ischange = false return; } }); } if (ischange) { setFieldsValue({ contructorContactor: "" }) } }, }; }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, }, { //标题名称 label: '承建单位负责人', //字段 field: 'contructorContactor', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'Select', componentProps: { options: [], }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, }, // { // //标题名称 // label: '建设单位', // //字段 // field: 'owner', // //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType // component: 'ApiSelect', // componentProps: ({ formModel, formActionType }) => { // return { // // // api: () => getWorkPlaceTypeDict({ roleCode: "owner" }), // onChange: async (value) => { // // console.log(e) // let ownerContactorDict = await getContactorDict({ workPlace: value, roleCode: "owner" }) // // formModel.manageContactor = undefined; // reset city value // const { updateSchema, setFieldsValue } = formActionType; // updateSchema({ // field: 'ownerContactor', // componentProps: { // options: ownerContactorDict, // } // }); // let ischange = true; // if (ownerContactorDict?.length > 0) { // ownerContactorDict.forEach(element => { // if (formModel.ownerContactor == null || element.value == formModel.ownerContactor) { // ischange = false // return; // } // }); // } // if (ischange) { // setFieldsValue({ ownerContactor: "" }) // } // }, // }; // }, // //一列占比总共24,比如一行显示2列 // colProps: { span: 12 }, // required: true, // }, // { // //标题名称 // label: '建设单位负责人', // //字段 // field: 'ownerContactor', // //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType // component: 'Select', // componentProps: { // options: [], // }, // //一列占比总共24,比如一行显示2列 // colProps: { span: 12 }, // // required: true, // }, { //标题名称 label: '监理单位', //字段 field: 'controler', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'ApiSelect', componentProps: ({ formModel, formActionType }) => { return { // api: () => getWorkPlaceTypeDict({ roleCode: "controler" }), onChange: async (value) => { // console.log(e) let controlerContactorDict = await getContactorDict({ workPlace: value, roleCode: "controler" }) // formModel.manageContactor = undefined; // reset city value const { updateSchema, setFieldsValue } = formActionType; updateSchema({ field: 'controlerContactor', componentProps: { options: controlerContactorDict, } }); let ischange = true; if (controlerContactorDict?.length > 0) { controlerContactorDict.forEach(element => { if (formModel.controlerContactor == null || element.value == formModel.controlerContactor) { ischange = false return; } }); } if (ischange) { setFieldsValue({ controlerContactor: "" }) } }, }; }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, }, { //标题名称 label: '监理单位负责人', //字段 field: 'controlerContactor', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'Select', componentProps: { options: [], }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, }, { //标题名称 label: '咨询单位', //字段 field: 'consult', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'ApiSelect', componentProps: ({ formModel, formActionType }) => { return { // api: () => getWorkPlaceTypeDict({ roleCode: "consult" }), onChange: async (value) => { // console.log(e) let consultContactoDict = await getContactorDict({ workPlace: value, roleCode: "consult" }) // formModel.manageContactor = undefined; // reset city value const { updateSchema, setFieldsValue } = formActionType; updateSchema({ field: 'consultContactor', componentProps: { options: consultContactoDict, } }); let ischange = true; if (consultContactoDict?.length > 0) { consultContactoDict.forEach(element => { if (formModel.consultContactor == null || element.value == formModel.consultContactor) { ischange = false return; } }); } if (ischange) { setFieldsValue({ consultContactor: "" }) } }, }; }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, }, { //标题名称 label: '咨询单位负责人', //字段 field: 'consultContactor', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'Select', componentProps: { options: [], }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, }, { //标题名称 label: '项目状态', //字段 field: 'stage', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'Input', //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, ifShow: false } ]; export const resourcetableColumns: BasicColumn[] = [ { title: '文件名称', dataIndex: 'documentName', }, { title: '文件大小', dataIndex: 'size', width: 100, customRender: ({ record }) => { let kbNum: number = record.size / 1024 if (kbNum < 1024) { return kbNum.toFixed(2).toString() + "KB" } else { let mbNum: number = kbNum / 1024 return mbNum.toFixed(2).toString() + "MB" } }, }, { title: '上传时间', dataIndex: 'createDate', }, { title: '文件状态', dataIndex: 'status', customRender: ({ record }) => { if (record.status == 1) { return "有效" } else { return "历史文件" } }, } ]