明树Git Lab

Commit 5ba1d38f authored by yangyajing's avatar yangyajing

费用分项控制、阶段对比表

parent 1dd94d13
Pipeline #106337 passed with stage
in 16 seconds
...@@ -29,6 +29,7 @@ axios.interceptors.response.use(response => { ...@@ -29,6 +29,7 @@ axios.interceptors.response.use(response => {
}); });
export function $get ({ url, params = {}, callback, error }) { export function $get ({ url, params = {}, callback, error }) {
const userStore = useUserStore();
return axios({ return axios({
method: "get", method: "get",
url: windowConfig.baseUrl + url, url: windowConfig.baseUrl + url,
......
...@@ -30,39 +30,46 @@ ...@@ -30,39 +30,46 @@
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="费用分项控制、阶段对比表" name="费用分项控制、阶段对比表"> <el-collapse-item title="费用分项控制、阶段对比表" name="费用分项控制、阶段对比表">
<el-row :gutter="20"> <el-row :gutter="20">
<template v-if="fyfxkzIsEdit">
<el-col :span="6"> <el-col :span="6">
<el-form-item label="本期时间"> <el-form-item label="本期时间" required>
<el-date-picker <el-date-picker
v-model="fyfxkzFormData.bqsj" v-model="fyfxkzFormData.bqsj"
type="month" type="month"
placeholder="请选择" placeholder="请选择"
:disabled="!!selectRange" value-format="YYYY-MM"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="上期时间"> <el-form-item label="上期时间" required>
<el-date-picker <el-date-picker
v-model="fyfxkzFormData.sqsj" v-model="fyfxkzFormData.sqsj"
type="month" type="month"
placeholder="请选择" placeholder="请选择"
:disabled="!!selectRange" value-format="YYYY-MM"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> </template>
</el-col> <el-col :span="6" :offset="fyfxkzIsEdit ? 6 : 18">
<el-col :span="6">
<div class="tab-handle"> <div class="tab-handle">
<!-- 点击新增后,这里显示确认按钮 --> <template v-if="fyfxkzIsEdit">
<el-button type="default" size="small" @click="cancelFyfxkz">取消</el-button>
<el-button type="primary" size="small" @click="saveFyfxkz">确定</el-button>
</template>
<template v-else>
<el-select v-model="selectRange" placeholder="请选择" no-data-text="暂无数据" <el-select v-model="selectRange" placeholder="请选择" no-data-text="暂无数据"
:style="{width: '200px', marginRight: '20px'}" :style="{width: '200px', marginRight: '20px'}"
@change="changeRange"
> >
<el-option v-for="item in rangeList" :key="item.id" <el-option v-for="item in rangeList" :key="item.key"
:label="item.name" :value="item.id" :label="item.key" :value="item.key"
></el-option> ></el-option>
</el-select> </el-select>
<el-button v-if="selectRange" type="primary" size="small" @click="editFyfxkz">编辑</el-button>
<el-button type="primary" size="small" @click="addFyfxkz">新增</el-button> <el-button type="primary" size="small" @click="addFyfxkz">新增</el-button>
</template>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
...@@ -72,82 +79,82 @@ ...@@ -72,82 +79,82 @@
<el-table-column type="index" label="序号" width="60" /> <el-table-column type="index" label="序号" width="60" />
<el-table-column prop="xm" label="项目" width="240"> <el-table-column prop="xm" label="项目" width="240">
<template #default="scope"> <template #default="scope">
<el-input v-model="scope.row.xm" /> <el-input v-model="scope.row.xm" :disabled="!fyfxkzIsEdit"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="zbgs" label="招标估算" width="180"> <el-table-column prop="zbgs" label="招标估算" width="180">
<template #default="scope"> <template #default="scope">
<el-input-number v-model="scope.row.zbgs" :min="0" :max="99999999999.99999999" <el-input-number v-model="scope.row.zbgs" :min="0" :max="99999999999.99999999"
controls-position="right" controls-position="right" :disabled="!fyfxkzIsEdit"
/> />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="jcgs" label="决策估算" width="180"> <el-table-column prop="jcgs" label="决策估算" width="180">
<template #default="scope"> <template #default="scope">
<el-input-number v-model="scope.row.jcgs" :min="0" :max="99999999999.99999999" <el-input-number v-model="scope.row.jcgs" :min="0" :max="99999999999.99999999"
controls-position="right" controls-position="right" :disabled="!fyfxkzIsEdit"
/> />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="pfgusuan" label="批复估算" width="180"> <el-table-column prop="pfgusuan" label="批复估算" width="180">
<template #default="scope"> <template #default="scope">
<el-input-number v-model="scope.row.pfgusuan" :min="0" :max="99999999999.99999999" <el-input-number v-model="scope.row.pfgusuan" :min="0" :max="99999999999.99999999"
controls-position="right" controls-position="right" :disabled="!fyfxkzIsEdit"
/> />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="pfgs" label="批复概算" width="180"> <el-table-column prop="pfgs" label="批复概算" width="180">
<template #default="scope"> <template #default="scope">
<el-input-number v-model="scope.row.pfgs" :min="0" :max="99999999999.99999999" <el-input-number v-model="scope.row.pfgs" :min="0" :max="99999999999.99999999"
controls-position="right" controls-position="right" :disabled="!fyfxkzIsEdit"
/> />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="tkjgs" label="同口径概算" width="180"> <el-table-column prop="tkjgs" label="同口径概算" width="180">
<template #default="scope"> <template #default="scope">
<el-input-number v-model="scope.row.tkjgs" :min="0" :max="99999999999.99999999" <el-input-number v-model="scope.row.tkjgs" :min="0" :max="99999999999.99999999"
controls-position="right" controls-position="right" :disabled="!fyfxkzIsEdit"
/> />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="pfys" label="批复预算" width="180"> <el-table-column prop="pfys" label="批复预算" width="180">
<template #default="scope"> <template #default="scope">
<el-input-number v-model="scope.row.pfys" :min="0" :max="99999999999.99999999" <el-input-number v-model="scope.row.pfys" :min="0" :max="99999999999.99999999"
controls-position="right" controls-position="right" :disabled="!fyfxkzIsEdit"
/> />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="zbqy" label="招标签约" width="180"> <el-table-column prop="zbqy" label="招标签约" width="180">
<template #default="scope"> <template #default="scope">
<el-input-number v-model="scope.row.zbqy" :min="0" :max="99999999999.99999999" <el-input-number v-model="scope.row.zbqy" :min="0" :max="99999999999.99999999"
controls-position="right" controls-position="right" :disabled="!fyfxkzIsEdit"
/> />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="sqyc" label="上期预测" width="180"> <el-table-column prop="sqyc" label="上期预测" width="180">
<template #default="scope"> <template #default="scope">
<el-input-number v-model="scope.row.sqyc" :min="0" :max="99999999999.99999999" <el-input-number v-model="scope.row.sqyc" :min="0" :max="99999999999.99999999"
controls-position="right" controls-position="right" :disabled="!fyfxkzIsEdit"
/> />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="bqyc" label="本期预测" width="180"> <el-table-column prop="bqyc" label="本期预测" width="180">
<template #default="scope"> <template #default="scope">
<el-input-number v-model="scope.row.bqyc" :min="0" :max="99999999999.99999999" <el-input-number v-model="scope.row.bqyc" :min="0" :max="99999999999.99999999"
controls-position="right" controls-position="right" :disabled="!fyfxkzIsEdit"
/> />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="bqjsq" label="本期-上期" width="180"> <el-table-column prop="bqjsq" label="本期-上期" width="180">
<template #default="scope"> <template #default="scope">
<el-input-number v-model="scope.row.bqjsq" :min="0" :max="99999999999.99999999" <el-input-number v-model="scope.row.bqjsq" :min="0" :max="99999999999.99999999"
controls-position="right" controls-position="right" :disabled="!fyfxkzIsEdit"
/> />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="cysm" label="本期较上期差异原因说明" width="240"> <el-table-column prop="cysm" label="本期较上期差异原因说明" width="240">
<template #default="scope"> <template #default="scope">
<el-input v-model="scope.row.cysm" type="textarea" /> <el-input v-model="scope.row.cysm" type="textarea" :disabled="!fyfxkzIsEdit" />
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -440,6 +447,7 @@ ...@@ -440,6 +447,7 @@
} }
]; ];
let fyfxkzData = ref([]); let fyfxkzData = ref([]);
let fyfxkzIsEdit = ref(false);
let isPreview = !!route.query.isPreview; let isPreview = !!route.query.isPreview;
let controlId = route.query.controlId; let controlId = route.query.controlId;
...@@ -453,24 +461,98 @@ ...@@ -453,24 +461,98 @@
callback: (res) => { callback: (res) => {
loading.value = false; loading.value = false;
Object.assign(formData, res); Object.assign(formData, res);
// TODO 费用分项控制、阶段对比表,获取到全周期的数据,默认显示最新的 if (res.tzkztzekzs && res.tzkztzekzs.length) {
rangeList.value = res.tzkztzekzs.map(item => {
return {
...item,
bqsj: proxy.moment(item.bqsj).format("YYYY-MM"),
sqsj: proxy.moment(item.sqsj).format("YYYY-MM")
}
});
selectRange.value = res.tzkztzekzs[0].key;
fyfxkzData.value = res.tzkztzekzs[0].tables;
}
Object.assign(pfyjlsqkData.value, res.tzkzjcpfyjs); Object.assign(pfyjlsqkData.value, res.tzkzjcpfyjs);
Object.assign(mbpcData.value, res.qtjsmbzdpc); Object.assign(mbpcData.value, res.qtjsmbzdpc);
Object.assign(cwpjData.value, res.tzkzcwpjs); Object.assign(cwpjData.value, res.tzkzcwpjs);
Object.assign(tzsyData.value, res.tzkztzsys); Object.assign(tzsyData.value, res.tzkztzsys);
} }
}); });
} };
onMounted(() => { onMounted(() => {
getProjectData(); getProjectData();
if (controlId) { if (controlId) {
getControlInfo(); getControlInfo();
fyfxkzIsEdit.value = false;
} else { } else {
fyfxkzData.value = fyfxkzDefaultData; fyfxkzData.value = JSON.parse(JSON.stringify(fyfxkzDefaultData));
fyfxkzIsEdit.value = true;
} }
}); });
// 新增费用分项控制、阶段对比表
const addFyfxkz = () => {
selectRange.value = "";
fyfxkzIsEdit.value = true;
fyfxkzData.value = JSON.parse(JSON.stringify(fyfxkzDefaultData));
};
const editFyfxkz = () => {
fyfxkzIsEdit.value = true;
let selectData = rangeList.value.filter(item => item.key === selectRange.value);
fyfxkzFormData.bqsj = selectData[0].bqsj;
fyfxkzFormData.sqsj = selectData[0].sqsj;
};
const saveFyfxkz = () => {
if (fyfxkzFormData.bqsj && fyfxkzFormData.sqsj) {
if (selectRange.value) {
rangeList.value = rangeList.value.map(item => {
if (item.key === selectRange.value) {
selectRange.value = fyfxkzFormData.bqsj + "至" + fyfxkzFormData.sqsj;
return {
bqsj: fyfxkzFormData.bqsj,
sqsj: fyfxkzFormData.sqsj,
key: fyfxkzFormData.bqsj + "至" + fyfxkzFormData.sqsj,
tables: fyfxkzData.value
}
} else {
return {
...item
};
}
})
} else {
rangeList.value.push({
bqsj: fyfxkzFormData.bqsj,
sqsj: fyfxkzFormData.sqsj,
key: fyfxkzFormData.bqsj + "至" + fyfxkzFormData.sqsj,
tables: fyfxkzData.value
});
}
fyfxkzIsEdit.value = false;
if (!selectRange.value) {
selectRange.value = rangeList.value[0].key;
fyfxkzData.value = rangeList.value[0].tables;
} else {
let selectData = rangeList.value.filter(item => item.key === selectRange.value);
fyfxkzData.value = selectData.length ? selectData[0].tables : [];
}
} else {
ElMessage.warning("请补充本期及上期时间");
}
}
const cancelFyfxkz = () => {
if (selectRange.value) {
fyfxkzData.value = rangeList.value[0].tables;
} else if (formData.id) {
fyfxkzData.value = [];
} else {
fyfxkzData.value = JSON.parse(JSON.stringify(fyfxkzDefaultData));
}
fyfxkzIsEdit.value = false;
}
const changeRange = (val) => {
fyfxkzData.value = rangeList.value.filter(item => item.key === val)[0].tables;
};
// 项目批复意见落实情况 // 项目批复意见落实情况
let pfyjlsqkData = ref([]); let pfyjlsqkData = ref([]);
...@@ -625,13 +707,18 @@ ...@@ -625,13 +707,18 @@
router.back(-1) router.back(-1)
} }
const saveClick = () => { const saveClick = () => {
if (formData.projectId) { if (!formData.projectId) {
return ElMessage.warning("请选择项目信息");
}
if (fyfxkzIsEdit.value) {
return ElMessage.warning("请先保存正在添加的费用分项控制、阶段对比表");
}
let url = formData.id ? "updateTzkz" : "createTzkz"; let url = formData.id ? "updateTzkz" : "createTzkz";
proxy.$post({ proxy.$post({
url: "/api/project/" + url, url: "/api/project/" + url,
data: { data: {
...formData, ...formData,
// tzkztzekzs: fyfxkzData.value, tzkztzekzs: rangeList.value,
tzkzjcpfyjs: pfyjlsqkData.value, tzkzjcpfyjs: pfyjlsqkData.value,
qtjsmbzdpc: mbpcData.value, qtjsmbzdpc: mbpcData.value,
tzkzcwpjs: cwpjData.value, tzkzcwpjs: cwpjData.value,
...@@ -640,10 +727,7 @@ ...@@ -640,10 +727,7 @@
callback: (data) => { callback: (data) => {
router.back(-1) router.back(-1)
} }
}) });
} else {
ElMessage.warning("请选择项目信息");
}
} }
</script> </script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment