Browse Source

修改合同审批信息

ai_dev
zhouhaibin 1 month ago
parent
commit
39b9569ca5
  1. 87
      src/views/ProcessApprovalSubPage/planFileApproval.vue
  2. 535
      src/views/projectLib/projectContract/ContractPay.vue
  3. 61
      src/views/projectLib/projectPlan/addPlanFile.vue
  4. 34
      src/views/projectLib/projectPlan/planinfoFileDetail.vue
  5. 4
      src/views/projectLib/projectPlan/projectPlan.api.ts
  6. 54
      src/views/projectLib/projectPlan/viewPlanDetail.vue

87
src/views/ProcessApprovalSubPage/planFileApproval.vue

@ -1,9 +1,15 @@
<template>
<!-- 自定义表单 -->
<el-divider content-position="left">项目阶段名称 {{ stageName }}<a-button type="link" @click="hdDetail">详情</a-button></el-divider>
<el-divider content-position="left"
>项目阶段名称 {{ stageName
}}<a-button type="link" @click="hdDetail">详情</a-button></el-divider
>
<el-divider content-position="left">项目名称 {{ dataTo.record.projectName }} </el-divider>
<BasicForm @register="registerApprovalMoneyForm" v-if="taskName == '立项审批'" />
<BasicForm @register="registerContractMoneyForm" v-if="taskName == '合同签订'" />
<BasicForm @register="registerContractMoneyForm" v-if="showMoneyForm || taskName == '合同签订'" />
<div v-if="taskName == '合同签订'">
<ContractPay :projectid="pjid" :isModify="resButton.isEdit" :isEdit="resButton.isEdit" v-if="pjid" ref="contractRef" />
</div>
<el-divider content-position="left">项目计划详情</el-divider>
<BasicTable @register="registerplaninfoTable"> </BasicTable>
<el-divider content-position="left">项目计划资料详情</el-divider>
@ -54,15 +60,11 @@
</div>
<div
v-if="taskName=='首付支付' && resButton.isEdit"
v-if="taskName == '首付支付' && resButton.isEdit"
style="display: flex; justify-content: center; align-items: center; height: 100px"
>
<el-form ref="importFormRef">
<el-form-item
v-for="(item, index) in tableDataFiles"
:key="index"
label-width="auto"
>
<el-form-item v-for="(item, index) in tableDataFiles" :key="index" label-width="auto">
<el-upload
class="upload-demo"
ref="upload"
@ -104,10 +106,15 @@
</div>
</div>
</ApprovalFromPage>
<BasicModal @register="registerProjectPlan" title="发起项目计划审批" width="1200px" :showOkBtn="false"
:showCancelBtn="false">
<showtu :res="showtuList" />
</BasicModal>
<BasicModal
@register="registerProjectPlan"
title="发起项目计划审批"
width="1200px"
:showOkBtn="false"
:showCancelBtn="false"
>
<showtu :res="showtuList" />
</BasicModal>
</template>
<script lang="ts" name="planFileApproval" setup>
import { onMounted, ref, reactive, h } from 'vue';
@ -124,18 +131,23 @@
} from '@/views/projectLib/projectPlan/projectPlan.api';
import { downloadFile } from '../../api/common/api';
import { message } from 'ant-design-vue';
import ContractPay from '@/views/projectLib/projectContract/ContractPay.vue';
import ApprovalDetails from '../ProcessApprovalSubPage/component/ApprovalDetails.vue';
import ApprovalFromPage from '../ProcessApprovalSubPage/component/ApprovalFromPage.vue';
import PlanFileDetail from '@/views/ProcessApprovalSubPage/component/PlanFileDetail.vue';
import { queryProjectInfoById } from '@/views/projectLib/projectInfo/projectInfo.api';
import showtu from "@/views/projectLib/projectPlan/showtu.vue"
import showtu from '@/views/projectLib/projectPlan/showtu.vue';
import { useForm, BasicForm } from '@/components/Form';
import { getProjectinfoMoneyInfo,queryPlanInfoMainTimeline } from '@/views/projectLib/projectPlan/projectPlan.api';
import {
getProjectinfoMoneyInfo,
queryPlanInfoMainTimeline,
getContractinfoByTaskName,
} from '@/views/projectLib/projectPlan/projectPlan.api';
import {
ApprovalMoneyFormSchemas,
ContractMoneyFormSchemas,
} from '@/views/projectLib/projectPlan/projectPlan.data';
const [registerProjectPlan, { openModal: openProjectPlan}] = useModal();//
const [registerProjectPlan, { openModal: openProjectPlan }] = useModal(); //
const [
registerApprovalMoneyForm,
@ -200,7 +212,8 @@
let tableDataFiles = ref();
let planFileDetailKey = ref(0);
let stageName = ref('');
let showtuList = ref<Array<Object>>()
let contractRef = ref();
let showtuList = ref<Array<Object>>();
let resButton = reactive({
showApprovalForm: false,
isEdit: false,
@ -210,6 +223,7 @@
let fileAdviceList = reactive<Array<any>>([]);
let taskName = ref('');
let pjid = ref('');
const showMoneyForm = ref(false);
onMounted(async () => {
resButton = await getActionParam({
processInstanceId: processInstanceId,
@ -217,17 +231,17 @@
procesType: dataTo.record.procesType,
});
showApprovalForm.value = resButton.showApprovalForm;
planFileDetailKey.value+=1
planFileDetailKey.value += 1;
let resList = await getplaninfoByid({ planinfoid: planinfoid });
let taskLevel = resList[0].taskLevel.split(".")[0]
console.log('taskLevel', taskLevel,resList);
let res2 = await queryPlanInfoMainTimeline({projectid: resList[0].projectId})
for(let i=0;i<res2.length;i++){
if(res2[i].taskLevel == taskLevel){
stageName.value = res2[i].taskName
let taskLevel = resList[0].taskLevel.split('.')[0];
console.log('taskLevel', taskLevel, resList);
let res2 = await queryPlanInfoMainTimeline({ projectid: resList[0].projectId });
for (let i = 0; i < res2.length; i++) {
if (res2[i].taskLevel == taskLevel) {
stageName.value = res2[i].taskName;
}
}
showtuList.value =res2
showtuList.value = res2;
});
const [registerplaninfoTable, { getDataSource }] = useTable({
@ -251,7 +265,6 @@
} else if (data[0].taskName.indexOf('可研报告送审稿编制') >= 0) {
tableDataFiles.value.push('《项目建议书》');
tableDataFiles.value.push('《补充说明》');
}
taskName.value = data[0].taskName;
pjid.value = data[0].projectId;
@ -268,6 +281,22 @@
setContractMoneyFieldsValue(res);
setContractMoneyProps({ disabled: resButton.isEdit == true ? false : true });
}
let contract = await getContractinfoByTaskName({
taskName: taskName.value,
projectId: pjid.value,
});
if (contract.realList != null && contract.realList.length > 0) {
showMoneyForm.value = true;
setContractMoneyFieldsValue({
contractTotalMoney: contract.realList[0].totalMoney,
contractCentralMoney: contract.realList[0].centralMoney,
contractProvincialMoney: contract.realList[0].provincialMoney,
contractCityMoney: contract.realList[0].cityMoney,
contractCountyMoney: contract.realList[0].countyMoney,
contractSelfMoney: contract.realList[0].selfMoney,
});
setContractMoneyProps({ disabled: resButton.isEdit == true ? false : true });
}
},
});
@ -289,8 +318,8 @@
params.stage = '1';
},
});
function hdDetail(){
openProjectPlan()
function hdDetail() {
openProjectPlan();
}
function getTableAction(record): ActionItem[] {
return [
@ -342,7 +371,7 @@
return false;
}
//'
if (item == "all") {
if (item == 'all') {
return true;
}
let geShi = ['xlx', 'xlsx', 'docx', 'doc', 'pdf'] as Array<string>;
@ -454,6 +483,8 @@
} else {
return;
}
let fromdate = await contractRef.value.getFieldsValuetoRef();
params.append('contractinfoList', JSON.stringify(fromdate));
}
if (resButton.isEdit) {
if (fileList.length == 0) {

535
src/views/projectLib/projectContract/ContractPay.vue

@ -0,0 +1,535 @@
<template>
<!-- 自定义表单 -->
<!-- <BasicModal v-bind="$attrs" @register="registerModal" title="项目合同信息详情" width="1500px" :showOkBtn="false"
:showCancelBtn="false"> -->
<el-divider content-position="left">合同信息</el-divider>
<BasicForm @register="registerContractForm" />
<el-button type="primary" @click="addFrom">
<template #icon>
<PlusCircleOutlined />
</template>
</el-button>
<el-button type="primary" @click="minusFrom">
<template #icon>
<MinusCircleOutlined />
</template>
</el-button>
<!-- </BasicModal> -->
</template>
<script lang="ts" name="addAndModify" setup>
import { ref, reactive, onMounted } from 'vue'
import { useForm, BasicForm } from '@/components/Form';
import { contractformSchemas, MoneyFormSchemas } from './projectContract.data';
import { modifyContractinfo, addContractinfo, getContractinfoByProjectId } from './projectContract.api';
import { queryProjectInfoById } from '@/views/projectLib/projectInfo/projectInfo.api'
import { ElMessage } from 'element-plus'
import { useModalInner, BasicModal } from '@/components/Modal';
import { FormSchema } from '@/components/Form';
import { message } from 'ant-design-vue';
import { PlusCircleOutlined, MinusCircleOutlined } from '@ant-design/icons-vue';
import { cloneDeep } from 'lodash-es';
import { getTaskNameTypeDict } from "./projectContract.api"
const aaa = ({ values }) => {
console.log('values:', values);//
//return
return [
{
//
required: true,
// value
validator: (formSchemas, value) => {
console.log("______", formSchemas, value);
//return Promise
return new Promise((resolve, reject) => {
if (formSchemas.field.indexOf("centralMoney") != -1) {
let fieldnum = formSchemas.field.replace("centralMoney", "")
Object.keys(values).forEach(key => {
if (values["taskName" + fieldnum] == null) {
reject("请填写本次支付的属性值")
}
if (values["taskName" + fieldnum] != null && values["taskName" + fieldnum]?.indexOf("首付") != -1) {
if (fieldnum.length == 0) {
console.log("首付的中央资金不能超过总中央资金的30%11", value, Number(values["centralMoney"]), Number(resMoney.value.centralMoney), Number(values["centralMoney"]) / Number(resMoney.value.centralMoney))
if (Number(value) / Number(resMoney.value.centralMoney) > 0.3) {
console.log("首付的中央资金不能超过总中央资金的30%")
}
} else {
let total = Number(values["centralMoney"])
if (Number(fieldnum) == 2) {
total += value
} else {
for (let i = 2; i < Number(fieldnum); i++) {
total += Number(values[`centralMoney${i}`])
}
total += value
}
if (total / Number(resMoney.value.centralMoney) > 0.3) {
console.log("首付的中央资金不能超过总中央资金的30%")
}
}
}
if (values["taskName" + fieldnum] != null && values["taskName" + fieldnum]?.indexOf("初验") != -1) {
if (fieldnum.length == 0) {
if (Number(value) / Number(resMoney.value.centralMoney) > 0.6) {
console.log("初验的中央资金不能超过总中央资金的60%")
}
} else {
//
let total = Number(values["centralMoney"])
if (Number(fieldnum) == 2) {
total += value
} else {
for (let i = 2; i < Number(fieldnum); i++) {
total += Number(values[`centralMoney${i}`])
}
total += value
}
if (total / Number(resMoney.value.centralMoney) > 0.6) {
console.log("初验的中央资金不能超过总中央资金的60%")
}
}
}
resolve("1")
})
}
if (value == null) {
let name = contractformSchemas.filter(item => formSchemas.field.indexOf(item.field) != -1)[0].label
reject(name + "不能为空")
}
resolve("1")
});
},
},
];
}
const bbb = ({ schema, formModel, formActionType }) => {
console.log("formMode222222", schema, formModel)
if (schema == undefined || schema.field == undefined) {
console.log("formModel111111", schema, formModel)
return {
//
precision: 2,
//
step: 1,
}
}
return {
//
precision: 2,
//
step: 1,
min: 0,
max: resMoney.value[schema.field.replace(/\d/g, '')],
style: { width: '90%' },
onChange: async (value, option) => {
// formModel.manageContactor = undefined; // reset city value
const { updateSchema, setFieldsValue, getFieldsValue } = formActionType;
let percentage = value / resMoney.value[schema.field.replace(/\d/g, '')] * 100
console.log("percentage", percentage.toFixed(0))
schema.suffix = percentage.toFixed(0) + "%"
updateSchema(schema)
},
};
}
// const [registerModal, { closeModal }] = useModalInner(init);
let data = defineProps(["projectid", "isModify", "isEdit"])
let fileList = reactive<Array<any>>([]);
let isModify = ref()
let projectid = ref()
let payNum = ref(1)
let resMoney = ref()
let taskNameTypeDict = ref()
let tempSchemas = cloneDeep(contractformSchemas) as Array<FormSchema>
// tempSchemas.forEach(item => {
// if (item.field.indexOf("Money") != -1) {
// item.dynamicRules = aaa()
// item.componentProps = bbb
// }
// if (item.field == "taskName") {
// item.componentProps.options = taskNameTypeDict.value
// }
// })
const emit = defineEmits(['close']);
// async function init(data) {
// }
onMounted(async () => {
projectid.value = data.projectid
taskNameTypeDict.value = await getTaskNameTypeDict({ projectid: projectid.value })
payNum.value = 1
tempSchemas = cloneDeep(contractformSchemas) as Array<FormSchema>
tempSchemas.forEach(item => {
if (item.field.indexOf("Money") != -1) {
item.dynamicRules = aaa
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)
let parammoney: any = {
projectid: data.projectid
}
resMoney.value = await queryProjectInfoById(parammoney)
setFieldsValueMoneyForm(resMoney.value)
fileList.pop()
if (data.isModify == true ||(data.isEdit !=null && data.isEdit != undefined)) {
isModify.value = data.isModify
let param: any = {
projectid: data.projectid
}
let res = await getContractinfoByProjectId(param) as Array<any>
let obj = new Object()
//
let num = res.length
//
for (let i = 1; i <= num; i++) {
if (i == 1) {
obj = res[i - 1]
} else {
Object.keys(res[i - 1]).forEach(key => {
obj[key + i] = res[i - 1][key]
})
}
}
if (num > 1) {
payNum.value = num
for (let i = 2; i <= num; i++) {
contractformSchemas.forEach(item => {
let tempitem = cloneDeep(item)
if (tempitem.field.indexOf("Money") != -1) {
tempitem.dynamicRules = aaa
tempitem.componentProps = bbb
}
if (tempitem.field == "payDate") {
tempitem.label = "第" + i + "次支付"
}
if (tempitem.field == "taskName") {
tempitem.componentProps.options = taskNameTypeDict.value
}
// if (tempitem.field == "totalMoney") {
// tempitem.label = "" + i + ""
// }
tempitem.field = tempitem.field + i
tempSchemas.push(tempitem)
})
}
resetSchema(tempSchemas)
} else {
resetSchema(tempSchemas)
}
console.log("结果是", res, obj)
obj["id"] = data.projectid
setFieldsValue(obj)
} else {
//id id
resetSchema(tempSchemas)
setFieldsValue({ id: data.projectid })
}
//isEdit
if (data.isEdit == false) {
setProps({
disabled: true
})
}
})
//
const [registerMoneyForm, { setFieldsValue: setFieldsValueMoneyForm }] = useForm({
//
schemas: MoneyFormSchemas,
showActionButtonGroup: false,
//
// autoSubmitOnEnter: true,
// //
// showResetButton: false,
//
// submitButtonOptions: { text: '', preIcon: '' },
// 24 0-24
// actionColOptions: { span: 17 },
disabled: true,
size: "small",
// labelCol: { style: { width: '120px' } },
wrapperCol: { style: { width: 'auto' } },
});
//
const [registerContractForm, { setFieldsValue: setFieldsValue, getFieldsValue, validate, resetSchema, removeSchemaByField, setProps }] = useForm({
//
schemas: contractformSchemas,
showActionButtonGroup: false,
//
// autoSubmitOnEnter: true,
// //
// showResetButton: false,
//
// submitButtonOptions: { text: '', preIcon: '' },
// 24 0-24
// actionColOptions: { span: 17 },
size: 'small',
// labelCol: { style: { width: '120px' } },
wrapperCol: { style: { width: 'auto' } },
});
async function addFrom() {
console.log("addFrom", await getFieldsValue())
let a = await validate()
if (a) {
payNum.value += 1
contractformSchemas.forEach(item => {
let tempitem = cloneDeep(item)
if (tempitem.field.indexOf("Money") != -1) {
tempitem.dynamicRules = aaa
tempitem.componentProps = bbb
}
if (tempitem.field == "payDate") {
tempitem.label = "第" + payNum.value + "次支付"
}
if (tempitem.field == "taskName") {
tempitem.componentProps.options = taskNameTypeDict.value
}
// if (tempitem.field == "totalMoney") {
// tempitem.label = "" + payNum.value + ""
// }
tempitem.field = tempitem.field + payNum.value
tempSchemas.push(tempitem)
})
// console.log("temp222222",tempSchemas,tempSchemas.length)
resetSchema(tempSchemas)
}
}
function minusFrom() {
if (payNum.value == 1) {
message.warning("至少保留一个支付项");
return
}
let last = cloneDeep(tempSchemas)
last = last.slice(payNum.value * 9 - 9)
last.forEach(element => {
removeSchemaByField(element.field)
});
tempSchemas = tempSchemas.slice(0, payNum.value * 9 - 9)
payNum.value -= 1
resetSchema(tempSchemas)
}
//Excel
async function submitImportForm() {
let res = []
let data = await getFieldsValue()
for (let i = 1; i <= payNum.value; i++) {
let obj = new Object()
contractformSchemas.forEach(item => {
if (i == 1) {
obj[item.field] = data[item.field]
} else {
obj[item.field] = data[item.field + i]
}
obj["projectId"] = projectid.value
delete obj.id;
})
res.push(obj)
}
console.log("data", data, res)
// if(checkForm()){
// ElMessage.success("")
// }
if ( await checkForm()) {
const params = new FormData()
console.log("data", data)
// 使form
if (isModify.value == true) {
if (fileList.length > 0) {
params.append("file", fileList[0].file)
}
//
params.append("contractinfoList", JSON.stringify(res))
await modifyContractinfo(params)
} else {
if (fileList.length == 0) {
ElMessage.warning("请上传文件")
return;
}
params.append("file", fileList[0].file)
params.append("contractinfoList", JSON.stringify(res))
await addContractinfo(params)
}
dialogVisible()
}
}
function dialogVisible() {
emit("close")
}
async function checkForm() { //
await validate()
let data = getFieldsValue()
let totalCentralMoney = 0
let totalCountyMoney = 0
let totalCityMoney = 0
let totalProvincialMoney = 0
let totalSelfMoney = 0
let totalMoney = 0
let showshoufu = false
let showchuyan = false
let showzhongyan = false
let returnRes = true
//
Object.keys(data).forEach(key => {
if (key.indexOf("taskName") != -1 && data[key].indexOf("首付") != -1) {
showshoufu = true
// if (key == "taskName") {
// if (Number(data["centralMoney"]) / Number(centralMoney) > 0.3) {
// ElMessage.error("30%")
// returnRes = false
// return
// }
// } else {
// //
// let num = key.replace("taskName", "")
// let total = Number(data["centralMoney"])
// for (let i = 2; i <= Number(num); i++) {
// total += Number(data[`centralMoney${i}`])
// }
// if (total / Number(centralMoney) > 0.3) {
// ElMessage.error("30%")
// returnRes = false
// return
// }
// }
}
if (key.indexOf("taskName") != -1 && data[key].indexOf("初验") != -1) {
showchuyan = true
// if (key == "taskName") {
// if (Number(data["centralMoney"]) / Number(centralMoney) > 0.6) {
// ElMessage.error("60%")
// returnRes = false
// return
// }
// } else {
// //
// let num = key.replace("taskName", "")
// let total = Number(data["centralMoney"])
// for (let i = 2; i <= Number(num); i++) {
// total += Number(data[`centralMoney${i}`])
// }
// if (total / Number(centralMoney) > 0.6) {
// ElMessage.error("60%")
// returnRes = false
// return
// }
// }
}
if (key.indexOf("taskName") != -1 && data[key].indexOf("终验") != -1) {
showzhongyan = true
}
//
if (key.includes("centralMoney")) {
totalCentralMoney += Number(data[key])
}
if (key.includes("countyMoney")) {
totalCountyMoney += Number(data[key])
}
if (key.includes("cityMoney")) {
totalCityMoney += Number(data[key])
}
if (key.includes("provincialMoney")) {
totalProvincialMoney += Number(data[key])
}
if (key.includes("selfMoney")) {
totalSelfMoney += Number(data[key])
}
if (key.includes("totalMoney")) {
totalMoney += Number(data[key])
}
})
if (!returnRes) {
return false
}
if (totalCentralMoney != Number(resMoney.value.centralMoney)) {
ElMessage.error("中央资金总额不匹配")
return false
}
if (totalCountyMoney != Number(resMoney.value.countyMoney)) {
ElMessage.error("县级资金总额不匹配")
return false
}
if (totalCityMoney != Number(resMoney.value.cityMoney)) {
ElMessage.error("市级资金总额不匹配")
return false
}
if (totalProvincialMoney != Number(resMoney.value.provincialMoney)) {
ElMessage.error("省级资金总额不匹配")
return false
}
if (totalSelfMoney != Number(resMoney.value.selfMoney)) {
ElMessage.error("自筹资金总额不匹配")
return false
}
if (totalMoney != Number(resMoney.value.totalMoney)) {
ElMessage.error("总资金总额不匹配")
return false
}
if (!showshoufu) {
ElMessage.error("请添加首付任务")
return false
}
if (!showchuyan) {
ElMessage.error("请添加初验任务")
return false
}
if (!showzhongyan) {
ElMessage.error("请添加终验任务")
return false
}
console.log("data", data)
return true
}
async function getFieldsValuetoRef() {
let res = []
let data = await getFieldsValue()
for (let i = 1; i <= payNum.value; i++) {
let obj = new Object()
contractformSchemas.forEach(item => {
if (i == 1) {
obj[item.field] = data[item.field]
} else {
obj[item.field] = data[item.field + i]
}
obj["projectId"] = projectid.value
delete obj.id;
})
res.push(obj)
}
return res
}
defineExpose({ getFieldsValuetoRef, checkForm })
</script>
<style scoped>
.suffix {
font-size: 12px;
color: #999;
margin-left: 5px;
}
</style>

61
src/views/projectLib/projectPlan/addPlanFile.vue

@ -5,7 +5,11 @@
<el-button slot="trigger" type="primary">下载模板</el-button>
</div> -->
<BasicForm @register="registerApprovalMoneyForm" v-if="dataTo.taskName == '立项审批'" />
<BasicForm @register="registerContractMoneyForm" v-if="dataTo.taskName == '合同签订'" />
<BasicForm @register="registerContractMoneyForm" v-if="showMoneyForm||dataTo.taskName == '合同签订'" />
<div v-if="dataTo.taskName == '合同签订'">
<ContractPay :projectid="projectId" :isModify="false" v-if="projectId" ref="contractRef" />
</div>
<!-- <BasicForm @register="registerContractMoneyForm" v-if="dataTo.taskName == '合同签订'" /> -->
<el-divider content-position="left">上传文件</el-divider>
<el-divider content-position="left" v-if="dataTo.taskName.indexOf('可研报告初稿编制') >= 0"
@ -59,7 +63,7 @@
<div slot="tip" class="el-upload__tip">只能上传证明材料且不超过500M</div>
</el-upload>
</div>
<div v-if="dataTo.taskName=='首付支付'">
<div v-if="dataTo.taskName == '首付支付'">
<el-divider content-position="left">其他文件</el-divider>
<el-upload
class="upload-demo"
@ -92,25 +96,29 @@
import { reactive, defineProps, onMounted, ref } from 'vue';
import { planUploadFile, planUploadModifyFile, planREUploadFile } from './projectPlan.api';
import { message } from 'ant-design-vue';
import ContractPay from '@/views/projectLib/projectContract/ContractPay.vue';
import { queryProjectInfoById } from '@/views/projectLib/projectInfo/projectInfo.api';
import { getplaninfoByid } from '@/views/projectLib/projectPlan/projectPlan.api';
import {
getplaninfoByid,
getContractinfoByTaskName,
} from '@/views/projectLib/projectPlan/projectPlan.api';
import {
ApprovalMoneyFormSchemas,
ContractMoneyFormSchemas,
} from '@/views/projectLib/projectPlan/projectPlan.data';
import { useForm, BasicForm } from '@/components/Form';
const projectStages = [
"招标结果确认",
"项目启动会议",
"组建项目实施专班",
"需求调研",
"系统设计",
"数据库设计",
"软件开发阶段",
"软件测试阶段",
"项目部署阶段",
"培训阶段"
];
'招标结果确认',
'项目启动会议',
'组建项目实施专班',
'需求调研',
'系统设计',
'数据库设计',
'软件开发阶段',
'软件测试阶段',
'项目部署阶段',
'培训阶段',
];
const [
registerApprovalMoneyForm,
{
@ -161,8 +169,10 @@
let fileList = reactive<Array<any>>([]);
let projectId = ref('');
let contractRef = ref();
let isSubmitting = ref(false);
let dataTo = defineProps(['type', 'files', 'planinfoid', 'taskName']);
const showMoneyForm = ref(false);
const emit = defineEmits(['close']);
//
onMounted(async () => {
@ -187,6 +197,13 @@
},
});
}
let contract = await getContractinfoByTaskName({
taskName: dataTo.taskName,
projectId: projectId.value,
});
if (contract.planList != null && contract.planList.length > 0) {
showMoneyForm.value = true;
}
});
function httpRequest(option) {
@ -212,7 +229,7 @@
return false;
}
//
if(item == 'all'){
if (item == 'all') {
return true;
}
let geShi = ['xlx', 'xlsx', 'docx', 'doc', 'pdf'] as Array<string>;
@ -247,11 +264,8 @@
dataTo.taskName.indexOf('可研报告送审稿编制') >= 0
) {
//
}
else if (projectStages.includes(dataTo.taskName)||dataTo.taskName == '首付支付' ){
}
else {
} else if (projectStages.includes(dataTo.taskName) || dataTo.taskName == '首付支付') {
} else {
if (fileList.length != dataTo.files.length && dataTo.type == 0) {
message.error('上传的文件数量与项目计划资料数量不一致,请检查');
return;
@ -290,7 +304,7 @@
} else {
return;
}
} else if (dataTo.taskName == '合同签订') {
} else if (dataTo.taskName == '合同签订' || showMoneyForm.value) {
if (await validateContractMoneyForm()) {
const contractMoneyFieldsValue = getContractMoneyFieldsValue();
const {
@ -322,6 +336,11 @@
} else {
return;
}
//
if (dataTo.taskName == '合同签订') {
let fromdate = await contractRef.value.getFieldsValuetoRef();
params.append('contractinfoList', JSON.stringify(fromdate));
}
}
// paramsData
fileList.forEach((x) => {

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

@ -10,9 +10,15 @@
<div>
<BasicForm @register="registerMoneyForm" v-if="taskName == '联合技术审查'" />
<BasicForm @register="registerApprovalMoneyForm" v-if="taskName == '立项审批'" />
<BasicForm @register="registerContractMoneyForm" v-if="taskName == '合同签订'" />
<BasicForm
@register="registerContractMoneyForm"
v-if="showMoneyForm ||taskName == '合同签订'"
/>
<div v-if="taskName == '合同签订'">
<ContractPay :projectid="projectId" :isModify="false" :isEdit="false" v-if="projectId"/>
</div>
<el-divider content-position="left">项目计划资料详情</el-divider>
<PlanFileDetail :planinfoid="planinfoid" :stage="1" :key="planFileDetailkey"/>
<PlanFileDetail :planinfoid="planinfoid" :stage="1" :key="planFileDetailkey" />
<el-divider content-position="left" v-if="taskName != '联合技术审查'"
>项目计划审批文件列表</el-divider
>
@ -31,6 +37,7 @@
import PlanFileDetail from '@/views/ProcessApprovalSubPage/component/PlanFileDetail.vue';
import { EstimateAmountFormSchemas } from '@/views/projectLib/projectPlan/projectPlan.data';
import { queryProjectInfoById } from '@/views/projectLib/projectInfo/projectInfo.api';
import ContractPay from '@/views/projectLib/projectContract/ContractPay.vue';
import { useForm, BasicForm } from '@/components/Form';
const [registerMoneyForm, { setFieldsValue: setMoneyFieldsValue }] = useForm({
@ -50,7 +57,7 @@
// labelCol: { style: { width: '120px' } },
wrapperCol: { style: { width: 'auto' } },
});
import { getProjectinfoMoneyInfo } from '@/views/projectLib/projectPlan/projectPlan.api';
import { getProjectinfoMoneyInfo,getContractinfoByTaskName } from '@/views/projectLib/projectPlan/projectPlan.api';
import {
ApprovalMoneyFormSchemas,
ContractMoneyFormSchemas,
@ -95,6 +102,8 @@
let taskName = ref();
let isfinish = ref(0);
let planFileDetailkey = ref(0);
const projectId = ref('');
const showMoneyForm = ref(false);
onMounted(async () => {
// processName.value =await getProcessName(dataTo.planinfoid)
});
@ -103,7 +112,8 @@
planinfoid.value = data.planinfoid;
taskName.value = data.taskName;
isfinish.value = data.isfinish;
planFileDetailkey.value+=1
projectId.value = data.projectid;
planFileDetailkey.value += 1;
if (taskName.value == '立项审批') {
let res = await getProjectinfoMoneyInfo({
projectid: data.projectid,
@ -121,6 +131,22 @@
let res = await queryProjectInfoById(param);
setMoneyFieldsValue(res);
}
let contract = await getContractinfoByTaskName({
taskName: taskName.value,
projectId: projectId.value,
});
if (contract.realList != null && contract.realList.length > 0) {
showMoneyForm.value = true;
setContractMoneyFieldsValue({
contractTotalMoney: contract.realList[0].totalMoney,
contractCentralMoney: contract.realList[0].centralMoney,
contractProvincialMoney: contract.realList[0].provincialMoney,
contractCityMoney: contract.realList[0].cityMoney,
contractCountyMoney: contract.realList[0].countyMoney,
contractSelfMoney: contract.realList[0].selfMoney,
});
}
}
</script>
<style></style>

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

@ -32,7 +32,8 @@ export enum Api {
planREUploadFile="/huzhouPlaninfofile/planREUploadFile",
getProcessDetailByPlaninfoid="/huzhouPlaninfofile/getProcessDetailByPlaninfoid",
setPlaninfoIsoffline="/huzhouPlaninfofile/setPlaninfoIsoffline",
queryTaskLevelDetail="/huzhouPlan/queryTaskLevelDetail"
queryTaskLevelDetail="/huzhouPlan/queryTaskLevelDetail",
getContractinfoByTaskName="huzhouContractinfo/getContractinfoByTaskName"
}
/**
*
@ -69,3 +70,4 @@ export const uploadURTFile=(params) => defHttp.post({ url:Api.uploadURTFile,head
export const getProcessDetailByPlaninfoid=(params) => defHttp.get({ url:Api.getProcessDetailByPlaninfoid , params })
export const queryPlanInfoMainTimelineOffline = (params) => defHttp.get({ url: Api.queryPlanInfoMainTimelineOffline, params })
export const setPlaninfoIsoffline = (params) => defHttp.post({ url: Api.setPlaninfoIsoffline, params })
export const getContractinfoByTaskName = (params) => defHttp.get({ url: Api.getContractinfoByTaskName, params })

54
src/views/projectLib/projectPlan/viewPlanDetail.vue

@ -323,33 +323,33 @@
console.log('tableData', tableData);
//
for (let x = 1; x < tableData.length; x++) {
for (let i = 0; i < tableData[x].children.length; i++) {
let child = tableData[x].children[i];
//,
if (i >= 1) {
if (child.id == record.id) {
//
let pre = tableData[x].children[i - 1];
if (pre.isfinish != 2) {
message.error('请先完成【' + pre.taskName + '】');
return;
}
}
} else {
//
if (child.id == record.id) {
//
let preLength = tableData[x - 1].children.length; //
let pre = tableData[x - 1].children[preLength - 1];
if (pre.isfinish != 2) {
message.error('请先完成【' + pre.taskName + '】');
return;
}
}
}
}
}
// for (let x = 1; x < tableData.length; x++) {
// for (let i = 0; i < tableData[x].children.length; i++) {
// let child = tableData[x].children[i];
// //,
// if (i >= 1) {
// if (child.id == record.id) {
// //
// let pre = tableData[x].children[i - 1];
// if (pre.isfinish != 2) {
// message.error('' + pre.taskName + '');
// return;
// }
// }
// } else {
// //
// if (child.id == record.id) {
// //
// let preLength = tableData[x - 1].children.length; //
// let pre = tableData[x - 1].children[preLength - 1];
// if (pre.isfinish != 2) {
// message.error('' + pre.taskName + '');
// return;
// }
// }
// }
// }
// }
if (record.taskName.indexOf('联合技术审查') >= 0) {
UnitedTechnicalReviewmode.value = record.id;
messageInfo.value = '如项目涉及申报资金变更的,请先进行资金变更流程';

Loading…
Cancel
Save