Browse Source

提交修改

master
zhouhaibin 5 months ago
parent
commit
f249554dc8
  1. 107
      src/views/ProcessApprovalSubPage/ProjectArchiveApproval.vue
  2. 27
      src/views/ProcessApprovalSubPage/component/ProjectinfoComponent.vue
  3. 45
      src/views/ProcessApprovalSubPage/component/fieldChangeDetail.vue
  4. 17
      src/views/ProcessApprovalSubPage/fieldChangeApproval.vue
  5. 100
      src/views/ProcessApprovalSubPage/initiatesProjectsApproval/childProjectsApproval(弃用).vue
  6. 6
      src/views/Regulation/RegulationLab/RegulationLab.data.ts
  7. 16
      src/views/projectLib/initiatesProjects/initiatesProjects.vue
  8. 3
      src/views/projectLib/projectContract/projectContract.api.ts
  9. 87
      src/views/projectLib/projectContract/projectContract.data.ts
  10. 39
      src/views/projectLib/projectContract/projectContract.vue
  11. 4
      src/views/projectLib/projectInfo/Detailpage.vue
  12. 32
      src/views/projectLib/projectInfo/index.vue
  13. 55
      src/views/projectLib/projectInfo/modifyfieldInfo.vue
  14. 4
      src/views/projectLib/projectInfo/projectInfo.api.ts
  15. 1
      src/views/projectLib/projectInfo/projectInfo.data.ts
  16. 2
      src/views/projectLib/projectInfoHistory/Detaillist.vue
  17. 17
      src/views/projectLib/projectPlan/planinfoFileDetail.vue

107
src/views/ProcessApprovalSubPage/ProjectArchiveApproval.vue

@ -1,107 +0,0 @@
<template>
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
<el-tab-pane label="项目入库详情" name="1">
<ProjectDetails :isEdit="false" :projectid="projectid" />
</el-tab-pane>
<el-tab-pane label="项目资料" name="2">
<el-divider content-position="left">项目资料详情</el-divider>
<UploadfileDetail :projectid="projectid" :stage="1" />
<el-divider content-position="left">意见文件</el-divider>
<UploadfileDetail :projectid="projectid" :stage="2" />
</el-tab-pane>
<el-tab-pane label="项目计划详情" name="3">
<PlaninfoDetails :projectid="projectid" :showActionColumn="true">
<template #default="record">
<TableAction :actions="getTableAction(record)" />
</template>
</PlaninfoDetails>
</el-tab-pane>
</el-tabs>
<ApprovalDetails :processInstanceId="processInstanceId"/>
<planinfoFileDetail @register="registerFileInfo" :planinfoid="planinfoid" :taskName="taskName" :isfinish="isfinish" />
<ApprovalFromPage :showApprovalForm="showApprovalForm" :buttons="resButton.buttons" ref="ApprovalFromPageRef"
@submit="handleSubmit" @exit="exit" />
</template>
<script lang="ts" name="system-user" setup>
//ts
import { ref,onMounted } from 'vue';
import { useModal } from '@/components/Modal';
import ProjectDetails from "../ProcessApprovalSubPage/component/ProjectDetails.vue"
import UploadfileDetail from "../ProcessApprovalSubPage/component/UploadfileDetail.vue"
import PlaninfoDetails from "../ProcessApprovalSubPage/component/PlaninfoDetails.vue"
import ApprovalDetails from "../ProcessApprovalSubPage/component/ApprovalDetails.vue"
import ApprovalFromPage from "../ProcessApprovalSubPage/component/ApprovalFromPage.vue"
import { ActionItem, TableAction } from '@/components/Table';
import { getActionParam } from '../myWork/inComplete/inComplete.api';
import planinfoFileDetail from '../projectLib/projectPlan/planinfoFileDetail.vue'
import { approveProjectArchive } from "../projectLib/projectArchive/projectArchive.api"
import type { TabsPaneContext } from 'element-plus'
let emit = defineEmits(["close"])
let dataTo = defineProps(["record"])
console.log("routerouterouteroute", dataTo.record)
let projectid = dataTo.record.projectId as string
let processInstanceId = dataTo.record.processInstanceId
let taskid = dataTo.record.taskId as string
let ApprovalFromPageRef = ref()
let showApprovalForm = ref()
let planinfoid = ref()
let taskName = ref()
let isfinish = ref()
let resButton = ref({
showApprovalForm: false,
isEdit: false,
buttons: []
})
onMounted(async () => {
resButton.value = await getActionParam({ processInstanceId: processInstanceId, taskId: taskid, procesType: dataTo.record.procesType })
showApprovalForm.value = resButton.value.showApprovalForm
})
const [registerFileInfo, { openModal: openFileInfo }] = useModal();//
console.log("dataTo",dataTo)
const activeName = ref('1')
const handleClick = (tab: TabsPaneContext, event: Event) => {
console.log(tab, event)
}
function getTableAction(record): ActionItem[] {
return [
{
label: '详情',
onClick: handleDetail.bind(null, record),
},
];
}
function handleDetail(record) {
console.log("rrrrrrrr", record)
planinfoid.value = record.record.id
taskName.value = record.record.taskName
isfinish.value = record.record.isfinish
console.log("rrrrrrrr", record, record.id, record.taskName, planinfoid.value, taskName.value)
openFileInfo()
}
async function handleSubmit() {
let approvalform = await ApprovalFromPageRef.value.getFieldsValueApprovalForm();
const params = new FormData()
params.append("flag", approvalform.flag)
params.append("projectid", projectid)
params.append("comment", approvalform.comment)
params.append("taskId", taskid)
console.log("param", params, "approvalform", approvalform)
if (await ApprovalFromPageRef.value.validateApprovalForm()) {
let res = await approveProjectArchive(params)
console.log("提交成功!", res)
emit("close")
}
}
function exit() {
emit("close")
}
</script>
<style scoped></style>

27
src/views/ProcessApprovalSubPage/component/ProjectinfoComponent.vue

