From 1e92736e9e1db3b2cfa451e18401502b43eda850 Mon Sep 17 00:00:00 2001 From: zhouhaibin Date: Sun, 4 Feb 2024 16:50:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../initiatesProjectsApproval/index.vue | 177 +++++++ .../uploadfileApproval/index.vue | 241 +++++++++ src/views/addressBook/address/address.api.ts | 18 +- src/views/addressBook/address/address.data.ts | 56 +- src/views/addressBook/address/index copy.vue | 38 -- src/views/addressBook/address/index.vue | 46 +- .../addressBook/address/index_adrees_bak.vue | 89 ---- .../myWork/completed/complectedDetail.vue | 4 +- src/views/myWork/completed/index.vue | 161 +++--- .../myWork/inComplete/inComplectedDetail.vue | 127 ----- src/views/myWork/inComplete/inComplete.api.ts | 14 +- src/views/myWork/inComplete/index.vue | 155 +++--- .../projectLib/initiatesProjects/index.vue | 304 +++-------- .../initiatesProjects.api.ts | 19 +- .../initiatesProjects.data.ts | 492 ++++++++++++++++++ .../projectLib/initiatesProjects/role.api.ts | 189 ------- .../projectLib/projectInfo/Detailpage.vue | 170 +++--- src/views/projectLib/projectInfo/index.vue | 121 +++-- .../projectLib/projectInfo/projectInfo.api.ts | 11 +- .../projectInfo/projectInfo.data.ts | 321 ++++++++++-- .../projectLib/projectInfo/uploadFile.vue | 168 ++++-- src/views/projectLib/projectPlan/addPlan.vue | 132 +++++ src/views/projectLib/projectPlan/index.vue | 116 +++++ .../projectLib/projectPlan/projectPlan.api.ts | 20 + .../projectPlan/projectPlan.data.ts | 279 ++++++++++ .../projectLib/projectPlan/viewPlanDetail.vue | 75 +++ .../projectPlanModule/addModuleDetailPage.vue | 121 +++++ .../projectPlanModule/addModulePage.vue | 83 +++ .../projectLib/projectPlanModule/index.vue | 131 +++++ .../projectPlanModule.api.ts | 23 + .../projectPlanModule.data.ts | 173 ++++++ 31 files changed, 2992 insertions(+), 1082 deletions(-) create mode 100644 src/views/ProcessApprovalSubPage/initiatesProjectsApproval/index.vue create mode 100644 src/views/ProcessApprovalSubPage/uploadfileApproval/index.vue delete mode 100644 src/views/addressBook/address/index copy.vue delete mode 100644 src/views/addressBook/address/index_adrees_bak.vue delete mode 100644 src/views/myWork/inComplete/inComplectedDetail.vue create mode 100644 src/views/projectLib/initiatesProjects/initiatesProjects.data.ts delete mode 100644 src/views/projectLib/initiatesProjects/role.api.ts create mode 100644 src/views/projectLib/projectPlan/addPlan.vue create mode 100644 src/views/projectLib/projectPlan/index.vue create mode 100644 src/views/projectLib/projectPlan/projectPlan.api.ts create mode 100644 src/views/projectLib/projectPlan/projectPlan.data.ts create mode 100644 src/views/projectLib/projectPlan/viewPlanDetail.vue create mode 100644 src/views/projectLib/projectPlanModule/addModuleDetailPage.vue create mode 100644 src/views/projectLib/projectPlanModule/addModulePage.vue create mode 100644 src/views/projectLib/projectPlanModule/index.vue create mode 100644 src/views/projectLib/projectPlanModule/projectPlanModule.api.ts create mode 100644 src/views/projectLib/projectPlanModule/projectPlanModule.data.ts diff --git a/src/views/ProcessApprovalSubPage/initiatesProjectsApproval/index.vue b/src/views/ProcessApprovalSubPage/initiatesProjectsApproval/index.vue new file mode 100644 index 0000000..28732d7 --- /dev/null +++ b/src/views/ProcessApprovalSubPage/initiatesProjectsApproval/index.vue @@ -0,0 +1,177 @@ + + + \ No newline at end of file diff --git a/src/views/ProcessApprovalSubPage/uploadfileApproval/index.vue b/src/views/ProcessApprovalSubPage/uploadfileApproval/index.vue new file mode 100644 index 0000000..8ee5a42 --- /dev/null +++ b/src/views/ProcessApprovalSubPage/uploadfileApproval/index.vue @@ -0,0 +1,241 @@ + + + \ No newline at end of file diff --git a/src/views/addressBook/address/address.api.ts b/src/views/addressBook/address/address.api.ts index 4890d34..9ae9c40 100644 --- a/src/views/addressBook/address/address.api.ts +++ b/src/views/addressBook/address/address.api.ts @@ -1,19 +1,11 @@ import { defHttp } from '/@/utils/http/axios'; export enum Api { - list = '/sys/user/queryByOrgCodeForAddressList', + getMyAddressBook = '/huzhouUser/getMyAddressBook', positionList = '/sys/position/list', queryDepartTreeSync = '/sys/sysDepart/queryDepartTreeSync', } -/** - * 获取部门树列表 - */ -export const queryDepartTreeSync = (params?) => defHttp.get({ url: Api.queryDepartTreeSync, params }); -/** - * 部门用户信息 - */ -export const list = (params?) => defHttp.get({ url: Api.list, params }); -/** - * 职务list - */ -export const positionList = (params?) => defHttp.get({ url: Api.positionList, params }); + + +export const getMyAddressBook = (params?) => defHttp.get({ url: Api.getMyAddressBook, params }); + diff --git a/src/views/addressBook/address/address.data.ts b/src/views/addressBook/address/address.data.ts index 46fc553..caddd1e 100644 --- a/src/views/addressBook/address/address.data.ts +++ b/src/views/addressBook/address/address.data.ts @@ -1,7 +1,16 @@ import { FormSchema } from '/@/components/Form'; import { BasicColumn } from '/@/components/Table'; +import { getDictItemsByCode } from '/@/utils/dict/index'; +import { useUserStore } from '/@/store/modules/user'; +const userStore = useUserStore(); +const workplaceTypeDicts: Array = getDictItemsByCode("workplaceType") export const columns: BasicColumn[] = [ + { + title: '用户名', + dataIndex: 'username', + width: 150, + }, { title: '姓名', dataIndex: 'realname', @@ -14,20 +23,16 @@ export const columns: BasicColumn[] = [ }, { title: '单位类型', - dataIndex: 'workplaceTpye', + dataIndex: 'workplaceType', width: 200, + customRender: ({ record }) => { + for(let i =0;i -
- - - - - - - - - - - - 查询 - - - - -
- - - - - - diff --git a/src/views/addressBook/address/index.vue b/src/views/addressBook/address/index.vue index 70bd683..e57e229 100644 --- a/src/views/addressBook/address/index.vue +++ b/src/views/addressBook/address/index.vue @@ -3,29 +3,26 @@ + + diff --git a/src/views/addressBook/address/index_adrees_bak.vue b/src/views/addressBook/address/index_adrees_bak.vue deleted file mode 100644 index 6e41a63..0000000 --- a/src/views/addressBook/address/index_adrees_bak.vue +++ /dev/null @@ -1,89 +0,0 @@ - - - - - diff --git a/src/views/myWork/completed/complectedDetail.vue b/src/views/myWork/completed/complectedDetail.vue index d3ce452..9989eb9 100644 --- a/src/views/myWork/completed/complectedDetail.vue +++ b/src/views/myWork/completed/complectedDetail.vue @@ -13,7 +13,7 @@ + ]; +} +function handleEdit(record) { + record.procesType="1" //流程类型, 已办是1 代办是0 + + console.log("打开子页面", record); + // openModal(); + // proid.value =record.projectid + // record.procesType="1" //流程类型, 已办是1 代办是0 + if (record.status == 1) { + router.push({ // push方法 + path: '/ProcessApprovalSubPage/initiatesProjectsApproval', //这里是跳转页面的name inComplectedDetail + query: record + }) + } + else if (record.status == 2) { + router.push({ // push方法 + path: '/ProcessApprovalSubPage/uploadfileApproval', //这里是跳转页面的name inComplectedDetail + query: record + }) + } + // console.log(selectedRows.value); + // console.log(selectedRowKeys.value); +} +function closeModals() { + closeModal() + reload() + +} + - \ No newline at end of file + \ No newline at end of file diff --git a/src/views/myWork/inComplete/inComplectedDetail.vue b/src/views/myWork/inComplete/inComplectedDetail.vue deleted file mode 100644 index f44ef9e..0000000 --- a/src/views/myWork/inComplete/inComplectedDetail.vue +++ /dev/null @@ -1,127 +0,0 @@ - - - -../datamodule/inComplected.data \ No newline at end of file diff --git a/src/views/myWork/inComplete/inComplete.api.ts b/src/views/myWork/inComplete/inComplete.api.ts index cb4ec41..ae3d3c9 100644 --- a/src/views/myWork/inComplete/inComplete.api.ts +++ b/src/views/myWork/inComplete/inComplete.api.ts @@ -1,14 +1,18 @@ import { defHttp } from '/@/utils/http/axios'; export enum Api { - saveprojectInfo="", - myTaskList='/workflow/myTaskList', - submitTask="/huzhouProject/approveProjectInfo", - myCompleteTask='/workflow/myCompleteTask' + saveprojectInfo = "", + myTaskList = '/workflow/myTaskList', + submitTask = "/huzhouProject/approveProjectInfo", + myCompleteTask = '/workflow/myCompleteTask', + getActionParam = '/workflow/getActionParam', + approveUploadFile = "/huzhouProject/approveUploadFile", } /** * 提交入库申请流程 */ export const myTaskList = (params) => defHttp.get({ url: Api.myTaskList, params }) export const submitTask = (params) => defHttp.post({ url: Api.submitTask, params }) -export const myCompleteTask = (params) => defHttp.get({ url: Api.myCompleteTask, params }) \ No newline at end of file +export const myCompleteTask = (params) => defHttp.get({ url: Api.myCompleteTask, params }) +export const getActionParam = (params) => defHttp.get({ url: Api.getActionParam, params }) +export const approveUploadFile = (params) => defHttp.post({ url: Api.approveUploadFile, headers: { "Content-Type": "multipart/form-data" }, params }) \ No newline at end of file diff --git a/src/views/myWork/inComplete/index.vue b/src/views/myWork/inComplete/index.vue index 1182de4..4a4072a 100644 --- a/src/views/myWork/inComplete/index.vue +++ b/src/views/myWork/inComplete/index.vue @@ -1,92 +1,87 @@ - import inComplectedDetail from './inComplectedDetail.vue'; + - - \ No newline at end of file + else if (record.status == 2) { + router.push({ // push方法 + path: '/ProcessApprovalSubPage/uploadfileApproval', //这里是跳转页面的name inComplectedDetail + query: record + }) + } + // console.log(selectedRows.value); + // console.log(selectedRowKeys.value); +} +function closeModalDetail() { + closeDetail() + reload() +} + + \ No newline at end of file diff --git a/src/views/projectLib/initiatesProjects/index.vue b/src/views/projectLib/initiatesProjects/index.vue index 185519c..069d056 100644 --- a/src/views/projectLib/initiatesProjects/index.vue +++ b/src/views/projectLib/initiatesProjects/index.vue @@ -1,230 +1,98 @@ - - \ No newline at end of file + + \ No newline at end of file diff --git a/src/views/projectLib/initiatesProjects/initiatesProjects.api.ts b/src/views/projectLib/initiatesProjects/initiatesProjects.api.ts index 114f37c..48fa313 100644 --- a/src/views/projectLib/initiatesProjects/initiatesProjects.api.ts +++ b/src/views/projectLib/initiatesProjects/initiatesProjects.api.ts @@ -2,18 +2,23 @@ import { defHttp } from '/@/utils/http/axios'; export enum Api { saveprojectInfo="", - submitProjectInfo='/huzhouProject/submitProject' - + submitProjectInfo='/huzhouProject/submitProject', + getContactorDict='/huzhouUser/getContactorDict', + getWorkPlaceTypeDict='/huzhouUser/getWorkPlaceTypeDict', + getUserInfoByid="/huzhouUser/getUserInfoByid" } /** * 提交入库申请流程 */ export const submitProjectInfo = (params) => defHttp.post({ url: Api.submitProjectInfo, params }) -// /** -// * 部门用户信息 -// */ -// export const list = (params?) => defHttp.get({ url: Api.list, params }); +/** + * 部门用户信息 + */ // /** // * 职务list // */ -// export const positionList = (params?) => defHttp.get({ url: Api.positionList, params }); +export const getWorkPlaceTypeDict = (params?) => defHttp.get({ url: Api.getWorkPlaceTypeDict, params }); +export const getContactorDict = (params?) => defHttp.get({ url: Api.getContactorDict, params }); +export const getUserInfoByid = (params?) => defHttp.get({ url: Api.getUserInfoByid, params }); + + diff --git a/src/views/projectLib/initiatesProjects/initiatesProjects.data.ts b/src/views/projectLib/initiatesProjects/initiatesProjects.data.ts new file mode 100644 index 0000000..63a5ba3 --- /dev/null +++ b/src/views/projectLib/initiatesProjects/initiatesProjects.data.ts @@ -0,0 +1,492 @@ +import { FormSchema, FormActionType } from '/@/components/Form'; +import { getDictItemsByCode } from '/@/utils/dict/index'; +import { getWorkPlaceTypeDict, getContactorDict } from './initiatesProjects.api' + +const projectTypeDicts: Array = getDictItemsByCode("projectType") +const approvalRsesults: Array = getDictItemsByCode("approvalResult") + +let manageOrgDict = await getWorkPlaceTypeDict({ workPlaceType: "1" }) +let supervisorDict = await getWorkPlaceTypeDict({ workPlaceType: "2" }) +let contructorDict = await getWorkPlaceTypeDict({ workPlaceType: "4" }) +let ownerDict = await getWorkPlaceTypeDict({ workPlaceType: "3" }) +let controlerDict = await getWorkPlaceTypeDict({ workPlaceType: "6" }) +let consultDict = await getWorkPlaceTypeDict({ workPlaceType: "5" }) + +function projectTypeDict() { + for (let i = 0; i < projectTypeDicts.length; i++) { + projectTypeDicts[i].label = projectTypeDicts[i].text; + } + return projectTypeDicts +} +export const formSchemas: FormSchema[] = [ + { + //标题名称 + 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: 'projectType', + component: 'Select', + colProps: { span: 12 }, + + //填写组件Select的属性 + componentProps: { + options: projectTypeDict() + }, + 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: 'constructionPeriod', + //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType + component: 'InputNumber', + componentProps: { + //数值精度 + precision: 0, + //步数 + step: 0.1 + }, + suffix: "年", + //一列占比总共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 + }, + suffix: "元", + //一列占比总共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 + }, + suffix: "元", + //一列占比总共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 + }, + suffix: "元", + //一列占比总共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 + }, + suffix: "元", + //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + required: true, + }, + + { + //标题名称 + label: '改革所属项目', + //字段 + field: 'reformName', + //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType + component: 'Input', + + //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + required: true, + }, + { + //标题名称 + label: '上级指导室', + //字段 + field: 'superLeader', + //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType + component: 'Input', + + //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + required: true, + }, + { + //标题名称 + label: '项目联系人', + //字段 + field: 'projectContacts', + //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType + component: 'Input', + + //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + required: true, + }, + { + //标题名称 + label: '联系电话', + //字段 + field: 'phone', + //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType + component: 'Input', + + //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + required: true, + }, + { + //标题名称 + label: '管理单位', + //字段 + field: 'manageOrg', + //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType + component: 'Select', + componentProps: ({ formModel, formActionType }) => { + console.log("formModel", formModel, "formActionType", formActionType) + return { + // + options: manageOrgDict, + onChange: async (value) => { + // console.log(e) + let manageContactorDict = await getContactorDict({ workPlace: value, workPlaceType: "1" }) + // formModel.manageContactor = undefined; // reset city value + const { updateSchema, setFieldsValue } = formActionType; + updateSchema({ + field: 'manageContactor', + componentProps: { + options: manageContactorDict, + }, + }); + setFieldsValue({ manageContactor: "" }) + }, + }; + }, + //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + required: true, + }, + + { + //标题名称 + label: '管理单位负责人', + //字段 + field: 'manageContactor', + //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType + component: 'Select', + componentProps: { + options: [], + + }, //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + required: true, + }, + { + //标题名称 + label: '监管单位', + //字段 + field: 'supervisor', + //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType + component: 'Select', + componentProps: ({ formModel, formActionType }) => { + console.log("formModel", formModel, "formActionType", formActionType) + return { + // + options: supervisorDict, + onChange: async (value) => { + // console.log(e) + let supervisorContactorDict = await getContactorDict({ workPlace: value, workPlaceType: "2" }) + // formModel.manageContactor = undefined; // reset city value + const { updateSchema, setFieldsValue } = formActionType; + updateSchema({ + field: 'supervisorContactor', + componentProps: { + options: supervisorContactorDict, + }, + }); + setFieldsValue({ supervisorContactor: "" }) + }, + }; + }, + //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + required: true, + }, + { + //标题名称 + label: '监管单位负责人', + //字段 + field: 'supervisorContactor', + //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType + component: 'Select', + componentProps: { + options: [], + + }, + //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + required: true, + }, + + { + //标题名称 + label: '承建单位', + //字段 + field: 'contructor', + //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType + component: 'Select', + componentProps: ({ formModel, formActionType }) => { + console.log("formModel", formModel, "formActionType", formActionType) + return { + // + options: contructorDict, + onChange: async (value) => { + // console.log(e) + let contructorContactorDict = await getContactorDict({ workPlace: value, workPlaceType: "4" }) + // formModel.manageContactor = undefined; // reset city value + const { updateSchema, setFieldsValue } = formActionType; + updateSchema({ + field: 'contructorContactor', + componentProps: { + options: contructorContactorDict, + }, + }); + setFieldsValue({ contructorContactor: "" }) + }, + }; + }, + //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + required: true, + }, + { + //标题名称 + label: '承建单位负责人', + //字段 + field: 'contructorContactor', + //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType + component: 'Select', + componentProps: { + options: [], + + }, + //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + required: true, + }, + { + //标题名称 + label: '建设单位', + //字段 + field: 'owner', + //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType + component: 'Select', + componentProps: ({ formModel, formActionType }) => { + console.log("formModel", formModel, "formActionType", formActionType) + return { + // + options: ownerDict, + onChange: async (value) => { + // console.log(e) + let ownerContactorDict = await getContactorDict({ workPlace: value, workPlaceType: "3" }) + // formModel.manageContactor = undefined; // reset city value + const { updateSchema, setFieldsValue } = formActionType; + updateSchema({ + field: 'ownerContactor', + componentProps: { + options: ownerContactorDict, + } + }); + 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: 'Select', + componentProps: ({ formModel, formActionType }) => { + console.log("formModel", formModel, "formActionType", formActionType) + return { + // + options: controlerDict, + onChange: async (value) => { + // console.log(e) + let controlerContactorDict = await getContactorDict({ workPlace: value, workPlaceType: "6" }) + // formModel.manageContactor = undefined; // reset city value + const { updateSchema, setFieldsValue } = formActionType; + updateSchema({ + field: 'controlerContactor', + componentProps: { + options: controlerContactorDict, + } + }); + 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: 'Select', + componentProps: ({ formModel, formActionType }) => { + console.log("formModel", formModel, "formActionType", formActionType) + return { + // + options: consultDict, + onChange: async (value) => { + // console.log(e) + let consultContactoDict = await getContactorDict({ workPlace: value, workPlaceType: "5" }) + // formModel.manageContactor = undefined; // reset city value + const { updateSchema, setFieldsValue } = formActionType; + updateSchema({ + field: 'consultContactor', + componentProps: { + options: consultContactoDict, + } + }); + 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 }, + }, +]; diff --git a/src/views/projectLib/initiatesProjects/role.api.ts b/src/views/projectLib/initiatesProjects/role.api.ts deleted file mode 100644 index a333327..0000000 --- a/src/views/projectLib/initiatesProjects/role.api.ts +++ /dev/null @@ -1,189 +0,0 @@ -import { defHttp } from '/@/utils/http/axios'; -import { Modal } from 'ant-design-vue'; - -enum Api { - list = '/sys/role/list', - listByTenant = '/sys/role/listByTenant', - save = '/sys/role/add', - edit = '/sys/role/edit', - deleteRole = '/sys/role/delete', - deleteBatch = '/sys/role/deleteBatch', - exportXls = '/sys/role/exportXls', - importExcel = '/sys/role/importExcel', - isRoleExist = '/sys/role/checkRoleCode', - queryTreeListForRole = '/sys/role/queryTreeList', - queryRolePermission = '/sys/permission/queryRolePermission', - saveRolePermission = '/sys/permission/saveRolePermission', - queryDataRule = '/sys/role/datarule', - getParentDesignList = '/act/process/extActDesignFlowData/getDesFormFlows', - getRoleDegisnList = '/joa/designform/designFormCommuse/getRoleDegisnList', - saveRoleDesign = '/joa/designform/designFormCommuse/sysRoleDesignAdd', - userList = '/sys/user/userRoleList', - deleteUserRole = '/sys/user/deleteUserRole', - batchDeleteUserRole = '/sys/user/deleteUserRoleBatch', - addUserRole = '/sys/user/addSysUserRole', - saveRoleIndex = '/sys/sysRoleIndex/add', - editRoleIndex = '/sys/sysRoleIndex/edit', - queryIndexByCode = '/sys/sysRoleIndex/queryByCode', -} -/** - * 导出api - */ -export const getExportUrl = Api.exportXls; -/** - * 导入api - */ -export const getImportUrl = Api.importExcel; -/** - * 系统角色列表 - * @param params - */ -export const list = (params) => defHttp.get({ url: Api.list, params }); -/** - * 租户角色列表 - * @param params - */ -export const listByTenant = (params) => defHttp.get({ url: Api.listByTenant, params }); - -/** - * 删除角色 - */ -export const deleteRole = (params, handleSuccess) => { - return defHttp.delete({ url: Api.deleteRole, params }, { joinParamsToUrl: true }).then(() => { - handleSuccess(); - }); -}; -/** - * 批量删除角色 - * @param params - */ -export const batchDeleteRole = (params, handleSuccess) => { - Modal.confirm({ - title: '确认删除', - content: '是否删除选中数据', - okText: '确认', - cancelText: '取消', - onOk: () => { - return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => { - handleSuccess(); - }); - }, - }); -}; -/** - * 保存或者更新角色 - * @param params - */ -export const saveOrUpdateRole = (params, isUpdate) => { - let url = isUpdate ? Api.edit : Api.save; - return defHttp.post({ url: url, params }); -}; -/** - * 编码校验 - * @param params - */ -// update-begin--author:liaozhiyang---date:20231215---for:【QQYUN-7415】表单调用接口进行校验的添加防抖 -let timer; -export const isRoleExist = (params) => { - return new Promise((resolve, rejected) => { - clearTimeout(timer); - timer = setTimeout(() => { - defHttp - .get({ url: Api.isRoleExist, params }, { isTransformResponse: false }) - .then((res) => { - resolve(res); - }) - .catch((error) => { - rejected(error); - }); - }, 500); - }); -}; -// update-end--author:liaozhiyang---date:20231215---for:【QQYUN-7415】表单调用接口进行校验的添加防抖 -/** - * 根据角色查询树信息 - */ -export const queryTreeListForRole = () => defHttp.get({ url: Api.queryTreeListForRole }); -/** - * 查询角色权限 - */ -export const queryRolePermission = (params) => defHttp.get({ url: Api.queryRolePermission, params }); -/** - * 保存角色权限 - */ -export const saveRolePermission = (params) => defHttp.post({ url: Api.saveRolePermission, params }); -/** - * 查询角色数据规则 - */ -export const queryDataRule = (params) => - defHttp.get({ url: `${Api.queryDataRule}/${params.functionId}/${params.roleId}` }, { isTransformResponse: false }); -/** - * 保存角色数据规则 - */ -export const saveDataRule = (params) => defHttp.post({ url: Api.queryDataRule, params }); -/** - * 获取表单数据 - * @return List - */ -export const getParentDesignList = () => defHttp.get({ url: Api.getParentDesignList }); -/** - * 获取角色表单数据 - * @return List - */ -export const getRoleDegisnList = (params) => defHttp.get({ url: Api.getRoleDegisnList, params }); -/** - * 提交角色工单信息 - */ -export const saveRoleDesign = (params) => defHttp.post({ url: Api.saveRoleDesign, params }); -/** - * 角色列表接口 - * @param params - */ -export const userList = (params) => defHttp.get({ url: Api.userList, params }); -/** - * 删除角色用户 - */ -export const deleteUserRole = (params, handleSuccess) => { - return defHttp.delete({ url: Api.deleteUserRole, params }, { joinParamsToUrl: true }).then(() => { - handleSuccess(); - }); -}; -/** - * 批量删除角色用户 - * @param params - */ -export const batchDeleteUserRole = (params, handleSuccess) => { - Modal.confirm({ - title: '确认删除', - content: '是否删除选中数据', - okText: '确认', - cancelText: '取消', - onOk: () => { - return defHttp.delete({ url: Api.batchDeleteUserRole, params }, { joinParamsToUrl: true }).then(() => { - handleSuccess(); - }); - }, - }); -}; -/** - * 添加已有用户 - */ -export const addUserRole = (params, handleSuccess) => { - return defHttp.post({ url: Api.addUserRole, params }).then(() => { - handleSuccess(); - }); -}; -/** - * 保存或者更新 - * @param params - * @param isUpdate 是否是更新数据 - */ -export const saveOrUpdateRoleIndex = (params, isUpdate) => { - let url = isUpdate ? Api.editRoleIndex : Api.saveRoleIndex; - return defHttp.post({ url: url, params }); -}; -/** - * 根据code查询首页配置 - * @param params - */ -export const queryIndexByCode = (params) => defHttp.get({ url: Api.queryIndexByCode, params }, { isTransformResponse: false }); diff --git a/src/views/projectLib/projectInfo/Detailpage.vue b/src/views/projectLib/projectInfo/Detailpage.vue index b0ece5e..c89ab21 100644 --- a/src/views/projectLib/projectInfo/Detailpage.vue +++ b/src/views/projectLib/projectInfo/Detailpage.vue @@ -1,81 +1,123 @@ diff --git a/src/views/projectLib/projectInfo/index.vue b/src/views/projectLib/projectInfo/index.vue index bf62316..94722d0 100644 --- a/src/views/projectLib/projectInfo/index.vue +++ b/src/views/projectLib/projectInfo/index.vue @@ -3,25 +3,26 @@ - - + + - - - - - - - + + + + + + + \ No newline at end of file diff --git a/src/views/projectLib/projectInfo/projectInfo.api.ts b/src/views/projectLib/projectInfo/projectInfo.api.ts index 023b80b..d0c4a63 100644 --- a/src/views/projectLib/projectInfo/projectInfo.api.ts +++ b/src/views/projectLib/projectInfo/projectInfo.api.ts @@ -1,10 +1,14 @@ +import { update } from 'lodash-es'; import { defHttp } from '/@/utils/http/axios'; export enum Api { list = '/sys/user/queryByOrgCodeForAddressList', queryProcessInfo = '/workflow/getprocessInfo', queryProjectInfoById = '/huzhouProject/queryProjectInfoById', - projectInfoPageList="/huzhouProject/projectInfoPageList" + queryprocessinfoById="/huzhouProject/queryprocessinfoById", + projectInfoPageList="/huzhouProject/projectInfoPageList", + uploadFileUrl = '/huzhouProject/uploadFile', + queryResourceInfo = '/huzhouProject/queryResourceInfo' } /** * 获取部门树列表 @@ -18,3 +22,8 @@ export const projectInfoPageList = (params?) => defHttp.get({ url: Api.projectIn * 职务list */ export const queryProcessInfo = (params?) => defHttp.get({ url: Api.queryProcessInfo, params }); +export const uploadFile = (params?) =>defHttp.post({ url: Api.uploadFileUrl,headers:{ "Content-Type": "multipart/form-data" }, params }) +export const queryResourceInfo =(params?) => defHttp.get({ url: Api.queryResourceInfo, params }); +export const queryprocessinfoById = (params?) => defHttp.get({ url: Api.queryprocessinfoById, params }); + + diff --git a/src/views/projectLib/projectInfo/projectInfo.data.ts b/src/views/projectLib/projectInfo/projectInfo.data.ts index 245587b..f9b5afe 100644 --- a/src/views/projectLib/projectInfo/projectInfo.data.ts +++ b/src/views/projectLib/projectInfo/projectInfo.data.ts @@ -2,16 +2,26 @@ import { FormSchema } from '/@/components/Form'; import { BasicColumn } from '/@/components/Table'; import { getDictItemsByCode } from '/@/utils/dict/index'; import { UploadTypeEnum } from '/@/components/Form/src/jeecg/components/JUpload'; +import { size } from 'lodash-es'; +import { el } from 'element-plus/es/locale'; const projectTypeDicts:Array = getDictItemsByCode("projectType") const approvalRsesults:Array = getDictItemsByCode("approvalResult") - +import { getWorkPlaceTypeDict, getContactorDict,getUserInfoByid } from '../initiatesProjects/initiatesProjects.api' + +let manageOrgDict = await getWorkPlaceTypeDict({ workPlaceType: "1" }) +let supervisorDict = await getWorkPlaceTypeDict({ workPlaceType: "2" }) +let contructorDict = await getWorkPlaceTypeDict({ workPlaceType: "4" }) +let ownerDict = await getWorkPlaceTypeDict({ workPlaceType: "3" }) +let controlerDict = await getWorkPlaceTypeDict({ workPlaceType: "6" }) +let consultDict = await getWorkPlaceTypeDict({ workPlaceType: "5" }) function projectTypeDict(){ for(let i = 0;i { + console.log("formModel", formModel, "formActionType", formActionType) + return { + // + options: manageOrgDict, + onChange: async (value) => { + // console.log(e) + let manageContactorDict = await getContactorDict({ workPlace: value, workPlaceType: "1" }) + // formModel.manageContactor = undefined; // reset city value + const { updateSchema, setFieldsValue } = formActionType; + updateSchema({ + field: 'manageContactor', + componentProps: { + options: manageContactorDict, + }, + }); + setFieldsValue({ manageContactor: "" }) + }, + }; + }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, + required: true, }, + { //标题名称 - label: '管理单位负责人', + label: '管理单位负责人', //字段 field: 'manageContactor', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType - component: 'Input', + component: 'Select', + componentProps:(({formModel})=>{ + console.log("formModel.manageContactor",formModel,formModel.manageContactor) + return { + options:[] + } + + }), //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, + required: true, }, { //标题名称 - label: '监管单位', + label: '监管单位', //字段 - field: 'controler', + field: 'supervisor', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType - component: 'Input', + component: 'Select', + componentProps: ({ formModel, formActionType }) => { + console.log("formModel", formModel, "formActionType", formActionType) + return { + // + options: supervisorDict, + onChange: async (value) => { + // console.log(e) + let supervisorContactorDict = await getContactorDict({ workPlace: value, workPlaceType: "2" }) + // formModel.manageContactor = undefined; // reset city value + const { updateSchema, setFieldsValue } = formActionType; + updateSchema({ + field: 'supervisorContactor', + componentProps: { + options: supervisorContactorDict, + }, + }); + setFieldsValue({ supervisorContactor: "" }) + }, + }; + }, + //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + required: true, + }, + { + //标题名称 + label: '监管单位负责人', + //字段 + field: 'supervisorContactor', + //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType + component: 'Select', + componentProps: { + options: [], + }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, + required: true, }, + { //标题名称 - label: '监管单位负责人', + label: '承建单位', //字段 - field: 'controlerContactor', + field: 'contructor', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType - component: 'Input', + component: 'Select', + componentProps: ({ formModel, formActionType }) => { + console.log("formModel", formModel, "formActionType", formActionType) + return { + // + options: contructorDict, + onChange: async (value) => { + // console.log(e) + let contructorContactorDict = await getContactorDict({ workPlace: value, workPlaceType: "4" }) + // formModel.manageContactor = undefined; // reset city value + const { updateSchema, setFieldsValue } = formActionType; + updateSchema({ + field: 'contructorContactor', + componentProps: { + options: contructorContactorDict, + }, + }); + setFieldsValue({ contructorContactor: "" }) + }, + }; + }, + //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + required: true, + }, + { + //标题名称 + label: '承建单位负责人', + //字段 + field: 'contructorContactor', + //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType + component: 'Select', + componentProps: { + options: [], + }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, + required: true, }, { //标题名称 - label: '建设单位', + label: '建设单位', //字段 field: 'owner', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType - component: 'Input', - + component: 'Select', + componentProps: ({ formModel, formActionType }) => { + console.log("formModel", formModel, "formActionType", formActionType) + return { + // + options: ownerDict, + onChange: async (value) => { + // console.log(e) + let ownerContactorDict = await getContactorDict({ workPlace: value, workPlaceType: "3" }) + // formModel.manageContactor = undefined; // reset city value + const { updateSchema, setFieldsValue } = formActionType; + updateSchema({ + field: 'ownerContactor', + componentProps: { + options: ownerContactorDict, + } + }); + setFieldsValue({ ownerContactor: "" }) + }, + }; + }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, + required: true, }, { //标题名称 - label: '建设单位负责人', + label: '建设单位负责人', //字段 field: 'ownerContactor', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType - component: 'Input', + component: 'Select', + componentProps: { + options: [], + }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, + required: true, }, { //标题名称 - label: '承建单位', + label: '监理单位', //字段 - field: 'contructor', + field: 'controler', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType - component: 'Input', + component: 'Select', + componentProps: ({ formModel, formActionType }) => { + console.log("formModel", formModel, "formActionType", formActionType) + return { + // + options: controlerDict, + onChange: async (value) => { + // console.log(e) + let controlerContactorDict = await getContactorDict({ workPlace: value, workPlaceType: "6" }) + // formModel.manageContactor = undefined; // reset city value + const { updateSchema, setFieldsValue } = formActionType; + updateSchema({ + field: 'controlerContactor', + componentProps: { + options: controlerContactorDict, + } + }); + 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: '承建单位负责人', + label: '咨询单位', //字段 - field: 'contructorContactor', + field: 'consult', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType - component: 'Input', + component: 'Select', + componentProps: ({ formModel, formActionType }) => { + console.log("formModel", formModel, "formActionType", formActionType) + return { + // + options: consultDict, + onChange: async (value) => { + // console.log(e) + let consultContactoDict = await getContactorDict({ workPlace: value, workPlaceType: "5" }) + // formModel.manageContactor = undefined; // reset city value + const { updateSchema, setFieldsValue } = formActionType; + updateSchema({ + field: 'consultContactor', + componentProps: { + options: consultContactoDict, + } + }); + 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 }, }, @@ -343,10 +556,11 @@ export const formSchemas: FormSchema[] = [ //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, + ifShow:false } ]; -export const ProcessColumns: BasicColumn[] = [ +export const approveStartProcessColumns: BasicColumn[] = [ { title: '节点名称', @@ -380,3 +594,28 @@ export const ProcessColumns: BasicColumn[] = [ width: 100, } ]; +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: 'createtime', + } +] diff --git a/src/views/projectLib/projectInfo/uploadFile.vue b/src/views/projectLib/projectInfo/uploadFile.vue index f550a67..17cf277 100644 --- a/src/views/projectLib/projectInfo/uploadFile.vue +++ b/src/views/projectLib/projectInfo/uploadFile.vue @@ -3,37 +3,80 @@ 项目入库详情 上传项目资料 - - + + + 选取文件 +
文件大小且不超过5M
+
+
+ + + 开始导入 + 关闭窗口 + + - --> diff --git a/src/views/projectLib/projectPlan/addPlan.vue b/src/views/projectLib/projectPlan/addPlan.vue new file mode 100644 index 0000000..ff0ecc3 --- /dev/null +++ b/src/views/projectLib/projectPlan/addPlan.vue @@ -0,0 +1,132 @@ + + + + \ No newline at end of file diff --git a/src/views/projectLib/projectPlan/index.vue b/src/views/projectLib/projectPlan/index.vue new file mode 100644 index 0000000..92c7258 --- /dev/null +++ b/src/views/projectLib/projectPlan/index.vue @@ -0,0 +1,116 @@ + + + + + \ No newline at end of file diff --git a/src/views/projectLib/projectPlan/projectPlan.api.ts b/src/views/projectLib/projectPlan/projectPlan.api.ts new file mode 100644 index 0000000..afb08b1 --- /dev/null +++ b/src/views/projectLib/projectPlan/projectPlan.api.ts @@ -0,0 +1,20 @@ +import { defHttp } from '/@/utils/http/axios'; + +export enum Api { + saveprojectInfo = "", + queryProjectApprovedPage = '/huzhouProject/queryProjectApprovedPage', + queryPlanModuleDetailPage = "/huzhouPlan/queryPlanModuleDetailPage", + queryPlanModuleone = '/huzhouPlan/queryPlanModuleone', + saveProjectPlan = '/huzhouPlan/saveProjectPlan', + queryProjectPlan="/huzhouPlan/queryProjectPlan" +} +/** + * 提交入库申请流程 + */ +export const queryProjectApprovedPage = (params) => defHttp.get({ url: Api.queryProjectApprovedPage, params }) +export const queryPlanModuleDetailPage = (params) => defHttp.get({ url: Api.queryPlanModuleDetailPage, params }) +export const queryPlanModuleone = (params) => defHttp.get({ url: Api.queryPlanModuleone, params }) + +export const saveProjectPlan = (params) => defHttp.post({ url: Api.saveProjectPlan, params }) + +export const queryProjectPlan = (params) => defHttp.get({ url: Api.queryProjectPlan, params }) diff --git a/src/views/projectLib/projectPlan/projectPlan.data.ts b/src/views/projectLib/projectPlan/projectPlan.data.ts new file mode 100644 index 0000000..725aaa0 --- /dev/null +++ b/src/views/projectLib/projectPlan/projectPlan.data.ts @@ -0,0 +1,279 @@ +import { FormSchema } from '/@/components/Form'; +import { BasicColumn } from '/@/components/Table'; +import { getDictItemsByCode } from '/@/utils/dict/index'; +import { useUserStore } from '/@/store/modules/user'; +import dayjs from "dayjs"; +const userStore = useUserStore(); +const projectTypeDicts: Array = getDictItemsByCode("projectType") +function projectTypeDict() { + for (let i = 0; i < projectTypeDicts.length; i++) { + projectTypeDicts[i].label = projectTypeDicts[i].text; + } + return projectTypeDicts +} +const approvalRsesults: Array = getDictItemsByCode("approvalResult") + +function approvalRsesult() { + for (let i = 0; i < approvalRsesults.length; i++) { + approvalRsesults[i].label = approvalRsesults[i].text; + } + return approvalRsesults +} +export const hommPageColumns: BasicColumn[] = [ + + { + title: '模板ID', + width: 150, + dataIndex: 'id', + }, + { + title: '项目类型', + dataIndex: 'projectType', + width: 150, + customRender: ({ record }) => { + for (let i = 0; i < projectTypeDicts.length; i++) { + if (record.projectType == projectTypeDicts[i].value) { + return projectTypeDicts[i].text + } + } + }, + }, + { + title: '模板名称', + dataIndex: 'moduleName', + width: 150, + }, + { + title: '创建时间', + dataIndex: 'createtime', + width: 100, + }, +]; + +export const planDetailColumns: BasicColumn[] = [ + + { + title: '模板id', + width: 150, + dataIndex: 'moduleId', + + }, + { + title: '计划名称', + dataIndex: 'taskName', + width: 150, + + }, + { + title: '计划序号', + dataIndex: 'orderNumber', + width: 150, + + }, + { + title: '最大天数', + dataIndex: 'maxDays', + width: 100, + }, + { + title: '计划开始时间', + dataIndex: 'scheduledStartTime', + width: 150, + edit: true, + editRule: async (text, record) => { + if (text > record.scheduledEndTime) { + return '开始时间必须小于结束时间'; + } + if (!text) { + return '请选择日期'; + } + if (record.maxDays && text && record.scheduledEndTime) { + let days = dayjs(record.scheduledEndTime).diff(text, "day") + console.log("我这一行的数据是daysdaysdays", days) + + if ( days > record.maxDays) { + return '计划时常超过预定期限'; + } + } + return ''; + }, + editComponent: 'DatePicker', + editComponentProps: { + //日期格式化,页面上显示的值 + format: 'YYYY-MM-DD', + //返回值格式化(绑定值的格式) + valueFormat: 'YYYY-MM-DD', + //是否显示今天按钮 + showToday: true, + //不可选择日期 + disabledDate: (currentDate) => { + let date = dayjs(currentDate).format('YYYY-MM-DD'); + let nowDate = dayjs(new Date()).format('YYYY-MM-DD'); + //当天不可选择 + if (date < nowDate) { + return true; + } + return false; + } + } + }, + { + title: '计划结束时间', + dataIndex: 'scheduledEndTime', + width: 150, + edit: true, + editRule: async (text, record) => { + if (text < record.scheduledStartTime) { + return '结束时间必须大于开始时间'; + } + if (!text) { + return '请选择日期'; + } + if (record.maxDays && text && record.scheduledStartTime) { + let days = dayjs(text).diff(record.scheduledStartTime, "day") + if (days > record.maxDays) { + return '计划时常超过预定期限'; + } + } + return ''; + }, + editComponent: 'DatePicker', + editComponentProps: { + //日期格式化,页面上显示的值 + format: 'YYYY-MM-DD', + //返回值格式化(绑定值的格式) + valueFormat: 'YYYY-MM-DD', + //是否显示今天按钮 + showToday: true, + //不可选择日期 + disabledDate: (currentDate) => { + let date = dayjs(currentDate).format('YYYY-MM-DD'); + let nowDate = dayjs(new Date()).format('YYYY-MM-DD'); + //当天不可选择 + if (date < nowDate) { + return true; + } + return false; + } + } + }, +]; +export const viewPlanDetailColumns: BasicColumn[] = [ + { + title: '计划名称', + dataIndex: 'taskName', + width: 150, + + }, + { + title: '计划序号', + dataIndex: 'orderNumber', + width: 150, + + }, + { + title: '最大天数', + dataIndex: 'maxDays', + width: 100, + }, + { + title: '计划开始时间', + dataIndex: 'scheduledStartTime', + width: 150, + }, + { + title: '计划结束时间', + dataIndex: 'scheduledEndTime', + width: 150, + }, +]; + +export const searchFormSchema: FormSchema[] = [ + + { + label: '项目类型', + field: 'projectType', + component: 'Select', + componentProps: { + options: projectTypeDict() + }, + //colProps: { span: 6 }, + }, + { + label: '模板名称', + field: 'moduleName', + component: 'Input', + //colProps: { span: 6 }, + }, + + +]; +export const planFormSchemas: FormSchema[] = [ + // { + // label: '项目类型', + // field: 'user', + // component: 'Select', + // required: true, + // dynamicDisabled: true, + // componentProps: { + // options: [ + // { value: userStore.getUserInfo.id, label: userStore.getUserInfo.username } + // ], + // }, + // defaultValue: userStore.getUserInfo.id, + // colProps: { span: 12 }, + + // }, + { + label: '模板id', + field: 'id', + component: 'Input', + dynamicDisabled: true, + colProps: { span: 12 }, + }, + { + label: '项目类型', + field: 'projectType', + component: 'Select', + required: true, + componentProps: { + options: projectTypeDict() + }, + colProps: { span: 12 }, + }, + { + label: '模板名称', + field: 'moduleName', + component: 'Input', + required: true, + colProps: { span: 12 }, + }, + +]; +export const ProcessColumns: BasicColumn[] = [ + + { + title: '节点名称', + dataIndex: 'taskName', + }, + { + title: '处理人', + dataIndex: 'operator', + width: 150, + }, + { + title: '处理时间', + dataIndex: 'operateDate', + width: 150, + }, + { + title: '审批状态', + dataIndex: 'approvalStatue', + width: 100, + }, + { + title: '审批意见', + dataIndex: 'workplace', + width: 100, + } +]; \ No newline at end of file diff --git a/src/views/projectLib/projectPlan/viewPlanDetail.vue b/src/views/projectLib/projectPlan/viewPlanDetail.vue new file mode 100644 index 0000000..54384f5 --- /dev/null +++ b/src/views/projectLib/projectPlan/viewPlanDetail.vue @@ -0,0 +1,75 @@ + + + + \ No newline at end of file diff --git a/src/views/projectLib/projectPlanModule/addModuleDetailPage.vue b/src/views/projectLib/projectPlanModule/addModuleDetailPage.vue new file mode 100644 index 0000000..ed5b36c --- /dev/null +++ b/src/views/projectLib/projectPlanModule/addModuleDetailPage.vue @@ -0,0 +1,121 @@ + + + + \ No newline at end of file diff --git a/src/views/projectLib/projectPlanModule/addModulePage.vue b/src/views/projectLib/projectPlanModule/addModulePage.vue new file mode 100644 index 0000000..426e898 --- /dev/null +++ b/src/views/projectLib/projectPlanModule/addModulePage.vue @@ -0,0 +1,83 @@ + + + + \ No newline at end of file diff --git a/src/views/projectLib/projectPlanModule/index.vue b/src/views/projectLib/projectPlanModule/index.vue new file mode 100644 index 0000000..ac4c78a --- /dev/null +++ b/src/views/projectLib/projectPlanModule/index.vue @@ -0,0 +1,131 @@ + + + + + \ No newline at end of file diff --git a/src/views/projectLib/projectPlanModule/projectPlanModule.api.ts b/src/views/projectLib/projectPlanModule/projectPlanModule.api.ts new file mode 100644 index 0000000..c3a2d52 --- /dev/null +++ b/src/views/projectLib/projectPlanModule/projectPlanModule.api.ts @@ -0,0 +1,23 @@ +import { defHttp } from '/@/utils/http/axios'; + +export enum Api { + saveprojectInfo = "", + queryPlanModulePage = '/huzhouPlan/queryPlanModulePage', + queryPlanModuleDetailPage = "/huzhouPlan/queryPlanModuleDetailPage", + queryPlanModuleone = '/huzhouPlan/queryPlanModuleone', + savePlanModule = '/huzhouPlan/savePlanModule', + savePlanModuleDatail = '/huzhouPlan/savePlanModuleDatail', + modifyPlanModule = '/huzhouPlan/modifyPlanModule', + deletePlanModule='/huzhouPlan/deletePlanModule', +} +/** + * 提交入库申请流程 + */ +export const queryPlanModulePage = (params) => defHttp.get({ url: Api.queryPlanModulePage, params }) +export const queryPlanModuleDetailPage = (params) => defHttp.get({ url: Api.queryPlanModuleDetailPage, params }) +export const queryPlanModuleone = (params) => defHttp.get({ url: Api.queryPlanModuleone, params }) + +export const savePlanModule = (params) => defHttp.post({ url: Api.savePlanModule, params }) +export const savePlanModuleDatail = (params) => defHttp.post({ url: Api.savePlanModuleDatail, params }) +export const modifyPlanModule = (params) => defHttp.post({ url: Api.modifyPlanModule, params }) +export const deletePlanModule = (params) => defHttp.delete({ url: Api.deletePlanModule, params},{ joinParamsToUrl: true }) \ No newline at end of file diff --git a/src/views/projectLib/projectPlanModule/projectPlanModule.data.ts b/src/views/projectLib/projectPlanModule/projectPlanModule.data.ts new file mode 100644 index 0000000..8d7ad7d --- /dev/null +++ b/src/views/projectLib/projectPlanModule/projectPlanModule.data.ts @@ -0,0 +1,173 @@ +import { FormSchema } from '/@/components/Form'; +import { BasicColumn } from '/@/components/Table'; +import { getDictItemsByCode } from '/@/utils/dict/index'; +import { useUserStore } from '/@/store/modules/user'; + +const userStore = useUserStore(); +const projectTypeDicts: Array = getDictItemsByCode("projectType") +function projectTypeDict() { + for (let i = 0; i < projectTypeDicts.length; i++) { + projectTypeDicts[i].label = projectTypeDicts[i].text; + } + return projectTypeDicts +} +const approvalRsesults:Array = getDictItemsByCode("approvalResult") + +function approvalRsesult(){ + for(let i = 0;i { + for(let i =0;i