明树Git Lab

Commit f374d490 authored by zhanghan's avatar zhanghan

投资目标责任书开发

parent 1e385b28
Pipeline #108602 passed with stage
in 20 seconds
......@@ -434,82 +434,573 @@
<el-tab-pane label="年度经营管理责任书" name="年度经营管理责任书">
<div class="project-tab-content">
<div class="tab-content">
<el-form
:model="formData"
:label-width="180"
:disabled="isPreview"
>
<el-collapse v-model="ndActiveCollapse">
<!-- 基本信息 -->
<el-collapse-item title="基本信息" name="基本信息">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="项目名称">
<el-input v-model="formData.nd_xmxx_projectName" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="决策主体">
<el-input v-model="formData.nd_xmxx_jczt" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="监管单位">
<el-select
v-model="formData.nd_xmxx_jgdw"
placeholder="请选择"
clearable
>
<el-option
v-for="item in jgdwList"
:key="item.key"
:label="item.name"
:value="item.key"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="签订单位">
<el-select
v-model="formData.nd_xmxx_qddw"
placeholder="请选择"
clearable
>
<el-option
v-for="item in qddwList"
:key="item.key"
:label="item.name"
:value="item.key"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="投资主体">
<el-input v-model="formData.nd_xmxx_tzzt" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目地点">
<el-input v-model="formData.nd_xmxx_xmdd" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="建设期(月份)">
<el-input-number
v-model="formData.nd_xmxx_jsq"
:min="0"
controls-position="right"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目投产时间">
<el-date-picker
v-model="formData.nd_xmxx_xmccsj"
type="date"
placeholder="请选择"
value-format="YYYY-MM-DD"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="运营期">
<el-input-number
v-model="formData.nd_xmxx_yyq"
:min="0"
controls-position="right"
/>
<span style="margin-left: 5px"></span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="计划竣工时间">
<el-date-picker
v-model="formData.nd_xmxx_jhgcsj"
type="date"
placeholder="请选择"
value-format="YYYY-MM-DD"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="决策时间">
<el-date-picker
v-model="formData.nd_xmxx_jcsj"
type="date"
placeholder="请选择"
value-format="YYYY-MM-DD"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<div class="tab-handle">
<el-form-item label="项目内容">
<el-input
v-model="formData.nd_xmxx_xmnr"
type="textarea"
:autosize="{ minRows: 3, maxRows: 6 }"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="项目主要方案内容">
<el-input
v-model="formData.nd_xmxx_xmzyfanr"
type="textarea"
:autosize="{ minRows: 2, maxRows: 5 }"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="全投资财务内部收益率%(税前)">
<el-input-number
v-model="formData.nd_xmxx_qtzwsyln"
:min="0"
:max="100"
:precision="2"
controls-position="right"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="资本金财务内部收益率%(税后)">
<el-input-number
v-model="formData.nd_xmxx_zjbwsylh"
:min="0"
:max="100"
:precision="2"
controls-position="right"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="签订日期">
<el-date-picker
v-model="formData.nd_xmxx_qdrq"
type="date"
placeholder="请选择"
value-format="YYYY-MM-DD"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="填报人">
<el-input v-model="formData.nd_xmxx_tbr" />
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<!-- 造价信息 -->
<el-collapse-item title="造价信息" name="造价信息">
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="项目总投资(万元)">
<el-input-number
v-model="formData.nd_zjxx_xmztz"
:min="0"
:precision="2"
controls-position="right"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="建安费(万元)">
<el-input-number
v-model="formData.nd_zjxx_jaf"
:min="0"
:precision="2"
controls-position="right"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="设备及工具购置费(万元)">
<el-input-number
v-model="formData.nd_zjxx_sbgzgzf"
:min="0"
:precision="2"
controls-position="right"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="土地相关费用(万元)">
<el-input-number
v-model="formData.nd_zjxx_tdxgfy"
:min="0"
:precision="2"
controls-position="right"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="建设单位管理费(万元)">
<el-input-number
v-model="formData.nd_zjxx_jsdwglf"
:min="0"
:precision="2"
controls-position="right"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="其他建设项目管理费(万元)">
<el-input-number
v-model="formData.nd_zjxx_qtjsxmglf"
:min="0"
:precision="2"
controls-position="right"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="其他费用(万元)">
<el-input-number
v-model="formData.nd_zjxx_qtfy"
:min="0"
:precision="2"
controls-position="right"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="能建方建安费(万元)">
<el-input-number
v-model="formData.nd_zjxx_njfjaf"
:min="0"
:precision="2"
controls-position="right"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="建设期利息(万元)">
<el-input-number
v-model="formData.nd_zjxx_jsqlx"
:min="0"
:precision="2"
controls-position="right"
/>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<!-- 运营期目标责任书 -->
<el-collapse-item title="运营期目标责任书" name="运营期目标责任书">
<div class="collapse-title">投融资与运营指标(万元)</div>
<div class="tab-handle" style="margin-bottom: 10px">
<el-button
type="primary"
:disabled="isPreview"
size="small"
@click="addJyglzrs"
>新增</el-button
@click="addTrzRow"
>新增指标</el-button
>
</div>
<el-table
:data="jyglzrsData"
:data="trzData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column type="index" width="50" />
<el-table-column prop="nd" label="年度" width="260">
<el-table-column type="index" label="序号" width="60" />
<el-table-column prop="zbmc" label="指标名称" width="260">
<template #default="scope">
<el-date-picker
v-model="scope.row.nd"
type="year"
<el-input
v-model="scope.row.zbmc"
placeholder="请输入指标名称"
/>
</template>
</el-table-column>
<el-table-column prop="sfkh" label="是否考核" width="100">
<template #default="scope">
<el-select
v-model="scope.row.sfkh"
placeholder="请选择"
value-format="YYYY"
>
<el-option label="是" value="1" />
<el-option label="否" value="2" />
</el-select>
</template>
</el-table-column>
<el-table-column prop="zrmzb" label="责任目标值" width="140">
<template #default="scope">
<el-input-number
v-model="scope.row.zrmzb"
:min="0"
:precision="2"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column label="经营管理责任书" prop="jyglzrs">
<el-table-column prop="khjzf" label="考核基准分" width="120">
<template #default="scope">
<el-input-number
v-model="scope.row.khjzf"
:min="0"
:precision="2"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column prop="jfxz" label="计分细则">
<template #default="scope">
<el-input
v-model="scope.row.jfxz"
type="textarea"
:autosize="{ minRows: 2, maxRows: 4 }"
/>
</template>
</el-table-column>
<el-table-column label="操作" width="80" fixed="right">
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click="deleteTrzRow(scope.$index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
<!-- 其他对项目决策与实施有颠覆性影响的边界条件 -->
<el-collapse-item title="其他对项目决策与实施有颠覆性影响的边界条件" name="边界条件">
<div class="tab-handle" style="margin-bottom: 10px">
<el-button
type="primary"
size="small"
@click="addBjtjRow"
>新增</el-button
>
</div>
<el-table
:data="bjtjData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column type="index" label="序号" width="60" />
<el-table-column prop="zbmc" label="指标名称">
<template #default="scope">
<el-input
v-model="scope.row.zbmc"
placeholder="请输入指标名称"
/>
</template>
</el-table-column>
<el-table-column prop="khjzf" label="考核基准分" width="180">
<template #default="scope">
<el-input-number
v-model="scope.row.khjzf"
:min="0"
:precision="2"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column prop="jfxz" label="计分细则">
<template #default="scope">
<el-input
v-model="scope.row.jfxz"
type="textarea"
:autosize="{ minRows: 2, maxRows: 4 }"
/>
</template>
</el-table-column>
<el-table-column label="操作" width="80" fixed="right">
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click="deleteBjtjRow(scope.$index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
<!-- 项目实施过程中其他提高项目投资收益或带动公司市场开拓的情况 -->
<el-collapse-item title="项目实施过程中其他提高项目投资收益或带动公司市场开拓的情况" name="市场开拓">
<div class="tab-handle" style="margin-bottom: 10px">
<el-button
type="primary"
size="small"
@click="addScktRow"
>新增</el-button
>
</div>
<el-table
:data="scktData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column type="index" label="序号" width="60" />
<el-table-column prop="zbmc" label="指标名称">
<template #default="scope">
<el-input
v-model="scope.row.zbmc"
placeholder="请输入指标名称"
/>
</template>
</el-table-column>
<el-table-column prop="khjzf" label="考核基准分" width="180">
<template #default="scope">
<el-input-number
v-model="scope.row.khjzf"
:min="0"
:precision="2"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column prop="jfxz" label="计分细则">
<template #default="scope">
<el-input
v-model="scope.row.jfxz"
type="textarea"
:autosize="{ minRows: 2, maxRows: 4 }"
/>
</template>
</el-table-column>
<el-table-column label="操作" width="80" fixed="right">
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click="deleteScktRow(scope.$index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
<!-- 签订信息 -->
<el-collapse-item title="签订信息" name="签订信息">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="签订状态">
<el-select
v-model="formData.nd_qdxx_qdzt"
placeholder="请选择"
clearable
>
<el-option
v-for="item in qdztList"
:key="item.key"
:label="item.name"
:value="item.key"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否按时签订">
<el-radio-group v-model="formData.nd_qdxx_sfasqd">
<el-radio label="1"></el-radio>
<el-radio label="2"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="签订单位">
<el-input v-model="formData.nd_qdxx_qddw" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="已盖章签字的运营阶段目标责任书附件">
<el-upload
v-if="!scope.row.jyglzrs"
:action="windowConfig.baseUrl + '/api/file/upload'"
:headers="{ Authorization: token }"
:show-file-list="false"
:on-success="
(res, file) =>
addJyglzrsFile(res, file, scope.row)
"
multiple
:on-success="addQdfjFile"
>
<el-button link type="primary">上传</el-button>
<el-button type="default">上传</el-button>
</el-upload>
<div class="upload-file-wrap" v-else>
<span
class="file-name"
@click="downloadFile(scope.row.jyglzrs)"
>{{ scope.row.jyglzrs.originalname }}</span
<el-button
type="default"
@click="multiDeleteQdfj"
:disabled="!qdfjSelectIds.length"
>删除选中文件</el-button
>
<span
class="delete-btn"
@click="deleteRowFile(scope.row, scope.$index)"
</el-form-item>
<el-form-item label="">
<el-table
:data="qdfjData"
style="width: 100%"
empty-text="暂无数据"
border
@selection-change="qdfjSelectionChange"
>
<el-icon><CloseBold /></el-icon>
</span>
</div>
<el-table-column type="selection" width="55" />
<el-table-column
prop="originalname"
label="文件名"
/>
<el-table-column
prop="updatedAt"
label="上传时间"
>
<template #default="{ row }">
<span>{{
moment(row.updatedAt).format(
"YYYY-MM-DD HH:mm:SS",
)
}}</span>
</template>
</el-table-column>
<el-table-column label="说明" prop="sm">
<template #default="scope">
<el-input v-model="scope.row.sm" type="textarea" />
<el-table-column prop="size" label="大小">
<template #default="{ row }">
<span>{{ row.size }} MB</span>
</template>
</el-table-column>
<el-table-column label="操作" width="60" fixed="right">
<template #default="scope">
<el-table-column
fixed="right"
label="操作"
width="100"
>
<template #default="{ row, index }">
<span
class="always-click"
@click="downloadFile(row)"
>下载</span
>
<el-button
link
type="danger"
size="small"
@click="deleteJyglzrs(scope.$index)"
@click="deleteQdfj(index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
</el-collapse>
</el-form>
</div>
</div>
</el-tab-pane>
......@@ -547,6 +1038,12 @@ const activeCollapse = reactive([
"责任书具体指标",
"批复意见落实情况",
]);
const ndActiveCollapse = reactive([
"基本信息",
"造价信息",
"运营期目标责任书",
"签订信息",
]);
let formData = reactive({});
let loading = ref(false);
// 责任书类型
......@@ -603,6 +1100,15 @@ const getProjectData = (params = {}) => {
let pfyjlxList = reactive([]);
let lsqkList = reactive([]);
let pfyjlsqkData = ref([]);
// 年度经营管理责任书相关数据
let jgdwList = reactive([]);
let qddwList = reactive([]);
let qdztList = reactive([]);
let trzData = ref([]);
let bjtjData = ref([]);
let scktData = ref([]);
let qdfjData = ref([]);
let qdfjSelectIds = ref([]);
const addPfyjlsqk = () => {
pfyjlsqkData.value.push({});
};
......@@ -642,6 +1148,11 @@ const getStatementInfo = () => {
Object.assign(chwjData.value, res.chwj);
Object.assign(jyglzrsData.value, res.tzmbzrsNds);
Object.assign(pfyjlsqkData.value, res.tzmbzrsPfyjs);
// 年度经营管理责任书数据
Object.assign(trzData.value, res.ndTrz || []);
Object.assign(bjtjData.value, res.ndBjtj || []);
Object.assign(scktData.value, res.ndSckt || []);
Object.assign(qdfjData.value, res.ndQdfj || []);
},
});
};
......@@ -651,6 +1162,10 @@ onMounted(() => {
zrslxList = resourceData.level;
pfyjlxList = resourceData.ssjd;
lsqkList = resourceData.lszxqk;
// 年度经营管理责任书相关字典
jgdwList = resourceData.jgdw || [];
qddwList = resourceData.qddw || [];
qdztList = resourceData.qdzt || [];
statementId && getStatementInfo();
buildNodeMap = (nodes, parent = null) => {
......@@ -1005,6 +1520,96 @@ const deleteRowFile = (row, index) => {
let { jyglzrs, ...data } = row;
jyglzrsData.value[index] = data;
};
// 投融资与运营指标
const addTrzRow = () => {
trzData.value.push({
zbmc: '',
sfkh: '1',
zrmzb: 0,
khjzf: 0,
jfxz: ''
});
};
const deleteTrzRow = (index) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
trzData.value.splice(index, 1);
})
.catch(() => {});
};
// 边界条件
const addBjtjRow = () => {
bjtjData.value.push({
zbmc: '',
khjzf: 0,
jfxz: ''
});
};
const deleteBjtjRow = (index) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
bjtjData.value.splice(index, 1);
})
.catch(() => {});
};
// 市场开拓
const addScktRow = () => {
scktData.value.push({
zbmc: '',
khjzf: 0,
jfxz: ''
});
};
const deleteScktRow = (index) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
scktData.value.splice(index, 1);
})
.catch(() => {});
};
// 签订附件
const addQdfjFile = (res, file) => {
qdfjData.value.push(res.data);
};
const deleteQdfj = (index) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
qdfjData.value.splice(index, 1);
})
.catch(() => {});
};
const qdfjSelectionChange = (datas) => {
qdfjSelectIds.value = datas.map((item) => item.id);
};
const multiDeleteQdfj = () => {
ElMessageBox.confirm("确认删除选中数据?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
qdfjData.value = qdfjData.value.filter(
(item) => !qdfjSelectIds.value.includes(item.id),
);
})
.catch(() => {});
};
// 下载已上传文件
const downloadFile = (data) => {
......@@ -1031,6 +1636,11 @@ const saveClick = () => {
chwj: chwjData.value,
tzmbzrsNds: jyglzrsData.value,
tzmbzrsPfyjs: pfyjlsqkData.value,
// 年度经营管理责任书相关数据
ndTrz: trzData.value,
ndBjtj: bjtjData.value,
ndSckt: scktData.value,
ndQdfj: qdfjData.value,
},
callback: (data) => {
router.back(-1);
......@@ -1046,4 +1656,25 @@ const saveClick = () => {
.add-project-header {
margin-bottom: 10px;
}
.collapse-title {
font-size: 14px;
font-weight: bold;
color: #303133;
margin-bottom: 10px;
padding-left: 10px;
border-left: 3px solid #409eff;
}
.always-click {
color: #409eff;
cursor: pointer;
margin-right: 10px;
&:hover {
text-decoration: underline;
}
}
.tab-handle {
margin-bottom: 10px;
display: flex;
justify-content: flex-end;
}
</style>
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