@ -75,25 +75,26 @@ function getTableAction(record): ActionItem[] {
return [ return [
{ {
label: dataTo.title, label: dataTo.title,
// ifShow: () => { ifShow: () => {
// if (dataTo.title == "") { // if (dataTo.title == "") {
// if (record.projectId == undefined) { // if (record.projectId == undefined) {
// return true // return true
// } else { // } else {
// return false // return false
// } // }
// } else if (dataTo.title == "") { // } else
// if (record.projectId != undefined) { if (dataTo.title == "新增项目合同") {
// return true if (record.projectId != undefined) {
// } else if (record.children == null) { return true
// return true } else if (record.children == null) {
// } else { return true
// return false } else {
// } return false
// } else { }
// return true } else {
// } return true
// }, }
},
onClick: handlemodify.bind(null, record), onClick: handlemodify.bind(null, record),
} }
]; ];

45
src/views/ProcessApprovalSubPage/component/fieldChangeDetail.vue

@ -6,7 +6,7 @@
<el-divider content-position="left">字段新值</el-divider> <el-divider content-position="left">字段新值</el-divider>
<BasicForm @register="registernewFieldForm" /> <BasicForm @register="registernewFieldForm" />
<div v-if="datares"> <div v-if="datares">
<el-divider content-position="left">资料详情</el-divider> <el-divider content-position="left">文件详情</el-divider>
<BasicTable @register="registerResourceTable"> <BasicTable @register="registerResourceTable">
<template #action="{ record }"> <template #action="{ record }">
<TableAction :actions="getTableAction(record)" /> <TableAction :actions="getTableAction(record)" />
@ -15,35 +15,41 @@
</div> </div>
</div> </div>
</template> </template>
<script lang="ts" name="uploadfileApproval" setup> <script lang="ts" name="fieldChangeDetail" setup>
import { onMounted, ref, reactive } from 'vue' import { onMounted, ref, reactive } from 'vue'
import { useForm, BasicForm } from '@/components/Form'; import { useForm, BasicForm } from '@/components/Form';
import { BasicTable, ActionItem, TableAction, useTable } from '@/components/Table'; import { BasicTable, ActionItem, TableAction, useTable } from '@/components/Table';
import { formSchemas, resourcetableColumns } from '../../projectLib/projectInfo/projectInfo.data'; import { formSchemas, resourcetableColumns } from '../../projectLib/projectInfo/projectInfo.data';
import { getFieldchangeByid, getFieldchangeFileinfoList } from '../../projectLib/projectInfo/projectInfo.api' import { getFieldchangeByGroupid, getFieldchangeFileinfoList } from '../../projectLib/projectInfo/projectInfo.api'
import { downloadFile } from "@/api/common/api" import { downloadFile } from "@/api/common/api"
let dataTo = defineProps(["fieldChangeid", "isEdit"]) import { FormSchema } from '@/components/Form';
let dataTo = defineProps(["fieldChangeGroupid", "isEdit"])
console.log("dataTodataTodataTo", dataTo) console.log("dataTodataTodataTo", dataTo)
let datares = ref() let datares = ref()
let showFormSchema: FormSchema[] = []
let objnew = ref({})
let objold = ref({})
onMounted(async () => { onMounted(async () => {
let res = await getFieldchangeByid({ fieldChangeid: dataTo.fieldChangeid }) let res = await getFieldchangeByGroupid({ fieldChangeGroupid: dataTo.fieldChangeGroupid })
datares.value = await getFieldchangeFileinfoList({ fieldChangeid: dataTo.fieldChangeid }) datares.value = await getFieldchangeFileinfoList({ fieldChangeGroupid: dataTo.fieldChangeGroupid })
// if (datares.value) { // if (datares.value) {
// setTableData(datares.value) // setTableData(datares.value)
// } // }
formSchemas.forEach(item => { res.forEach(itemRes => {
if (item.field == res.fieldValue) { formSchemas.forEach(itemformSchemas => {
resetoldSchema(item) if (itemformSchemas.field == itemRes.fieldValue) {
resetnewSchema(item) showFormSchema.push(itemformSchemas)
let objnew = {} objnew[itemRes.fieldValue] = itemRes.newvalue
objnew[res.fieldValue] = res.newvalue objold[itemRes.fieldValue] = itemRes.oldvalue
}
})
})
resetoldSchema(showFormSchema)
resetnewSchema(showFormSchema)
setnewFieldsValue(objnew) setnewFieldsValue(objnew)
let objold = {}
objold[res.fieldValue] = res.oldvalue
setoldFieldsValue(objold) setoldFieldsValue(objold)
setProps({ disabled: dataTo.isEdit == true ? false : true }) setProps({ disabled: dataTo.isEdit == true ? false : true })
}
})
}) })
@ -75,7 +81,7 @@ const [registerResourceTable, { setTableData }] = useTable({
slots: { customRender: 'action' }, slots: { customRender: 'action' },
}, },
beforeFetch(param) { beforeFetch(param) {
param.fieldChangeid = dataTo.fieldChangeid param.fieldChangeGroupid = dataTo.fieldChangeGroupid
} }
}); });
function getTableAction(record): ActionItem[] { function getTableAction(record): ActionItem[] {
@ -98,14 +104,11 @@ function handleDetailpage(record) {
downloadFile("/huzhouUploadfileinfo/downloadfile", record.documentName, param) downloadFile("/huzhouUploadfileinfo/downloadfile", record.documentName, param)
} }
const getCssVarName = (type: string) => {
return `--el-box-shadow${type ? '-' : ''}${type}`
}
defineExpose({ getnewFieldsValue, validate }) defineExpose({ getnewFieldsValue, validate })
</script> </script>
<style scoped> <style scoped>
.first { .first {
padding-top: 20px; padding-top: 20px;
margin-top: 20px; margin-top: 20px;

17
src/views/ProcessApprovalSubPage/fieldChangeApproval.vue

@ -1,6 +1,6 @@
<template> <template>
<!-- 自定义表单 --> <!-- 自定义表单 -->
<fieldChangeDetail :fieldChangeid="fieldChangeid" :isEdit="resButton.isEdit" ref="fieldChangeDetailRef"/> <fieldChangeDetail :fieldChangeGroupid="fieldChangeGroupid" :isEdit="resButton.isEdit" ref="fieldChangeDetailRef" />
<el-divider content-position="left" v-if="resButton.isEdit">重新上传项目资料</el-divider> <el-divider content-position="left" v-if="resButton.isEdit">重新上传项目资料</el-divider>
<div v-if="resButton.isEdit" style="display: flex; justify-content: center; align-items: center; height: 100px;"> <div v-if="resButton.isEdit" style="display: flex; justify-content: center; align-items: center; height: 100px;">
<el-upload class="upload-demo" ref="upload" action :http-request="httpRequest" :before-upload="beforeUpload" <el-upload class="upload-demo" ref="upload" action :http-request="httpRequest" :before-upload="beforeUpload"
@ -17,7 +17,7 @@
import { onMounted, ref, reactive } from 'vue' import { onMounted, ref, reactive } from 'vue'
import { approvePlanFile, getActionParam } from '../myWork/inComplete/inComplete.api'; import { approvePlanFile, getActionParam } from '../myWork/inComplete/inComplete.api';
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { getFieldchangeByid,approvalFieldchange } from '../projectLib/projectInfo/projectInfo.api' import { getFieldchangeByGroupid, approvalFieldchange } from '../projectLib/projectInfo/projectInfo.api'
import fieldChangeDetail from "../ProcessApprovalSubPage/component/fieldChangeDetail.vue" import fieldChangeDetail from "../ProcessApprovalSubPage/component/fieldChangeDetail.vue"
import ApprovalDetails from "../ProcessApprovalSubPage/component/ApprovalDetails.vue"; import ApprovalDetails from "../ProcessApprovalSubPage/component/ApprovalDetails.vue";
@ -25,7 +25,7 @@ import ApprovalFromPage from "../ProcessApprovalSubPage/component/ApprovalFromPa
let dataTo = defineProps(["record"]) let dataTo = defineProps(["record"])
const emit = defineEmits(['close']); const emit = defineEmits(['close']);
let fieldChangeDetailRef = ref() let fieldChangeDetailRef = ref()
let fieldChangeid = dataTo.record.projectId as string let fieldChangeGroupid = dataTo.record.projectId as string
let processInstanceId = dataTo.record.processInstanceId let processInstanceId = dataTo.record.processInstanceId
let taskid = dataTo.record.taskId as string let taskid = dataTo.record.taskId as string
let fieldValue = ref() let fieldValue = ref()
@ -40,8 +40,8 @@ let fileList = reactive<Array<any>>([]);
onMounted(async () => { onMounted(async () => {
resButton = await getActionParam({ processInstanceId: processInstanceId, taskId: taskid, procesType: dataTo.record.procesType }) resButton = await getActionParam({ processInstanceId: processInstanceId, taskId: taskid, procesType: dataTo.record.procesType })
showApprovalForm.value = resButton.showApprovalForm showApprovalForm.value = resButton.showApprovalForm
let res = await getFieldchangeByid({ fieldChangeid: fieldChangeid }) let res = await getFieldchangeByGroupid({ fieldChangeGroupid: fieldChangeGroupid })
fieldValue.value=res.fieldValue fieldValue.value = res
}) })
@ -79,14 +79,15 @@ function handleExceed() {
async function handleSubmit() { async function handleSubmit() {
let approvalform = await ApprovalFromPageRef.value.getFieldsValueApprovalForm(); let approvalform = await ApprovalFromPageRef.value.getFieldsValueApprovalForm();
let data = fieldChangeDetailRef.value.getnewFieldsValue() let data = fieldChangeDetailRef.value.getnewFieldsValue()
fieldChangeDetailRef.value.validate()
const params = new FormData() const params = new FormData()
params.append("flag", approvalform.flag) params.append("flag", approvalform.flag)
params.append("fieldChangeid", fieldChangeid) params.append("fieldChangeGroupid", fieldChangeGroupid)
params.append("comment", approvalform.comment) params.append("comment", approvalform.comment)
params.append("taskId", taskid) params.append("taskId", taskid)
params.append("isEdit", resButton.isEdit == true ? "1" : "0") params.append("isEdit", resButton.isEdit == true ? "1" : "0")
params.append("newvalue",data[fieldValue.value]) Object.keys(data).forEach(key => {
params.append(key, data[key])
})
if (fileList.length > 0) { if (fileList.length > 0) {
fileList.forEach((x) => { fileList.forEach((x) => {
params.append("file", x.file) params.append("file", x.file)

100
src/views/ProcessApprovalSubPage/initiatesProjectsApproval/childProjectsApproval(弃用).vue

@ -1,100 +0,0 @@
<template>
<!-- 自定义表单 -->
<el-divider content-position="left">项目入库详情</el-divider>
<BasicForm @register="registerProjectForm" @submit="handleSubmit" />
</template>
<script lang="ts" name="initiatesProjectsApproval" setup>
import { onMounted, onUpdated } from 'vue'
import { useForm, BasicForm } from '@/components/Form';
import { formSchemas } from '../../projectLib/projectInfo/projectInfo.data';
import { queryProjectInfoById } from '../../projectLib/projectInfo/projectInfo.api'
import { modifyProjectInfo,modifyProjectInfoApproval } from '../../myWork/inComplete/inComplete.api';
import { getUserInfoByid } from '../../projectLib/initiatesProjects/initiatesProjects.api'
let dataTo = defineProps(["projectid", "isEdit", "IsApproval"])
const emit = defineEmits(['close']);
console.log("结果ddddd是", dataTo)
onMounted(async () => {
let param: any = {
projectid: dataTo.projectid
}
let res = await queryProjectInfoById(param)
console.log("结果是", res, dataTo)
setFieldsValue(res)
})
onUpdated(async () => {
console.log("我更新了")
let proform = getFieldsValueProjectForm()
for (let key in proform) {
if (key.indexOf("Contactor") != -1) {
let userid = proform[key]
let res = await getUserInfoByid({ id: userid })
console.log(key, res.nickname)
updateProjectSchema({
field: key,
componentProps: {
options: [{
value: userid,
label: res.nickname
}
],
}
})
}
}
}
)
/**
* BasicForm绑定注册;src\views\ProcessApprovalSubPage\initiatesProjectsApproval\initiatesProjectsApproval.vue
* useForm 是整个框架的核心用于表单渲染里边封装了很多公共方法;
* 支持schemas: 渲染表单列autoSubmitOnEnter回车提交,submitButtonOptions自定义按钮文本和图标等方法
* 平台通过此封装简化了代码支持自定义扩展;
*/
const [registerProjectForm, { validate: validateProjectForm, setFieldsValue, getFieldsValue: getFieldsValueProjectForm, updateSchema: updateProjectSchema }] = useForm({
//
schemas: formSchemas,
showActionButtonGroup: dataTo.isEdit,
//
// autoSubmitOnEnter: true,
// //
// showResetButton: false,
//
submitButtonOptions: { text: '提交', preIcon: '' },
resetButtonOptions: { text: '取消', preIcon: '' },
// 24 0-24
resetFunc: customResetFunc,
actionColOptions: { span: 14 },
labelCol: { style: { width: '120px' } },
wrapperCol: { style: { width: 'auto' } },
disabled: dataTo.isEdit == true ? false : true,
});
async function handleSubmit() {
let projectform = await getFieldsValueProjectForm();
let param = {
projectInfo: projectform
}
// let outrs = Object.assign({},param,projectform)
console.log("param", param, "projectform", projectform)
if (await validateProjectForm()) {
if (dataTo.IsApproval) {
modifyProjectInfoApproval(projectform)
emit("close")
} else {
modifyProjectInfo(projectform)
emit("close")
}
}
}
async function customResetFunc() {
emit("close")
}
</script>
<style></style>

6
src/views/Regulation/RegulationLab/RegulationLab.data.ts

@ -48,7 +48,7 @@ export const searchFormSchema: FormSchema[] = [
label: '资料名称', label: '资料名称',
field: 'regulationlabName', field: 'regulationlabName',
component: 'Input', component: 'Input',
colProps: { span: 8 }, colProps: { span: 5 },
}, },
{ {
label: '资料分类', label: '资料分类',
@ -58,14 +58,14 @@ export const searchFormSchema: FormSchema[] = [
componentProps: { componentProps: {
dictType: 'regulationlabCategory' dictType: 'regulationlabCategory'
}, },
colProps: { span: 8 }, colProps: { span: 5 },
}, },
{ {
label: '文件名称', label: '文件名称',
field: 'documentName', field: 'documentName',
component: 'Input', component: 'Input',
colProps: { span: 8 }, colProps: { span: 5 },
} }
]; ];

16
src/views/projectLib/initiatesProjects/initiatesProjects.vue

@ -8,12 +8,25 @@
</div> </div>
</template> </template>
<script lang="ts" name="initiatesProjects" setup> <script lang="ts" name="initiatesProjects" setup>
import { } from 'vue' import { onMounted } from 'vue'
import { useForm, BasicForm } from '@/components/Form'; import { useForm, BasicForm } from '@/components/Form';
import { formSchemas } from '../projectInfo/projectInfo.data'; import { formSchemas } from '../projectInfo/projectInfo.data';
import { submitProjectInfo } from './initiatesProjects.api' import { submitProjectInfo } from './initiatesProjects.api'
import { Modal } from 'ant-design-vue'; import { Modal } from 'ant-design-vue';
import { queryProjectInfoById } from '@/views/projectLib/projectInfo/projectInfo.api'
let dataTo = defineProps(["projectid"])
let emit = defineEmits(["close"]) let emit = defineEmits(["close"])
onMounted(async () => {
if (dataTo.projectid) {
let param: any = {
projectid: dataTo.projectid
}
let res = await queryProjectInfoById(param)
console.log("结果是", res)
setFieldsValue(res)
}
})
@ -76,4 +89,3 @@ function clearObjectValues(obj) {
padding-right: 40px padding-right: 40px
} }
</style> </style>

3
src/views/projectLib/projectContract/projectContract.api.ts

@ -10,12 +10,13 @@ export enum Api {
getContractinfoListById="/huzhouContractinfo/getContractinfoListById", getContractinfoListById="/huzhouContractinfo/getContractinfoListById",
getContractProjectPageList="/huzhouContractinfo/getContractProjectPageList", getContractProjectPageList="/huzhouContractinfo/getContractProjectPageList",
isExitTaskNameInPlanInfo="/huzhouContractinfo/isExitTaskNameInPlanInfo", isExitTaskNameInPlanInfo="/huzhouContractinfo/isExitTaskNameInPlanInfo",
getTaskNameTypeDict="/huzhouPlan/getTaskNameTypeDict",
} }
export const huzhouContractinfoPageList = (params) => defHttp.get({ url: Api.huzhouContractinfoPageList, params }) export const huzhouContractinfoPageList = (params) => defHttp.get({ url: Api.huzhouContractinfoPageList, params })
export const getContractProjectPageList = (params) => defHttp.get({ url: Api.getContractProjectPageList, params }) export const getContractProjectPageList = (params) => defHttp.get({ url: Api.getContractProjectPageList, params })
export const isExitTaskNameInPlanInfo = (params) => defHttp.get({ url: Api.isExitTaskNameInPlanInfo, params }) export const isExitTaskNameInPlanInfo = (params) => defHttp.get({ url: Api.isExitTaskNameInPlanInfo, params })
export const getTaskNameTypeDict = (params) => defHttp.get({ url: Api.getTaskNameTypeDict, params })
export const getContractinfoByProjectId = (params) => defHttp.get({ url: Api.getContractinfoByProjectId, params }) export const getContractinfoByProjectId = (params) => defHttp.get({ url: Api.getContractinfoByProjectId, params })
export const isExistContractinfo = (params) => defHttp.get({ url: Api.isExistContractinfo, params }) export const isExistContractinfo = (params) => defHttp.get({ url: Api.isExistContractinfo, params })

87
src/views/projectLib/projectContract/projectContract.data.ts

@ -1,6 +1,6 @@
import { FormSchema } from '@/components/Form'; import { FormSchema } from '@/components/Form';
import { BasicColumn } from '@/components/Table'; import { BasicColumn } from '@/components/Table';
import { isExitTaskNameInPlanInfo } from "./projectContract.api" import { getTaskNameTypeDict } from "./projectContract.api"
import { message } from "ant-design-vue" import { message } from "ant-design-vue"
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import { currentUser } from '@/api/auth/sysUserPersonal'; import { currentUser } from '@/api/auth/sysUserPersonal';
@ -245,48 +245,53 @@ export const contractformSchemas: FormSchema[] = [
{ {
label: '属性', label: '属性',
field: 'taskName', field: 'taskName',
component: 'Input', component: 'Select',
componentProps: { componentProps: {
style: { width: '80%' }, options: [{label:"首付支付",value:"首付支付"}],
},
dynamicRules: ({ values }) => {
console.log('values:', values);//表单所有值
//需要return
return [
{
//默认开启表单检验
required: true,
// value 当前手机号输入的值
validator: (formSchemas, value) => {
console.log("______", formSchemas, value);
//需要return 一个Promise对象
return new Promise((resolve, reject) => {
isExitTaskNameInPlanInfo({ projectid: values.id, taskName: value }).then
(res => {
if (!res) {
console.log("当前项目的计划中没有这个阶段");
reject("当前项目的计划中没有这个阶段");
}
Object.keys(values).forEach(key => {
//判断是否taskName字段的名称是否重复
if (key != formSchemas.field && key.includes("taskName")) {
if (values[key] == value) {
reject("属性值重复");
}
}
})
if (!value) {
reject(`此项不能未空`);
} else {
resolve();
}
})
});
},
},
];
}, },
// componentProps: ({ formModel, formActionType }) => {
// console.log("formModel111122323:", formModel);
// return {
// api:() => getTaskNameTypeDict({ projectid:formModel.id}),
// };
// },
// dynamicRules: ({ values }) => {
// console.log('values:', values);//表单所有值
// //需要return
// return [
// {
// //默认开启表单检验
// required: true,
// // value 当前手机号输入的值
// validator: (formSchemas, value) => {
// console.log("______", formSchemas, value);
// //需要return 一个Promise对象
// return new Promise((resolve, reject) => {
// isExitTaskNameInPlanInfo({ projectid: values.id, taskName: value }).then
// (res => {
// if (!res) {
// console.log("当前项目的计划中没有这个阶段");
// reject("当前项目的计划中没有这个阶段");
// }
// Object.keys(values).forEach(key => {
// //判断是否taskName字段的名称是否重复
// if (key != formSchemas.field && key.includes("taskName")) {
// if (values[key] == value) {
// reject("属性值重复");
// }
// }
// })
// if (!value) {
// reject(`此项不能未空`);
// } else {
// resolve();
// }
// })
// });
// },
// },
// ];
// },
required: true, required: true,
colProps: { span: 6,}, colProps: { span: 6,},
helpMessage: '需与项目计划的阶段名称所匹配', helpMessage: '需与项目计划的阶段名称所匹配',

39
src/views/projectLib/projectContract/projectContract.vue

@ -46,6 +46,7 @@ import { FormSchema } from '@/components/Form';
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
import { PlusCircleOutlined, MinusCircleOutlined } from '@ant-design/icons-vue'; import { PlusCircleOutlined, MinusCircleOutlined } from '@ant-design/icons-vue';
import { cloneDeep } from 'lodash-es'; import { cloneDeep } from 'lodash-es';
import { getTaskNameTypeDict } from "./projectContract.api"
const aaa = ({ values }) => { const aaa = ({ values }) => {
// console.log('values:', values);// // console.log('values:', values);//
@ -119,9 +120,9 @@ const aaa = ({ values }) => {
} }
const bbb = ({ schema, formModel, formActionType }) => { const bbb = ({ schema, formModel, formActionType }) => {
console.log("formModel", schema) console.log("formMode222222", schema, formModel)
if (schema == undefined || schema.field == undefined) { if (schema == undefined || schema.field == undefined) {
console.log("formModel111111",schema ) console.log("formModel111111", schema, formModel)
return { return {
// //
precision: 2, precision: 2,
@ -155,28 +156,36 @@ let isModify = ref()
let projectid = ref() let projectid = ref()
let payNum = ref(1) let payNum = ref(1)
let resMoney = ref() let resMoney = ref()
let taskNameTypeDict = ref()
let tempSchemas = cloneDeep(contractformSchemas) as Array<FormSchema> let tempSchemas = cloneDeep(contractformSchemas) as Array<FormSchema>
tempSchemas.forEach(item => { tempSchemas.forEach(item => {
if (item.field.indexOf("Money") != -1) { if (item.field.indexOf("Money") != -1) {
item.dynamicRules = aaa item.dynamicRules = aaa
item.componentProps = bbb item.componentProps = bbb
} }
if (item.field == "taskName") {
item.componentProps.options = taskNameTypeDict.value
}
}) })
const emit = defineEmits(['close']); const emit = defineEmits(['close']);
async function init(data) { async function init(data) {
projectid.value = data.projectid
taskNameTypeDict.value= await getTaskNameTypeDict({ projectid: projectid.value })
payNum.value = 1 payNum.value = 1
tempSchemas = cloneDeep(contractformSchemas) as Array<FormSchema> tempSchemas = cloneDeep(contractformSchemas) as Array<FormSchema>
tempSchemas.forEach(item => { tempSchemas.forEach(item => {
if (item.field.indexOf("Money") != -1) { if (item.field.indexOf("Money") != -1) {
item.dynamicRules = aaa item.dynamicRules = aaa
item.componentProps = bbb item.componentProps = bbb
}
if (item.field == "taskName") {
item.componentProps.options = taskNameTypeDict.value
console.log("item.componentProps.options", item.componentProps.options)
} }
}) })
console.log("datadatadata", data, tempSchemas) console.log("datadatadata", data, tempSchemas)
projectid.value = data.projectid
let parammoney: any = { let parammoney: any = {
projectid: data.projectid projectid: data.projectid
} }
@ -211,14 +220,17 @@ async function init(data) {
if (tempitem.field.indexOf("Money") != -1) { if (tempitem.field.indexOf("Money") != -1) {
tempitem.dynamicRules = aaa tempitem.dynamicRules = aaa
item.componentProps = bbb item.componentProps = bbb
} }
if (tempitem.field == "payDate") { if (tempitem.field == "payDate") {
tempitem.label = "第" + i + "次支付" tempitem.label = "第" + i + "次支付"
} }
if (tempitem.field == "totalMoney") { if (item.field == "taskName") {
tempitem.label = "第" + i + "支付总金额" item.componentProps.options = taskNameTypeDict.value
} }
// if (tempitem.field == "totalMoney") {
// tempitem.label = "" + i + ""
// }
tempitem.field = tempitem.field + i tempitem.field = tempitem.field + i
tempSchemas.push(tempitem) tempSchemas.push(tempitem)
}) })
@ -232,6 +244,7 @@ async function init(data) {
setFieldsValue(obj) setFieldsValue(obj)
} else { } else {
//id id //id id
resetSchema(tempSchemas)
setFieldsValue({ id: data.projectid }) setFieldsValue({ id: data.projectid })
} }
} }
@ -292,9 +305,13 @@ async function addFrom() {
if (tempitem.field == "payDate") { if (tempitem.field == "payDate") {
tempitem.label = "第" + payNum.value + "次支付" tempitem.label = "第" + payNum.value + "次支付"
} }
if (tempitem.field == "totalMoney") { if (item.field == "taskName") {
tempitem.label = "第" + payNum.value + "支付总金额" item.componentProps.options = taskNameTypeDict.value
} }
// if (tempitem.field == "totalMoney") {
// tempitem.label = "" + payNum.value + ""
// }
tempitem.field = tempitem.field + payNum.value tempitem.field = tempitem.field + payNum.value
tempSchemas.push(tempitem) tempSchemas.push(tempitem)
}) })
@ -531,6 +548,4 @@ function checkForm() { //校验表单
color: #999; color: #999;
margin-left: 5px; margin-left: 5px;
} }
</style> </style>

4
src/views/projectLib/projectInfo/Detailpage.vue

@ -4,13 +4,13 @@
<ProjectDetails :isEdit="false" :projectid="projectid" /> <ProjectDetails :isEdit="false" :projectid="projectid" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="项目资料详情" name="2" v-if="showUploadfileDetail"> <el-tab-pane label="项目资料详情" name="2" v-if="showUploadfileDetail">
<el-divider content-position="left">监理资料详情</el-divider> <el-divider content-position="left">项目资料详情</el-divider>
<UploadfileDetail :projectid="projectid" :stage="1" /> <UploadfileDetail :projectid="projectid" :stage="1" />
<el-divider content-position="left">意见文件</el-divider> <el-divider content-position="left">意见文件</el-divider>
<UploadfileDetail :projectid="projectid" :stage="2" /> <UploadfileDetail :projectid="projectid" :stage="2" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="项目变更信息详情" name="3" v-if="fieldChangeDetailList?.length > 0"> <el-tab-pane label="项目变更信息详情" name="3" v-if="fieldChangeDetailList?.length > 0">
<fieldChangeDetail v-for=" (item, index) in fieldChangeDetailList" :fieldChangeid="item.id" :isEdit="false" /> <fieldChangeDetail v-for=" (item, index) in fieldChangeDetailList" :fieldChangeGroupid="item.groupId" :isEdit="false" />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<!-- <ProjectDetails :isEdit="false" :projectid="projectid" /> <!-- <ProjectDetails :isEdit="false" :projectid="projectid" />

32
src/views/projectLib/projectInfo/index.vue

@ -37,7 +37,7 @@
<BasicModal @register="registeinitiatesModal" title="发起项目入库申请" width="1200px" :showOkBtn="false"> <BasicModal @register="registeinitiatesModal" title="发起项目入库申请" width="1200px" :showOkBtn="false">
<initiatesProjects @close="closeinitiatesModal()" /> <initiatesProjects @close="closeinitiatesModal()" :projectid="proid" />
</BasicModal> </BasicModal>
<BasicModal @register="registeProjectrModal" title="项目信息详情" width="1200px" :showOkBtn="false"> <BasicModal @register="registeProjectrModal" title="项目信息详情" width="1200px" :showOkBtn="false">
<Detailpage :projectid="proid" :stage="ProjectStage" :IsModify="IsModify" <Detailpage :projectid="proid" :stage="ProjectStage" :IsModify="IsModify"
@ -53,7 +53,8 @@
<batchImportProjects :projectid="proid" @close="closeBatchImportModal()" /> <batchImportProjects :projectid="proid" @close="closeBatchImportModal()" />
</BasicModal> </BasicModal>
<BasicModal @register="registeProjectrModalModify" title="修改项目信息" width="1200px" :showOkBtn="false"> <BasicModal @register="registeProjectrModalModify" title="修改项目信息" width="1200px" :showOkBtn="false">
<modifyfieldInfo :projectid="proid" :isEdit="true" @close="closeProjectrModal" :IsApproval="true" :fatherid="fatherid" /> <modifyfieldInfo :projectid="proid" :isEdit="true" @close="closeProjectrModal" :IsApproval="true"
:fatherid="fatherid" />
</BasicModal> </BasicModal>
<BasicModal @register="registeSubProject" title="新增子项目" width="1200px" :showOkBtn="false"> <BasicModal @register="registeSubProject" title="新增子项目" width="1200px" :showOkBtn="false">
@ -116,7 +117,7 @@ const [registerTable, { reload, getForm, getSelectRows, clearSelectedRowKeys }]
}, },
beforeFetch(param) { beforeFetch(param) {
clearSelectedRowKeys() clearSelectedRowKeys()
param.stage = "1" param.stage = "0"
}, },
rowSelection: { type: 'radio' }, rowSelection: { type: 'radio' },
@ -132,18 +133,14 @@ function getTableAction(record): ActionItem[] {
return [ return [
{ {
label: '详情', label: '详情',
// ifShow: () => {
// return record.projectId==null
// },
onClick: handleDetailpage.bind(null, record), onClick: handleDetailpage.bind(null, record),
}, },
{ {
label: '上传项目资料', label: '入库申请',
ifShow: () => { ifShow: () => {
return record.stage >= 2 && isShowByRoles("controler,consult") && record.projectId == null return record.stage == 0 && isShowByRoles("projectContact")
}, },
onClick: handleuploadFile.bind(null, record) onClick: handleadd.bind(null, record)
}, },
]; ];
} }
@ -152,8 +149,13 @@ function getTableAction(record): ActionItem[] {
*/ */
function getDropDownAction(record): ActionItem[] { function getDropDownAction(record): ActionItem[] {
return [ return [
{
label: '上传项目资料',
ifShow: () => {
return record.stage >= 2 && isShowByRoles("controler,consult") && record.projectId == null
},
onClick: handleuploadFile.bind(null, record)
},
]; ];
} }
@ -180,8 +182,12 @@ function closeUploadFilesModal() {
closeUploadFiles() closeUploadFiles()
reload() reload()
} }
function handleadd(record) {
proid.value = record.id
openinitiate()
}
function handleCreate() { function handleCreate() {
proid.value = undefined
openinitiate() openinitiate()
} }
function closeinitiatesModal() { function closeinitiatesModal() {

55
src/views/projectLib/projectInfo/modifyfieldInfo.vue

@ -21,11 +21,14 @@
import { defineProps, onMounted, ref, reactive } from 'vue' import { defineProps, onMounted, ref, reactive } from 'vue'
import { } from './projectInfo.data'; import { } from './projectInfo.data';
import { getChangeFieldManageDict, submitFieldchange, getRemainingMoneyinfo } from './projectInfo.api' import { getChangeFieldManageDict, submitFieldchange, getRemainingMoneyinfo, queryProjectInfoById } from './projectInfo.api'
import ProjectDetails from "../../ProcessApprovalSubPage/component/ProjectDetails.vue" import ProjectDetails from "../../ProcessApprovalSubPage/component/ProjectDetails.vue"
import { useForm, BasicForm } from '@/components/Form'; import { useForm, BasicForm } from '@/components/Form';
import { formSchemas } from './projectInfo.data'; import { formSchemas } from './projectInfo.data';
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
import { cloneDeep } from 'lodash-es';
import { FormSchema } from '@/components/Form';
let dataTo = defineProps(["projectid", "stage", "IsModify", "fatherid"]) let dataTo = defineProps(["projectid", "stage", "IsModify", "fatherid"])
let emit = defineEmits(["close"]) let emit = defineEmits(["close"])
console.log("dataTo11111", dataTo) console.log("dataTo11111", dataTo)
@ -33,7 +36,7 @@ let selectValue = ref()
let options = ref() let options = ref()
let showupload = ref(false) let showupload = ref(false)
let fileList = reactive<Array<any>>([]); let fileList = reactive<Array<any>>([]);
let showFormSchema: FormSchema[] = []
onMounted(async () => { onMounted(async () => {
options.value = await getChangeFieldManageDict() options.value = await getChangeFieldManageDict()
}) })
@ -97,13 +100,24 @@ async function handleSubmit(record) {
params.append('file', x.file) params.append('file', x.file)
}); });
} }
params.append("projectid", dataTo.projectid) params.append("id", dataTo.projectid)
params.append("fieldValue", selectValue.value) params.append("fieldValue", selectValue.value)
if (await validate) { if (await validate) {
let newValue = await getFieldsValue() let newValue = await getFieldsValue()
params.append("newValue", newValue[selectValue.value]) Object.keys(newValue).forEach(key => {
//
if (selectValue.value == "Money" && key.includes("Money")) {
params.append(key, newValue[key])
} else {
//
if (key == selectValue.value) {
params.append(key, newValue[key])
}
}
})
console.log("params", params) console.log("params", params)
await submitFieldchange(params) await submitFieldchange(params)
emit("close") emit("close")
} }
} }
@ -111,22 +125,44 @@ async function customResetFunc() {
emit("close") emit("close")
} }
async function changeOptions(value, option) { async function changeOptions(value, option) {
let formSchemasTemp = cloneDeep(formSchemas)
let formSchemasTemp = JSON.parse(JSON.stringify(formSchemas)) //
if (dataTo.fatherid) { if (dataTo.fatherid) {
let subres = await getRemainingMoneyinfo({ let subres = await getRemainingMoneyinfo({
projectId: dataTo.fatherid,//id projectId: dataTo.fatherid,//id
id: dataTo.projectid//id id: dataTo.projectid//id
}) })
if (value == "Money") {
//
let moenyform = formSchemasTemp.filter(item => item.field.includes("Money"))
moenyform.forEach(item => {
item.componentProps["max"] = subres[item.field]
showFormSchema.push(item)
})
resetSchema(moenyform)
queryProjectInfoById({
projectid: dataTo.projectid
}).then(res => {
setFieldsValue(res)
})
} else {
formSchemasTemp.forEach(item => { formSchemasTemp.forEach(item => {
if (item.field == value) { if (item.field == value) {
if (item.field.includes("Money")) {
item.componentProps["max"] = subres[item.field]
resetSchema(item) resetSchema(item)
} }
})
} }
//
} else {
//
if (value == "Money") {
let moenyform = formSchemasTemp.filter(item => item.field.includes("Money"))
resetSchema(moenyform)
queryProjectInfoById({
projectid: dataTo.projectid
}).then(res => {
setFieldsValue(res)
}) })
} else { } else {
formSchemasTemp.forEach(item => { formSchemasTemp.forEach(item => {
@ -135,6 +171,7 @@ async function changeOptions(value, option) {
} }
}) })
} }
}
if (option.upload == "1") { if (option.upload == "1") {
showupload.value = true showupload.value = true

4
src/views/projectLib/projectInfo/projectInfo.api.ts

@ -16,7 +16,7 @@ export enum Api {
getChangeFieldManageDict="/huzhouChangefieldmanage/getChangeFieldManageDict", getChangeFieldManageDict="/huzhouChangefieldmanage/getChangeFieldManageDict",
submitFieldchange="/huzhouFieldchangehistory/submitFieldchange", submitFieldchange="/huzhouFieldchangehistory/submitFieldchange",
getFieldchangeByid="/huzhouFieldchangehistory/getFieldchangeByid", getFieldchangeByGroupid="/huzhouFieldchangehistory/getFieldchangeByGroupid",
getFieldchangeFileinfoList="/huzhouFieldchangehistory/getFieldchangeFileinfoList", getFieldchangeFileinfoList="/huzhouFieldchangehistory/getFieldchangeFileinfoList",
approvalFieldchange="/huzhouFieldchangehistory/approvalFieldchange", approvalFieldchange="/huzhouFieldchangehistory/approvalFieldchange",
getFieldchangeListByprojectid="/huzhouFieldchangehistory/getFieldchangeListByprojectid", getFieldchangeListByprojectid="/huzhouFieldchangehistory/getFieldchangeListByprojectid",
@ -43,7 +43,7 @@ export const getProjectInfoPageList = (params?) => defHttp.get({ url: Api.getPro
*/ */
export const queryProcessInfo = (params?) => defHttp.get({ url: Api.queryProcessInfo, params }); export const queryProcessInfo = (params?) => defHttp.get({ url: Api.queryProcessInfo, params });
export const getChangeFieldManageDict = (params?) => defHttp.get({ url: Api.getChangeFieldManageDict, params }); export const getChangeFieldManageDict = (params?) => defHttp.get({ url: Api.getChangeFieldManageDict, params });
export const getFieldchangeByid = (params?) => defHttp.get({ url: Api.getFieldchangeByid, params }); export const getFieldchangeByGroupid = (params?) => defHttp.get({ url: Api.getFieldchangeByGroupid, params });
export const getFieldchangeFileinfoList = (params?) => defHttp.get({ url: Api.getFieldchangeFileinfoList, params }); export const getFieldchangeFileinfoList = (params?) => defHttp.get({ url: Api.getFieldchangeFileinfoList, params });
export const getFieldchangeListByprojectid = (params?) => defHttp.get({ url: Api.getFieldchangeListByprojectid, params }); export const getFieldchangeListByprojectid = (params?) => defHttp.get({ url: Api.getFieldchangeListByprojectid, params });

1
src/views/projectLib/projectInfo/projectInfo.data.ts

@ -450,7 +450,6 @@ export const formSchemas: FormSchema[] = [
showSearch: true, showSearch: true,
filterOption: (input: string, option: any) => { return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 }, filterOption: (input: string, option: any) => { return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 },
onChange: async (value, option) => { onChange: async (value, option) => {
let supervisorContactorDict = await getContactorDict({ workPlace: value, workPlaceType: "supervisor" })
// formModel.manageContactor = undefined; // reset city value // formModel.manageContactor = undefined; // reset city value
const { updateSchema, setFieldsValue } = formActionType; const { updateSchema, setFieldsValue } = formActionType;
if (option?.phone) { if (option?.phone) {

2
src/views/projectLib/projectInfoHistory/Detaillist.vue

@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<fieldChangeDetail v-for=" (item,index) in fieldChangeDetailList" :fieldChangeid="item.id" :isEdit="false"/> <fieldChangeDetail v-for=" (item,index) in fieldChangeDetailList" :fieldChangeGroupid="item.groupId" :isEdit="false"/>
</div> </div>
</template> </template>

17
src/views/projectLib/projectPlan/planinfoFileDetail.vue

@ -7,7 +7,7 @@
<el-divider content-position="left">项目计划审批文件列表</el-divider> <el-divider content-position="left">项目计划审批文件列表</el-divider>
<PlanFileDetail :planinfoid="planinfoid" :stage="2" /> <PlanFileDetail :planinfoid="planinfoid" :stage="2" />
<div v-if="dataTo.isfinish == 1"> <div v-if="dataTo.isfinish == 1">
<ApprovalDetails :projectid="planinfoid" :stage="name.indexOf(taskName)!=-1?'createPlaninfoFile2':'createPlaninfoFile'" /> <ApprovalDetails :projectid="planinfoid" :stage="getstageName()" />
</div> </div>
</div> </div>
</BasicModal> </BasicModal>
@ -20,13 +20,24 @@ import ApprovalDetails from "../../ProcessApprovalSubPage/component/ApprovalDeta
import PlanFileDetail from "@/views/ProcessApprovalSubPage/component/PlanFileDetail.vue"; import PlanFileDetail from "@/views/ProcessApprovalSubPage/component/PlanFileDetail.vue";
const [registerModal, { closeModal }] = useModalInner(); const [registerModal, { closeModal }] = useModalInner();
let name = ["可研报告初稿编制","初步技术审查","造价评估","可行性研究报告审批","初步设计初稿编制","初步设计技术审查","初步设计审批"] let names = ["可行性研究报告审批", "初验阶段", "终验阶段"];
let dataTo = defineProps(["planinfoid", "taskName", "isfinish"]) let dataTo = defineProps(["planinfoid", "taskName", "isfinish"])
console.log("wwwwwwwwwwww", dataTo) console.log("wwwwwwwwwwww", dataTo)
onMounted(async () => { onMounted(async () => {
}) })
function getstageName() {
if (dataTo.taskName == "可研报告编制") {
return "feasibilityReportPreparation"
}
if (dataTo.taskName == "联合技术审查") {
return "jointTechnicalReview"
}
if (dataTo.taskName == "集中核验") {
return "centralizedCheck"
}
return "createPlaninfoFile"
}

Loading…
Cancel
Save