diff --git a/src/views/ProcessApprovalSubPage/initiatesProjectsApproval/childProjectsApproval.vue b/src/views/ProcessApprovalSubPage/initiatesProjectsApproval/childProjectsApproval.vue new file mode 100644 index 0000000..3e1fdb4 --- /dev/null +++ b/src/views/ProcessApprovalSubPage/initiatesProjectsApproval/childProjectsApproval.vue @@ -0,0 +1,100 @@ + + + \ No newline at end of file diff --git a/src/views/ProcessApprovalSubPage/initiatesProjectsApproval/index.vue b/src/views/ProcessApprovalSubPage/initiatesProjectsApproval/index.vue index 28732d7..41741cd 100644 --- a/src/views/ProcessApprovalSubPage/initiatesProjectsApproval/index.vue +++ b/src/views/ProcessApprovalSubPage/initiatesProjectsApproval/index.vue @@ -1,47 +1,77 @@ + + \ No newline at end of file diff --git a/src/views/ProcessApprovalSubPage/uploadfileApproval/index.vue b/src/views/ProcessApprovalSubPage/uploadfileApproval/index.vue index 8ee5a42..3b2d3f5 100644 --- a/src/views/ProcessApprovalSubPage/uploadfileApproval/index.vue +++ b/src/views/ProcessApprovalSubPage/uploadfileApproval/index.vue @@ -11,13 +11,33 @@ 重新上传项目资料
+ :on-exceed="handleExceed" :limit="5" :on-remove="removeFile"> 选取文件
文件大小且不超过5M
+
+ 意见文件 + + + +
项目审批详情 + +
+ 上传意见文件 +
+ + 选取文件 +
文件大小且不超过5M
+
+
+
+ 项目审批
@@ -33,7 +53,7 @@ import { BasicTable, ActionItem, TableAction } from '/@/components/Table'; import { useListPage } from '/@/hooks/system/useListPage'; import { approveUploadFile, getActionParam } from '../../myWork/inComplete/inComplete.api'; import { resourcetableColumns } from '../../projectLib/projectInfo/projectInfo.data'; -import { queryResourceInfo } from '../../projectLib/projectInfo/projectInfo.api' +import { uploacFilePageList } from '../../projectLib/projectInfo/projectInfo.api' import { useRouter, useRoute } from 'vue-router' import { downloadFile } from "../../../api/common/api" import { ElMessage } from 'element-plus' @@ -43,6 +63,7 @@ const router = useRouter() console.log("routerouterouteroute", route.query) let projectid = route.query.projectid let taskid = route.query.taskId +let procesType = route.query.procesType const emit = defineEmits(['close']); let showApprovalForm = ref() let resButton = reactive({ @@ -51,7 +72,7 @@ let resButton = reactive({ buttons: [] }) let fileList = reactive>([]); - +let fileAdviceList = reactive>([]); onMounted(async () => { let param: any = { projectid: projectid @@ -60,7 +81,7 @@ onMounted(async () => { console.log("结果是", res) setFieldsValue(res) reload() - resButton = await getActionParam({ projectid: projectid, status: "2", taskId: taskid, procesType: route.query.procesType }) + resButton = await getActionParam({ projectid: projectid, stage: "2", taskId: taskid, procesType: route.query.procesType }) showApprovalForm.value = resButton.showApprovalForm }) @@ -130,7 +151,7 @@ const { tableContext } = useListPage({ showActionColumn: false, useSearchForm: false, beforeFetch(params) { - params.status = "2", + params.stage = "2", params.projectid = projectid }, }, @@ -144,7 +165,7 @@ const { tableContext: resourceTableContext } = useListPage({ tableProps: { size: 'small',//紧凑型表格 title: '项目入库资料详情', - api: queryResourceInfo, + api: uploacFilePageList, columns: resourcetableColumns, useSearchForm: false, actionColumn: { @@ -152,12 +173,30 @@ const { tableContext: resourceTableContext } = useListPage({ fixed: "right", }, beforeFetch(params) { - params.status = "2", + params.stage = "1", params.projectid = projectid }, }, }); const [registerResourceTable] = resourceTableContext; +const { tableContext: resourceAdviceTableContext } = useListPage({ + tableProps: { + size: 'small',//紧凑型表格 + title: '意见文件', + api: uploacFilePageList, + columns: resourcetableColumns, + useSearchForm: false, + actionColumn: { + width: 120, + fixed: "right", + }, + beforeFetch(params) { + params.stage = "2", + params.projectid = projectid + }, + }, +}); +const [registerAdviceResourceTable] = resourceAdviceTableContext; function getTableAction(record): ActionItem[] { return [ { @@ -176,12 +215,27 @@ function handleDetailpage(record) { // console.log("我这一行的数据是", param) - downloadFile("/huzhouProject/downloadfile", record.documentName, param) + downloadFile("/huzhouUploadfileinfo/downloadfile", record.documentName, param) } +function removeFile(option) { + for (let i = 0; i < fileList.length; i++) { + if (fileList[i].file.name == option.name) { + fileList.splice(i, 1) + } + } + for (let i = 0; i < fileAdviceList.length; i++) { + if (fileAdviceList[i].file.name == option.name) { + fileAdviceList.splice(i, 1) + } + } +} function httpRequest(option) { fileList.push(option) } +function httpRequestadvice(option) { + fileAdviceList.push(option) +} // 上传前处理 function beforeUpload(file) { let fileSize = file.size @@ -191,13 +245,7 @@ function beforeUpload(file) { ElMessage.error("最大上传5M") return false } - //判断文件类型,必须是xlsx格式 - // let fileName = file.name - // let reg = /^.+(\.xlsx)$/ - // if(!reg.test(fileName)){ - // ElMessage.error("只能上传xlsx!") - // return false - // } + return true } // 文件数量过多时提醒 @@ -215,13 +263,17 @@ async function handleSubmit() { params.append("projectid", projectid) params.append("comment", approvalform.comment) params.append("taskId", taskid) - params.append("status", route.query.status) + params.append("stage", route.query.stage) if (fileList.length > 0) { fileList.forEach((x) => { - console.log("xxxxxxxxxx", x) params.append("file", x.file) }); } + if (fileAdviceList.length > 0) { + fileAdviceList.forEach((x) => { + params.append("adviceFile", x.file) + }); + } console.log("param", params, "approvalform", approvalform) if (await validate()) { @@ -231,7 +283,6 @@ async function handleSubmit() { } - } async function customResetFunc() { router.go(-1) diff --git a/src/views/myWork/completed/index.vue b/src/views/myWork/completed/index.vue index 17ef640..8225f5a 100644 --- a/src/views/myWork/completed/index.vue +++ b/src/views/myWork/completed/index.vue @@ -71,18 +71,24 @@ function handleEdit(record) { // openModal(); // proid.value =record.projectid // record.procesType="1" //流程类型, 已办是1 代办是0 - if (record.status == 1) { + if (record.stage == 1) { router.push({ // push方法 path: '/ProcessApprovalSubPage/initiatesProjectsApproval', //这里是跳转页面的name inComplectedDetail query: record }) } - else if (record.status == 2) { + else if (record.stage == 2) { router.push({ // push方法 path: '/ProcessApprovalSubPage/uploadfileApproval', //这里是跳转页面的name inComplectedDetail query: record }) } + else if(record.stage ==3){ + router.push({ // push方法 + path: '/ProcessApprovalSubPage/projectPlanApproval', //这里是跳转页面的name inComplectedDetail + query: record + }) + } // console.log(selectedRows.value); // console.log(selectedRowKeys.value); } diff --git a/src/views/myWork/inComplete/inComplete.api.ts b/src/views/myWork/inComplete/inComplete.api.ts index ae3d3c9..a93307b 100644 --- a/src/views/myWork/inComplete/inComplete.api.ts +++ b/src/views/myWork/inComplete/inComplete.api.ts @@ -6,7 +6,9 @@ export enum Api { submitTask = "/huzhouProject/approveProjectInfo", myCompleteTask = '/workflow/myCompleteTask', getActionParam = '/workflow/getActionParam', - approveUploadFile = "/huzhouProject/approveUploadFile", + approveUploadFile = "/huzhouUploadfileinfo/approveUploadFile", + modifyProjectInfo='/huzhouProject/modifyProjectInfo' + } /** * 提交入库申请流程 @@ -15,4 +17,5 @@ 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 }) 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 +export const approveUploadFile = (params) => defHttp.post({ url: Api.approveUploadFile, headers: { "Content-Type": "multipart/form-data" }, params }) +export const modifyProjectInfo = (params) => defHttp.post({ url: Api.modifyProjectInfo, params }) diff --git a/src/views/myWork/inComplete/index.vue b/src/views/myWork/inComplete/index.vue index 4a4072a..cca9152 100644 --- a/src/views/myWork/inComplete/index.vue +++ b/src/views/myWork/inComplete/index.vue @@ -64,17 +64,22 @@ function getTableAction(record): ActionItem[] { } function handleEdit(record) { record.procesType="0" //流程类型, 已办是1 代办是0Object.assign({}, xiaoming, {test1:'demo1', test2:'demo2'}); // 第一个参数是 目标对象,后面的全是源对象,执行完之后返回目标对象 - if (record.status == 1) { + if (record.stage == 1) { router.push({ // push方法 path: '/ProcessApprovalSubPage/initiatesProjectsApproval', //这里是跳转页面的name inComplectedDetail query: record }) } - else if (record.status == 2) { + else if (record.stage == 2) { router.push({ // push方法 path: '/ProcessApprovalSubPage/uploadfileApproval', //这里是跳转页面的name inComplectedDetail query: record }) + }else if(record.stage ==3){ + router.push({ // push方法 + path: '/ProcessApprovalSubPage/projectPlanApproval', //这里是跳转页面的name inComplectedDetail + query: record + }) } // console.log(selectedRows.value); // console.log(selectedRowKeys.value); diff --git a/src/views/projectLib/initiatesProjects/initiatesProjects.data.ts b/src/views/projectLib/initiatesProjects/initiatesProjects.data.ts index 63a5ba3..cce4d94 100644 --- a/src/views/projectLib/initiatesProjects/initiatesProjects.data.ts +++ b/src/views/projectLib/initiatesProjects/initiatesProjects.data.ts @@ -12,11 +12,19 @@ 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; +const reformTasksDicts: Array = getDictItemsByCode("reformTasks") +function reformTasksDict() { + for (let i = 0; i < reformTasksDicts.length; i++) { + reformTasksDicts[i].label = reformTasksDicts[i].text; } - return projectTypeDicts + return reformTasksDicts +} +const roomDicts: Array = getDictItemsByCode("room") +function roomDict() { + for (let i = 0; i < roomDicts.length; i++) { + roomDicts[i].label = roomDicts[i].text; + } + return roomDicts } export const formSchemas: FormSchema[] = [ { @@ -35,17 +43,25 @@ export const formSchemas: FormSchema[] = [ required: true, }, { - label: '项目类型', - field: 'projectType', - component: 'Select', + label: '行政区划', + field: 'adminDivision', + //子标题名称(在主标题后面) + component: 'Input', + //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, - - //填写组件Select的属性 - componentProps: { - options: projectTypeDict() - }, required: true, }, + // { + // label: '项目类型', + // field: 'projectType', + // component: 'Select', + // colProps: { span: 12 }, + + // //填写组件Select的属性 + // componentProps: { + // options: projectTypeDict() + // }, + // }, { label: '主要任务', field: 'description', @@ -55,6 +71,7 @@ export const formSchemas: FormSchema[] = [ colProps: { span: 24 }, required: true, }, + { //标题名称 label: '责任单位', @@ -69,7 +86,19 @@ export const formSchemas: FormSchema[] = [ }, { //标题名称 - label: '建设年限', + 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 @@ -80,14 +109,32 @@ export const formSchemas: FormSchema[] = [ //步数 step: 0.1 }, - suffix: "年", //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, { //标题名称 - label: '中央资金', + label: '总投资(元)', + //字段 + field: 'totalMoney', + //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType + component: 'InputNumber', + componentProps: { + //带标签的 input,设置后置标签 + addonBefore: '保留两位小数', + //数值精度 + precision: 2, + //步数 + step: 1 + }, + //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + required: true, + }, + { + //标题名称 + label: '中央资金(元)', //字段 field: 'centralMoney', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType @@ -100,14 +147,13 @@ export const formSchemas: FormSchema[] = [ //步数 step: 1 }, - suffix: "元", //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, { //标题名称 - label: '省级资金', + label: '省级资金(元)', //字段 field: 'provincialMoney', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType @@ -120,14 +166,13 @@ export const formSchemas: FormSchema[] = [ //步数 step: 1 }, - suffix: "元", //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, { //标题名称 - label: '市级资金', + label: '市级资金(元)', //字段 field: 'cityMoney', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType @@ -141,14 +186,13 @@ export const formSchemas: FormSchema[] = [ //步数 step: 1 }, - suffix: "元", //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, { //标题名称 - label: '区县级资金', + label: '区县级资金(元)', //字段 field: 'countyMoney', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType @@ -162,7 +206,85 @@ export const formSchemas: FormSchema[] = [ //步数 step: 1 }, - suffix: "元", + //一列占比总共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 + }, + //一列占比总共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 + }, + //一列占比总共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 + }, + //一列占比总共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 + }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, @@ -174,11 +296,14 @@ export const formSchemas: FormSchema[] = [ //字段 field: 'reformName', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType - component: 'Input', + component: 'Select', //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, + componentProps:{ + options:reformTasksDict() + } }, { //标题名称 @@ -186,11 +311,14 @@ export const formSchemas: FormSchema[] = [ //字段 field: 'superLeader', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType - component: 'Input', + component: 'Select', //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, + componentProps:{ + options:roomDict() + } }, { //标题名称 @@ -214,7 +342,12 @@ export const formSchemas: FormSchema[] = [ //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, - required: true, + dynamicRules: () => { + return [ + { required: true, message: '请填写手机号' }, + { pattern: /^1[3456789]\d{9}$/, message: '手机号码格式有误' }, + ]; + }, }, { //标题名称 @@ -245,7 +378,6 @@ export const formSchemas: FormSchema[] = [ }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, - required: true, }, { @@ -260,7 +392,6 @@ export const formSchemas: FormSchema[] = [ }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, - required: true, }, { //标题名称 @@ -291,11 +422,10 @@ export const formSchemas: FormSchema[] = [ }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, - required: true, }, { //标题名称 - label: '监管单位负责人', + label: '监管单位联系人', //字段 field: 'supervisorContactor', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType @@ -306,9 +436,7 @@ export const formSchemas: FormSchema[] = [ }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, - required: true, }, - { //标题名称 label: '承建单位', @@ -338,7 +466,6 @@ export const formSchemas: FormSchema[] = [ }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, - required: true, }, { //标题名称 @@ -353,7 +480,6 @@ export const formSchemas: FormSchema[] = [ }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, - required: true, }, { //标题名称 diff --git a/src/views/projectLib/initiatesProjects/index.vue b/src/views/projectLib/initiatesProjects/initiatesProjects.vue similarity index 85% rename from src/views/projectLib/initiatesProjects/index.vue rename to src/views/projectLib/initiatesProjects/initiatesProjects.vue index 069d056..9beba1d 100644 --- a/src/views/projectLib/initiatesProjects/index.vue +++ b/src/views/projectLib/initiatesProjects/initiatesProjects.vue @@ -7,12 +7,13 @@ - + +./projectInfoHistory.data \ No newline at end of file diff --git a/src/views/projectLib/planinfoHistory/planinfoHistory.api.ts b/src/views/projectLib/planinfoHistory/planinfoHistory.api.ts new file mode 100644 index 0000000..81e6007 --- /dev/null +++ b/src/views/projectLib/planinfoHistory/planinfoHistory.api.ts @@ -0,0 +1,25 @@ +import { update } from 'lodash-es'; +import { defHttp } from '/@/utils/http/axios'; + +export enum Api { + + planInfoHistoryPageList = '/huzhouPlaninfoHistory/planInfoHistoryPageList', + singlePlanInfoHistoryPageList = '/huzhouPlaninfoHistory/singlePlanInfoHistoryPageList', + queryPlanInfoHistoryGroupList='huzhouPlaninfoHistory/queryPlanInfoHistoryGroupList' +} + +/** + * 职务list + */ +export const planInfoHistoryPageList = (params?) =>defHttp.get({ url: Api.planInfoHistoryPageList, params }); + +export const singlePlanInfoHistoryPageList = (params?) =>defHttp.get({ url: Api.singlePlanInfoHistoryPageList, params }); +export const queryPlanInfoHistoryGroupList = (params?) =>defHttp.get({ url: Api.queryPlanInfoHistoryGroupList, params }); + + + + + + + + diff --git a/src/views/projectLib/planinfoHistory/planinfoHistory.data.ts b/src/views/projectLib/planinfoHistory/planinfoHistory.data.ts new file mode 100644 index 0000000..0632d00 --- /dev/null +++ b/src/views/projectLib/planinfoHistory/planinfoHistory.data.ts @@ -0,0 +1,61 @@ +import { BasicColumn } from '/@/components/Table'; + +// function approvalRsesult(){ +// for(let i = 0;i +
+ + + + + + +
+ + + + + + + + ./projectInfoHistory.data \ No newline at end of file diff --git a/src/views/projectLib/planinfoHistory/planinfoHistoryDetailpage.vue b/src/views/projectLib/planinfoHistory/planinfoHistoryDetailpage.vue new file mode 100644 index 0000000..0bf687d --- /dev/null +++ b/src/views/projectLib/planinfoHistory/planinfoHistoryDetailpage.vue @@ -0,0 +1,41 @@ + + + +./projectInfoHistory.data \ No newline at end of file diff --git a/src/views/projectLib/projectInfo/Detailpage.vue b/src/views/projectLib/projectInfo/Detailpage.vue index c89ab21..6dcb8de 100644 --- a/src/views/projectLib/projectInfo/Detailpage.vue +++ b/src/views/projectLib/projectInfo/Detailpage.vue @@ -4,7 +4,7 @@ -
+
项目资料详情 diff --git a/src/views/projectLib/projectInfo/batchImportProjects.vue b/src/views/projectLib/projectInfo/batchImportProjects.vue new file mode 100644 index 0000000..66e8012 --- /dev/null +++ b/src/views/projectLib/projectInfo/batchImportProjects.vue @@ -0,0 +1,113 @@ + + + diff --git a/src/views/projectLib/projectInfo/index.vue b/src/views/projectLib/projectInfo/index.vue index 94722d0..b57cd3f 100644 --- a/src/views/projectLib/projectInfo/index.vue +++ b/src/views/projectLib/projectInfo/index.vue @@ -8,15 +8,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 d0c4a63..3e59e0f 100644 --- a/src/views/projectLib/projectInfo/projectInfo.api.ts +++ b/src/views/projectLib/projectInfo/projectInfo.api.ts @@ -5,10 +5,12 @@ export enum Api { list = '/sys/user/queryByOrgCodeForAddressList', queryProcessInfo = '/workflow/getprocessInfo', queryProjectInfoById = '/huzhouProject/queryProjectInfoById', - queryprocessinfoById="/huzhouProject/queryprocessinfoById", projectInfoPageList="/huzhouProject/projectInfoPageList", - uploadFileUrl = '/huzhouProject/uploadFile', - queryResourceInfo = '/huzhouProject/queryResourceInfo' + submitUploadFile = '/huzhouUploadfileinfo/submitUploadFile', + uploacFilePageList = '/huzhouUploadfileinfo/uploacFilePageList', + batchImportProjects="/huzhouProject/batchImportProjects", + getIsbatchImportProjects = '/huzhouProject/getIsbatchImportProjects', + batchImportProjectPageListByInstid = '/huzhouProject/batchImportProjectPageListByInstid', } /** * 获取部门树列表 @@ -22,8 +24,14 @@ 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 }); +export const submitUploadFile = (params?) =>defHttp.post({ url: Api.submitUploadFile,headers:{ "Content-Type": "multipart/form-data" }, params }) +export const uploacFilePageList =(params?) => defHttp.get({ url: Api.uploacFilePageList, params }); +export const batchImportProjects = (params?) =>defHttp.post({ url: Api.batchImportProjects,headers:{ "Content-Type": "multipart/form-data" }, params }) +export const getIsbatchImportProjects = (params?) =>defHttp.get({ url: Api.getIsbatchImportProjects, params }); +export const batchImportProjectPageListByInstid = (params?) =>defHttp.get({ url: Api.batchImportProjectPageListByInstid, params }); + + + + diff --git a/src/views/projectLib/projectInfo/projectInfo.data.ts b/src/views/projectLib/projectInfo/projectInfo.data.ts index f9b5afe..26274cd 100644 --- a/src/views/projectLib/projectInfo/projectInfo.data.ts +++ b/src/views/projectLib/projectInfo/projectInfo.data.ts @@ -5,9 +5,9 @@ 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' +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" }) @@ -15,13 +15,20 @@ 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 = getDictItemsByCode("projectStage") +function projectStageDict() { + for (let i = 0; i < projectStageDicts.length; i++) { + projectStageDicts[i].label = projectStageDicts[i].text; + } + return projectStageDicts +} // function approvalRsesult(){ // for(let i = 0;i { + for (let i = 0; i < projectStageDicts.length; i++) { + if (record.stage == projectStageDicts[i].value) { + return projectStageDicts[i].text + } + } + }, + }, ]; - +const reformTasksDicts: Array = getDictItemsByCode("reformTasks") +function reformTasksDict() { + for (let i = 0; i < reformTasksDicts.length; i++) { + reformTasksDicts[i].label = reformTasksDicts[i].text; + } + return reformTasksDicts +} +const roomDicts: Array = getDictItemsByCode("room") +function roomDict() { + for (let i = 0; i < roomDicts.length; i++) { + roomDicts[i].label = roomDicts[i].text; + } + return roomDicts +} export const searchFormSchema: FormSchema[] = [ { label: '项目名称', field: 'projectName', component: 'Input', - //colProps: { span: 6 }, + //colProps: { span: 6 }, }, { label: '项目编号', - field: 'projectId', + field: 'id', component: 'Input', //colProps: { span: 6 }, } @@ -106,7 +138,7 @@ export const formSchemas: FormSchema[] = [ // labelLength: 3, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, - ifShow:false + ifShow: false }, { //标题名称 @@ -124,20 +156,29 @@ export const formSchemas: FormSchema[] = [ required: true, }, { - label: '项目类型', - field: 'projectType', - component: 'Select', + label: '行政区划', + field: 'adminDivision', + //子标题名称(在主标题后面) + component: 'Input', + //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, - - //填写组件Select的属性 - componentProps: { - options:projectTypeDict() - }, - //默认值 - defaultValue: 1, required: true, - }, + // { + // label: '项目类型', + // field: 'projectType', + // component: 'Select', + // colProps: { span: 12 }, + + // //填写组件Select的属性 + // componentProps: { + // options:projectTypeDict() + // }, + // //默认值 + // defaultValue: 1, + // required: true, + + // }, { label: '主要任务', field: 'description', @@ -147,9 +188,10 @@ export const formSchemas: FormSchema[] = [ colProps: { span: 24 }, required: true, }, + { //标题名称 - label: '责任单位', + label: '责任单位', //字段 field: 'dutyWorkplace', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType @@ -161,9 +203,9 @@ export const formSchemas: FormSchema[] = [ }, { //标题名称 - label: '建设年限', + label: '单位属性', //字段 - field: 'constructionPeriod', + field: 'workplaceProperties', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'Input', @@ -173,80 +215,231 @@ export const formSchemas: FormSchema[] = [ }, { //标题名称 - label: '中央资金', + label: '建设周期(月)', + //字段 + field: 'constructionPeriod', + //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType + component: 'InputNumber', + componentProps: { + //数值精度 + precision: 0, + //步数 + step: 0.1 + }, + //一列占比总共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 + }, + //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + required: true, + }, + { + //标题名称 + label: '中央资金(元)', //字段 field: 'centralMoney', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType - component: 'Input', - + component: 'InputNumber', + componentProps: { + //带标签的 input,设置后置标签 + addonBefore: '保留两位小数', + //数值精度 + precision: 2, + //步数 + step: 1 + }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, { //标题名称 - label: '省级资金', + label: '省级资金(元)', //字段 field: 'provincialMoney', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType - component: 'Input', - + component: 'InputNumber', + componentProps: { + //带标签的 input,设置后置标签 + addonBefore: '保留两位小数', + //数值精度 + precision: 2, + //步数 + step: 1 + }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, { //标题名称 - label: '市级资金', + label: '市级资金(元)', //字段 field: 'cityMoney', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType - component: 'Input', + component: 'InputNumber', + componentProps: { + //带标签的 input,设置后置标签 + addonBefore: '保留两位小数', + //数值精度 + precision: 2, + //步数 + step: 1 + }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, }, { //标题名称 - label: '区县级资金', + label: '区县级资金(元)', //字段 field: 'countyMoney', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType - component: 'Input', + component: 'InputNumber', + componentProps: { + //带标签的 input,设置后置标签 + addonBefore: '保留两位小数', + //数值精度 + precision: 2, + //步数 + step: 1 + }, //一列占比总共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 + }, + //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + required: true, + }, { //标题名称 - label: '改革所属项目', + label: '2023年支付(元)', + //字段 + field: 'payamount2023Money', + //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType + component: 'InputNumber', + componentProps: { + //带标签的 input,设置后置标签 + addonBefore: '保留两位小数', + + //数值精度 + precision: 2, + //步数 + step: 1 + }, + //一列占比总共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 + }, + //一列占比总共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 + }, + //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + required: true, + }, + + { + //标题名称 + label: '改革所属项目', //字段 field: 'reformName', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType - component: 'Input', + component: 'Select', //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, + componentProps:{ + options:reformTasksDict() + } }, { //标题名称 - label: '上级指导室', + label: '上级指导室', //字段 field: 'superLeader', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType - component: 'Input', + component: 'Select', //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, required: true, + componentProps:{ + options:roomDict() + } }, { //标题名称 - label: '项目联系人', + label: '项目联系人', //字段 field: 'projectContacts', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType @@ -258,7 +451,7 @@ export const formSchemas: FormSchema[] = [ }, { //标题名称 - label: '联系电话', + label: '联系电话', //字段 field: 'phone', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType @@ -297,7 +490,6 @@ export const formSchemas: FormSchema[] = [ }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, - required: true, }, { @@ -307,17 +499,16 @@ export const formSchemas: FormSchema[] = [ field: 'manageContactor', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'Select', - componentProps:(({formModel})=>{ - console.log("formModel.manageContactor",formModel,formModel.manageContactor) + componentProps: (({ formModel }) => { + console.log("formModel.manageContactor", formModel, formModel.manageContactor) return { - options:[] + options: [] } - + }), //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, - required: true, }, { //标题名称 @@ -348,7 +539,6 @@ export const formSchemas: FormSchema[] = [ }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, - required: true, }, { //标题名称 @@ -363,7 +553,6 @@ export const formSchemas: FormSchema[] = [ }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, - required: true, }, { @@ -395,7 +584,6 @@ export const formSchemas: FormSchema[] = [ }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, - required: true, }, { //标题名称 @@ -410,7 +598,6 @@ export const formSchemas: FormSchema[] = [ }, //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, - required: true, }, { //标题名称 @@ -548,15 +735,15 @@ export const formSchemas: FormSchema[] = [ }, { //标题名称 - label: '项目状态', + label: '项目状态', //字段 - field: 'status', + field: 'stage', //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType component: 'Input', //一列占比总共24,比如一行显示2列 colProps: { span: 12 }, - ifShow:false + ifShow: false } ]; @@ -581,9 +768,9 @@ export const approveStartProcessColumns: BasicColumn[] = [ dataIndex: 'approvalStatue', width: 100, customRender: ({ record }) => { - for(let i =0;i { - 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" + 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', + }, + { + title: '文件状态', + dataIndex: 'status', + customRender: ({ record }) => { + if (record.status == 1) { + return "有效" + } else { + return "历史文件" + } + }, } ] diff --git a/src/views/projectLib/projectInfo/uploadFile.vue b/src/views/projectLib/projectInfo/uploadFile.vue index 17cf277..4b8cfe8 100644 --- a/src/views/projectLib/projectInfo/uploadFile.vue +++ b/src/views/projectLib/projectInfo/uploadFile.vue @@ -1,97 +1,68 @@ - diff --git a/src/views/projectLib/projectInfoHistory/Detaillist.vue b/src/views/projectLib/projectInfoHistory/Detaillist.vue new file mode 100644 index 0000000..728fb02 --- /dev/null +++ b/src/views/projectLib/projectInfoHistory/Detaillist.vue @@ -0,0 +1,74 @@ + + + + + ./projectInfoHistory.data \ No newline at end of file diff --git a/src/views/projectLib/projectInfoHistory/Detailpage.vue b/src/views/projectLib/projectInfoHistory/Detailpage.vue new file mode 100644 index 0000000..ad50f20 --- /dev/null +++ b/src/views/projectLib/projectInfoHistory/Detailpage.vue @@ -0,0 +1,111 @@ + + + +./projectInfoHistory.data \ No newline at end of file diff --git a/src/views/projectLib/projectInfoHistory/index.vue b/src/views/projectLib/projectInfoHistory/index.vue new file mode 100644 index 0000000..fdfb14f --- /dev/null +++ b/src/views/projectLib/projectInfoHistory/index.vue @@ -0,0 +1,73 @@ + + + + +./projectInfoHistory.data \ No newline at end of file diff --git a/src/views/projectLib/projectInfoHistory/projectInfoHistory.api.ts b/src/views/projectLib/projectInfoHistory/projectInfoHistory.api.ts new file mode 100644 index 0000000..93b6e3b --- /dev/null +++ b/src/views/projectLib/projectInfoHistory/projectInfoHistory.api.ts @@ -0,0 +1,25 @@ +import { update } from 'lodash-es'; +import { defHttp } from '/@/utils/http/axios'; + +export enum Api { + + projectInfoHistoryPageList = '/huzhouProjectinfoHistory/projectInfoHistoryPageList', + singleProjectInfoHistoryPageList = '/huzhouProjectinfoHistory/singleProjectInfoHistoryPageList', + queryProjectInfoHistoryById='huzhouProjectinfoHistory/queryProjectInfoHistoryById' +} + +/** + * 职务list + */ +export const projectInfoHistoryPageList = (params?) =>defHttp.get({ url: Api.projectInfoHistoryPageList, params }); + +export const singleProjectInfoHistoryPageList = (params?) =>defHttp.get({ url: Api.singleProjectInfoHistoryPageList, params }); +export const queryProjectInfoHistoryById = (params?) =>defHttp.get({ url: Api.queryProjectInfoHistoryById, params }); + + + + + + + + diff --git a/src/views/projectLib/projectInfoHistory/projectInfoHistory.data.ts b/src/views/projectLib/projectInfoHistory/projectInfoHistory.data.ts new file mode 100644 index 0000000..85ae076 --- /dev/null +++ b/src/views/projectLib/projectInfoHistory/projectInfoHistory.data.ts @@ -0,0 +1,808 @@ +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 < projectTypeDicts.length; i++) { + projectTypeDicts[i].label = projectTypeDicts[i].text; + } + return projectTypeDicts +} + +const projectStageDicts: Array = getDictItemsByCode("projectStage") +function projectStageDict() { + for (let i = 0; i < projectStageDicts.length; i++) { + projectStageDicts[i].label = projectStageDicts[i].text; + } + return projectStageDicts +} +// function approvalRsesult(){ +// for(let i = 0;i = getDictItemsByCode("reformTasks") +function reformTasksDict() { + for (let i = 0; i < reformTasksDicts.length; i++) { + reformTasksDicts[i].label = reformTasksDicts[i].text; + } + return reformTasksDicts +} +const roomDicts: Array = getDictItemsByCode("room") +function roomDict() { + for (let i = 0; i < roomDicts.length; i++) { + roomDicts[i].label = roomDicts[i].text; + } + return roomDicts +} +export const searchFormSchema: FormSchema[] = [ + { + label: '项目名称', + field: 'projectName', + component: 'Input', + //colProps: { span: 6 }, + }, + { + label: '项目编号', + field: 'projectId', + component: 'Input', + //colProps: { span: 6 }, + } + +]; +export const uploadFileformSchemas: FormSchema[] = [ + { + field: 'uploadFile', + component: 'JUpload', + helpMessage: '最多上传3个文件', + label: '上传文件', + componentProps: { maxCount: 3 }, + }, + { + field: 'uploadImage', + component: 'JUpload', + label: '上传图片', + helpMessage: '无限制上传', + componentProps: { + fileType: UploadTypeEnum.image, + }, + }, + +] + +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 + }, + //一列占比总共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 + }, + //一列占比总共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 + }, + //一列占比总共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 + }, + //一列占比总共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 + }, + //一列占比总共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 + }, + //一列占比总共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 + }, + //一列占比总共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 + }, + //一列占比总共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 + }, + //一列占比总共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 + }, + //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + required: true, + }, + + { + //标题名称 + label: '改革所属项目', + //字段 + field: 'reformName', + //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType + component: 'Select', + + //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + required: true, + componentProps:{ + options:reformTasksDict() + } + }, + { + //标题名称 + label: '上级指导室', + //字段 + field: 'superLeader', + //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType + component: 'Select', + + //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + required: true, + componentProps:{ + options:roomDict() + } + }, + { + //标题名称 + 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 }, + }, + + { + //标题名称 + label: '管理单位负责人', + //字段 + field: 'manageContactor', + //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType + component: 'Select', + componentProps: (({ formModel }) => { + console.log("formModel.manageContactor", formModel, formModel.manageContactor) + return { + options: [] + } + + }), + + //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + }, + { + //标题名称 + 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 }, + }, + { + //标题名称 + 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: '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 }, + }, + { + //标题名称 + 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: '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 }, + }, + { + //标题名称 + label: '项目状态', + //字段 + field: 'stage', + //组件 支持组件详见 components/Form/src/types/index.ts 中的 ComponentType + component: 'Input', + + //一列占比总共24,比如一行显示2列 + colProps: { span: 12 }, + ifShow: false + } +]; + +export const approveStartProcessColumns: BasicColumn[] = [ + + { + title: '节点名称', + dataIndex: 'taskName', + }, + { + title: '处理人', + dataIndex: 'operator', + width: 150, + }, + { + title: '处理时间', + dataIndex: 'operateDate', + width: 150, + }, + { + title: '审批状态', + dataIndex: 'approvalStatue', + width: 100, + customRender: ({ record }) => { + for (let i = 0; i < approvalRsesults.length; i++) { + if (record.approvalStatue == approvalRsesults[i].value) { + return approvalRsesults[i].text + } + } + }, + }, + { + title: '审批意见', + dataIndex: 'comment', + 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', + }, + { + title: '文件状态', + dataIndex: 'status', + customRender: ({ record }) => { + if (record.status == 1) { + return "有效" + } else { + return "历史文件" + } + }, + } +] diff --git a/src/views/projectLib/projectPlan/addPlan.vue b/src/views/projectLib/projectPlan/addPlan.vue index ff0ecc3..54162cd 100644 --- a/src/views/projectLib/projectPlan/addPlan.vue +++ b/src/views/projectLib/projectPlan/addPlan.vue @@ -1,132 +1,125 @@ - - \ No newline at end of file diff --git a/src/views/projectLib/projectPlan/addPlanFile.vue b/src/views/projectLib/projectPlan/addPlanFile.vue new file mode 100644 index 0000000..6961b7e --- /dev/null +++ b/src/views/projectLib/projectPlan/addPlanFile.vue @@ -0,0 +1,134 @@ + + + diff --git a/src/views/projectLib/projectPlan/elstepchild.vue b/src/views/projectLib/projectPlan/elstepchild.vue new file mode 100644 index 0000000..f3d072a --- /dev/null +++ b/src/views/projectLib/projectPlan/elstepchild.vue @@ -0,0 +1,29 @@ + + + + \ No newline at end of file diff --git a/src/views/projectLib/projectPlan/index.vue b/src/views/projectLib/projectPlan/index.vue index 92c7258..f6ccb7b 100644 --- a/src/views/projectLib/projectPlan/index.vue +++ b/src/views/projectLib/projectPlan/index.vue @@ -1,26 +1,41 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/views/projectLib/projectPlan/planinfoFileDetail.vue b/src/views/projectLib/projectPlan/planinfoFileDetail.vue new file mode 100644 index 0000000..34ef1c6 --- /dev/null +++ b/src/views/projectLib/projectPlan/planinfoFileDetail.vue @@ -0,0 +1,116 @@ + + + diff --git a/src/views/projectLib/projectPlan/projectPlan.api.ts b/src/views/projectLib/projectPlan/projectPlan.api.ts index afb08b1..0e010da 100644 --- a/src/views/projectLib/projectPlan/projectPlan.api.ts +++ b/src/views/projectLib/projectPlan/projectPlan.api.ts @@ -2,19 +2,36 @@ import { defHttp } from '/@/utils/http/axios'; export enum Api { saveprojectInfo = "", - queryProjectApprovedPage = '/huzhouProject/queryProjectApprovedPage', + projectApprovedPageList = '/huzhouProject/projectApprovedPageList', queryPlanModuleDetailPage = "/huzhouPlan/queryPlanModuleDetailPage", queryPlanModuleone = '/huzhouPlan/queryPlanModuleone', saveProjectPlan = '/huzhouPlan/saveProjectPlan', - queryProjectPlan="/huzhouPlan/queryProjectPlan" + queryProjectPlan="/huzhouPlan/queryProjectPlan", + submitplaninfoUploadFile="/huzhouPlan/submitplaninfoUploadFile", + queryPlanInfoMainTimeline="/huzhouPlan/queryPlanInfoMainTimeline", + planUploadFile="/huzhouPlan/planUploadFile", + queryPlaninfoFilePageByid="/huzhouPlan/queryPlaninfoFilePageByid", + planUploadModifyFile="/huzhouPlan/planUploadModifyFile", + modifyPlaninfo="/huzhouPlan/modifyPlaninfo", + approvePlaninfo='huzhouPlan/approvePlaninfo' } /** * 提交入库申请流程 */ -export const queryProjectApprovedPage = (params) => defHttp.get({ url: Api.queryProjectApprovedPage, params }) +export const projectApprovedPageList = (params) => defHttp.get({ url: Api.projectApprovedPageList, 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 }) +export const submitplaninfoUploadFile = (params?) =>defHttp.post({ url: Api.submitplaninfoUploadFile,headers:{ "Content-Type": "multipart/form-data" }, params }) +export const queryPlanInfoMainTimeline = (params) => defHttp.get({ url: Api.queryPlanInfoMainTimeline, params }) +export const planUploadFile = (params?) =>defHttp.post({ url: Api.planUploadFile,headers:{ "Content-Type": "multipart/form-data" }, params }) +export const queryPlaninfoFilePageByid = (params) => defHttp.get({ url: Api.queryPlaninfoFilePageByid, params }) +export const planUploadModifyFile = (params?) =>defHttp.post({ url: Api.planUploadModifyFile,headers:{ "Content-Type": "multipart/form-data" }, params }) +export const modifyPlaninfo = (params?) =>defHttp.post({ url: Api.modifyPlaninfo,headers:{ "Content-Type": "multipart/form-data" }, params }) +export const approvePlaninfo = (params?) =>defHttp.post({ url: Api.approvePlaninfo,headers:{ "Content-Type": "multipart/form-data" }, params }) + + + diff --git a/src/views/projectLib/projectPlan/projectPlan.data.ts b/src/views/projectLib/projectPlan/projectPlan.data.ts index 725aaa0..f366bb9 100644 --- a/src/views/projectLib/projectPlan/projectPlan.data.ts +++ b/src/views/projectLib/projectPlan/projectPlan.data.ts @@ -91,7 +91,7 @@ export const planDetailColumns: BasicColumn[] = [ let days = dayjs(record.scheduledEndTime).diff(text, "day") console.log("我这一行的数据是daysdaysdays", days) - if ( days > record.maxDays) { + if (days > record.maxDays) { return '计划时常超过预定期限'; } } @@ -276,4 +276,78 @@ export const ProcessColumns: BasicColumn[] = [ dataIndex: 'workplace', width: 100, } -]; \ No newline at end of file +]; +export const PlaninfoColumn: BasicColumn[] = [ + + { + title: '任务名称', + dataIndex: 'taskName', + }, + { + title: '计划开始时间', + dataIndex: 'scheduledStartTime', + width: 150, + }, + { + title: '计划结束时间', + dataIndex: 'scheduledEndTime', + width: 150, + }, + { + title: '所需文件', + dataIndex: 'taskFile', + width: 100, + }, + { + title: '是否已完成', + dataIndex: 'isfinish', + width: 100, + customRender: ({ record }) => { + if (record.isfinish == 1) { + return "已完成" + } else { + return "未完成" + } + }, + } + +]; +export const PlaninfoFiletableColumns: 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', + }, + { + title: '文件状态', + dataIndex: 'status', + customRender: ({ record }) => { + if (record.status == 1) { + return "审批中" + } else if(record.status == 2) { + return "有效" + } + else { + return "历史文件" //0 + } + }, + } +] \ No newline at end of file diff --git a/src/views/projectLib/projectPlan/viewPlanDetail.vue b/src/views/projectLib/projectPlan/viewPlanDetail.vue index 54384f5..afe4036 100644 --- a/src/views/projectLib/projectPlan/viewPlanDetail.vue +++ b/src/views/projectLib/projectPlan/viewPlanDetail.vue @@ -1,75 +1,222 @@ - + +} + +:deep(.el-timeline-item__tail) { + border-left: none; + border-top: 2px solid #e4e7ed; + width: 100%; + position: absolute; + top: 9px; +} + +:deep(.el-timeline-item__wrapper) { + padding-left: 0; + position: absolute; + top: 20px; + transform: translateX(-50%); + text-align: center; +} + +:deep(.el-timeline-item__timestamp) { + font-size: 14px; + +} + \ No newline at end of file diff --git a/src/views/projectLib/projectPlanModule/addModuleDetailPage.vue b/src/views/projectLib/projectPlanModule/addModuleDetailPage.vue deleted file mode 100644 index ed5b36c..0000000 --- a/src/views/projectLib/projectPlanModule/addModuleDetailPage.vue +++ /dev/null @@ -1,121 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/views/projectLib/projectPlanModule/addModulePage.vue b/src/views/projectLib/projectPlanModule/addModulePage.vue deleted file mode 100644 index 426e898..0000000 --- a/src/views/projectLib/projectPlanModule/addModulePage.vue +++ /dev/null @@ -1,83 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/views/projectLib/projectPlanModule/index.vue b/src/views/projectLib/projectPlanModule/index.vue deleted file mode 100644 index ac4c78a..0000000 --- a/src/views/projectLib/projectPlanModule/index.vue +++ /dev/null @@ -1,131 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/projectLib/projectPlanModule/projectPlanModule.api.ts b/src/views/projectLib/projectPlanModule/projectPlanModule.api.ts deleted file mode 100644 index c3a2d52..0000000 --- a/src/views/projectLib/projectPlanModule/projectPlanModule.api.ts +++ /dev/null @@ -1,23 +0,0 @@ -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 deleted file mode 100644 index 8d7ad7d..0000000 --- a/src/views/projectLib/projectPlanModule/projectPlanModule.data.ts +++ /dev/null @@ -1,173 +0,0 @@ -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