Browse Source

新增计划金额显示2

master
zhouhaibin 3 days ago
parent
commit
bf011d39bd
  1. 13
      src/views/ProcessApprovalSubPage/planFileApproval.vue
  2. 940
      src/views/projectLib/projectContract/ContractPay.vue
  3. 33
      src/views/projectLib/projectPlan/addPlanFile.vue
  4. 6
      src/views/projectLib/projectPlan/planinfoFileDetail.vue
  5. 9
      src/views/projectLib/projectPlan/viewPlanDetail.vue

13
src/views/ProcessApprovalSubPage/planFileApproval.vue

@ -12,10 +12,11 @@
<el-divider content-position="left">实际金额</el-divider> <el-divider content-position="left">实际金额</el-divider>
</div> </div>
<BasicForm @register="registerContractMoneyForm" v-if="showMoneyForm || taskName == '合同签订'" /> <BasicForm @register="registerContractMoneyForm" v-if="taskName == '合同签订'" />
<div v-if="taskName == '合同签订'"> <div v-if="showMoneyForm || taskName == '合同签订'">
<ContractPay <ContractPay
:projectid="pjid" :projectid="pjid"
:taskName="taskName"
:isModify="resButton.isEdit" :isModify="resButton.isEdit"
:isEdit="resButton.isEdit" :isEdit="resButton.isEdit"
v-if="pjid" v-if="pjid"
@ -314,14 +315,6 @@
contractCountyMoney: contract.planList[0].countyMoney, contractCountyMoney: contract.planList[0].countyMoney,
contractSelfMoney: contract.planList[0].selfMoney, contractSelfMoney: contract.planList[0].selfMoney,
}); });
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 }); setContractMoneyProps({ disabled: resButton.isEdit == true ? false : true });
} }
}, },

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

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

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

@ -9,10 +9,14 @@
<el-divider content-position="left">计划金额</el-divider> <el-divider content-position="left">计划金额</el-divider>
<BasicForm @register="registerContractMoneyFormShow" /> <BasicForm @register="registerContractMoneyFormShow" />
<el-divider content-position="left">实际金额</el-divider> <el-divider content-position="left">实际金额</el-divider>
</div> <BasicForm @register="registerContractMoneyForm" v-if="showMoneyForm||dataTo.taskName == '合同签订'" /> </div>
<BasicForm
@register="registerContractMoneyForm"
v-if="dataTo.taskName == '合同签订'"
/>
<div v-if="dataTo.taskName == '合同签订'"> <div v-if="showMoneyForm || dataTo.taskName == '合同签订'">
<ContractPay :projectid="projectId" :isModify="false" v-if="projectId" ref="contractRef" /> <ContractPay :projectid="projectId" :taskName="dataTo.taskName" :isModify="false" v-if="projectId" ref="contractRef" />
</div> </div>
<!-- <BasicForm @register="registerContractMoneyForm" v-if="dataTo.taskName == '合同签订'" /> --> <!-- <BasicForm @register="registerContractMoneyForm" v-if="dataTo.taskName == '合同签订'" /> -->
@ -171,17 +175,13 @@
// labelCol: { style: { width: '120px' } }, // labelCol: { style: { width: '120px' } },
wrapperCol: { style: { width: 'auto' } }, wrapperCol: { style: { width: 'auto' } },
}); });
const [ const [registerContractMoneyFormShow, { setFieldsValue: setContractMoneyFieldsValueShow }] =
registerContractMoneyFormShow, useForm({
{ schemas: ContractMoneyFormSchemas,
setFieldsValue: setContractMoneyFieldsValueShow, showActionButtonGroup: false,
}, disabled: true,
] = useForm({ wrapperCol: { style: { width: 'auto' } },
schemas: ContractMoneyFormSchemas, });
showActionButtonGroup: false,
disabled: true,
wrapperCol: { style: { width: 'auto' } },
});
let fileList = reactive<Array<any>>([]); let fileList = reactive<Array<any>>([]);
let projectId = ref(''); let projectId = ref('');
let contractRef = ref(); let contractRef = ref();
@ -327,7 +327,7 @@
} else { } else {
return; return;
} }
} else if (dataTo.taskName == '合同签订' || showMoneyForm.value) { } else if (dataTo.taskName == '合同签订' ) {
if (await validateContractMoneyForm()) { if (await validateContractMoneyForm()) {
const contractMoneyFieldsValue = getContractMoneyFieldsValue(); const contractMoneyFieldsValue = getContractMoneyFieldsValue();
const { const {
@ -353,14 +353,13 @@
params.append('contractMoneyFieldsValue', JSON.stringify(contractMoneyFieldsValue)); params.append('contractMoneyFieldsValue', JSON.stringify(contractMoneyFieldsValue));
} else { } else {
message.error('总金额与其他金额之和不相等,请重新输入!'); message.error('总金额与其他金额之和不相等,请重新输入!');
return; return;
} }
} else { } else {
return; return;
} }
// //
if (dataTo.taskName == '合同签订') { if (dataTo.taskName == '合同签订'|| showMoneyForm.value) {
let fromdate = await contractRef.value.getFieldsValuetoRef(); let fromdate = await contractRef.value.getFieldsValuetoRef();
params.append('contractinfoList', JSON.stringify(fromdate)); params.append('contractinfoList', JSON.stringify(fromdate));
} }

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

@ -12,10 +12,10 @@
<BasicForm @register="registerApprovalMoneyForm" v-if="taskName == '立项审批'" /> <BasicForm @register="registerApprovalMoneyForm" v-if="taskName == '立项审批'" />
<BasicForm <BasicForm
@register="registerContractMoneyForm" @register="registerContractMoneyForm"
v-if="showMoneyForm ||taskName == '合同签订'" v-if="taskName == '合同签订'"
/> />
<div v-if="taskName == '合同签订'"> <div v-if="showMoneyForm ||taskName == '合同签订'">
<ContractPay :projectid="projectId" :isModify="false" :isEdit="false" v-if="projectId"/> <ContractPay :projectid="projectId" :taskName="taskName" :isModify="false" :isEdit="false" v-if="projectId"/>
</div> </div>
<el-divider content-position="left">项目计划资料详情</el-divider> <el-divider content-position="left">项目计划资料详情</el-divider>
<PlanFileDetail :planinfoid="planinfoid" :stage="1" :key="planFileDetailkey" /> <PlanFileDetail :planinfoid="planinfoid" :stage="1" :key="planFileDetailkey" />

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

@ -221,10 +221,11 @@
label: '上传资料', label: '上传资料',
ifShow: () => { ifShow: () => {
if ( if (
record.isfinish == 0 && (record.isfinish == 0 &&
record.taskFile?.length > 0 && record.taskFile?.length > 0 &&
record.taskName != '可研技术审查报告确认' && record.taskName != '可研技术审查报告确认' &&
record.taskName != '造价评估报告确认' record.taskName != '造价评估报告确认') ||
record.ismodify
) { ) {
if (isShowByRoles('projectContact')) { if (isShowByRoles('projectContact')) {
// //

Loading…
Cancel
Save