明树Git Lab

Commit ba4efeac authored by zhanghan's avatar zhanghan

项目修改

parent ea70d53d
Pipeline #109722 passed with stage
in 20 seconds
{
"permissions": {
"allow": [
"Bash(mkdir:*)",
"Bash(for f in /c/Users/EDY/AppData/Local/Temp/claude/D--code-jt-front-src-views-castbehind/tasks/*.output)",
"Bash(do echo \"=== $f ===\")",
"Read(//d/code/jt_front/src/views/castbehind/**)",
"Bash(done)",
"Bash(grep:*)",
"Bash(npx vue-tsc:*)",
"Bash(npx vite:*)"
]
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
<template>
<div class="tab-content">
<div class="tab-content">
<el-form
:model="jcFormData"
:label-width="150"
:disabled="isPreview"
>
<el-collapse v-model="activeCollapse">
<el-collapse-item
title="项目投资总额(全口径)"
name="项目投资总额(全口径)"
>
<el-table
:data="jcTzzeqkjData"
style="width: 100%"
empty-text="暂无数据"
default-expand-all
row-key="xh"
border
>
<el-table-column prop="xh" label="序号" />
<el-table-column prop="zb" label="指标" />
<el-table-column prop="dw" label="" width="70" />
<el-table-column prop="rmbjj" label="人民币计价">
<template #default="scope">
<el-input
v-if="!['一', '二'].includes(scope.row.xh)"
v-model="scope.row.rmbjj"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
<el-collapse-item
title="财务评价指标"
name="财务评价指标"
>
<el-table
:data="jcCwpjzbData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column prop="name" label="指标" />
<el-table-column prop="unit" label="" width="70" />
<el-table-column
prop="num"
label="投资评估阶段批复值"
>
<template #default="scope">
<el-input
v-model="scope.row.num"
v-if="scope.row.type === 'year'"
/>
<el-input
v-else
v-model="scope.row.num"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
<el-collapse-item
title="核心边界条件"
name="核心边界条件"
>
<div class="tab-handle">
<el-button
type="primary"
size="small"
@click="addJchxbjtj"
>新增</el-button
>
</div>
<el-table
:data="jcHxbjtjData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column type="index" width="50" />
<el-table-column
prop="type"
label="业务类型"
width="130"
>
<template #default="scope">
<CommonSelector
v-model="scope.row.type"
dictName="hxbjtjywlx"
/>
</template>
</el-table-column>
<el-table-column label="单位工程造价">
<el-table-column
prop="dwgczjSz"
label="数值"
width="180"
>
<template #default="scope">
<el-input
v-model="scope.row.dwgczjSz"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column
prop="dwgczjDw"
label="单位"
width="130"
>
<template #default="scope">
<CommonSelector
v-model="scope.row.dwgczjDw"
dictName="gczjdw"
/>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="销售/服务能力">
<el-table-column
prop="xsfwnlSz"
label="数值"
width="180"
>
<template #default="scope">
<el-input
v-model="scope.row.xsfwnlSz"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column
prop="xsfwnlDw"
label="单位"
width="60"
/>
</el-table-column>
<el-table-column label="年均负荷率">
<el-table-column
prop="njfhlSz"
label="数值"
width="180"
>
<template #default="scope">
<el-input
v-model="scope.row.njfhlSz"
:min="0"
:max="99999.99"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column
prop="njfhlDw"
label="单位"
width="60"
/>
</el-table-column>
<el-table-column label="单位生产/服务总成本">
<el-table-column
prop="dwscfwzcbSz"
label="数值"
width="180"
>
<template #default="scope">
<el-input
v-model="scope.row.dwscfwzcbSz"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column
prop="dwscfwzcbDw"
label="单位"
width="60"
/>
</el-table-column>
<el-table-column label="单位售价(含税)">
<el-table-column
prop="dwsjSz"
label="数值"
width="180"
>
<template #default="scope">
<el-input
v-model="scope.row.dwsjSz"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column
prop="dwsjDw"
label="单位"
width="90"
>
<template #default="scope">
<el-input v-model="scope.row.dwsjDw" />
</template>
</el-table-column>
</el-table-column>
<el-table-column label="盈亏平衡点">
<el-table-column
prop="ykphdlx"
label="类型"
width="130"
>
<template #default="scope">
<CommonSelector
v-model="scope.row.ykphdlx"
dictName="ykphdlx"
/>
</template>
</el-table-column>
<el-table-column
prop="ykphdsz"
label="数值"
width="180"
>
<template #default="scope">
<el-input
v-model="scope.row.ykphdsz"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column
prop="ykphddw"
label="单位"
width="60"
/>
</el-table-column>
<el-table-column
prop="bcsm"
label="核心边界条件补充说明"
width="180"
>
<template #default="scope">
<el-input
v-model="scope.row.bcsm"
type="textarea"
/>
</template>
</el-table-column>
<el-table-column
label="操作"
width="60"
fixed="right"
>
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click="deleteJchxbjtj(scope.$index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
<el-collapse-item
title="决策主体审核情况"
name="决策主体审核情况"
>
<div class="tab-handle">
<el-button
type="primary"
size="small"
@click="addJcztshqk"
>新增</el-button
>
</div>
<el-table
:data="jcztshqkData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column type="index" width="50" />
<el-table-column prop="hylx" label="会议类型">
<template #default="scope">
<CommonSelector
v-model="scope.row.hylx"
dictName="hylx"
/>
</template>
</el-table-column>
<el-table-column prop="hymc" label="会议名称">
<template #default="scope">
<el-input v-model="scope.row.hymc" />
</template>
</el-table-column>
<el-table-column
prop="jcsj"
label="决策时间"
width="260"
>
<template #default="scope">
<el-date-picker
v-model="scope.row.jcsj"
type="date"
placeholder="请选择"
/>
</template>
</el-table-column>
<el-table-column prop="jcjl" label="决策结论">
<template #default="scope">
<el-input
v-model="scope.row.jcjl"
type="textarea"
/>
</template>
</el-table-column>
<el-table-column
label="会议纪要"
prop="hyjy"
width="170"
>
<template #default="scope">
<el-upload
v-if="!scope.row.hyjy"
:action="
windowConfig.baseUrl + '/api/file/upload'
"
:headers="{ Authorization: token }"
:show-file-list="false"
:on-success="
(res, file) =>
addJcztshqkFile(res, file, scope.row)
"
>
<el-button link type="primary"
>上传</el-button
>
</el-upload>
<div class="upload-file-wrap" v-else>
<span
class="file-name"
@click="downloadFile(scope.row.hyjy)"
>{{ scope.row.hyjy.originalname }}</span
>
<span
class="delete-btn"
@click="
deleteJcztshqkFile(
scope.row,
scope.$index,
)
"
>
<el-icon><CloseBold /></el-icon>
</span>
</div>
</template>
</el-table-column>
<el-table-column prop="qtsm" label="其他说明">
<template #default="scope">
<el-input
v-model="scope.row.qtsm"
type="textarea"
/>
</template>
</el-table-column>
<el-table-column
label="操作"
width="60"
fixed="right"
>
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click="deleteJcztshqk(scope.$index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
<el-collapse-item
title="投资主体审核情况"
name="投资主体审核情况"
>
<div class="tab-handle">
<el-button
type="primary"
size="small"
@click="addTzztshqk"
>新增</el-button
>
</div>
<el-table
:data="tzztshqkData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column type="index" width="50" />
<el-table-column prop="hylx" label="会议类型">
<template #default="scope">
<CommonSelector
v-model="scope.row.hylx"
dictName="hylx"
/>
</template>
</el-table-column>
<el-table-column prop="hymc" label="会议名称">
<template #default="scope">
<el-input v-model="scope.row.hymc" />
</template>
</el-table-column>
<el-table-column
prop="shsj"
label="审核时间"
width="260"
>
<template #default="scope">
<el-date-picker
v-model="scope.row.shsj"
type="date"
placeholder="请选择"
/>
</template>
</el-table-column>
<el-table-column prop="jl" label="结论">
<template #default="scope">
<el-input
v-model="scope.row.jl"
type="textarea"
/>
</template>
</el-table-column>
<el-table-column label="附件" prop="fj">
<template #default="scope">
<el-upload
v-if="!scope.row.fj"
:action="
windowConfig.baseUrl + '/api/file/upload'
"
:headers="{ Authorization: token }"
:show-file-list="false"
:on-success="
(res, file) =>
addTzztshqkFile(res, file, scope.row)
"
>
<el-button link type="primary"
>上传</el-button
>
</el-upload>
<div class="upload-file-wrap" v-else>
<span
class="file-name"
@click="downloadFile(scope.row.fj)"
>{{ scope.row.fj.originalname }}</span
>
<span
class="delete-btn"
@click="
deleteTzztshqkFile(
scope.row,
scope.$index,
)
"
>
<el-icon><CloseBold /></el-icon>
</span>
</div>
</template>
</el-table-column>
<el-table-column prop="qtsm" label="其他说明">
<template #default="scope">
<el-input
v-model="scope.row.qtsm"
type="textarea"
/>
</template>
</el-table-column>
<el-table-column
label="操作"
width="60"
fixed="right"
>
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click="deleteTzztshqk(scope.$index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="其他会议审议情况">
<el-input
v-model="jcFormData.jcqthysyqk"
type="textarea"
:autosize="{ minRows: 2, maxRows: 5 }"
/>
</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="最终审批意见"
label-width="160"
>
<CommonSelector
v-model="jcFormData.jczzpfyj"
dictName="spyj"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目批复时间">
<el-date-picker
v-model="jcFormData.jcxmpfsj"
type="date"
placeholder="请选择"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目批复文号">
<el-input v-model="jcFormData.jcxmpfwh" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item
label="未通过主要原因与要求"
label-width="160"
>
<el-input
v-model="jcFormData.jcwtgzyyyyyq"
type="textarea"
:autosize="{ minRows: 2, maxRows: 5 }"
/>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="审批意见" name="审批意见">
<div class="tab-handle">
<el-button
type="primary"
size="small"
@click="addJcspyj"
>新增</el-button
>
</div>
<el-table
:data="jcspyjData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column type="index" width="50" />
<el-table-column prop="lx" label="类型">
<template #default="scope">
<CommonSelector
v-model="scope.row.lx"
dictName="jcspyjlx"
/>
</template>
</el-table-column>
<el-table-column prop="pfyj" label="批复意见">
<template #default="scope">
<el-input
v-model="scope.row.pfyj"
type="textarea"
/>
</template>
</el-table-column>
<el-table-column
prop="pfyjsj"
label="批复意见时间"
width="260"
>
<template #default="scope">
<el-date-picker
v-model="scope.row.pfyjsj"
type="date"
placeholder="请选择"
/>
</template>
</el-table-column>
<el-table-column label="执行回复" prop="zxhf">
<template #default="scope">
<el-input
v-model="scope.row.zxhf"
type="textarea"
/>
</template>
</el-table-column>
<el-table-column
label="执行回复时间"
prop="zxhfsj"
width="260"
>
<template #default="scope">
<el-date-picker
v-model="scope.row.zxhfsj"
type="date"
placeholder="请选择"
/>
</template>
</el-table-column>
<el-table-column label="执行回复附件" prop="zxhffj">
<template #default="scope">
<el-upload
v-if="!scope.row.zxhffj"
:action="
windowConfig.baseUrl + '/api/file/upload'
"
:headers="{ Authorization: token }"
:show-file-list="false"
:on-success="
(res, file) =>
addJcspyjFile(res, file, scope.row)
"
>
<el-button link type="primary"
>上传</el-button
>
</el-upload>
<div class="upload-file-wrap" v-else>
<span
class="file-name"
@click="downloadFile(scope.row.zxhffj)"
>{{ scope.row.zxhffj.originalname }}</span
>
<span
class="delete-btn"
@click="
deleteRowFile(scope.row, scope.$index)
"
>
<el-icon><CloseBold /></el-icon>
</span>
</div>
</template>
</el-table-column>
<el-table-column
label="操作"
width="60"
fixed="right"
>
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click="deleteJcspyj(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="8">
<el-form-item
label-width="160"
label="投资主体首次申报时间"
>
<el-date-picker
v-model="jcFormData.tzztscsbsj"
type="date"
placeholder="请选择"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
label-width="160"
label="会签完成时间"
>
<el-date-picker
v-model="jcFormData.hqwcsj"
type="date"
placeholder="请选择"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
label-width="160"
label="首次发函时间"
>
<el-date-picker
v-model="jcFormData.scfhsj"
type="date"
placeholder="请选择"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
label-width="160"
label="补充资料时间"
>
<el-date-picker
v-model="jcFormData.bczlsj"
type="date"
placeholder="请选择"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label-width="160" label="审核人">
<el-input v-model="jcFormData.shr" />
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
</el-collapse>
</el-form>
</div>
</div>
</template>
<script setup>
import { inject } from "vue";
import CommonSelector from "@/components/CommonSelector.vue";
const {
jcFormData, isPreview, activeCollapse,
jcTzzeqkjData, jcCwpjzbData, jcHxbjtjData,
jcztshqkData, tzztshqkData, jcspyjData,
addJchxbjtj, deleteJchxbjtj,
addJcztshqk, deleteJcztshqk, addJcztshqkFile, deleteJcztshqkFile,
addTzztshqk, deleteTzztshqk, addTzztshqkFile, deleteTzztshqkFile,
addJcspyj, deleteJcspyj, addJcspyjFile, deleteRowFile,
downloadFile,
windowConfig, token,
} = inject("jcShared");
</script>
<template>
<div class="project-tab-content">
<div class="tab-content">
<el-form :model="jcFormData" label-width="200px" :disabled="isPreview">
<el-collapse v-model="activeCollapse">
<!-- 1. 项目基本信息 -->
<el-collapse-item title="项目基本信息" name="项目基本信息">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="项目名称">
<el-input v-model="jcFormData.projectName" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目外文名称">
<el-input v-model="jcFormData.projectForeignName" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="曾用名">
<el-input v-model="jcFormData.cym" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目编号">
<el-input v-model="jcFormData.projectCode" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="申报单位">
<el-input v-model="jcFormData.sbdw" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="申报单位企业规格">
<CommonSelector
v-model="jcFormData.sbdwqygg"
dictName="sbdwqygg"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目总投资">
<el-input-number
v-model="jcFormData.xmztz"
:min="0"
controls-position="right"
>
<template #suffix><span>万元</span></template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="所属直属企业">
<el-input v-model="jcFormData.zsqy" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="管理主体">
<el-input v-model="jcFormData.glzt" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="投资模式">
<el-input v-model="jcFormData.tzms" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="对外签约品牌">
<el-input v-model="jcFormData.dwqypp" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否能建重大或重要投资">
<CommonSelector
:radio="true"
v-model="jcFormData.sfnjzdhzytz"
dictName="sf"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="能建是否牵头方">
<CommonSelector
:radio="true"
v-model="jcFormData.njsfqtf"
dictName="sf"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="能建占股比">
<el-input-number
v-model="jcFormData.njzgb"
:min="0"
controls-position="right"
>
<template #suffix><span>%</span></template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否PPP项目">
<CommonSelector
:radio="true"
v-model="jcFormData.sfpppxm"
dictName="sf"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目资金来源">
<el-select
v-model="jcFormData.xmzjly"
multiple
placeholder="请选择"
no-data-text="暂无数据"
clearable
>
<el-option
v-for="item in xmzjlyList"
:key="item.key"
:label="item.name"
:value="item.key"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="商务部项目类型">
<CommonSelector
v-model="jcFormData.swbxmlx"
dictName="swbxmlx"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="国民经济行业">
<el-tree-select
v-model="jcFormData.gmjjhy"
:data="gmjjhyList"
node-key="id"
:props="gmjjhyProps"
placeholder="请选择"
render-after-expand
clearable
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否自主决策">
<CommonSelector
:radio="true"
v-model="jcFormData.sfzzjc"
dictName="sf"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="财务报表类型">
<CommonSelector
v-model="jcFormData.cwbblx"
dictName="cwbblx"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目类型">
<CommonSelector v-model="jcFormData.xmlx" dictName="xmlx" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目阶段">
<CommonSelector v-model="jcFormData.xmjd" dictName="xmjd" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="主业/非主业">
<CommonSelector v-model="jcFormData.zyfzy" dictName="zyfzy" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否已经立项">
<CommonSelector
:radio="true"
v-model="jcFormData.sfyjlx"
dictName="sf"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否能建联合体项目">
<CommonSelector
:radio="true"
v-model="jcFormData.sfnjlhtxm"
dictName="sf"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否重点区域">
<CommonSelector
:radio="true"
v-model="jcFormData.sfzdqy"
dictName="sf"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="重点区域">
<el-input v-model="jcFormData.zdqy" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="建设内容及规模">
<el-input
v-model="jcFormData.jsnrjgm"
type="textarea"
:autosize="{ minRows: 2, maxRows: 5 }"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="关联项目">
<el-select
v-model="jcFormData.glxm"
placeholder="请选择"
no-data-text="暂无数据"
clearable
></el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="联系人">
<el-input v-model="jcFormData.lxr" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="联系人电话">
<el-input v-model="jcFormData.lxrdh" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="投资回收方式">
<CommonSelector
v-model="jcFormData.tzhsfs"
dictName="tzhsfs"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="成本利润率">
<el-input-number
v-model="jcFormData.cblrl"
:min="0"
controls-position="right"
>
<template #suffix><span>%</span></template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="未通过主要原因与要求">
<el-input
v-model="jcFormData.wtgzyyyyyq"
type="textarea"
:autosize="{ minRows: 2, maxRows: 5 }"
/>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<!-- 2. 项目所在地 -->
<el-collapse-item title="项目所在地" name="项目所在地">
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="境内/外">
<CommonSelector
v-model="jcFormData.jnw"
dictName="dqlx"
@change="changeJcJnw"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="省(境内)/洲际(境外)">
<CommonSelector
v-model="jcFormData.sjnzjjw"
:options="jcSzjList"
@change="changeJcSzj"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="地市(境内)/国家(境外)">
<CommonSelector
v-model="jcFormData.dsjngjjw"
:options="jcDsgjList"
@change="changeJcDsgj"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="区县(境内)/国家(境外)">
<CommonSelector
v-model="jcFormData.qxjngjjw"
:options="jcQxgjList"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目区域">
<CommonSelector v-model="jcFormData.xmqy" dictName="xmqy" />
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<!-- 3. 计量币种 -->
<el-collapse-item title="计量币种" name="计量币种">
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="币种">
<CommonSelector
v-model="jcFormData.bizhong"
dictName="bizhong"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="汇率">
<el-input
v-model="jcFormData.huilv"
:min="0"
controls-position="right"
/>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<!-- 4. 实施时间 -->
<el-collapse-item title="实施时间" name="实施时间">
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="运营年限">
<el-input-number
v-model="jcFormData.yynxn"
:min="0"
controls-position="right"
>
<template #suffix><span></span></template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目建设期">
<el-input-number
v-model="jcFormData.xmjsqy"
:min="0"
controls-position="right"
>
<template #suffix><span></span></template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目合作期">
<el-input-number
v-model="jcFormData.xmhzqn"
:min="0"
controls-position="right"
>
<template #suffix><span></span></template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目开工时间(预计)">
<el-date-picker
v-model="jcFormData.xmkgsjyj"
type="date"
placeholder="请选择"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目交工时间(预计)">
<el-date-picker
v-model="jcFormData.xmjgsjyj"
type="date"
placeholder="请选择"
/>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="投资分类" name="投资分类">
<el-row :gutter="20">
<el-col :span="8">
<div class="col-title">投资属性分类</div>
<el-form-item label="一级分类">
<CommonSelector
v-model="jcFormData.tzsxyjfl"
dictName="tzsx"
@change="changeJcTzsxyjfl"
/>
</el-form-item>
<el-form-item label="二级分类">
<CommonSelector
v-model="jcFormData.tzsxejfl"
:options="jcTzsxejflList"
/>
</el-form-item>
<el-form-item label="投资板块">
<CommonSelector
v-model="jcFormData.tzbk"
dictName="tzbk"
@change="changeJcTzsxtzbk"
/>
</el-form-item>
<el-form-item label="细分板块">
<CommonSelector
v-model="jcFormData.subsector"
:options="jcTzsxxfbkList"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="col-title">投资目的分类</div>
<el-form-item label="一级分类">
<CommonSelector
v-model="jcFormData.tzmdyjfl"
dictName="tzmd"
@change="changeJcTzmdyjfl"
/>
</el-form-item>
<el-form-item label="二级分类">
<CommonSelector
v-model="jcFormData.tzmdejfl"
:options="jcTzmdejflList"
/>
</el-form-item>
<el-form-item label="四新分类">
<CommonSelector v-model="jcFormData.sxfl" dictName="sxfl" />
</el-form-item>
<el-form-item label="是否纳入补贴目录">
<CommonSelector
:radio="true"
v-model="jcFormData.sfnrbtml"
dictName="sf"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="col-title">投资指南分类</div>
<el-form-item label="一级分类">
<CommonSelector
v-model="jcFormData.tzznyjfl"
dictName="tzzn"
@change="changeJcTzznyjfl"
/>
</el-form-item>
<el-form-item label="二级分类">
<CommonSelector
v-model="jcFormData.tzznejfl"
:options="jcTzznejflList"
/>
</el-form-item>
<el-form-item label="是否再决策">
<CommonSelector
:radio="true"
v-model="jcFormData.sfzjc"
dictName="sf"
/>
</el-form-item>
<el-form-item
label="投资指南分类概述"
v-if="jcFormData.tzznyjfl !== 233"
>
<el-input
v-model="jcFormData.tzznflgs"
type="textarea"
:autosize="{ minRows: 2, maxRows: 5 }"
/>
</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-width="300px"
label="是否需报国家发展改革委和商务部核准"
>
<CommonSelector
:radio="true"
v-model="jcFormData.sfxbgjfzggwhswbhz"
dictName="sf"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label-width="300px" label="是否国家领导见签">
<CommonSelector
:radio="true"
v-model="jcFormData.sfgjldjq"
dictName="sf"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label-width="300px" label="是否境内特别监管类">
<CommonSelector
:radio="true"
v-model="jcFormData.sfjntbjgl"
dictName="sf"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label-width="300px" label="是否一带一路沿线国家">
<CommonSelector
:radio="true"
v-model="jcFormData.sfydylyxgj"
dictName="sf"
/>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item
title="建设规模(实物量指标)"
name="建设规模(实物量指标)"
>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="高速公路里程">
<el-input-number
v-model="jcFormData.gsgllc"
:min="0"
:max="99999999999.99999999"
controls-position="right"
>
<template #suffix>
<span>km</span>
</template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="其他收费公路里程">
<el-input-number
v-model="jcFormData.qtsfgllc"
:min="0"
:max="99999999999.99999999"
controls-position="right"
>
<template #suffix>
<span>km</span>
</template>
</el-input-number>
</el-form-item>
</el-col>
</el-row>
<div class="tab-handle">
<el-button type="primary" size="small" @click="addJcSwlzb"
>新增</el-button
>
</div>
<el-table
:data="jcSwlzbData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column type="index" width="50" />
<el-table-column prop="name" label="指标名称">
<template #default="scope">
<el-input v-model="scope.row.name" />
</template>
</el-table-column>
<el-table-column prop="num" label="数量">
<template #default="scope">
<el-input
v-model="scope.row.num"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column prop="unit" label="单位">
<template #default="scope">
<el-input v-model="scope.row.unit" />
</template>
</el-table-column>
<el-table-column prop="bcsm" label="补充说明">
<template #default="scope">
<el-input v-model="scope.row.bcsm" type="textarea" />
</template>
</el-table-column>
<el-table-column label="操作" width="60">
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click="deleteJcSwlzb(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="是否已经政府审批">
<CommonSelector
:radio="true"
v-model="jcFormData.sfyjzfsp"
dictName="sf"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审批单位名称(全称)">
<el-input v-model="jcFormData.spdwmc" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="审批金额">
<el-input-number
v-model="jcFormData.spje"
:min="0"
:max="99999999999.99999999"
controls-position="right"
>
<template #suffix>
<span>万元</span>
</template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="审批文号">
<el-input v-model="jcFormData.pwwh" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="审批级别">
<CommonSelector v-model="jcFormData.spjb" dictName="spjb" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="审批时间">
<el-date-picker
v-model="jcFormData.spsj"
type="date"
placeholder="请选择"
/>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="股东信息" name="股东信息">
<div class="tab-handle">
<el-button type="primary" size="small" @click="addJcGdxx"
>新增</el-button
>
</div>
<el-table
:data="jcGdxxData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column
type="index"
width="50"
:index="jcgdxxIndexMethod"
/>
<el-table-column prop="gdlx" label="股东类型" width="180">
<template #default="scope">
<CommonSelector
v-if="scope.$index < jcGdxxData.length - 1"
v-model="scope.row.gdlx"
dictName="gdlx"
@change="changeJcGdxxSums"
/>
<div v-else class="sums-column">
<div class="" v-for="(value, key) in jcgdxxSums" :key="key">
{{ value.name }}
</div>
<div>合计</div>
</div>
</template>
</el-table-column>
<el-table-column prop="gdmc" label="股东名称" width="180">
<template #default="scope">
<el-input
v-if="scope.$index < jcGdxxData.length - 1"
v-model="scope.row.gdmc"
/>
<div v-else></div>
</template>
</el-table-column>
<el-table-column
prop="mycgbl"
label="名义持股比例(%)"
width="180"
>
<template #default="scope">
<el-input
v-if="scope.$index < jcGdxxData.length - 1"
v-model="scope.row.mycgbl"
:min="0"
:max="99999.99"
controls-position="right"
@change="changeJcGdxxSums"
/>
<div v-else class="sums-column">
<div class="" v-for="(value, key) in jcgdxxSums" :key="key">
{{ value.mycgbl }}%
</div>
<div>{{ getObjSums(jcgdxxSums, "mycgbl") }}%</div>
</div>
</template>
</el-table-column>
<el-table-column prop="cgbl" label="持股比例(%)" width="180">
<template #default="scope">
<el-input
v-if="scope.$index < jcGdxxData.length - 1"
v-model="scope.row.cgbl"
:min="0"
:max="99999.99"
controls-position="right"
@change="changeJcGdxxSums"
/>
<div v-else class="sums-column">
<div class="" v-for="(value, key) in jcgdxxSums" :key="key">
{{ value.cgbl }}%
</div>
<div>{{ getObjSums(jcgdxxSums, "cgbl") }}%</div>
</div>
</template>
</el-table-column>
<el-table-column
prop="lrfpbl"
label="利润分配比例(%)"
width="180"
>
<template #default="scope">
<el-input
v-if="scope.$index < jcGdxxData.length - 1"
v-model="scope.row.lrfpbl"
:min="0"
:max="99999.99"
controls-position="right"
@change="changeJcGdxxSums"
/>
<div v-else class="sums-column">
<div class="" v-for="(value, key) in jcgdxxSums" :key="key">
{{ value.lrfpbl }}%
</div>
<div>{{ getObjSums(jcgdxxSums, "lrfpbl") }}%</div>
</div>
</template>
</el-table-column>
<el-table-column prop="cze" label="出资额(万元)" width="180">
<template #default="scope">
<el-input
v-if="scope.$index < jcGdxxData.length - 1"
v-model="scope.row.cze"
:min="0"
:max="99999999999.99999999"
controls-position="right"
@change="changeJcGdxxSums"
/>
<div v-else class="sums-column">
<div class="" v-for="(value, key) in jcgdxxSums" :key="key">
{{ value.cze }}万元
</div>
<div>{{ getObjSums(jcgdxxSums, "cze") }}万元</div>
</div>
</template>
</el-table-column>
<el-table-column prop="sffldw" label="是否关联单位" width="80">
<template #default="scope">
<el-switch
v-if="scope.$index < jcGdxxData.length - 1"
v-model="scope.row.sffldw"
inline-prompt
active-value="1"
active-text="是"
inactive-value="2"
inactive-text="否"
/>
<div v-else></div>
</template>
</el-table-column>
<el-table-column
prop="yjzczb"
label="应缴注册资本(万元)"
width="180"
>
<template #default="scope">
<el-input
v-if="scope.$index < jcGdxxData.length - 1"
v-model="scope.row.yjzczb"
:min="0"
:max="99999999999.99999999"
controls-position="right"
@change="changeJcGdxxSums"
/>
<div v-else class="sums-column">
<div class="" v-for="(value, key) in jcgdxxSums" :key="key">
{{ value.yjzczb }}万元
</div>
<div>{{ getObjSums(jcgdxxSums, "yjzczb") }}万元</div>
</div>
</template>
</el-table-column>
<el-table-column
prop="ycxmzbj"
label="应出项目资本金(万元)"
width="180"
>
<template #default="scope">
<el-input
v-if="scope.$index < jcGdxxData.length - 1"
v-model="scope.row.ycxmzbj"
:min="0"
:max="99999999999.99999999"
controls-position="right"
@change="changeJcGdxxSums"
/>
<div v-else class="sums-column">
<div class="" v-for="(value, key) in jcgdxxSums" :key="key">
{{ value.ycxmzbj }}万元
</div>
<div>{{ getObjSums(jcgdxxSums, "ycxmzbj") }}万元</div>
</div>
</template>
</el-table-column>
<el-table-column
prop="sfwqcnsy"
label="是否为其承诺收益"
width="100"
>
<template #default="scope">
<el-switch
v-if="scope.$index < jcGdxxData.length - 1"
v-model="scope.row.sfwqcnsy"
inline-prompt
active-value="1"
active-text="是"
inactive-value="2"
inactive-text="否"
/>
<div v-else></div>
</template>
</el-table-column>
<el-table-column
prop="sfwqtgdbhgcnd"
label="是否为其提供担保回购承诺等"
width="130"
>
<template #default="scope">
<el-switch
v-if="scope.$index < jcGdxxData.length - 1"
v-model="scope.row.sfwqtgdbhgcnd"
inline-prompt
active-value="1"
active-text="是"
inactive-value="2"
inactive-text="否"
/>
<div v-else></div>
</template>
</el-table-column>
<el-table-column
prop="sfczmgszqx"
label="是否存在名股实债情形"
width="130"
>
<template #default="scope">
<el-switch
v-if="scope.$index < jcGdxxData.length - 1"
v-model="scope.row.sfczmgszqx"
inline-prompt
active-value="1"
active-text="是"
inactive-value="2"
inactive-text="否"
/>
<div v-else></div>
</template>
</el-table-column>
<el-table-column prop="bz" label="备注" width="180">
<template #default="scope">
<el-input
v-if="scope.$index < jcGdxxData.length - 1"
v-model="scope.row.bz"
/>
<div v-else></div>
</template>
</el-table-column>
<el-table-column prop="hzfqk" label="合作方情况" width="180">
<template #default="scope">
<el-input
v-if="scope.$index < jcGdxxData.length - 1"
v-model="scope.row.hzfqk"
/>
<div v-else></div>
</template>
</el-table-column>
<el-table-column label="操作" width="60" fixed="right">
<template #default="scope">
<el-button
v-if="scope.$index < jcGdxxData.length - 1"
link
type="danger"
size="small"
@click="deleteJcGdxx(scope.$index)"
>删除</el-button
>
<div v-else></div>
</template>
</el-table-column>
</el-table>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label-width="160px" label="我方出资人及持股比例">
<el-input v-model="jcFormData.wfczrjcgbl" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label-width="160px" label="涉及能建方施工单位">
<el-input v-model="jcFormData.sjnjfsgdw" />
</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-width="170px"
label="我方负责的股权融资金额"
>
<el-input-number
v-model="jcFormData.wffzdgqrzjewy"
:min="0"
:max="99999999999.99999999"
controls-position="right"
>
<template #suffix>
<span>万元</span>
</template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label-width="170px" label="融资成本">
<el-input-number
v-model="jcFormData.rzcbgq"
:min="0"
:max="99999.99"
controls-position="right"
>
<template #suffix>
<span>%</span>
</template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label-width="170px" label="期限">
<el-input-number
v-model="jcFormData.qxgq"
:min="0"
:max="99999999999.99999999"
controls-position="right"
>
<template #suffix>
<span></span>
</template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label-width="170px" label="担保金额">
<el-input-number
v-model="jcFormData.dbje"
:min="0"
:max="99999999999.99999999"
controls-position="right"
>
<template #suffix>
<span>万元</span>
</template>
</el-input-number>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item
title="我方担保及债权融资情况"
name="我方担保及债权融资情况"
>
<div class="tab-handle">
<el-button type="primary" size="small" @click="addDbzq"
>新增</el-button
>
</div>
<el-table
:data="dbzqData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column type="index" width="50" />
<el-table-column prop="wffzdzqrzjewy" label="金额">
<template #default="scope">
<el-input-number
v-model="scope.row.wffzdzqrzjewy"
:min="0"
:max="99999999999.99999999"
controls-position="right"
>
<template #suffix>
<span>万元</span>
</template>
</el-input-number>
</template>
</el-table-column>
<el-table-column prop="rzcbzq" label="融资成本">
<template #default="scope">
<el-input-number
v-model="scope.row.rzcbzq"
:min="0"
:max="99999.99"
controls-position="right"
>
<template #suffix>
<span>%</span>
</template>
</el-input-number>
</template>
</el-table-column>
<el-table-column prop="qxzq" label="期限">
<template #default="scope">
<el-input-number
v-model="scope.row.qxzq"
:min="0"
:max="99999999999.99999999"
controls-position="right"
>
<template #suffix>
<span></span>
</template>
</el-input-number>
</template>
</el-table-column>
<el-table-column prop="yjldsjzq" label="预计落地时间">
<template #default="scope">
<el-date-picker
v-model="scope.row.yjldsjzq"
type="date"
placeholder="请选择"
/>
</template>
</el-table-column>
<el-table-column label="操作" width="60">
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click="deleteDbzq(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="8">
<el-form-item label="带动工程合同额">
<el-input-number
v-model="jcFormData.ddgchte"
:min="0"
:max="99999999999.99999999"
controls-position="right"
>
<template #suffix>
<span>万元</span>
</template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="投资带动比">
<el-input-number
v-model="jcFormData.tzddb"
:min="0"
:max="99999.99"
controls-position="right"
>
<template #suffix>
<span>%</span>
</template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="工程利润">
<el-input-number
v-model="jcFormData.gclrwy"
:min="0"
:max="99999999999.99999999"
controls-position="right"
>
<template #suffix>
<span>万元</span>
</template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="工程利润率">
<el-input-number
v-model="jcFormData.gclrl"
:min="0"
:max="99999.99"
controls-position="right"
>
<template #suffix>
<span>%</span>
</template>
</el-input-number>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="项目内容及必要性" name="项目内容及必要性">
<el-form-item label="项目必要性">
<el-input
v-model="jcFormData.xmbyx"
type="textarea"
:autosize="{ minRows: 2, maxRows: 5 }"
/>
</el-form-item>
<el-form-item label="其他说明">
<el-input
v-model="jcFormData.qtsm"
type="textarea"
:autosize="{ minRows: 2, maxRows: 5 }"
/>
</el-form-item>
</el-collapse-item>
<el-collapse-item title="风险管理" name="风险管理">
<div class="tab-handle">
<el-button type="primary" size="small" @click="addFxgl"
>新增</el-button
>
</div>
<el-table
:data="fxglData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column type="index" width="50" />
<el-table-column prop="fxlb" label="风险类别">
<template #default="scope">
<el-input v-model="scope.row.fxlb" />
</template>
</el-table-column>
<el-table-column prop="fxms" label="风险描述">
<template #default="scope">
<el-input v-model="scope.row.fxms" type="textarea" />
</template>
</el-table-column>
<el-table-column prop="ydcs" label="应对措施">
<template #default="scope">
<el-input v-model="scope.row.ydcs" type="textarea" />
</template>
</el-table-column>
<el-table-column label="操作" width="60">
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click="deleteFxgl(scope.$index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
<el-collapse-item title="里程碑节点" name="里程碑节点">
<div class="tab-handle">
<el-button type="primary" size="small" @click="addLcbjd"
>新增</el-button
>
</div>
<el-table
:data="lcbjdData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column type="index" width="50" />
<el-table-column prop="lcbjdmc" label="里程碑节点名称">
<template #default="scope">
<el-input v-model="scope.row.lcbjdmc" />
</template>
</el-table-column>
<el-table-column prop="jdwcms" label="节点完成描述">
<template #default="scope">
<el-input v-model="scope.row.jdwcms" type="textarea" />
</template>
</el-table-column>
<el-table-column prop="yjwcsj" label="预计完成时间">
<template #default="scope">
<el-date-picker
v-model="scope.row.yjwcsj"
type="date"
placeholder="请选择"
/>
</template>
</el-table-column>
<el-table-column label="操作" width="60">
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click="deleteLcbjd(scope.$index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<el-form-item label="里程碑计划审批表" :label-width="130">
<el-upload
:action="windowConfig.baseUrl + '/api/file/upload'"
:headers="{ Authorization: token }"
:show-file-list="false"
multiple
:on-success="addLcbspFile"
>
<el-button type="default">上传</el-button>
</el-upload>
<el-button
type="default"
@click="multiDeleteLcbsp"
:disabled="!lcbspSelectIds.length"
>删除选中文件</el-button
>
</el-form-item>
<el-table
:data="lcbspData"
style="width: 100%"
empty-text="暂无数据"
border
@selection-change="lcbspSelectionChange"
>
<el-table-column type="selection" width="55" />
<el-table-column prop="originalname" label="文件名" />
<el-table-column prop="updatedAt" label="上传时间" />
<el-table-column prop="size" label="大小">
<template #default="{ row }">
<span>{{ row.size }} MB</span>
</template>
</el-table-column>
<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="deleteLcbsp($index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
<el-collapse-item title="投评决策资料" name="投评决策资料">
<el-form-item label="可研材料">
<el-upload
:action="windowConfig.baseUrl + '/api/file/upload'"
:headers="{ Authorization: token }"
:show-file-list="false"
multiple
:on-success="addKyclFile"
>
<el-button type="default">上传</el-button>
</el-upload>
<el-button
type="default"
@click="multiDeleteKycl"
:disabled="!kyclSelectIds.length"
>删除选中文件</el-button
>
</el-form-item>
<el-table
:data="kyclData"
style="width: 100%"
empty-text="暂无数据"
border
@selection-change="kyclSelectionChange"
>
<el-table-column type="selection" width="55" />
<el-table-column prop="originalname" label="文件名" />
<el-table-column prop="updatedAt" label="上传时间" />
<el-table-column prop="size" label="大小">
<template #default="{ row }">
<span>{{ row.size }} MB</span>
</template>
</el-table-column>
<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="deleteKycl($index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<el-form-item label="经济指标初步测算资料">
<el-upload
:action="windowConfig.baseUrl + '/api/file/upload'"
:headers="{ Authorization: token }"
:show-file-list="false"
multiple
:on-success="addJjzbcsFile"
>
<el-button type="default">上传</el-button>
</el-upload>
<el-button
type="default"
@click="multiDeleteJjzbcs"
:disabled="!jjzbcsSelectIds.length"
>删除选中文件</el-button
>
</el-form-item>
<el-table
:data="jjzbcsData"
style="width: 100%"
empty-text="暂无数据"
border
@selection-change="jjzbcsSelectionChange"
>
<el-table-column type="selection" width="55" />
<el-table-column prop="originalname" label="文件名" />
<el-table-column prop="updatedAt" label="上传时间" />
<el-table-column prop="size" label="大小">
<template #default="{ row }">
<span>{{ row.size }} MB</span>
</template>
</el-table-column>
<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="deleteJjzbcs($index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<el-form-item label="补充相关支撑材料">
<el-upload
:action="windowConfig.baseUrl + '/api/file/upload'"
:headers="{ Authorization: token }"
:show-file-list="false"
multiple
:on-success="addTpbczcclFile"
>
<el-button type="default">上传</el-button>
</el-upload>
<el-button
type="default"
@click="multiDeleteTpbczccl"
:disabled="!tpbczcclSelectIds.length"
>删除选中文件</el-button
>
</el-form-item>
<el-table
:data="tpbczcclData"
style="width: 100%"
empty-text="暂无数据"
border
@selection-change="tpbczcclSelectionChange"
>
<el-table-column type="selection" width="55" />
<el-table-column prop="originalname" label="文件名" />
<el-table-column prop="updatedAt" label="上传时间" />
<el-table-column prop="size" label="大小">
<template #default="{ row }">
<span>{{ row.size }} MB</span>
</template>
</el-table-column>
<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="deleteTpbczccl($index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<el-form-item label="其他相关支撑材料">
<el-upload
:action="windowConfig.baseUrl + '/api/file/upload'"
:headers="{ Authorization: token }"
:show-file-list="false"
multiple
:on-success="addTpzcclFile"
>
<el-button type="default">上传</el-button>
</el-upload>
<el-button
type="default"
@click="multiDeleteTpzccl"
:disabled="!tpzcclSelectIds.length"
>删除选中文件</el-button
>
</el-form-item>
<el-table
:data="tpzcclData"
style="width: 100%"
empty-text="暂无数据"
border
@selection-change="tpzcclSelectionChange"
>
<el-table-column type="selection" width="55" />
<el-table-column prop="originalname" label="文件名" />
<el-table-column prop="updatedAt" label="上传时间" />
<el-table-column prop="size" label="大小">
<template #default="{ row }">
<span>{{ row.size }} MB</span>
</template>
</el-table-column>
<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="deleteTpzccl($index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<el-form-item label="上会议案">
<el-upload
:action="windowConfig.baseUrl + '/api/file/upload'"
:headers="{ Authorization: token }"
:show-file-list="false"
multiple
:on-success="addShyaFile"
>
<el-button type="default">上传</el-button>
</el-upload>
<el-button
type="default"
@click="multiDeleteShya"
:disabled="!shyaSelectIds.length"
>删除选中文件</el-button
>
</el-form-item>
<el-table
:data="shyaData"
style="width: 100%"
empty-text="暂无数据"
border
@selection-change="shyaSelectionChange"
>
<el-table-column type="selection" width="55" />
<el-table-column prop="originalname" label="文件名" />
<el-table-column prop="updatedAt" label="上传时间" />
<el-table-column prop="size" label="大小">
<template #default="{ row }">
<span>{{ row.size }} MB</span>
</template>
</el-table-column>
<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="deleteShya($index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
</el-collapse>
</el-form>
</div>
</div>
</template>
<script setup>
import { inject } from "vue";
import CommonSelector from "@/components/CommonSelector.vue";
const {
jcFormData,
formData,
isPreview,
activeCollapse,
jcSwlzbData,
jcGdxxData,
jcgdxxSums,
dbzqData,
fxglData,
lcbjdData,
lcbspData,
lcbspSelectIds,
kyclData,
kyclSelectIds,
jjzbcsData,
jjzbcsSelectIds,
tpbczcclData,
tpbczcclSelectIds,
tpzcclData,
tpzcclSelectIds,
shyaData,
shyaSelectIds,
jcztshqkData,
tzztshqkData,
jcspyjData,
downloadFile,
ElMessageBox,
addJcSwlzb,
deleteJcSwlzb,
addJcGdxx,
deleteJcGdxx,
changeJcGdxxSums,
getObjSums,
jcgdxxIndexMethod,
addDbzq,
deleteDbzq,
addFxgl,
deleteFxgl,
addLcbjd,
deleteLcbjd,
addLcbspFile,
deleteLcbsp,
lcbspSelectionChange,
multiDeleteLcbsp,
addKyclFile,
deleteKycl,
kyclSelectionChange,
multiDeleteKycl,
addJjzbcsFile,
deleteJjzbcs,
jjzbcsSelectionChange,
multiDeleteJjzbcs,
addTpbczcclFile,
deleteTpbczccl,
tpbczcclSelectionChange,
multiDeleteTpbczccl,
addTpzcclFile,
deleteTpzccl,
tpzcclSelectionChange,
multiDeleteTpzccl,
addShyaFile,
deleteShya,
shyaSelectionChange,
multiDeleteShya,
addJcztshqk,
deleteJcztshqk,
addJcztshqkFile,
deleteJcztshqkFile,
addTzztshqk,
deleteTzztshqk,
addTzztshqkFile,
deleteTzztshqkFile,
addJcspyj,
deleteJcspyj,
addJcspyjFile,
deleteRowFile,
changeJcJnw,
changeJcSzj,
changeJcDsgj,
changeJcTzsxyjfl,
changeJcTzsxtzbk,
changeJcTzmdyjfl,
changeJcTzznyjfl,
xmzjlyList,
jcSzjList,
jcDsgjList,
jcQxgjList,
jcTzsxejflList,
jcTzsxxfbkList,
jcTzmdejflList,
jcTzznejflList,
gmjjhyList,
gmjjhyProps,
windowConfig,
token,
} = inject("jcShared");
</script>
<template>
<div class="tab-content">
<div class="tab-content">
<el-form
:model="jcFormData"
:label-width="150"
:disabled="isPreview"
>
<el-collapse v-model="activeCollapse">
<el-collapse-item title="投决计划" name="投决计划">
<div class="tab-handle">
<el-button
type="primary"
size="small"
@click="downloadTemplate('tjjh')"
>模板下载</el-button
>
<el-upload
:action="
windowConfig.baseUrl +
'/api/template/importExcelTempData'
"
:headers="{ Authorization: token }"
:show-file-list="false"
:data="{
tampName: 'tjjh',
projectId: formData.id,
}"
:on-success="
(res, file) => importTjjh(res.data, file)
"
>
<el-button
type="primary"
size="small"
style="margin-left: 12px"
>导入数据</el-button
>
</el-upload>
</div>
<el-table
:data="jcTjjhData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column
v-for="(column, index) in tjglColumns"
:key="index"
:prop="column.key"
:label="column.label"
>
<el-table-column
v-for="(col, ind) in column.children"
:key="ind"
:prop="col.key"
:label="col.label"
:width="ind === 1 ? 180 : null"
>
<template #default="scope">
<el-table-column
v-if="col.children?.length"
v-for="(col_, ind_) in col.children"
:key="ind_"
:prop="col_.key.toString()"
:label="col_.label.toString()"
width="180"
>
<template #default="scope_">
<!-- 去掉空白单元行 -->
<el-input
v-if="
scope_.row[col.children[1].key] ||
scope_.row[col.children[1].key] === 0
"
v-model="
scope_.row[col_.key.toString()]
"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
<span v-else></span>
</template>
</el-table-column>
<span v-else>{{ scope.row[col.key] }}</span>
</template>
</el-table-column>
</el-table-column>
</el-table>
</el-collapse-item>
<el-collapse-item
title="项目投资资金流量表"
name="项目投资资金流量表"
>
<div class="tab-handle">
<el-button
type="primary"
size="small"
@click="downloadTemplate('xmtzzjll')"
>模板下载</el-button
>
<el-upload
:action="
windowConfig.baseUrl +
'/api/template/importExcelTempData'
"
:headers="{ Authorization: token }"
:show-file-list="false"
:data="{
tampName: 'xmtzzjll',
projectId: formData.id,
}"
:on-success="
(res, file) => importXmtzzjll(res.data, file)
"
>
<el-button
type="primary"
size="small"
style="margin-left: 12px"
>导入数据</el-button
>
</el-upload>
</div>
<el-table
:data="xmtzzjllData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column
v-for="(column, index) in xmtzzjllColumns"
:key="index"
:prop="column.key"
:label="column.label"
>
<el-table-column
v-for="(col, ind) in column.children"
:key="ind"
:prop="col.key"
:label="col.label"
:width="ind === 1 ? 180 : null"
>
<template #default="scope">
<el-table-column
v-if="col.children?.length"
v-for="(col_, ind_) in col.children"
:key="ind_"
:prop="col_.key.toString()"
:label="col_.label.toString()"
width="180"
>
<template #default="scope_">
<!-- 去掉空白单元行 -->
<el-input
v-if="
scope_.row[col.children[1].key] ||
scope_.row[col.children[1].key] === 0
"
v-model="
scope_.row[col_.key.toString()]
"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
<span v-else></span>
</template>
</el-table-column>
<span v-else>{{ scope.row[col.key] }}</span>
</template>
</el-table-column>
</el-table-column>
</el-table>
</el-collapse-item>
<el-collapse-item
title="项目资本金现金流量表"
name="项目资本金现金流量表"
>
<div class="tab-handle">
<el-button
type="primary"
size="small"
@click="downloadTemplate('xmzbjxjll')"
>模板下载</el-button
>
<el-upload
:action="
windowConfig.baseUrl +
'/api/template/importExcelTempData'
"
:headers="{ Authorization: token }"
:show-file-list="false"
:data="{
tampName: 'xmzbjxjll',
projectId: formData.id,
}"
:on-success="
(res, file) => importXmzbjxjll(res.data, file)
"
>
<el-button
type="primary"
size="small"
style="margin-left: 12px"
>导入数据</el-button
>
</el-upload>
</div>
<el-table
:data="xmzbjxjllData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column
v-for="(column, index) in xmzbjxjllColumns"
:key="index"
:prop="column.key"
:label="column.label"
>
<el-table-column
v-for="(col, ind) in column.children"
:key="ind"
:prop="col.key"
:label="col.label"
:width="ind === 1 ? 180 : null"
>
<template #default="scope">
<el-table-column
v-if="col.children?.length"
v-for="(col_, ind_) in col.children"
:key="ind_"
:prop="col_.key.toString()"
:label="col_.label.toString()"
width="180"
>
<template #default="scope_">
<!-- 去掉空白单元行 -->
<el-input
v-if="
scope_.row[col.children[1].key] ||
scope_.row[col.children[1].key] === 0
"
v-model="
scope_.row[col_.key.toString()]
"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
<span v-else></span>
</template>
</el-table-column>
<span v-else>{{ scope.row[col.key] }}</span>
</template>
</el-table-column>
</el-table-column>
</el-table>
</el-collapse-item>
<el-collapse-item
title="能建方现金流量表"
name="能建方现金流量表"
>
<div class="tab-handle">
<el-button
type="primary"
size="small"
@click="downloadTemplate('njfxjll')"
>模板下载</el-button
>
<el-upload
:action="
windowConfig.baseUrl +
'/api/template/importExcelTempData'
"
:headers="{ Authorization: token }"
:show-file-list="false"
:data="{
tampName: 'njfxjll',
projectId: formData.id,
}"
:on-success="
(res, file) => importNjfxjll(res.data, file)
"
>
<el-button
type="primary"
size="small"
style="margin-left: 12px"
>导入数据</el-button
>
</el-upload>
</div>
<el-table
:data="njfxjllData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column
v-for="(column, index) in njfxjllColumns"
:key="index"
:prop="column.key"
:label="column.label"
>
<el-table-column
v-for="(col, ind) in column.children"
:key="ind"
:prop="col.key"
:label="col.label"
:width="ind === 1 ? 180 : null"
>
<template #default="scope">
<el-table-column
v-if="col.children?.length"
v-for="(col_, ind_) in col.children"
:key="ind_"
:prop="col_.key.toString()"
:label="col_.label.toString()"
width="180"
>
<template #default="scope_">
<!-- 去掉空白单元行 -->
<el-input
v-if="
scope_.row[col.children[1].key] ||
scope_.row[col.children[1].key] === 0
"
v-model="
scope_.row[col_.key.toString()]
"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
<span v-else></span>
</template>
</el-table-column>
<span v-else>{{ scope.row[col.key] }}</span>
</template>
</el-table-column>
</el-table-column>
</el-table>
</el-collapse-item>
<el-collapse-item title="利润表" name="利润表">
<div class="tab-handle">
<el-button
type="primary"
size="small"
@click="downloadTemplate('lrb')"
>模板下载</el-button
>
<el-upload
:action="
windowConfig.baseUrl +
'/api/template/importExcelTempData'
"
:headers="{ Authorization: token }"
:show-file-list="false"
:data="{
tampName: 'lrb',
projectId: formData.id,
}"
:on-success="
(res, file) => importLrb(res.data, file)
"
>
<el-button
type="primary"
size="small"
style="margin-left: 12px"
>导入数据</el-button
>
</el-upload>
</div>
<el-table
:data="lrbData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column
v-for="(column, index) in lrbColumns"
:key="index"
:prop="column.key"
:label="column.label"
>
<el-table-column
v-for="(col, ind) in column.children"
:key="ind"
:prop="col.key"
:label="col.label"
:width="ind === 1 ? 180 : null"
>
<template #default="scope">
<el-table-column
v-if="col.children?.length"
v-for="(col_, ind_) in col.children"
:key="ind_"
:prop="col_.key.toString()"
:label="col_.label.toString()"
width="180"
>
<template #default="scope_">
<!-- 去掉空白单元行 -->
<el-input
v-if="
scope_.row[col.children[1].key] ||
scope_.row[col.children[1].key] === 0
"
v-model="
scope_.row[col_.key.toString()]
"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
<span v-else></span>
</template>
</el-table-column>
<span v-else>{{ scope.row[col.key] }}</span>
</template>
</el-table-column>
</el-table-column>
</el-table>
</el-collapse-item>
</el-collapse>
</el-form>
</div>
</div>
</template>
<script setup>
import { inject } from "vue";
const {
jcFormData, formData, isPreview, activeCollapse,
jcTjjhData, tjglColumns,
xmtzzjllData, xmtzzjllColumns,
xmzbjxjllData, xmzbjxjllColumns,
njfxjllData, njfxjllColumns,
lrbData, lrbColumns,
downloadTemplate,
importTjjh, importXmtzzjll, importXmzbjxjll, importNjfxjll, importLrb,
windowConfig, token,
} = inject("jcShared");
</script>
<template>
<div class="tab-content">
<div class="tab-content">
<el-form
:model="jcFormData"
:label-width="150"
:inline="false"
:disabled="isPreview"
>
<el-collapse v-model="activeCollapse">
<el-collapse-item
title="一、项目背景"
name="一、项目背景"
>
<el-row :gutter="20">
<el-col :span="24">
<h3>
关于{{ jcFormData.projectName }}的申请报告
</h3>
</el-col>
<el-col :span="24">
<el-form-item label="" label-width="0">
<el-input
v-model="jcFormData.projectIntro"
type="textarea"
:rows="3"
placeholder="x公司(与x公司,公司内部单位,如有)申请出资x亿元、持股x%,投资建设x省x高速公路项目。项目总投资x亿元。"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="项目获取">
<el-input
v-model="jcFormData.xmhq"
type="textarea"
:rows="3"
placeholder="1.x年x月,x省政府(授权x市发改委,按项目实际)开展x高速公路项目投资主体的遴选。&#10;2.x年x月,x公司与x市政府签订投资合作框架协议。&#10;3.x年x月,x公司(与x公司、x公司组成的联合体)参与x省x高速公路项目投标,x年x月取得投资主体资格。"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="前期论证主要节点">
<el-input
v-model="jcFormData.qqlzzyjd"
type="textarea"
:rows="3"
placeholder="1.x年x月,本项目取得x省发改委核准。&#10;2.x年x月,工程可研报告通过x机构审查。&#10;3.x年x月,工程初步设计及概算取得x交通厅批复。"
/>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item
title="二、项目基本情况"
name="二、项目基本情况"
>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="所在地">
<div class="text-border">
{{
jcFormData.sjnzjjw
? jcSzjList.filter(
(item) =>
item.key === jcFormData.sjnzjjw,
)[0]?.name
: ""
}}
{{
jcFormData.dsjngjjw
? jcDsgjList.filter(
(item) =>
item.key === jcFormData.dsjngjjw,
)[0]?.name
: ""
}}
{{
jcFormData.qxjngjjw
? jcQxgjList.filter(
(item) =>
item.key === jcFormData.qxjngjjw,
)[0]?.name
: ""
}}
</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="建设规模">
<el-input
v-model="jcFormData.jsgm"
placeholder="x向x车道(全长x公里)"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="建设内容">
<div class="text-border">
{{ jcFormData.jsnrjgm }}
</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目类型">
<el-input
v-model="jcFormData.sqbgxmlx"
placeholder="高速公路"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否标前决策">
<el-input
v-model="jcFormData.sfbqjc"
placeholder="是或否"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="总投资">
<div class="text-border">
{{
jcFormData.xmztz
? jcFormData.xmztz + "亿元"
: ""
}}
</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单位造价">
<el-input-number
v-model="jcFormData.dwzj"
:min="0"
:max="99999999999.99999999"
controls-position="right"
>
<template #suffix>
<span>亿元/km</span>
</template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="投资构成">
<el-input
v-model="jcFormData.tzgc"
type="textarea"
:rows="3"
placeholder="工程费(含建安工程费、设备及工器具购置费等)、工程建设其他费(含征地拆迁费等)、预备费、建设期利息等"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="建设期">
<div class="text-border">
{{
jcFormData.xmjsqy
? jcFormData.xmjsqy + "个月"
: ""
}}
</div>
</el-form-item>
<el-form-item label="运营期">
<div class="text-border">
{{
jcFormData.yynxn
? jcFormData.yynxn + "年"
: ""
}}
</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="合规情况">
<el-input
v-model="jcFormData.hgqk"
type="textarea"
:rows="3"
placeholder="规划情况,项目立项审批情况,特许经营/实施方案及批复情况"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="实施机构">
<el-input v-model="jcFormData.ssjg" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="政府出资代表">
<el-input v-model="jcFormData.zfczdb" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="地方财政情况">
<el-input
v-model="jcFormData.dfczqk"
type="textarea"
:rows="3"
placeholder="一般公共预算收入、一般公共预算支出、债务率等(如涉及)"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="回报机制">
<el-input
v-model="jcFormData.hbjz"
type="textarea"
:rows="3"
placeholder="主要收入来源:通行费收入,路衍经济收益"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="保函情况">
<el-table
:data="bhqkData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column prop="lx" label="类型" />
<el-table-column prop="tjzt" label="提交主体">
<template #default="scope">
<el-input v-model="scope.row.tjzt" />
</template>
</el-table-column>
<el-table-column prop="je" label="金额">
<template #default="scope">
<el-input
v-model="scope.row.je"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column prop="tjsj" label="提交时间">
<template #default="scope">
<el-input v-model="scope.row.tjsj" />
</template>
</el-table-column>
<el-table-column prop="thsj" label="退换时间">
<template #default="scope">
<el-input v-model="scope.row.thsj" />
</template>
</el-table-column>
</el-table>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="绩效考核">
<el-input
v-model="jcFormData.jxkh"
type="textarea"
:rows="3"
placeholder="考核时点、关键考核指标,与保函、项目收入的关联性"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="调价机制">
<el-input
v-model="jcFormData.tjjz"
type="textarea"
:rows="3"
placeholder=""
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="征地拆迁">
<el-input
v-model="jcFormData.zdcq"
type="textarea"
:rows="3"
placeholder="根据项目合同,征地拆迁费用以工可征地拆迁总金额作为上限包干使用(×亿元),按照“归因归责”原则,因政府方导致的费用超支,由政府方承担责任;因其他原因导致的费用超支、进度滞后由社会资本方承担。"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="前期费用">
<el-input
v-model="jcFormData.qqfy"
type="textarea"
:rows="3"
placeholder="×万元;已结算、已发生未结算的,经审计后由项目公司承担。"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="投资模式">
<div class="text-border">
{{ jcFormData.tzms }}
</div>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="投资能力">
<el-input
v-model="jcFormData.tznl"
type="textarea"
:rows="3"
placeholder="1.资产负债率:截至×月底为×%,未/已被纳入资产负债率管控重点关注/重点管控企业名单;实施本项目将推高资产负债率×个百分点。&#10;2.资金状况:资金紧张/充裕,截至×月底货币资金×万元,较上年同期增加/减少流入×亿元。&#10;3.应收账款:截至目前,×公司部分项目存在投资项目回款逾期(如有,应收款×亿元,包括已确权应收款×亿元,应结未结款×亿元)。"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<div class="report-item">
<div class="report-label">资金方案</div>
<div class="report-content">
<div class="report-item">
<div class="report-label">资本金</div>
<div class="report-content">
<el-row>
<el-col :span="8">
<el-form-item label="比例">
<el-input-number
v-model="jcFormData.zbjbl"
:min="0"
:max="99999999999.99999999"
controls-position="right"
>
<template #suffix>
<span>%</span>
</template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="金额">
<el-input
v-model="jcFormData.zbjje"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="来源">
<el-input
v-model="jcFormData.zbjly"
/>
</el-form-item>
</el-col>
</el-row>
</div>
</div>
<div class="report-item">
<div class="report-label">贷款</div>
<div class="report-content">
<el-row>
<el-col :span="8">
<el-form-item label="比例">
<el-input-number
v-model="jcFormData.dkbl"
:min="0"
:max="99999999999.99999999"
controls-position="right"
>
<template #suffix>
<span>%</span>
</template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="金额">
<el-input
v-model="jcFormData.dkbje"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="融资主体">
<el-input
v-model="jcFormData.dkrzzt"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="期限">
<el-input-number
v-model="jcFormData.dkqx"
:min="0"
:max="99999999999.99999999"
controls-position="right"
>
<template #suffix>
<span></span>
</template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="利率">
<el-input-number
v-model="jcFormData.dkll"
:min="0"
:max="99999999999.99999999"
controls-position="right"
>
<template #suffix>
<span>%</span>
</template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="担保方案">
<el-input
v-model="jcFormData.dkdbfa"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="意向书">
<el-input
v-model="jcFormData.dkyxs"
type="textarea"
:rows="3"
placeholder="已取得x行、x行、x行融资意向函,贷款利率按照202x年四季度同期x率计算(目前为x%)。"
/>
</el-form-item>
</el-col>
</el-row>
</div>
</div>
</div>
</div>
</el-col>
<el-col :span="24">
<el-form-item label="股权结构">
<el-table
:data="jcGdxxData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column prop="gdmc" label="股东方">
<template #default="scope">
<div>
{{
scope.$index < jcGdxxData.length - 1
? scope.row.gdmc
: "合计"
}}
</div>
</template>
</el-table-column>
<el-table-column
prop="cgbl"
label="持股比例(%)"
>
<template #default="scope">
<div>
{{
scope.$index < jcGdxxData.length - 1
? scope.row.cgbl
: getObjSums(jcgdxxSums, "cgbl") +
"%"
}}
</div>
</template>
</el-table-column>
<el-table-column
prop="ycxmzbj"
label="项目资本金(亿元)"
>
<template #default="scope">
<div>
{{
scope.$index < jcGdxxData.length - 1
? scope.row.ycxmzbj
? (
scope.row.ycxmzbj / 10000
).toFixed(2)
: scope.row.ycxmzbj
: (
getObjSums(
jcgdxxSums,
"ycxmzbj",
) / 10000
).toFixed(2) + "亿元"
}}
</div>
</template>
</el-table-column>
<el-table-column
prop="yjzczb"
label="其中:项目公司注册资本(亿元)"
>
<template #default="scope">
<div>
{{
scope.$index < jcGdxxData.length - 1
? scope.row.yjzczb
? (
scope.row.yjzczb / 10000
).toFixed(2)
: scope.row.yjzczb
: (
getObjSums(
jcgdxxSums,
"yjzczb",
) / 10000
).toFixed(2) + "亿元"
}}
</div>
</template>
</el-table-column>
</el-table>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="股东方情况">
<div class="text-border">
<span
v-for="(item, index) in jcGdxxData.slice(
0,
-1,
)"
:key="index"
>{{ item.gdmc }}(占股{{ item.cgbl }}%){{
index < jcGdxxData.length - 1
? "、"
: "。"
}}</span
>
</div>
</el-form-item>
</el-col>
<el-col :span="24">
<div class="report-item">
<div class="report-label">项目公司治理结构</div>
<div class="report-content">
<el-row>
<el-col :span="24">
<el-form-item label="股东会">
<el-input
v-model="jcFormData.zljggdh"
type="textarea"
:rows="3"
placeholder="人数,表决事项,表决通过要求。部分重要事项应设定一致决。"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="董事会">
<el-input
v-model="jcFormData.zljgdsh"
type="textarea"
:rows="3"
placeholder=""
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="监事会">
<el-input
v-model="jcFormData.zljgjsh"
type="textarea"
:rows="3"
placeholder=""
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="管理层">
<el-input
v-model="jcFormData.zljgglc"
type="textarea"
:rows="3"
placeholder=""
/>
</el-form-item>
</el-col>
</el-row>
</div>
</div>
</el-col>
<el-col :span="24">
<el-form-item label="建设管理方案">
<el-input
v-model="jcFormData.jsglfa"
type="textarea"
:rows="3"
placeholder=""
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="运营管理方案">
<el-input
v-model="jcFormData.yyglfa"
type="textarea"
:rows="3"
placeholder=""
/>
</el-form-item>
</el-col>
<el-col :span="24">
<div class="report-item">
<div class="report-label">退出机制</div>
<div class="report-content">
<el-row>
<el-col :span="24">
<el-form-item label="正常退出">
<el-input
v-model="jcFormData.tcjzzc"
type="textarea"
:rows="3"
placeholder=""
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="非正常退出">
<el-input
v-model="jcFormData.tcjzfzc"
type="textarea"
:rows="3"
placeholder=""
/>
</el-form-item>
</el-col>
<el-col :span="24">
<div>
(如有)股权锁定期限制;股权转让对受让方的资信、条件限制等。
</div>
</el-col>
</el-row>
</div>
</div>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item
title="三、项目必要性"
name="三、项目必要性"
>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="必要性">
<div class="text-border">
{{ jcFormData.xmbyx }}
</div>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item
title="四、项目可行性"
name="四、项目可行性"
>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="可研编制单位">
<el-input v-model="jcFormData.kybzdw" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="可研评审单位">
<el-input v-model="jcFormData.kypsdw" />
</el-form-item>
</el-col>
<el-col :span="24">
<div class="report-item">
<div class="report-label">经济可行性</div>
<div class="report-content">
<el-row>
<el-col :span="12">
<el-form-item
label="全投资财务内部收益率(税前)"
:label-width="210"
>
<el-input-number
v-model="jcFormData.qtzcwnbsyl"
:min="0"
:max="99999999999.99999999"
controls-position="right"
>
<template #suffix>
<span>%</span>
</template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="资本金财务内部收益率(税后)"
:label-width="210"
>
<el-input-number
v-model="jcFormData.zbjcwnbsyl"
:min="0"
:max="99999999999.99999999"
controls-position="right"
>
<template #suffix>
<span>%</span>
</template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="净现金流回正年份">
<el-input
v-model="jcFormData.jxjlhznf"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="净利润回正年份">
<el-input
v-model="jcFormData.jlrhznf"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="可分配利润回正年份">
<el-input
v-model="jcFormData.kfplrhznf"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="财务净现值(税前)">
<el-input-number
v-model="jcFormData.cwjxz"
:min="0"
:max="99999999999.99999999"
controls-position="right"
>
<template #suffix>
<span>万元</span>
</template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="24">
<div class="tab-handle">
<el-button
type="primary"
size="small"
@click="addJxjl"
>新增</el-button
>
</div>
<el-table
:data="jxjlData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column prop="nf" label="年份">
<template #default="scope">
<el-input v-model="scope.row.nf" />
</template>
</el-table-column>
<el-table-column
prop="je"
label="净现金流(万元)"
>
<template #default="scope">
<el-input
v-model="scope.row.je"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column
label="操作"
width="60"
fixed="right"
>
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click="deleteJxjl(scope.$index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-col>
<el-col :span="24">
<div class="tab-handle">
<el-button
type="primary"
size="small"
@click="addJlr"
>新增</el-button
>
</div>
<el-table
:data="jlrData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column prop="nf" label="年份">
<template #default="scope">
<el-input v-model="scope.row.nf" />
</template>
</el-table-column>
<el-table-column
prop="je"
label="净利润(万元)"
>
<template #default="scope">
<el-input
v-model="scope.row.je"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column
label="操作"
width="60"
fixed="right"
>
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click="deleteJlr(scope.$index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-col>
<el-col :span="24">
<el-form-item
label="敏感性分析"
:label-width="90"
>
<el-input
v-model="jcFormData.mgxfx"
type="textarea"
:rows="3"
placeholder="如存在融合一体化子项,应分别说明各子项基本情况,各子项各自财务评价参数与结果及整体测算结果。"
/>
</el-form-item>
</el-col>
</el-row>
</div>
</div>
</el-col>
<el-col :span="24">
<el-form-item label="工程收益">
<el-input
v-model="jcFormData.gcsy"
type="textarea"
:rows="3"
placeholder="建安费金额,考虑x%下浮后,建安费x亿元,考虑施工直接成本、项目管理成本、工程收益预计x亿元,工程收益率x%"
/>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item
title="五、风险防控"
name="五、风险防控"
>
<el-table
:data="fxglData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column prop="fxlb" label="风险点" />
<el-table-column prop="fxms" label="内容" />
<el-table-column prop="ydcs" label="防控措施" />
</el-table>
</el-collapse-item>
<el-collapse-item
title="六、内部决策情况"
name="六、内部决策情况"
>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="各级决策情况">
<el-input
v-model="jcFormData.gjjcqk"
type="textarea"
:rows="3"
placeholder="(各级决策情况)&#10;×年×月×日,×公司×年第×次办公会,要求×。"
/>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item
title="七、需要说明的问题"
name="七、需要说明的问题"
>
<el-input
v-model="jcFormData.xysmdwt"
type="textarea"
:rows="3"
placeholder="股东出资能力、特殊合同条款、协同经营情况等需要特殊说明事项"
/>
</el-collapse-item>
</el-collapse>
</el-form>
</div>
</div>
</template>
<script setup>
import { inject } from "vue";
const {
jcFormData, isPreview, activeCollapse,
bhqkData, jxjlData, jlrData, fxglData,
jcgdxxSums, getObjSums,
addJxjl, deleteJxjl, addJlr, deleteJlr,
jcSzjList, jcDsgjList, jcQxgjList,
jcGdxxData,
} = inject("jcShared");
</script>
<template>
<div class="tab-content">
<div class="tab-content">
<el-form
:model="formData"
:label-width="150"
:disabled="
isPreview ||
(Number(formData.projectLzType) <= 5 &&
Number(formData.projectLzType) != 1)
"
>
<el-collapse v-model="activeCollapse">
<el-collapse-item
title="项目投资总额(全口径)"
name="项目投资总额(全口径)"
>
<el-table
:data="tzzeqkjData"
style="width: 100%"
empty-text="暂无数据"
default-expand-all
row-key="xh"
border
>
<el-table-column prop="xh" label="序号" />
<el-table-column prop="zb" label="指标" />
<el-table-column prop="dw" label="" width="70" />
<el-table-column prop="rmbjj" label="人民币计价">
<template #default="scope">
<el-input
v-model="scope.row.rmbjj"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
<el-collapse-item
title="财务评价指标"
name="财务评价指标"
>
<el-table
:data="cwpjzbData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column prop="name" label="指标" />
<el-table-column prop="unit" label="" width="70" />
<el-table-column
prop="tzpgjdpfz"
label="投资评估阶段批复值"
>
<template #default="scope">
<el-input
v-model="scope.row.num"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
<el-collapse-item
title="核心边界条件"
name="核心边界条件"
>
<div class="tab-handle">
<el-button
type="primary"
size="small"
@click="addHxbjtj"
>新增</el-button
>
</div>
<el-table
:data="hxbjtjData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column type="index" width="50" />
<el-table-column
prop="type"
label="业务类型"
width="130"
>
<template #default="scope">
<CommonSelector
v-model="scope.row.type"
dictName="hxbjtjywlx"
/>
</template>
</el-table-column>
<el-table-column label="单位工程造价">
<el-table-column
prop="dwgczjSz"
label="数值"
width="180"
>
<template #default="scope">
<el-input
v-model="scope.row.dwgczjSz"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column
prop="dwgczjDw"
label="单位"
width="130"
>
<template #default="scope">
<CommonSelector
v-model="scope.row.dwgczjDw"
dictName="gczjdw"
/>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="销售/服务能力">
<el-table-column
prop="xsfwnlSz"
label="数值"
width="180"
>
<template #default="scope">
<el-input
v-model="scope.row.xsfwnlSz"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column
prop="xsfwnlDw"
label="单位"
width="60"
/>
</el-table-column>
<el-table-column label="年均负荷率">
<el-table-column
prop="njfhlSz"
label="数值"
width="180"
>
<template #default="scope">
<el-input
v-model="scope.row.njfhlSz"
:min="0"
:max="99999.99"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column
prop="njfhlDw"
label="单位"
width="60"
/>
</el-table-column>
<el-table-column label="单位生产/服务总成本">
<el-table-column
prop="dwscfwzcbSz"
label="数值"
width="180"
>
<template #default="scope">
<el-input
v-model="scope.row.dwscfwzcbSz"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column
prop="dwscfwzcbDw"
label="单位"
width="60"
/>
</el-table-column>
<el-table-column label="单位售价(含税)">
<el-table-column
prop="dwsjSz"
label="数值"
width="180"
>
<template #default="scope">
<el-input
v-model="scope.row.dwsjSz"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column
prop="dwsjDw"
label="单位"
width="90"
>
<template #default="scope">
<el-input v-model="scope.row.dwsjDw" />
</template>
</el-table-column>
</el-table-column>
<el-table-column label="盈亏平衡点">
<el-table-column
prop="ykphdlx"
label="类型"
width="130"
>
<template #default="scope">
<CommonSelector
v-model="scope.row.ykphdlx"
dictName="ykphdlx"
/>
</template>
</el-table-column>
<el-table-column
prop="ykphdsz"
label="数值"
width="180"
>
<template #default="scope">
<el-input
v-model="scope.row.ykphdsz"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column
prop="ykphddw"
label="单位"
width="60"
/>
</el-table-column>
<el-table-column
prop="bcsm"
label="核心边界条件补充说明"
width="180"
>
<template #default="scope">
<el-input
v-model="scope.row.bcsm"
type="textarea"
/>
</template>
</el-table-column>
<el-table-column
label="操作"
width="60"
fixed="right"
>
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click="deleteHxbjtj(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="24">
<el-form-item label="其他会议审议情况">
<el-input
v-model="formData.qthysyqk"
type="textarea"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="立项最终审批意见">
<CommonSelector
v-model="formData.lxzzpfyj"
dictName="spyj"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目立项批复时间">
<el-date-picker
v-model="formData.lxxmpfsj"
type="date"
placeholder="请选择"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="立项项目批复文号">
<el-input v-model="formData.lxxmpfwh" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="未通过主要原因与要求">
<el-input
v-model="formData.wtgzyyyyyq"
type="textarea"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item
label="立项批复文件"
:label-width="100"
>
<el-upload
:action="
windowConfig.baseUrl + '/api/file/upload'
"
:headers="{ Authorization: token }"
:show-file-list="false"
multiple
:on-success="addLxpfFile"
>
<el-button type="default">上传</el-button>
</el-upload>
<el-button
type="default"
@click="multiDeleteLxpf"
:disabled="!lxpfSelectIds.length"
>删除选中文件</el-button
>
</el-form-item>
<el-table
:data="lxpfwjData"
style="width: 100%"
empty-text="暂无数据"
border
@selection-change="lxpfSelectionChange"
>
<el-table-column type="selection" width="55" />
<el-table-column
prop="originalname"
label="文件名"
/>
<el-table-column
prop="updatedAt"
label="上传时间"
/>
<el-table-column prop="size" label="大小">
<template #default="{ row }">
<span>{{ row.size }} MB</span>
</template>
</el-table-column>
<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="deleteLxpf($index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="审批意见" name="审批意见">
<FormDynamicTable
:modelValue="spyjTableData"
@update:modelValue="updateSpyjTable"
:columns="spyjColumns"
/>
<el-form-item label="相关上会材料" :label-width="100">
<el-upload
:action="
windowConfig.baseUrl + '/api/file/upload'
"
:headers="{ Authorization: token }"
:show-file-list="false"
multiple
:on-success="addShclFile"
>
<el-button type="default">上传</el-button>
</el-upload>
<el-button
type="default"
@click="multiDeleteShcl"
:disabled="!shclSelectIds.length"
>删除选中文件</el-button
>
</el-form-item>
<el-table
:data="shclData"
style="width: 100%"
empty-text="暂无数据"
border
@selection-change="shclSelectionChange"
>
<el-table-column type="selection" width="55" />
<el-table-column
prop="originalname"
label="文件名"
/>
<el-table-column
prop="updatedAt"
label="上传时间"
/>
<el-table-column prop="size" label="大小">
<template #default="{ row }">
<span>{{ row.size }} MB</span>
</template>
</el-table-column>
<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="deleteShcl($index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
</el-collapse>
</el-form>
</div>
</div>
</template>
<script setup>
import { inject } from "vue";
import CommonSelector from "@/components/CommonSelector.vue";
import FormDynamicTable from "@/components/FormDynamicTable/index.vue";
const {
formData, isPreview, activeCollapse,
tzzeqkjData, cwpjzbData, hxbjtjData,
lxpfwjData, lxpfSelectIds,
spyjTableData, shclData, shclSelectIds,
downloadFile, ElMessageBox,
addHxbjtj, deleteHxbjtj,
addLxpfFile, deleteLxpf, lxpfSelectionChange, multiDeleteLxpf,
addShclFile, deleteShcl, shclSelectionChange, multiDeleteShcl,
windowConfig, token,
} = inject("lxShared");
// 审批意见表格列配置
const spyjColumns = [
{ prop: "lx", label: "类型", type: "select", optionKey: "yjlx", minWidth: 130 },
{ prop: "pfyj", label: "批复意见", type: "textarea" },
{ prop: "pfyjsj", label: "批复意见时间", type: "date" },
];
// 更新审批意见表格数据(适配 reactive 数组与 FormDynamicTable 的 v-model 机制)
const updateSpyjTable = (val) => {
spyjTableData.splice(0, spyjTableData.length, ...val);
};
</script>
<template>
<div class="tab-content">
<div class="tab-content">
<el-form
:model="formData"
label-width="200px"
:disabled="
isPreview ||
(Number(formData.projectLzType) <= 5 &&
Number(formData.projectLzType) != 1)
"
>
<el-collapse v-model="activeCollapse">
<el-collapse-item
title="项目基本信息"
name="项目基本信息"
>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="项目名称">
<el-input v-model="formData.projectName" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目编号">
<el-input v-model="formData.projectCode" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目外文名称">
<el-input
v-model="formData.projectForeignName"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否再决策">
<CommonSelector
:radio="true"
v-model="formData.sfzjc"
dictName="sf"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="投资主体">
<el-input v-model="formData.tzzt" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否能建联合体项目">
<CommonSelector
:radio="true"
v-model="formData.sfnjlhtxm"
dictName="sf"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="主业/非主业">
<CommonSelector
v-model="formData.zyfzy"
dictName="zyfzy"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="直属企业">
<el-input v-model="formData.zsqy" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否能建重大或重要投资">
<CommonSelector
:radio="true"
v-model="formData.sfnjzdhzytz"
dictName="sf"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否自主决策">
<CommonSelector
:radio="true"
v-model="formData.sfzzjc"
dictName="sf"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目阶段">
<CommonSelector
v-model="formData.xmjd"
dictName="xmjd"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="财务报表类型">
<CommonSelector
v-model="formData.cwbblx"
dictName="cwbblx"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="政府审批(核准、备案)级别">
<CommonSelector
v-model="formData.zfsphzbajb"
dictName="spjb"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否履行标前预审程序">
<CommonSelector
:radio="true"
v-model="formData.sflxbqyscx"
dictName="sf"
/>
</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="境内/外">
<CommonSelector
v-model="formData.jnw"
dictName="dqlx"
@change="changeJnw"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="省(境内)/洲际(境外)">
<CommonSelector
v-model="formData.sjnzjjw"
:options="szjList"
@change="changeSzj"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="地市(境内)/国家(境外)">
<CommonSelector
v-model="formData.dsjngjjw"
:options="dsgjList"
@change="changeDsgj"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="区县(境内)/国家(境外)">
<CommonSelector
v-model="formData.qxjngjjw"
:options="qxgjList"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目区域">
<CommonSelector
v-model="formData.xmqy"
dictName="xmqy"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否一带一路沿线国家">
<CommonSelector
:radio="true"
v-model="formData.sfydylyxgj"
dictName="sf"
/>
</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="币种">
<CommonSelector
v-model="formData.bizhong"
dictName="bizhong"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="汇率">
<!-- 999.99 [20,4]-->
<el-input
v-model="formData.huilv"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</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.xmjsqy"
:min="0"
:max="99999999999.99999999"
controls-position="right"
>
<template #suffix>
<span></span>
</template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="运营年限">
<el-input-number
v-model="formData.yynxn"
:min="0"
:max="99999999999.99999999"
controls-position="right"
>
<template #suffix>
<span></span>
</template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目合作期">
<el-input-number
v-model="formData.xmhzqn"
:min="0"
:max="99999999999.99999999"
controls-position="right"
>
<template #suffix>
<span></span>
</template>
</el-input-number>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目开工时间(预计)">
<el-date-picker
v-model="formData.xmkgsjyj"
type="date"
placeholder="请选择"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目交工时间(预计)">
<el-date-picker
v-model="formData.xmjgsjyj"
type="date"
placeholder="请选择"
/>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="投资分类" name="投资分类">
<el-row :gutter="20">
<el-col :span="8">
<div class="col-title">投资属性分类</div>
<el-form-item label="一级分类">
<CommonSelector
v-model="formData.tzsxyjfl"
dictName="tzsx"
@change="changeTzsxyjfl"
/>
</el-form-item>
<el-form-item label="二级分类">
<CommonSelector
v-model="formData.tzsxejfl"
:options="tzsxejflList"
/>
</el-form-item>
<el-form-item label="投资板块">
<CommonSelector
v-model="formData.tzbk"
dictName="tzbk"
@change="changeTzsxtzbk"
/>
</el-form-item>
<el-form-item label="细分板块">
<CommonSelector
v-model="formData.subsector"
:options="tzsxxfbkList"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="col-title">投资目的分类</div>
<el-form-item label="一级分类">
<CommonSelector
v-model="formData.tzmdyjfl"
dictName="tzmd"
@change="changeTzmdyjfl"
/>
</el-form-item>
<el-form-item label="二级分类">
<CommonSelector
v-model="formData.tzmdejfl"
:options="tzmdejflList"
/>
</el-form-item>
<el-form-item label="四新分类">
<CommonSelector
v-model="formData.sxfl"
dictName="sxfl"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-row :gutter="20">
<el-col :span="12">
<div class="col-title">投资指南分类</div>
<el-form-item label="一级分类">
<CommonSelector
v-model="formData.tzznyjfl"
dictName="tzzn"
@change="changeTzznyjfl"
/>
</el-form-item>
<el-form-item label="二级分类">
<CommonSelector
v-model="formData.tzznejfl"
:options="tzznejflList"
/>
</el-form-item>
<el-form-item
label="投资指南分类概述"
v-if="formData.tzznyjfl !== 233"
>
<el-input
v-model="formData.tzznflgs"
type="textarea"
:autosize="{ minRows: 2, maxRows: 5 }"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<div class="col-title"></div>
<el-form-item label="国民经济行业">
<el-tree-select
v-model="formData.gmjjhy"
:data="gmjjhyList"
node-key="id"
:props="gmjjhyProps"
placeholder="请选择"
render-after-expand
clearable
/>
</el-form-item>
</el-col>
</el-row>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item
title="特别关注、特别监管类等信息"
name="特别关注、特别监管类等信息"
>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item
label-width="300px"
label="是否需报国家发展改革委和商务部核准"
>
<CommonSelector
:radio="true"
v-model="formData.sfxbgjfzggwhswbhz"
dictName="sf"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
label-width="300px"
label="是否国家领导见签"
>
<CommonSelector
:radio="true"
v-model="formData.sfgjldjq"
dictName="sf"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
label-width="300px"
label="是否境内特别监管类"
>
<CommonSelector
:radio="true"
v-model="formData.sfjntbjgl"
dictName="sf"
/>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item
title="建设规模(实物量指标)"
name="建设规模(实物量指标)"
>
<div class="tab-handle">
<el-button
type="primary"
size="small"
@click="addSwlzb"
>新增</el-button
>
</div>
<el-table
:data="swlzbData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column type="index" width="50" />
<el-table-column prop="name" label="指标名称">
<template #default="scope">
<el-input v-model="scope.row.name" />
</template>
</el-table-column>
<el-table-column
prop="num"
label="数量"
width="180"
>
<template #default="scope">
<el-input
v-model="scope.row.num"
:min="0"
:max="99999999999.99999999"
controls-position="right"
/>
</template>
</el-table-column>
<el-table-column prop="unit" label="单位">
<template #default="scope">
<el-input v-model="scope.row.unit" />
</template>
</el-table-column>
<el-table-column prop="bcsm" label="补充说明">
<template #default="scope">
<el-input
v-model="scope.row.bcsm"
type="textarea"
/>
</template>
</el-table-column>
<el-table-column label="操作" width="60">
<template #default="scope">
<el-button
link
type="danger"
size="small"
@click="deleteSwlzb(scope.$index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
<el-collapse-item title="股东信息" name="股东信息">
<div class="tab-handle">
<el-button
type="primary"
size="small"
@click="addGdxx"
>新增</el-button
>
</div>
<el-table
:data="gdxxData"
style="width: 100%"
empty-text="暂无数据"
border
>
<el-table-column
type="index"
width="50"
:index="gdxxIndexMethod"
/>
<el-table-column
prop="gdlx"
label="股东类型"
width="130"
>
<template #default="scope">
<CommonSelector
v-if="scope.$index < gdxxData.length - 1"
v-model="scope.row.gdlx"
dictName="gdlx"
@change="changeGdxxSums"
/>
<div v-else class="sums-column">
<div
class=""
v-for="(value, key) in gdxxSums"
:key="key"
>
{{ value.name }}
</div>
<div>合计</div>
</div>
</template>
</el-table-column>
<el-table-column prop="gdmc" label="股东名称">
<template #default="scope">
<el-input
v-if="scope.$index < gdxxData.length - 1"
v-model="scope.row.gdmc"
/>
<div v-else></div>
</template>
</el-table-column>
<el-table-column
prop="cgbl"
label="持股比例(%)"
width="180"
>
<template #default="scope">
<el-input
v-if="scope.$index < gdxxData.length - 1"
v-model="scope.row.cgbl"
:min="0"
:max="99999.99"
controls-position="right"
@blur="changeGdxxSums"
/>
<div v-else class="sums-column">
<div
class=""
v-for="(value, key) in gdxxSums"
:key="key"
>
{{ value.cgbl }}%
</div>
<div>{{ getObjSums(gdxxSums, "cgbl") }}%</div>
</div>
</template>
</el-table-column>
<el-table-column
prop="cze"
label="出资额(万元)"
width="180"
>
<template #default="scope">
<el-input
v-if="scope.$index < gdxxData.length - 1"
v-model="scope.row.cze"
:min="0"
:max="99999999999.99999999"
controls-position="right"
@blur="changeGdxxSums"
/>
<div v-else class="sums-column">
<div
class=""
v-for="(value, key) in gdxxSums"
:key="key"
>
{{ value.cze }}万元
</div>
<div>
{{ getObjSums(gdxxSums, "cze") }}万元
</div>
</div>
</template>
</el-table-column>
<el-table-column
prop="yjzczb"
label="应缴注册资本(万元)"
width="180"
>
<template #default="scope">
<el-input
v-if="scope.$index < gdxxData.length - 1"
v-model="scope.row.yjzczb"
:min="0"
:max="99999999999.99999999"
controls-position="right"
@blur="changeGdxxSums"
/>
<div v-else class="sums-column">
<div
class=""
v-for="(value, key) in gdxxSums"
:key="key"
>
{{ value.yjzczb }}万元
</div>
<div>
{{ getObjSums(gdxxSums, "yjzczb") }}万元
</div>
</div>
</template>
</el-table-column>
<el-table-column
prop="ycxmzbj"
label="应出项目资本金(万元)"
width="180"
>
<template #default="scope">
<el-input
v-if="scope.$index < gdxxData.length - 1"
v-model="scope.row.ycxmzbj"
:min="0"
:max="99999999999.99999999"
controls-position="right"
@blur="changeGdxxSums"
/>
<div v-else class="sums-column">
<div
class=""
v-for="(value, key) in gdxxSums"
:key="key"
>
{{ value.ycxmzbj }}万元
</div>
<div>
{{ getObjSums(gdxxSums, "ycxmzbj") }}万元
</div>
</div>
</template>
</el-table-column>
<el-table-column prop="hzfqk" label="合作方情况">
<template #default="scope">
<el-input
v-if="scope.$index < gdxxData.length - 1"
v-model="scope.row.hzfqk"
/>
<div v-else></div>
</template>
</el-table-column>
<el-table-column prop="bz" label="备注">
<template #default="scope">
<el-input
v-if="scope.$index < gdxxData.length - 1"
v-model="scope.row.bz"
/>
<div v-else></div>
</template>
</el-table-column>
<el-table-column label="操作" width="60">
<template #default="scope">
<el-button
v-if="scope.$index < gdxxData.length - 1"
link
type="danger"
size="small"
@click="deleteGdxx(scope.$index)"
>删除</el-button
>
<div v-else></div>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
<el-collapse-item
title="项目必要性及可行性"
name="项目必要性及可行性"
>
<el-form-item label="建设内容及规模">
<el-input
v-model="formData.jsnrjgm"
type="textarea"
:autosize="{ minRows: 2, maxRows: 5 }"
/>
</el-form-item>
<el-form-item label="项目必要性">
<el-input
v-model="formData.xmbyx"
type="textarea"
:autosize="{ minRows: 2, maxRows: 5 }"
/>
</el-form-item>
<el-form-item label="项目可行性">
<el-input
v-model="formData.xmkxx"
type="textarea"
:autosize="{ minRows: 2, maxRows: 5 }"
/>
</el-form-item>
<!-- <el-form-item label="其他说明">
<el-input v-model="formData.qtsm" type="textarea" />
</el-form-item> -->
</el-collapse-item>
<el-collapse-item title="立项资料" name="立项资料">
<el-form-item label="相关支撑材料" :label-width="100">
<el-upload
:action="
windowConfig.baseUrl + '/api/file/upload'
"
:headers="{ Authorization: token }"
:show-file-list="false"
multiple
:on-success="addZcclFile"
>
<el-button type="default">上传</el-button>
</el-upload>
<el-button
type="default"
@click="multiDeleteZccl"
:disabled="!zcclSelectIds.length"
>删除选中文件</el-button
>
</el-form-item>
<el-table
:data="zcclData"
style="width: 100%"
empty-text="暂无数据"
border
@selection-change="zcclSelectionChange"
>
<el-table-column type="selection" width="55" />
<el-table-column
prop="originalname"
label="文件名"
/>
<el-table-column
prop="updatedAt"
label="上传时间"
/>
<el-table-column prop="size" label="大小">
<template #default="{ row }">
<span>{{ row.size }} MB</span>
</template>
</el-table-column>
<el-table-column
fixed="right"
label="操作"
width="100"
>
<template #default="{ row, $index }">
<!-- 需要在查看表单disabled时保持允许下载 -->
<span
class="always-click"
@click="downloadFile(row)"
>下载</span
>
<el-button
link
type="danger"
size="small"
@click="deleteZccl($index)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
</el-collapse>
</el-form>
</div>
</div>
</template>
<script setup>
import { inject } from "vue";
import CommonSelector from "@/components/CommonSelector.vue";
const {
formData, isPreview, activeCollapse,
swlzbData, gdxxData, gdxxSums,
zcclData, zcclSelectIds,
downloadFile, ElMessageBox,
changeJnw, changeSzj, changeDsgj,
changeTzsxyjfl, changeTzsxtzbk, changeTzmdyjfl, changeTzznyjfl,
addSwlzb, deleteSwlzb, addGdxx, deleteGdxx, changeGdxxSums, getObjSums, gdxxIndexMethod,
addZcclFile, deleteZccl, zcclSelectionChange, multiDeleteZccl,
szjList, dsgjList, qxgjList,
tzsxejflList, tzsxxfbkList,
tzmdejflList, tzznejflList,
gmjjhyList, gmjjhyProps,
windowConfig, token,
} = inject("lxShared");
</script>
import { ref } from "vue";
export function useFinanceTables() {
// 投决管理
let jcTjjhData = ref([]);
let tjglColumns = ref([]);
const importTjjh = (data, file) => {
if (data?.length > 3) {
tjglColumns.value = [
{
label: data[0][0],
key: data[0][0],
children: [
{ label: data[1][0], key: data[1][0] },
{ label: data[1][1], key: data[1][1] },
{
label: data[1][2],
key: data[1][2],
children: data[2].slice(2).map((item) => ({
label: item,
key: item,
})),
},
],
},
];
let tableData = data.slice(3);
let columnKeys = data.slice(2, 3)[0];
jcTjjhData.value = tableData.map((item) => {
let obj = {};
item.map((child, index) => {
obj[columnKeys[index]] = child;
});
return obj;
});
}
};
// 项目投资资金流量表
let xmtzzjllData = ref([]);
let xmtzzjllColumns = ref([]);
const importXmtzzjll = (data, file) => {
if (data?.length > 3) {
xmtzzjllColumns.value = [
{
label: data[0][0],
key: data[0][0],
children: [
{ label: data[1][0], key: data[1][0] },
{ label: data[1][1], key: data[1][1] },
{
label: data[1][2],
key: data[1][2],
children: data[2].slice(2).map((item) => ({
label: item,
key: item,
})),
},
],
},
];
let tableData = data.slice(3);
let columnKeys = data.slice(2, 3)[0];
xmtzzjllData.value = tableData.map((item) => {
let obj = {};
item.map((child, index) => {
obj[columnKeys[index]] = child;
});
return obj;
});
}
};
// 项目资本金现金流量表
let xmzbjxjllData = ref([]);
let xmzbjxjllColumns = ref([]);
const importXmzbjxjll = (data, file) => {
if (data?.length > 3) {
xmzbjxjllColumns.value = [
{
label: data[0][0],
key: data[0][0],
children: [
{ label: data[1][0], key: data[1][0] },
{ label: data[1][1], key: data[1][1] },
{
label: data[1][2],
key: data[1][2],
children: data[2].slice(2).map((item) => ({
label: item,
key: item,
})),
},
],
},
];
let tableData = data.slice(3);
let columnKeys = data.slice(2, 3)[0];
xmzbjxjllData.value = tableData.map((item) => {
let obj = {};
item.map((child, index) => {
obj[columnKeys[index]] = child;
});
return obj;
});
}
};
// 能建方现金流量表
let njfxjllData = ref([]);
let njfxjllColumns = ref([]);
const importNjfxjll = (data, file) => {
if (data?.length > 3) {
njfxjllColumns.value = [
{
label: data[0][0],
key: data[0][0],
children: [
{ label: data[1][0], key: data[1][0] },
{ label: data[1][1], key: data[1][1] },
{
label: data[1][2],
key: data[1][2],
children: data[2].slice(2).map((item) => ({
label: item,
key: item,
})),
},
],
},
];
let tableData = data.slice(3);
let columnKeys = data.slice(2, 3)[0];
njfxjllData.value = tableData.map((item) => {
let obj = {};
item.map((child, index) => {
obj[columnKeys[index]] = child;
});
return obj;
});
}
};
// 利润表
let lrbData = ref([]);
let lrbColumns = ref([]);
const importLrb = (data, file) => {
if (data?.length > 3) {
lrbColumns.value = [
{
label: data[0][0],
key: data[0][0],
children: [
{ label: data[1][0], key: data[1][0] },
{ label: data[1][1], key: data[1][1] },
{
label: data[1][2],
key: data[1][2],
children: data[2].slice(2).map((item) => ({
label: item,
key: item,
})),
},
],
},
];
let tableData = data.slice(3);
let columnKeys = data.slice(2, 3)[0];
lrbData.value = tableData.map((item) => {
let obj = {};
item.map((child, index) => {
obj[columnKeys[index]] = child;
});
return obj;
});
}
};
// 获取动态表格数据(导出用)
const formatDynamicTableData = (columns, data) => {
if (!columns.value.length) return [];
let row1 = [];
let row2 = [];
let row3 = [];
columns.value[0].children.map((column) => {
row1.push(columns.value[0].label);
row2.push(column.label);
if (column.children) {
column.children.map((item) => {
row1.push(columns.value[0].label);
row2.push(column.label);
row3.push(item.label);
});
} else {
row3.push(column.label);
}
});
let rowData = [];
data.value.map((d) => {
let arr = [];
row3.map((item) => {
arr.push(d[item]);
});
rowData.push(arr);
});
return [row1, row2, row3, ...rowData];
};
const getTjjhData = () => formatDynamicTableData(tjglColumns, jcTjjhData);
const getXmtzzjllData = () => formatDynamicTableData(xmtzzjllColumns, xmtzzjllData);
const getXmzbjxjllData = () => formatDynamicTableData(xmzbjxjllColumns, xmzbjxjllData);
const getNjfxjllData = () => formatDynamicTableData(njfxjllColumns, njfxjllData);
const getLrbData = () => formatDynamicTableData(lrbColumns, lrbData);
return {
jcTjjhData, tjglColumns, importTjjh,
xmtzzjllData, xmtzzjllColumns, importXmtzzjll,
xmzbjxjllData, xmzbjxjllColumns, importXmzbjxjll,
njfxjllData, njfxjllColumns, importNjfxjll,
lrbData, lrbColumns, importLrb,
getTjjhData, getXmtzzjllData, getXmzbjxjllData, getNjfxjllData, getLrbData,
};
}
import { reactive, ref } from "vue";
import { ElMessageBox } from "element-plus";
import Decimal from "decimal.js";
export function useJueceData(jcFormData, gdlxListRef) {
const jcRadioClick = (value, key) => {
if (jcFormData[key] !== value) {
jcFormData[key] = value;
} else {
delete jcFormData[key];
}
};
// 建设规模(实物量指标)
let jcSwlzbData = reactive([]);
const addJcSwlzb = () => {
jcSwlzbData.push({});
};
const deleteJcSwlzb = (index) => {
jcSwlzbData.splice(index, 1);
};
// 股东信息
let jcGdxxData = reactive([{}]);
const addJcGdxx = () => {
jcGdxxData.splice(jcGdxxData.length - 1, 0, {});
};
const deleteJcGdxx = (index) => {
jcGdxxData.splice(index, 1);
};
const jcgdxxIndexMethod = (index) => {
return index === jcGdxxData.length - 1 ? "" : index + 1;
};
let jcgdxxSums = ref({});
const changeJcGdxxSums = () => {
let obj = {};
jcGdxxData.forEach((item, index) => {
if (index < jcGdxxData.length - 1) {
if (!obj[item.gdlx]) {
obj[item.gdlx] = {
name: gdlxListRef.filter((gdlx) => gdlx.key == item.gdlx)[0].value,
};
}
obj[item.gdlx].mycgbl = new Decimal(
Number(obj[item.gdlx].mycgbl || 0),
).plus(new Decimal(Number(item.mycgbl || 0)));
obj[item.gdlx].cgbl = new Decimal(
Number(obj[item.gdlx].cgbl || 0),
).plus(new Decimal(Number(item.cgbl || 0)));
obj[item.gdlx].lrfpbl = new Decimal(
Number(obj[item.gdlx].lrfpbl || 0),
).plus(new Decimal(Number(item.lrfpbl || 0)));
obj[item.gdlx].cze = new Decimal(
Number(obj[item.gdlx].cze || 0),
).plus(new Decimal(Number(item.cze || 0)));
obj[item.gdlx].yjzczb = new Decimal(
Number(obj[item.gdlx].yjzczb || 0),
).plus(new Decimal(Number(item.yjzczb || 0)));
obj[item.gdlx].ycxmzbj = new Decimal(
Number(obj[item.gdlx].ycxmzbj || 0),
).plus(new Decimal(Number(item.ycxmzbj || 0)));
}
});
jcgdxxSums.value = obj;
};
// 我方担保及债权融资情况
let dbzqData = reactive([]);
const addDbzq = () => {
dbzqData.push({});
};
const deleteDbzq = (index) => {
dbzqData.splice(index, 1);
};
// 风险管理
let fxglData = reactive([]);
const addFxgl = () => {
fxglData.push({});
};
const deleteFxgl = (index) => {
fxglData.splice(index, 1);
};
// 里程碑节点
let lcbjdData = reactive([]);
const addLcbjd = () => {
lcbjdData.push({});
};
const deleteLcbjd = (index) => {
lcbjdData.splice(index, 1);
};
// 里程碑计划审批表
let lcbspData = ref([]);
const addLcbspFile = (res, file) => {
lcbspData.value.push(res.data);
};
const deleteLcbsp = (index) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
lcbspData.value.splice(index, 1);
})
.catch(() => {});
};
let lcbspSelectIds = ref([]);
const lcbspSelectionChange = (datas) => {
lcbspSelectIds.value = datas.map((item) => item.id);
};
const multiDeleteLcbsp = () => {
ElMessageBox.confirm("确认删除选中数据?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
lcbspData.value = lcbspData.value.filter(
(item) => !lcbspSelectIds.value.includes(item.id),
);
})
.catch(() => {});
};
// 投评决策资料-可研材料
let kyclData = ref([]);
const addKyclFile = (res, file) => {
kyclData.value.push(res.data);
};
const deleteKycl = (index) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
kyclData.value.splice(index, 1);
})
.catch(() => {});
};
let kyclSelectIds = ref([]);
const kyclSelectionChange = (datas) => {
kyclSelectIds.value = datas.map((item) => item.id);
};
const multiDeleteKycl = () => {
ElMessageBox.confirm("确认删除选中数据?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
kyclData.value = kyclData.value.filter(
(item) => !kyclSelectIds.value.includes(item.id),
);
})
.catch(() => {});
};
// 投评决策资料-经济指标初步测算资料
let jjzbcsData = ref([]);
const addJjzbcsFile = (res, file) => {
jjzbcsData.value.push(res.data);
};
const deleteJjzbcs = (index) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
jjzbcsData.value.splice(index, 1);
})
.catch(() => {});
};
let jjzbcsSelectIds = ref([]);
const jjzbcsSelectionChange = (datas) => {
jjzbcsSelectIds.value = datas.map((item) => item.id);
};
const multiDeleteJjzbcs = () => {
ElMessageBox.confirm("确认删除选中数据?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
jjzbcsData.value = jjzbcsData.value.filter(
(item) => !jjzbcsSelectIds.value.includes(item.id),
);
})
.catch(() => {});
};
// 投评决策资料-补充相关支撑材料
let tpbczcclData = ref([]);
const addTpbczcclFile = (res, file) => {
tpbczcclData.value.push(res.data);
};
const deleteTpbczccl = (index) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
tpbczcclData.value.splice(index, 1);
})
.catch(() => {});
};
let tpbczcclSelectIds = ref([]);
const tpbczcclSelectionChange = (datas) => {
tpbczcclSelectIds.value = datas.map((item) => item.id);
};
const multiDeleteTpbczccl = () => {
ElMessageBox.confirm("确认删除选中数据?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
tpbczcclData.value = tpbczcclData.value.filter(
(item) => !tpbczcclSelectIds.value.includes(item.id),
);
})
.catch(() => {});
};
// 投评决策资料-其他相关支撑材料
let tpzcclData = ref([]);
const addTpzcclFile = (res, file) => {
tpzcclData.value.push(res.data);
};
const deleteTpzccl = (index) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
tpzcclData.value.splice(index, 1);
})
.catch(() => {});
};
let tpzcclSelectIds = ref([]);
const tpzcclSelectionChange = (datas) => {
tpzcclSelectIds.value = datas.map((item) => item.id);
};
const multiDeleteTpzccl = () => {
ElMessageBox.confirm("确认删除选中数据?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
tpzcclData.value = tpzcclData.value.filter(
(item) => !tpzcclSelectIds.value.includes(item.id),
);
})
.catch(() => {});
};
// 投评决策资料-上会议案
let shyaData = ref([]);
const addShyaFile = (res, file) => {
shyaData.value.push(res.data);
};
const deleteShya = (index) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
shyaData.value.splice(index, 1);
})
.catch(() => {});
};
let shyaSelectIds = ref([]);
const shyaSelectionChange = (datas) => {
shyaSelectIds.value = datas.map((item) => item.id);
};
const multiDeleteShya = () => {
ElMessageBox.confirm("确认删除选中数据?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
shyaData.value = shyaData.value.filter(
(item) => !shyaSelectIds.value.includes(item.id),
);
})
.catch(() => {});
};
// 决策-项目投资总额全口径
let jcTzzeqkjData = reactive([
{
xh: "一",
zb: "项目造价构成",
dw: "",
key: "1",
children: [
{
xh: "1",
zb: "建安设备费",
dw: "万元",
key: "1.1",
parentKey: "1",
},
{
xh: "2",
zb: "其他费用",
dw: "万元",
key: "1.2",
parentKey: "1",
children: [
{
xh: "2.1",
zb: "其中:土地相关费用",
dw: "万元",
key: "1.2.1",
parentKey: "1.2",
},
],
},
{
xh: "3",
zb: "基本预备费",
dw: "万元",
key: "1.3",
parentKey: "1",
},
{
xh: "4",
zb: "建设期利息",
dw: "万元",
key: "1.4",
parentKey: "1",
},
],
},
{
xh: "二",
zb: "项目资金构成",
dw: "",
key: "2",
children: [
{
xh: "1",
zb: "项目资本金",
dw: "万元",
key: "2.1",
parentKey: "2",
children: [
{
xh: "1.1",
zb: "能建方出资",
dw: "万元",
key: "2.1.1",
parentKey: "2.1",
},
{
xh: "1.2",
zb: "外部股东",
dw: "万元",
key: "2.1.2",
parentKey: "2.1",
},
],
},
{
xh: "2",
zb: "贷款",
dw: "万元",
key: "2.2",
parentKey: "2",
children: [
{
xh: "2.1",
zb: "其中:非并表项目我方贷款/担保额",
dw: "万元",
key: "2.2.1",
parentKey: "2.2",
},
],
},
{
xh: "3",
zb: "其他出资",
dw: "万元",
key: "2.3",
parentKey: "2",
children: [
{
xh: "3.1",
zb: "其中:能建方出资",
dw: "万元",
key: "2.3.1",
parentKey: "2.3",
},
],
},
],
},
{
xh: "",
zb: "批复总出资",
dw: "万元",
key: "3",
},
]);
// 财务评价指标
let jcCwpjzbData = reactive([
{
name: "项目投资内部收益率(税前)",
unit: "%",
},
{
name: "项目资本金内部收益率(税后)",
unit: "%",
},
{
name: "项目投资回收期(税前)",
unit: "年",
},
{
name: "能建方内部收益率",
unit: "%",
},
{
name: "净现金流首次回正年份",
type: "year",
},
{
name: "净利润首次回正年份",
type: "year",
},
{
name: "可分配利润首次回正年份",
type: "year",
},
]);
// 核心边界条件
let jcHxbjtjData = reactive([]);
const addJchxbjtj = () => {
jcHxbjtjData.push({
njfhlDw: "%",
ykphddw: "%",
xsfwnlDw: "万元",
dwscfwzcbDw: "万元",
});
};
const deleteJchxbjtj = (index) => {
jcHxbjtjData.splice(index, 1);
};
// 决策主体审核情况
let jcztshqkData = reactive([]);
const addJcztshqk = () => {
jcztshqkData.push({});
};
const deleteJcztshqk = (index) => {
jcztshqkData.splice(index, 1);
};
const addJcztshqkFile = (res, file, row) => {
row.hyjy = {};
Object.assign(row.hyjy, res.data);
};
const deleteJcztshqkFile = (row, index) => {
let { hyjy, ...data } = row;
jcztshqkData[index] = data;
};
// 投资主体审核情况
let tzztshqkData = reactive([]);
const addTzztshqk = () => {
tzztshqkData.push({});
};
const deleteTzztshqk = (index) => {
tzztshqkData.splice(index, 1);
};
const addTzztshqkFile = (res, file, row) => {
row.fj = {};
Object.assign(row.fj, res.data);
};
const deleteTzztshqkFile = (row, index) => {
let { fj, ...data } = row;
tzztshqkData[index] = data;
};
// 审批意见
let jcspyjData = reactive([]);
const addJcspyj = () => {
jcspyjData.push({});
};
const deleteJcspyj = (index) => {
jcspyjData.splice(index, 1);
};
const addJcspyjFile = (res, file, row) => {
row.zxhffj = {};
Object.assign(row.zxhffj, res.data);
};
const deleteRowFile = (row, index) => {
let { zxhffj, ...data } = row;
jcspyjData[index] = data;
};
// 申请报告
let bhqkData = reactive([
{ lx: "投标保证金", tjzt: "", je: null, tjsj: "", thsj: "" },
{ lx: "投资人履约保函", tjzt: "", je: null, tjsj: "", thsj: "" },
{ lx: "建设期履约保函", tjzt: "", je: null, tjsj: "", thsj: "" },
{ lx: "运营期履约保函", tjzt: "", je: null, tjsj: "", thsj: "" },
{ lx: "移交履约保函", tjzt: "", je: null, tjsj: "", thsj: "" },
]);
// 经济可行性-净现金流
let jxjlData = reactive([]);
const addJxjl = () => {
jxjlData.push({ nf: "", je: null });
};
const deleteJxjl = (index) => {
jxjlData.splice(index, 1);
};
// 经济可行性-净利润
let jlrData = reactive([]);
const addJlr = () => {
jlrData.push({ nf: "", je: null });
};
const deleteJlr = (index) => {
jlrData.splice(index, 1);
};
return {
jcRadioClick,
jcSwlzbData, addJcSwlzb, deleteJcSwlzb,
jcGdxxData, addJcGdxx, deleteJcGdxx, jcgdxxSums, changeJcGdxxSums, jcgdxxIndexMethod,
dbzqData, addDbzq, deleteDbzq,
fxglData, addFxgl, deleteFxgl,
lcbjdData, addLcbjd, deleteLcbjd,
lcbspData, addLcbspFile, deleteLcbsp, lcbspSelectIds, lcbspSelectionChange, multiDeleteLcbsp,
kyclData, addKyclFile, deleteKycl, kyclSelectIds, kyclSelectionChange, multiDeleteKycl,
jjzbcsData, addJjzbcsFile, deleteJjzbcs, jjzbcsSelectIds, jjzbcsSelectionChange, multiDeleteJjzbcs,
tpbczcclData, addTpbczcclFile, deleteTpbczccl, tpbczcclSelectIds, tpbczcclSelectionChange, multiDeleteTpbczccl,
tpzcclData, addTpzcclFile, deleteTpzccl, tpzcclSelectIds, tpzcclSelectionChange, multiDeleteTpzccl,
shyaData, addShyaFile, deleteShya, shyaSelectIds, shyaSelectionChange, multiDeleteShya,
jcTzzeqkjData,
jcCwpjzbData,
jcHxbjtjData, addJchxbjtj, deleteJchxbjtj,
jcztshqkData, addJcztshqk, deleteJcztshqk, addJcztshqkFile, deleteJcztshqkFile,
tzztshqkData, addTzztshqk, deleteTzztshqk, addTzztshqkFile, deleteTzztshqkFile,
jcspyjData, addJcspyj, deleteJcspyj, addJcspyjFile, deleteRowFile,
bhqkData,
jxjlData, addJxjl, deleteJxjl,
jlrData, addJlr, deleteJlr,
};
}
import { reactive, ref } from "vue";
import { ElMessageBox } from "element-plus";
import Decimal from "decimal.js";
export function useLixiangData(formData, gdlxListRef) {
// gdlxListRef will be set later from resource data
// 单选框点击事件
const radioClick = (value, key) => {
if (formData[key] !== value) {
formData[key] = value;
} else {
delete formData[key];
}
};
// 建设规模(实物量指标)
let swlzbData = reactive([]);
const addSwlzb = () => {
swlzbData.push({});
};
const deleteSwlzb = (index) => {
swlzbData.splice(index, 1);
};
// 股东信息
let gdxxData = reactive([{}]);
const addGdxx = () => {
gdxxData.splice(gdxxData.length - 1, 0, {});
};
const deleteGdxx = (index) => {
gdxxData.splice(index, 1);
};
const gdxxIndexMethod = (index) => {
return index === gdxxData.length - 1 ? "" : index + 1;
};
let gdxxSums = ref({});
const changeGdxxSums = () => {
let obj = {};
gdxxData.forEach((item, index) => {
if (index < gdxxData.length - 1) {
if (item.gdlx) {
if (!obj[item.gdlx]) {
obj[item.gdlx] = {
name: gdlxListRef.filter((gdlx) => gdlx.key == item.gdlx)[0].value,
};
}
obj[item.gdlx].cgbl = new Decimal(
Number(obj[item.gdlx].cgbl || 0),
).plus(new Decimal(Number(item.cgbl || 0)));
obj[item.gdlx].cze = new Decimal(
Number(obj[item.gdlx].cze || 0),
).plus(new Decimal(Number(item.cze || 0)));
obj[item.gdlx].yjzczb = new Decimal(
Number(obj[item.gdlx].yjzczb || 0),
).plus(new Decimal(Number(item.yjzczb || 0)));
obj[item.gdlx].ycxmzbj = new Decimal(
Number(obj[item.gdlx].ycxmzbj || 0),
).plus(new Decimal(Number(item.ycxmzbj || 0)));
}
}
});
gdxxSums.value = obj;
};
// 计算对象总和
const getObjSums = (obj, objkey) => {
return Object.entries(obj).reduce(
(acc, [key, item]) => acc.plus(new Decimal(item[objkey] || 0)),
new Decimal(0),
);
};
// 支撑材料
let zcclData = ref([]);
const addZcclFile = (res, file) => {
zcclData.value.push(res.data);
};
const deleteZccl = (index) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
zcclData.value.splice(index, 1);
})
.catch(() => {});
};
let zcclSelectIds = ref([]);
const zcclSelectionChange = (datas) => {
zcclSelectIds.value = datas.map((item) => item.id);
};
const multiDeleteZccl = () => {
ElMessageBox.confirm("确认删除选中数据?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
zcclData.value = zcclData.value.filter(
(item) => !zcclSelectIds.value.includes(item.id),
);
})
.catch(() => {});
};
// 项目投资总额全口径
let tzzeqkjData = reactive([
{
xh: "1",
zb: "项目资本金",
dw: "万元",
key: "1",
children: [
{
xh: "1.1",
zb: "能建方出资",
dw: "万元",
key: "1.1",
parentKey: "1",
},
{
xh: "1.2",
zb: "外部股东",
dw: "万元",
key: "1.2",
parentKey: "1",
},
],
},
{
xh: "2",
zb: "贷款",
dw: "万元",
key: "2",
children: [
{
xh: "2.1",
zb: "其中:并非表项目我方贷款/投保额",
dw: "万元",
key: "2.1",
parentKey: "2",
},
],
},
{
xh: "3",
zb: "其他出资",
dw: "万元",
key: "3",
children: [
{
xh: "3.1",
zb: "其中:能建方出资",
dw: "万元",
key: "3.1",
parentKey: "3",
},
],
},
{
xh: "",
zb: "批复总出资",
dw: "万元",
key: "4",
},
]);
// 财务评价指标
let cwpjzbData = reactive([
{
name: "项目投资内部收益率(税后)",
unit: "%",
},
{
name: "项目资本金内部收益率(税后)",
unit: "%",
},
{
name: "项目投资回收期(税前)",
unit: "年",
},
]);
// 核心边界条件
let hxbjtjData = reactive([]);
const addHxbjtj = () => {
hxbjtjData.push({
njfhlDw: "%",
ykphddw: "%",
xsfwnlDw: "万元",
dwscfwzcbDw: "万元",
});
};
const deleteHxbjtj = (index) => {
hxbjtjData.splice(index, 1);
};
// 项目立项信息--立项批复文件
let lxpfwjData = ref([]);
const addLxpfFile = (res, file) => {
lxpfwjData.value.push(res.data);
};
const deleteLxpf = (index) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
lxpfwjData.value.splice(index, 1);
})
.catch(() => {});
};
let lxpfSelectIds = ref([]);
const lxpfSelectionChange = (datas) => {
lxpfSelectIds.value = datas.map((item) => item.id);
};
const multiDeleteLxpf = () => {
ElMessageBox.confirm("确认删除选中数据?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
lxpfwjData.value = lxpfwjData.value.filter(
(item) => !lxpfSelectIds.value.includes(item.id),
);
})
.catch(() => {});
};
// 审批意见
let spyjTableData = reactive([]);
const addSpyj = () => {
spyjTableData.push({});
};
const deleteSpyj = (index) => {
spyjTableData.splice(index, 1);
};
let shclData = ref([]);
const addShclFile = (res, file) => {
shclData.value.push(res.data);
};
const deleteShcl = (index) => {
ElMessageBox.confirm("确认删除该项?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
shclData.value.splice(index, 1);
})
.catch(() => {});
};
let shclSelectIds = ref([]);
const shclSelectionChange = (datas) => {
shclSelectIds.value = datas.map((item) => item.id);
};
const multiDeleteShcl = () => {
ElMessageBox.confirm("确认删除选中数据?", "提示", {
confirmButtonText: "确认",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
shclData.value = shclData.value.filter(
(item) => !shclSelectIds.value.includes(item.id),
);
})
.catch(() => {});
};
return {
radioClick,
swlzbData, addSwlzb, deleteSwlzb,
gdxxData, addGdxx, deleteGdxx, gdxxSums, changeGdxxSums, gdxxIndexMethod, getObjSums,
zcclData, addZcclFile, deleteZccl, zcclSelectIds, zcclSelectionChange, multiDeleteZccl,
tzzeqkjData,
cwpjzbData,
hxbjtjData, addHxbjtj, deleteHxbjtj,
lxpfwjData, addLxpfFile, deleteLxpf, lxpfSelectIds, lxpfSelectionChange, multiDeleteLxpf,
spyjTableData, addSpyj, deleteSpyj,
shclData, addShclFile, deleteShcl, shclSelectIds, shclSelectionChange, multiDeleteShcl,
};
}
import { reactive, ref } from "vue";
export function useResource(formData, jcFormData) {
let zyList = reactive([]); // 主业/非主业
let cwbblxList = reactive([]); // 财务报表类型
let zfspjbList = reactive([]); // 政府审批(核准、备案)级别
let xmjdList = ref([]); // 项目阶段
let jnwList = reactive([]); // 境内/外
let szjList = ref([]); // 省(境内)/洲际(境外)
let dsgjList = ref([]); // 地市(境内)/国家(境外)
let qxgjList = ref([]); // 区县(境内)/国家(境外)
let xmqyList = reactive([]); // 项目区域
let bzList = reactive([]); // 币种
let tzsxyjflList = reactive([]); // 投资属性一级分类
let tzsxejflList = ref([]); // 投资属性二级分类
let tzsxtzbkList = reactive([]); // 投资属性投资板块
let tzsxxfbkList = ref([]); // 投资属性细分板块
let tzmdyjflList = reactive([]); // 投资目的一级分类
let tzmdejflList = ref([]); // 投资目的二级分类
let tzmdsxflList = reactive([]); // 投资目的四新分类
let tzznyjflList = reactive([]); // 投资指南一级分类
let tzznejflList = ref([]); // 投资指南二级分类
let gmjjhyList = reactive([]); // 国民经济行业
const gmjjhyProps = {
label: "name",
};
let gdlxList = reactive([]); // 股东类型
let hxbjtjlxlxList = reactive([]); // 核心边界条件立项类型
let hxbjtjzjdwList = reactive([]); // 核心边界条件造价单位
let hxbjtjykphdlxList = reactive([]); // 核心边界条件盈亏平衡点类型
let lxzzspyjList = ref([]); // 立项最终审批意见
let spyjlxList = reactive([]); // 审批意见类型
// 决策
let qyggList = reactive([]); // 申报单位企业规格
let jcSzjList = ref([]); // 省(境内)/洲际(境外)
let jcDsgjList = ref([]); // 地市(境内)/国家(境外)
let jcQxgjList = ref([]); // 区县(境内)/国家(境外)
let xmzjlyList = reactive([]); // 项目资金来源
let swbxmlxList = reactive([]); // 商务部项目类型
let xmlxList = reactive([]); // 项目类型
let tzhsfsList = reactive([]); // 投资回收方式
let hylxList = reactive([]); // 会议类型
let jcspyjlx = reactive([]); // 决策审批意见类型
// 决策二级分类
let jcTzsxejflList = ref([]);
let jcTzsxxfbkList = ref([]);
let jcTzmdejflList = ref([]);
let jcTzznejflList = ref([]);
// 级联选择 change 事件 - 立项
const changeJnw = (val) => {
if (val || val === 0) {
let selectData = jnwList.filter((item) => item.key == val);
szjList.value = (selectData[0] && selectData[0].children) || [];
} else {
szjList.value = [];
}
dsgjList.value = [];
qxgjList.value = [];
delete formData.sjnzjjw;
delete formData.dsjngjjw;
delete formData.qxjngjjw;
};
const changeSzj = (val) => {
if (val || val === 0) {
let selectData = szjList.value.filter((item) => item.key == val);
dsgjList.value = (selectData[0] && selectData[0].children) || [];
} else {
dsgjList.value = [];
}
qxgjList.value = [];
delete formData.dsjngjjw;
delete formData.qxjngjjw;
};
const changeDsgj = (val) => {
if (val || val === 0) {
let selectData = dsgjList.value.filter((item) => item.key == val);
qxgjList.value = (selectData[0] && selectData[0].children) || [];
} else {
qxgjList.value = [];
}
delete formData.qxjngjjw;
};
const changeTzsxyjfl = (val) => {
if (val || val === 0) {
let selectData = tzsxyjflList.filter((item) => item.key == val);
tzsxejflList.value = (selectData[0] && selectData[0].children) || [];
} else {
tzsxejflList.value = [];
}
delete formData.tzsxejfl;
};
const changeTzsxtzbk = (val) => {
if (val || val === 0) {
let selectData = tzsxtzbkList.filter((item) => item.key == val);
tzsxxfbkList.value = (selectData[0] && selectData[0].children) || [];
} else {
tzsxxfbkList.value = [];
}
delete formData.subsector;
};
const changeTzmdyjfl = (val) => {
if (val || val === 0) {
let selectData = tzmdyjflList.filter((item) => item.key == val);
tzmdejflList.value = (selectData[0] && selectData[0].children) || [];
} else {
tzmdejflList.value = [];
}
delete formData.tzmdejfl;
};
const changeTzznyjfl = (val) => {
if (val || val === 0) {
let selectData = tzznyjflList.filter((item) => item.key == val);
tzznejflList.value = (selectData[0] && selectData[0].children) || [];
} else {
tzznejflList.value = [];
}
delete formData.tzznejfl;
};
// 级联选择 change 事件 - 决策
const changeJcJnw = (val) => {
if (val || val === 0) {
let selectData = jnwList.filter((item) => item.key == val);
jcSzjList.value = (selectData[0] && selectData[0].children) || [];
} else {
jcSzjList.value = [];
}
jcDsgjList.value = [];
jcQxgjList.value = [];
delete jcFormData.sjnzjjw;
delete jcFormData.dsjngjjw;
delete jcFormData.qxjngjjw;
};
const changeJcSzj = (val) => {
if (val || val === 0) {
let selectData = jcSzjList.value.filter((item) => item.key == val);
jcDsgjList.value = (selectData[0] && selectData[0].children) || [];
} else {
jcDsgjList.value = [];
}
jcQxgjList.value = [];
delete jcFormData.dsjngjjw;
delete jcFormData.qxjngjjw;
};
const changeJcDsgj = (val) => {
if (val || val === 0) {
let selectData = jcDsgjList.value.filter((item) => item.key == val);
jcQxgjList.value = (selectData[0] && selectData[0].children) || [];
} else {
jcQxgjList.value = [];
}
delete jcFormData.qxjngjjw;
};
const changeJcTzsxyjfl = (val) => {
if (val || val === 0) {
let selectData = tzsxyjflList.filter((item) => item.key == val);
jcTzsxejflList.value = (selectData[0] && selectData[0].children) || [];
} else {
jcTzsxejflList.value = [];
}
delete jcFormData.tzsxejfl;
};
const changeJcTzsxtzbk = (val) => {
if (val || val === 0) {
let selectData = tzsxtzbkList.filter((item) => item.key == val);
jcTzsxxfbkList.value = (selectData[0] && selectData[0].children) || [];
} else {
jcTzsxxfbkList.value = [];
}
delete jcFormData.subsector;
};
const changeJcTzmdyjfl = (val) => {
if (val || val === 0) {
let selectData = tzmdyjflList.filter((item) => item.key == val);
jcTzmdejflList.value = (selectData[0] && selectData[0].children) || [];
} else {
jcTzmdejflList.value = [];
}
delete jcFormData.tzmdejfl;
};
const changeJcTzznyjfl = (val) => {
if (val || val === 0) {
let selectData = tzznyjflList.filter((item) => item.key == val);
jcTzznejflList.value = (selectData[0] && selectData[0].children) || [];
} else {
jcTzznejflList.value = [];
}
delete jcFormData.tzznejfl;
};
const replaceArr = (arr, data) => {
arr.splice(0, arr.length, ...data);
};
const initResourceData = () => {
const resourceData = JSON.parse(sessionStorage.getItem("resourceData"));
replaceArr(zyList, resourceData.zyfzy);
replaceArr(cwbblxList, resourceData.cwbblx);
replaceArr(zfspjbList, resourceData.spjb);
xmjdList.value = resourceData.xmjd;
replaceArr(jnwList, resourceData.dqlx);
replaceArr(xmqyList, resourceData.xmqy);
replaceArr(bzList, resourceData.bizhong);
replaceArr(tzsxyjflList, resourceData.tzsx);
replaceArr(tzsxtzbkList, resourceData.tzbk);
replaceArr(tzmdyjflList, resourceData.tzmd);
replaceArr(tzmdsxflList, resourceData.sxfl);
replaceArr(tzznyjflList, resourceData.tzzn);
replaceArr(gmjjhyList, resourceData.gmjjhy);
replaceArr(gdlxList, resourceData.gdlx);
replaceArr(hxbjtjlxlxList, resourceData.hxbjtjywlx);
replaceArr(hxbjtjzjdwList, resourceData.gczjdw);
replaceArr(hxbjtjykphdlxList, resourceData.ykphdlx);
lxzzspyjList.value = resourceData.spyj;
replaceArr(spyjlxList, resourceData.yjlx);
// 决策
replaceArr(qyggList, resourceData.sbdwqygg);
replaceArr(xmzjlyList, resourceData.xmzjly);
replaceArr(swbxmlxList, resourceData.swbxmlx);
replaceArr(xmlxList, resourceData.xmlx);
replaceArr(tzhsfsList, resourceData.tzhsfs);
replaceArr(hylxList, resourceData.hylx);
replaceArr(jcspyjlx, resourceData.jcspyjlx);
};
return {
// resource lists
zyList, cwbblxList, zfspjbList, xmjdList,
jnwList, szjList, dsgjList, qxgjList,
xmqyList, bzList,
tzsxyjflList, tzsxejflList, tzsxtzbkList, tzsxxfbkList,
tzmdyjflList, tzmdejflList, tzmdsxflList,
tzznyjflList, tzznejflList,
gmjjhyList, gmjjhyProps,
gdlxList,
hxbjtjlxlxList, hxbjtjzjdwList, hxbjtjykphdlxList,
lxzzspyjList, spyjlxList,
qyggList, jcSzjList, jcDsgjList, jcQxgjList,
xmzjlyList, swbxmlxList, xmlxList, tzhsfsList,
hylxList, jcspyjlx,
jcTzsxejflList, jcTzsxxfbkList, jcTzmdejflList, jcTzznejflList,
// cascading handlers
changeJnw, changeSzj, changeDsgj,
changeTzsxyjfl, changeTzsxtzbk, changeTzmdyjfl, changeTzznyjfl,
changeJcJnw, changeJcSzj, changeJcDsgj,
changeJcTzsxyjfl, changeJcTzsxtzbk, changeJcTzmdyjfl, changeJcTzznyjfl,
// init
initResourceData,
};
}
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