明树Git Lab
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
J
jt_front
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
jt_front
Commits
cc86f528
Commit
cc86f528
authored
Apr 03, 2026
by
zhanghan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
回收功能处理
parent
d132b74c
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
773 additions
and
244 deletions
+773
-244
InvestmentRecoveryTable.vue
src/components/InvestmentRecoveryTable.vue
+500
-88
manage.css
src/styles/manage.css
+49
-1
manage.less
src/styles/manage.less
+26
-1
investmentCecovery.vue
src/views/castbehind/investmentCecovery.vue
+65
-10
investmentCecoveryAdd.vue
src/views/castbehind/investmentCecoveryAdd.vue
+30
-32
annualAdd.vue
src/views/everydayPage/annualAdd.vue
+70
-67
constructionTime.vue
src/views/investingManage/constructionTime.vue
+2
-9
constructionTimeAdd.vue
src/views/investingManage/constructionTimeAdd.vue
+31
-36
No files found.
src/components/InvestmentRecoveryTable.vue
View file @
cc86f528
...
...
@@ -59,36 +59,71 @@
:disabled=
"isPreview || row.noEdit"
placeholder=
"请输入"
@
input=
"handleNumberInput(row)"
/>
>
<template
#
suffix
>
<span>
{{
moneyUnit
}}
</span>
</
template
>
</el-input>
<!-- 计算字段 -->
<span
v-else
class=
"calculated-value"
>
{{
formatCalculatedValue
(
row
[
col
.
prop
])
}}
{{ formatCalculatedValue(row[col.prop]
, rateUnit
) }}
</span>
</template>
</el-table-column>
</template>
<!-- 月度更新表格的列 -->
<
template
v-else
>
<
template
v-else
-if=
"tableType === 'month'"
>
<!-- 1-12月 -->
<el-table-column
v-for=
"month in 12"
:key=
"`month-$
{month}`"
:label="`${month}月`"
:prop="`m${month}`"
min-width="180"
align="center"
>
<!-- 应收 -->
<el-table-column
:label=
"`应收`"
:prop=
"`m$
{month}Receivable`"
min-width="150"
align="center"
>
<template
#
default=
"
{ row }">
<el-input
v-model=
"row[`m$
{month}
`]"
v-model=
"row[`m$
{month}Receivable
`]"
type="number"
:disabled="isPreview || row.noEdit"
placeholder="请输入"
@input="handleMonthInput(row)"
/>
>
<template
#
suffix
>
<span>
{{
moneyUnit
}}
</span>
</
template
>
</el-input>
</template>
</el-table-column>
<!-- 实收 -->
<el-table-column
:label=
"`实收`"
:prop=
"`m${month}Received`"
min-width=
"150"
align=
"center"
>
<
template
#
default=
"{ row }"
>
<el-input
v-model=
"row[`m$
{month}Received`]"
type="number"
:disabled="isPreview || row.noEdit"
placeholder="请输入"
@input="handleMonthInput(row)"
>
<template
#
suffix
>
<span>
{{
moneyUnit
}}
</span>
</
template
>
</el-input>
</template>
</el-table-column>
</el-table-column>
<!-- 本年累计 -->
<el-table-column
...
...
@@ -108,7 +143,11 @@
:disabled=
"isPreview || row.noEdit || row.autoCalcYearTotal"
placeholder=
"自动计算"
@
input=
"handleYearTotalInput(row)"
/>
>
<template
#
suffix
>
<span>
{{
moneyUnit
}}
</span>
</
template
>
</el-input>
</template>
</el-table-column>
...
...
@@ -122,7 +161,12 @@
>
<
template
#
default=
"{ row }"
>
<span
class=
"calculated-value"
>
{{
formatCalculatedValue
(
row
.
yearCompletionRateDecision
,
"%"
)
}}
{{
formatCalculatedValue
(
row
.
yearCompletionRateDecision
,
rateUnit
,
)
}}
</span>
</
template
>
</el-table-column>
...
...
@@ -134,7 +178,9 @@
>
<
template
#
default=
"{ row }"
>
<span
class=
"calculated-value"
>
{{
formatCalculatedValue
(
row
.
yearCompletionRatePlan
,
"%"
)
}}
{{
formatCalculatedValue
(
row
.
yearCompletionRatePlan
,
rateUnit
)
}}
</span>
</
template
>
</el-table-column>
...
...
@@ -148,13 +194,12 @@
align=
"center"
>
<
template
#
default=
"{ row }"
>
<el-input
v-model=
"row.invoiceCompleted"
type=
"number"
:disabled=
"isPreview || row.noEdit"
placeholder=
"请输入"
@
input=
"handleInvoiceInput(row)"
/>
<span
v-if=
"row.isTotalRow"
class=
"calculated-value"
>
{{
formatCalculatedValue
(
row
.
invoiceCompleted
)
}}
</span>
<span
v-else
class=
"calculated-value"
>
{{
formatCalculatedValue
(
row
.
invoiceCompleted
)
}}
</span>
</
template
>
</el-table-column>
...
...
@@ -169,7 +214,10 @@
<
template
#
default=
"{ row }"
>
<span
class=
"calculated-value"
>
{{
formatCalculatedValue
(
row
.
invoiceCompletionRateDecision
,
"%"
)
formatCalculatedValue
(
row
.
invoiceCompletionRateDecision
,
rateUnit
,
)
}}
</span>
</
template
>
...
...
@@ -182,7 +230,9 @@
>
<
template
#
default=
"{ row }"
>
<span
class=
"calculated-value"
>
{{
formatCalculatedValue
(
row
.
invoiceCompletionRatePlan
,
"%"
)
}}
{{
formatCalculatedValue
(
row
.
invoiceCompletionRatePlan
,
rateUnit
)
}}
</span>
</
template
>
</el-table-column>
...
...
@@ -196,9 +246,17 @@
align=
"center"
>
<
template
#
default=
"{ row }"
>
<span
class=
"calculated-value"
>
{{
formatCalculatedValue
(
row
.
shortfallAmount
)
}}
</span>
<el-input
v-model=
"row.shortfallAmount"
type=
"number"
:disabled=
"isPreview || row.noEdit"
placeholder=
"请输入"
@
input=
"handleShortfallAmountInput(row)"
>
<template
#
suffix
>
<span>
{{
moneyUnit
}}
</span>
</
template
>
</el-input>
</template>
</el-table-column>
...
...
@@ -206,7 +264,7 @@
<el-table-column
label=
"合同总金额"
prop=
"contractTotalAmount"
min-width=
"1
2
0"
min-width=
"1
5
0"
align=
"center"
>
<
template
#
default=
"{ row }"
>
...
...
@@ -216,23 +274,135 @@
:disabled=
"isPreview || row.noEdit"
placeholder=
"请输入"
@
input=
"handleContractAmountInput(row)"
/>
>
<template
#
suffix
>
<span>
{{
moneyUnit
}}
</span>
</
template
>
</el-input>
</template>
</el-table-column>
<!--
计划差额
-->
<!--
实际与计划差异说明
-->
<el-table-column
label=
"
计划差额
"
label=
"
实际与计划差异说明
"
prop=
"planDifference"
min-width=
"120"
min-width=
"200"
align=
"center"
>
<
template
#
default=
"{ row }"
>
<el-input
v-model=
"row.planDifference"
type=
"textarea"
:rows=
"2"
:disabled=
"isPreview || row.noEdit"
placeholder=
"请输入"
@
input=
"handlePlanDifferenceInput"
/>
</
template
>
</el-table-column>
</template>
<!-- 计划表格的列 -->
<
template
v-else-if=
"tableType === 'plan'"
>
<!-- 1-12月 -->
<el-table-column
v-for=
"month in 12"
:key=
"`month-$
{month}`"
:label="`${month}月`"
align="center"
>
<!-- 决策 -->
<el-table-column
:label=
"`决策`"
:prop=
"`m$
{month}Decision`"
min-width="150"
align="center"
>
<template
#
default=
"
{ row }">
<el-input
v-model=
"row[`m$
{month}Decision`]"
type="number"
:disabled="isPreview || row.noEdit"
placeholder="请输入"
@input="handleMonthInput(row)"
>
<template
#
suffix
>
<span>
{{
moneyUnit
}}
</span>
</
template
>
</el-input>
</template>
</el-table-column>
<!-- 计划 -->
<el-table-column
:label=
"`计划`"
:prop=
"`m${month}Plan`"
min-width=
"150"
align=
"center"
>
<
template
#
default=
"{ row }"
>
<el-input
v-model=
"row[`m$
{month}Plan`]"
type="number"
:disabled="isPreview || row.noEdit"
placeholder="请输入"
@input="handleMonthInput(row)"
>
<template
#
suffix
>
<span>
{{
moneyUnit
}}
</span>
</
template
>
</el-input>
</template>
</el-table-column>
</el-table-column>
<!-- 合计 -->
<el-table-column
label=
"合计"
align=
"center"
>
<!-- 决策 -->
<el-table-column
label=
"决策"
prop=
"totalDecision"
min-width=
"180"
align=
"center"
>
<
template
#
default=
"{ row }"
>
<span
class=
"calculated-value"
>
{{
formatCalculatedValue
(
row
.
totalDecision
)
}}
</span>
</
template
>
</el-table-column>
<!-- 计划 -->
<el-table-column
label=
"计划"
prop=
"totalPlan"
min-width=
"180"
align=
"center"
>
<
template
#
default=
"{ row }"
>
<span
class=
"calculated-value"
>
{{
formatCalculatedValue
(
row
.
planDifference
)
}}
{{
formatCalculatedValue
(
row
.
totalPlan
)
}}
</span>
</
template
>
</el-table-column>
</el-table-column>
<!-- 目标(决策)与计划差异说明 -->
<el-table-column
label=
"目标(决策)与计划差异说明"
prop=
"differenceExplanation"
min-width=
"200"
align=
"center"
>
<
template
#
default=
"{ row }"
>
<el-input
v-model=
"row.differenceExplanation"
type=
"textarea"
:rows=
"2"
:disabled=
"isPreview || row.noEdit"
placeholder=
"请输入"
@
input=
"handleTextInput"
/>
</
template
>
</el-table-column>
</template>
</el-table>
</div>
...
...
@@ -252,8 +422,8 @@ const props = defineProps({
},
tableType
:
{
type
:
String
,
default
:
"year"
,
// 'year' 或 'month'
validator
:
(
val
)
=>
[
"year"
,
"month"
].
includes
(
val
),
default
:
"year"
,
// 'year' 或 'month'
或 'plan'
validator
:
(
val
)
=>
[
"year"
,
"month"
,
"plan"
].
includes
(
val
),
},
tableTitle
:
{
type
:
String
,
...
...
@@ -279,6 +449,26 @@ const props = defineProps({
type
:
[
String
,
Number
],
default
:
""
,
},
// 投资回收完成情况年度计划数据(用于获取年度计划的合计决策值)
yearlyPlanData
:
{
type
:
Object
,
default
:
()
=>
({}),
},
// 投资回收完成情况年度更新数据(用于获取截至年底实收值)
yearlyCompletionData
:
{
type
:
Object
,
default
:
()
=>
({}),
},
// 金额单位(默认万元)
moneyUnit
:
{
type
:
String
,
default
:
"万元"
,
},
// 利率单位(默认%)
rateUnit
:
{
type
:
String
,
default
:
"%"
,
},
});
const
emit
=
defineEmits
([
"update:modelValue"
]);
...
...
@@ -296,11 +486,18 @@ const yearColumns = computed(() => [
},
{
prop
:
"actualReceived"
,
label
:
"截至年底
实
收"
,
label
:
"截至年底
计划应
收"
,
width
:
140
,
isText
:
false
,
isCalculated
:
false
,
},
{
prop
:
"jzss"
,
label
:
"截至(具体年份)年底实收"
,
width
:
180
,
isText
:
false
,
isCalculated
:
false
,
},
{
prop
:
"shortfall"
,
label
:
"欠收(决策应收-实收)"
,
...
...
@@ -334,16 +531,13 @@ const yearColumns = computed(() => [
// 格式化计算值
const
formatCalculatedValue
=
(
value
,
suffix
=
""
)
=>
{
if
(
value
===
null
||
value
===
undefined
||
isNaN
(
value
))
return
"-"
;
if
(
suffix
===
"%"
)
{
return
`
${
Number
(
value
).
toFixed
(
2
)}
%`
;
}
return
Number
(
value
).
toFixed
(
2
);
return
`
${
Number
(
value
).
toFixed
(
2
)}${
suffix
}
`
;
};
// 初始化行数据
const
initRowData
=
(
indicator
,
index
,
sourceRow
=
{})
=>
{
const
baseRow
=
{
serialNumber
:
index
+
1
,
serialNumber
:
ind
icator
.
xh
||
ind
ex
+
1
,
indicatorName
:
indicator
.
name
,
noEdit
:
indicator
.
noEdit
||
false
,
isTotalRow
:
indicator
.
isTotalRow
||
false
,
...
...
@@ -358,12 +552,28 @@ const initRowData = (indicator, index, sourceRow = {}) => {
completionRate
:
sourceRow
.
completionRate
||
null
,
problems
:
sourceRow
.
problems
||
""
,
measures
:
sourceRow
.
measures
||
""
,
jzss
:
sourceRow
.
jzss
||
null
,
};
}
else
if
(
props
.
tableType
===
"plan"
)
{
// 计划表格
const
monthData
=
{};
for
(
let
i
=
1
;
i
<=
12
;
i
++
)
{
monthData
[
`m
${
i
}
Decision`
]
=
sourceRow
[
`m
${
i
}
Decision`
]
||
null
;
monthData
[
`m
${
i
}
Plan`
]
=
sourceRow
[
`m
${
i
}
Plan`
]
||
null
;
}
return
{
...
baseRow
,
...
monthData
,
totalDecision
:
sourceRow
.
totalDecision
||
null
,
totalPlan
:
sourceRow
.
totalPlan
||
null
,
differenceExplanation
:
sourceRow
.
differenceExplanation
||
""
,
};
}
else
{
// 月度表格
const
monthData
=
{};
for
(
let
i
=
1
;
i
<=
12
;
i
++
)
{
monthData
[
`m
${
i
}
`
]
=
sourceRow
[
`m
${
i
}
`
]
||
null
;
monthData
[
`m
${
i
}
Receivable`
]
=
sourceRow
[
`m
${
i
}
Receivable`
]
||
null
;
monthData
[
`m
${
i
}
Received`
]
=
sourceRow
[
`m
${
i
}
Received`
]
||
null
;
}
return
{
...
baseRow
,
...
...
@@ -377,7 +587,7 @@ const initRowData = (indicator, index, sourceRow = {}) => {
invoiceCompletionRatePlan
:
sourceRow
.
invoiceCompletionRatePlan
||
null
,
shortfallAmount
:
sourceRow
.
shortfallAmount
||
null
,
contractTotalAmount
:
sourceRow
.
contractTotalAmount
||
null
,
planDifference
:
sourceRow
.
planDifference
||
null
,
planDifference
:
sourceRow
.
planDifference
||
""
,
yearDecision
:
sourceRow
.
yearDecision
||
null
,
// 本年决策目标
yearPlan
:
sourceRow
.
yearPlan
||
null
,
// 本年计划目标
invoiceDecision
:
sourceRow
.
invoiceDecision
||
null
,
// 开累决策目标
...
...
@@ -389,15 +599,15 @@ const initRowData = (indicator, index, sourceRow = {}) => {
// 指标列表
const
indicators
=
[
{
name
:
"政府付费"
,
noEdit
:
false
},
{
name
:
"建设期"
,
noEdit
:
false
},
{
name
:
"运营期"
,
noEdit
:
false
},
{
name
:
"使用者付费"
,
noEdit
:
false
},
{
name
:
"投资价款"
,
noEdit
:
false
},
{
name
:
"参股项目投资回收"
,
noEdit
:
false
},
{
name
:
"代建工程款"
,
noEdit
:
false
},
{
name
:
"其他"
,
noEdit
:
false
},
{
name
:
"合计"
,
isTotalRow
:
true
,
noEdit
:
true
},
{
name
:
"政府付费"
,
noEdit
:
false
,
xh
:
"1"
},
{
name
:
"建设期"
,
noEdit
:
false
,
xh
:
"1.1"
},
{
name
:
"运营期"
,
noEdit
:
false
,
xh
:
"1.2"
},
{
name
:
"使用者付费"
,
noEdit
:
false
,
xh
:
"2"
},
{
name
:
"投资价款"
,
noEdit
:
false
,
xh
:
"3"
},
{
name
:
"参股项目投资回收"
,
noEdit
:
false
,
xh
:
"4"
},
{
name
:
"代建工程款"
,
noEdit
:
false
,
xh
:
"5"
},
{
name
:
"其他"
,
noEdit
:
false
,
xh
:
"6"
},
{
name
:
"合计"
,
isTotalRow
:
true
,
noEdit
:
true
,
xh
:
"7"
},
];
// 从计划数据和决策数据中获取对应指标的值
...
...
@@ -492,10 +702,13 @@ const autoFillDecisionAndPlan = () => {
}
});
// 重新计算完成率
// 重新计算完成率
(不触发 emitChange,避免循环)
tableDataRef
.
value
.
forEach
((
row
)
=>
{
calculateMonthRow
(
row
);
});
// 计算合计行(不触发 emitChange,避免循环)
calculateTotalRow
();
};
// 年度表格计算
...
...
@@ -519,56 +732,93 @@ const calculateYearRow = (row) => {
const
calculateMonthRow
=
(
row
)
=>
{
if
(
row
.
noEdit
||
row
.
isTotalRow
)
return
;
// 本年累计 = 1-12月之和
// 本年累计 = 1-12月
实收
之和
if
(
row
.
autoCalcYearTotal
)
{
let
monthSum
=
0
;
for
(
let
i
=
1
;
i
<=
12
;
i
++
)
{
monthSum
+=
parseFloat
(
row
[
`m
${
i
}
`
])
||
0
;
monthSum
+=
parseFloat
(
row
[
`m
${
i
}
Received
`
])
||
0
;
}
row
.
yearTotal
=
monthSum
;
}
// 本年完成率/本年决策 = 本年累计 / 本年决策 * 100
const
yearDecision
=
parseFloat
(
row
.
yearDecision
)
||
0
;
// 从年度计划数据中获取合计计划值
const
getYearlyPlanTotalPlan
=
()
=>
{
if
(
!
props
.
yearlyPlanData
||
!
props
.
yearlyPlanData
.
tableData
)
return
0
;
const
totalRow
=
props
.
yearlyPlanData
.
tableData
.
find
((
r
)
=>
r
.
isTotalRow
);
return
totalRow
?
parseFloat
(
totalRow
.
totalPlan
)
||
0
:
0
;
};
// 从年度更新数据中获取截至年底实收值
const
getYearlyJzss
=
()
=>
{
if
(
!
props
.
yearlyCompletionData
||
!
props
.
yearlyCompletionData
.
tableData
)
return
0
;
const
targetRow
=
props
.
yearlyCompletionData
.
tableData
.
find
(
(
r
)
=>
r
.
indicatorName
===
row
.
indicatorName
,
);
return
targetRow
?
parseFloat
(
targetRow
.
jzss
)
||
0
:
0
;
};
// 本年完成率/本年决策 = 本年累计 / 年度计划的合计计划值 * 100
const
yearlyPlanTotalPlan
=
getYearlyPlanTotalPlan
();
const
yearTotal
=
parseFloat
(
row
.
yearTotal
)
||
0
;
if
(
year
Decisio
n
>
0
)
{
row
.
yearCompletionRateDecision
=
(
yearTotal
/
year
Decisio
n
)
*
100
;
if
(
year
lyPlanTotalPla
n
>
0
)
{
row
.
yearCompletionRateDecision
=
(
yearTotal
/
year
lyPlanTotalPla
n
)
*
100
;
}
else
{
row
.
yearCompletionRateDecision
=
0
;
}
// 本年完成率/本年计划 = 本年累计 / 本年计划 * 100
const
yearPlan
=
parseFloat
(
row
.
yearPlan
)
||
0
;
if
(
yearPlan
>
0
)
{
row
.
yearCompletionRatePlan
=
(
yearTotal
/
yearPlan
)
*
100
;
// 自动计算截至本年完成(开累)= 本年累计 + 年度更新的截至年底实收
const
yearlyJzss
=
getYearlyJzss
();
row
.
invoiceCompleted
=
yearTotal
+
yearlyJzss
;
// 从年度更新数据中获取决策应收和计划应收值
const
getYearlyDecisionReceivable
=
()
=>
{
if
(
!
props
.
yearlyCompletionData
||
!
props
.
yearlyCompletionData
.
tableData
)
return
0
;
const
targetRow
=
props
.
yearlyCompletionData
.
tableData
.
find
(
(
r
)
=>
r
.
indicatorName
===
row
.
indicatorName
,
);
return
targetRow
?
parseFloat
(
targetRow
.
decisionReceivable
)
||
0
:
0
;
};
const
getYearlyActualReceived
=
()
=>
{
if
(
!
props
.
yearlyCompletionData
||
!
props
.
yearlyCompletionData
.
tableData
)
return
0
;
const
targetRow
=
props
.
yearlyCompletionData
.
tableData
.
find
(
(
r
)
=>
r
.
indicatorName
===
row
.
indicatorName
,
);
return
targetRow
?
parseFloat
(
targetRow
.
actualReceived
)
||
0
:
0
;
};
// 本年完成率/本年计划 = 本年累计 / 年度更新的计划应收值 * 100
const
yearlyActualReceived
=
getYearlyActualReceived
();
if
(
yearlyActualReceived
>
0
)
{
row
.
yearCompletionRatePlan
=
(
yearTotal
/
yearlyActualReceived
)
*
100
;
}
else
{
row
.
yearCompletionRatePlan
=
0
;
}
// 开累完成率/开累决策 =
开累完成 / 开累决策
* 100
const
invoiceDecision
=
parseFloat
(
row
.
invoiceDecision
)
||
0
;
// 开累完成率/开累决策 =
截至本年完成(开累) / (year的决策应收 + plan的合计决策值)
* 100
const
yearlyDecisionReceivable
=
getYearlyDecisionReceivable
()
;
const
invoiceCompleted
=
parseFloat
(
row
.
invoiceCompleted
)
||
0
;
if
(
invoiceDecision
>
0
)
{
const
totalInvoiceDecision
=
yearlyDecisionReceivable
+
yearlyPlanTotalPlan
;
if
(
totalInvoiceDecision
>
0
)
{
row
.
invoiceCompletionRateDecision
=
(
invoiceCompleted
/
i
nvoiceDecision
)
*
100
;
(
invoiceCompleted
/
totalI
nvoiceDecision
)
*
100
;
}
else
{
row
.
invoiceCompletionRateDecision
=
0
;
}
// 开累完成率/
本年计划 = 开累完成 / 开累计划
* 100
const
invoicePlan
=
parseFloat
(
row
.
invoicePlan
)
||
0
;
if
(
i
nvoicePlan
>
0
)
{
row
.
invoiceCompletionRatePlan
=
(
invoiceCompleted
/
i
nvoicePlan
)
*
100
;
// 开累完成率/
开累计划 = 截至本年完成(开累) / (year的计划应收 + plan的合计计划值)
* 100
const
totalInvoicePlan
=
yearlyActualReceived
+
yearlyPlanTotalPlan
;
if
(
totalI
nvoicePlan
>
0
)
{
row
.
invoiceCompletionRatePlan
=
(
invoiceCompleted
/
totalI
nvoicePlan
)
*
100
;
}
else
{
row
.
invoiceCompletionRatePlan
=
0
;
}
// 欠收金额 = 本年决策 - 本年累计
row
.
shortfallAmount
=
yearDecision
-
yearTotal
;
// 计划差额 = 合同总金额 - 本年计划
const
contractTotal
=
parseFloat
(
row
.
contractTotalAmount
)
||
0
;
row
.
planDifference
=
contractTotal
-
yearPlan
;
// 欠收金额不再自动计算,由用户手动输入
// row.shortfallAmount = yearDecision - yearTotal;
};
// 计算合计行
...
...
@@ -596,24 +846,148 @@ const calculateTotalRow = () => {
}
else
{
totalRow
.
completionRate
=
0
;
}
}
else
if
(
props
.
tableType
===
"plan"
)
{
// 计划表格合计
for
(
let
i
=
1
;
i
<=
12
;
i
++
)
{
let
decisionSum
=
0
;
let
planSum
=
0
;
tableDataRef
.
value
.
forEach
((
row
)
=>
{
if
(
!
row
.
isTotalRow
&&
!
row
.
noEdit
)
{
decisionSum
+=
parseFloat
(
row
[
`m
${
i
}
Decision`
])
||
0
;
planSum
+=
parseFloat
(
row
[
`m
${
i
}
Plan`
])
||
0
;
}
});
totalRow
[
`m
${
i
}
Decision`
]
=
decisionSum
;
totalRow
[
`m
${
i
}
Plan`
]
=
planSum
;
}
// 计算合计列
let
totalDecisionSum
=
0
;
let
totalPlanSum
=
0
;
for
(
let
i
=
1
;
i
<=
12
;
i
++
)
{
totalDecisionSum
+=
parseFloat
(
totalRow
[
`m
${
i
}
Decision`
])
||
0
;
totalPlanSum
+=
parseFloat
(
totalRow
[
`m
${
i
}
Plan`
])
||
0
;
}
totalRow
.
totalDecision
=
totalDecisionSum
;
totalRow
.
totalPlan
=
totalPlanSum
;
// 计算每行的合计值(1-12月总和)
tableDataRef
.
value
.
forEach
((
row
)
=>
{
if
(
!
row
.
isTotalRow
&&
!
row
.
noEdit
)
{
let
decisionSum
=
0
;
let
planSum
=
0
;
for
(
let
i
=
1
;
i
<=
12
;
i
++
)
{
decisionSum
+=
parseFloat
(
row
[
`m
${
i
}
Decision`
])
||
0
;
planSum
+=
parseFloat
(
row
[
`m
${
i
}
Plan`
])
||
0
;
}
row
.
totalDecision
=
decisionSum
;
row
.
totalPlan
=
planSum
;
}
});
}
else
{
// 月度表格合计
for
(
let
i
=
1
;
i
<=
12
;
i
++
)
{
let
monthSum
=
0
;
let
receivableSum
=
0
;
let
receivedSum
=
0
;
tableDataRef
.
value
.
forEach
((
row
)
=>
{
if
(
!
row
.
isTotalRow
&&
!
row
.
noEdit
)
{
monthSum
+=
parseFloat
(
row
[
`m
${
i
}
`
])
||
0
;
receivableSum
+=
parseFloat
(
row
[
`m
${
i
}
Receivable`
])
||
0
;
receivedSum
+=
parseFloat
(
row
[
`m
${
i
}
Received`
])
||
0
;
}
});
totalRow
[
`m
${
i
}
`
]
=
monthSum
;
totalRow
[
`m
${
i
}
Receivable`
]
=
receivableSum
;
totalRow
[
`m
${
i
}
Received`
]
=
receivedSum
;
}
// 本年累计
// 本年累计
(实收合计)
let
yearTotalSum
=
0
;
for
(
let
i
=
1
;
i
<=
12
;
i
++
)
{
yearTotalSum
+=
parseFloat
(
totalRow
[
`m
${
i
}
`
])
||
0
;
yearTotalSum
+=
parseFloat
(
totalRow
[
`m
${
i
}
Received
`
])
||
0
;
}
totalRow
.
yearTotal
=
yearTotalSum
;
// 计算合计行的完成率
// 从年度计划数据中获取合计计划值
const
getYearlyPlanTotalPlan
=
()
=>
{
if
(
!
props
.
yearlyPlanData
||
!
props
.
yearlyPlanData
.
tableData
)
return
0
;
const
yearlyTotalRow
=
props
.
yearlyPlanData
.
tableData
.
find
(
(
r
)
=>
r
.
isTotalRow
,
);
return
yearlyTotalRow
?
parseFloat
(
yearlyTotalRow
.
totalPlan
)
||
0
:
0
;
};
const
yearlyPlanTotalPlan
=
getYearlyPlanTotalPlan
();
// 本年完成率/本年决策 = 本年累计 / 年度计划的合计计划值 * 100
if
(
yearlyPlanTotalPlan
>
0
)
{
totalRow
.
yearCompletionRateDecision
=
(
yearTotalSum
/
yearlyPlanTotalPlan
)
*
100
;
}
else
{
totalRow
.
yearCompletionRateDecision
=
0
;
}
// 本年完成率/本年计划 = 本年累计 / 本年计划 * 100(合计行暂不计算此值)
totalRow
.
yearCompletionRatePlan
=
0
;
// 计算合计行的截至本年完成(开累)
// 从年度更新数据中获取截至年底实收值
const
getYearlyJzss
=
()
=>
{
if
(
!
props
.
yearlyCompletionData
||
!
props
.
yearlyCompletionData
.
tableData
)
return
0
;
const
yearlyTotalRow
=
props
.
yearlyCompletionData
.
tableData
.
find
(
(
r
)
=>
r
.
isTotalRow
,
);
return
yearlyTotalRow
?
parseFloat
(
yearlyTotalRow
.
jzss
)
||
0
:
0
;
};
const
yearlyJzss
=
getYearlyJzss
();
totalRow
.
invoiceCompleted
=
yearTotalSum
+
yearlyJzss
;
// 计算合计行的开累完成率
// 从年度更新数据中获取合计的决策应收和计划应收值
const
getYearlyDecisionReceivable
=
()
=>
{
if
(
!
props
.
yearlyCompletionData
||
!
props
.
yearlyCompletionData
.
tableData
)
return
0
;
const
yearlyTotalRow
=
props
.
yearlyCompletionData
.
tableData
.
find
(
(
r
)
=>
r
.
isTotalRow
,
);
return
yearlyTotalRow
?
parseFloat
(
yearlyTotalRow
.
decisionReceivable
)
||
0
:
0
;
};
const
getYearlyActualReceived
=
()
=>
{
if
(
!
props
.
yearlyCompletionData
||
!
props
.
yearlyCompletionData
.
tableData
)
return
0
;
const
yearlyTotalRow
=
props
.
yearlyCompletionData
.
tableData
.
find
(
(
r
)
=>
r
.
isTotalRow
,
);
return
yearlyTotalRow
?
parseFloat
(
yearlyTotalRow
.
actualReceived
)
||
0
:
0
;
};
const
yearlyDecisionReceivable
=
getYearlyDecisionReceivable
();
const
yearlyActualReceived
=
getYearlyActualReceived
();
const
invoiceCompleted
=
parseFloat
(
totalRow
.
invoiceCompleted
)
||
0
;
const
totalInvoiceDecision
=
yearlyDecisionReceivable
+
yearlyPlanTotalPlan
;
const
totalInvoicePlan
=
yearlyActualReceived
+
yearlyPlanTotalPlan
;
// 开累完成率/开累决策
if
(
totalInvoiceDecision
>
0
)
{
totalRow
.
invoiceCompletionRateDecision
=
(
invoiceCompleted
/
totalInvoiceDecision
)
*
100
;
}
else
{
totalRow
.
invoiceCompletionRateDecision
=
0
;
}
// 开累完成率/开累计划
if
(
totalInvoicePlan
>
0
)
{
totalRow
.
invoiceCompletionRatePlan
=
(
invoiceCompleted
/
totalInvoicePlan
)
*
100
;
}
else
{
totalRow
.
invoiceCompletionRatePlan
=
0
;
}
}
};
...
...
@@ -640,18 +1014,22 @@ const handleYearTotalInput = (row) => {
emitChange
();
};
const
handle
Invoice
Input
=
(
row
)
=>
{
const
handle
ContractAmount
Input
=
(
row
)
=>
{
calculateMonthRow
(
row
);
calculateTotalRow
();
emitChange
();
};
const
handle
Contract
AmountInput
=
(
row
)
=>
{
const
handle
Shortfall
AmountInput
=
(
row
)
=>
{
calculateMonthRow
(
row
);
calculateTotalRow
();
emitChange
();
};
const
handlePlanDifferenceInput
=
()
=>
{
emitChange
();
};
const
emitChange
=
()
=>
{
if
(
props
.
isPreview
)
return
;
const
newModelValue
=
{
...
...
@@ -702,6 +1080,40 @@ watch(
},
{
deep
:
true
},
);
// 监听年度计划数据变化,重新计算完成率
watch
(
()
=>
props
.
yearlyPlanData
,
()
=>
{
nextTick
(()
=>
{
if
(
props
.
tableType
===
"month"
)
{
tableDataRef
.
value
.
forEach
((
row
)
=>
{
calculateMonthRow
(
row
);
});
calculateTotalRow
();
// 不调用 emitChange,避免无限循环
}
});
},
{
deep
:
true
},
);
// 监听年度更新数据变化,重新计算截至本年完成
watch
(
()
=>
props
.
yearlyCompletionData
,
()
=>
{
nextTick
(()
=>
{
if
(
props
.
tableType
===
"month"
)
{
tableDataRef
.
value
.
forEach
((
row
)
=>
{
calculateMonthRow
(
row
);
});
calculateTotalRow
();
// 不调用 emitChange,避免无限循环
}
});
},
{
deep
:
true
},
);
</
script
>
<
style
scoped
lang=
"scss"
>
...
...
src/styles/manage.css
View file @
cc86f528
...
...
@@ -161,9 +161,27 @@
justify-content
:
flex-end
;
align-items
:
center
;
}
.add-project-content
.tab-content
.is-transparent
{
font-size
:
12px
;
}
.add-project-content
.tab-content
.el-button
,
.add-project-content
.tab-content
.count-text
,
.add-project-content
.tab-content
.count-num
,
.add-project-content
.tab-content
.upload-icon
,
.add-project-content
.tab-content
.el-input__suffix
,
.add-project-content
.tab-content
.el-input__suffix-inner
{
font-size
:
12px
;
}
.add-project-content
.tab-content
.el-table
{
margin-bottom
:
10px
;
}
.add-project-content
.tab-content
.el-table
.cell
{
text-align
:
center
;
font-size
:
12px
;
}
.add-project-content
.tab-content
.el-table
.cell
.el-input__inner
{
font-size
:
12px
;
}
.add-project-content
.tab-content
.el-table
tbody
tr
{
height
:
46px
;
}
...
...
@@ -184,6 +202,13 @@
}
.add-project-content
.tab-content
.el-table
thead
th
.cell
{
text-align
:
center
;
font-size
:
12px
;
}
.add-project-content
.tab-content
.el-table
thead
th
.cell
.el-input__inner
{
font-size
:
12px
;
}
.add-project-content
.tab-content
.el-table
th
{
background
:
#e4e8f1
;
}
.add-project-content
.tab-content
.el-table
.sums-column
{
display
:
flex
;
...
...
@@ -312,7 +337,7 @@
.el-form-item__label
{
min-width
:
100px
;
font-weight
:
400
;
font-size
:
1
4
px
;
font-size
:
1
2
px
;
color
:
#333333
;
height
:
32px
;
display
:
flex
;
...
...
@@ -347,3 +372,26 @@
font-weight
:
600
;
font-size
:
14px
;
}
.table-stripe-colors
{
border
:
1px
solid
#ebeef5
;
}
.table-stripe-colors
.odd-row
{
background-color
:
#f5f5f5
!important
;
}
.table-stripe-colors
.even-row
{
background-color
:
#edf0f5
!important
;
}
.table-stripe-colors
.el-table__body
tr
:hover
>
td
{
background-color
:
#e8f4ff
!important
;
}
.table-stripe-colors
.el-table__header-wrapper
th
{
background-color
:
#f0f2f5
!important
;
color
:
#333
;
font-weight
:
600
;
text-align
:
center
;
border-color
:
#ebeef5
;
}
.table-stripe-colors
.el-table__body-wrapper
td
{
border-color
:
#ebeef5
;
padding
:
8px
0
;
}
src/styles/manage.less
View file @
cc86f528
...
...
@@ -171,8 +171,26 @@
justify-content: flex-end;
align-items: center;
}
.is-transparent {
font-size: 12px;
}
.el-button,
.count-text,
.count-num,
.upload-icon,
.el-input__suffix,
.el-input__suffix-inner {
font-size: 12px;
}
.el-table {
margin-bottom: 10px;
.cell {
text-align: center;
font-size: 12px;
.el-input__inner {
font-size: 12px;
}
}
tbody {
tr {
...
...
@@ -195,9 +213,16 @@
background: #e4e8f1;
.cell {
text-align: center;
font-size: 12px;
.el-input__inner {
font-size: 12px;
}
}
}
}
th {
background: #e4e8f1;
}
.sums-column {
display: flex;
flex-direction: column;
...
...
@@ -341,7 +366,7 @@
.el-form-item__label {
min-width: 100px;
font-weight: 400;
font-size: 1
4
px;
font-size: 1
2
px;
color: rgba(51, 51, 51, 1);
height: 32px;
display: flex;
...
...
src/views/castbehind/investmentCecovery.vue
View file @
cc86f528
<
template
>
<div
class=
"manage-container"
>
<div
class=
"manage-wrap"
>
<search-form
@
search=
"handleSearch"
/>
<search-form
:items=
"searchItems"
@
search=
"handleSearch"
/>
<div
class=
"manage-header"
>
<div
class=
"header-left"
></div>
<div
class=
"header-right"
>
...
...
@@ -62,6 +62,68 @@ import { ElMessage, ElMessageBox } from "element-plus";
import
CommonTable
from
"@/components/common/commonTable.vue"
;
import
SearchForm
from
"@/components/common/SearchForm.vue"
;
const
searchItems
=
[
{
type
:
"input"
,
label
:
"项目名称"
,
prop
:
"projectName"
,
placeholder
:
"请输入项目名称"
,
span
:
6
,
clearable
:
true
,
},
{
type
:
"input"
,
label
:
"项目编号"
,
prop
:
"projectCode"
,
placeholder
:
"请输入项目编号"
,
span
:
6
,
clearable
:
true
,
},
{
type
:
"date"
,
label
:
"年度"
,
prop
:
"nd"
,
placeholder
:
"请选择年度"
,
span
:
6
,
clearable
:
true
,
},
{
type
:
"input"
,
label
:
"管理主体"
,
prop
:
"glzt"
,
placeholder
:
"请输入管理主体"
,
span
:
6
,
clearable
:
true
,
},
{
type
:
"input"
,
label
:
"联系人"
,
prop
:
"lxr"
,
placeholder
:
"请输入联系人"
,
span
:
6
,
clearable
:
true
,
},
{
type
:
"dict-select"
,
label
:
"项目阶段"
,
prop
:
"xmjd"
,
dictName
:
"xmjd"
,
placeholder
:
"请选择项目阶段"
,
span
:
6
,
clearable
:
true
,
},
{
type
:
"dict-select"
,
label
:
"项目区域"
,
prop
:
"xmqy"
,
dictName
:
"xmqy"
,
placeholder
:
"请选择项目区域"
,
span
:
6
,
clearable
:
true
,
},
];
const
handleSearch
=
(
formData
)
=>
{
currentPage
.
value
=
1
;
...
...
@@ -78,18 +140,11 @@ let tableColumns = ref([
showOverflowTooltip
:
true
,
},
{
prop
:
"
xmgsmc
"
,
label
:
"
项目公司名称
"
,
prop
:
"
nd
"
,
label
:
"
年度
"
,
showOverflowTooltip
:
true
,
},
{
prop
:
"ssejqy"
,
label
:
"所属二级企业"
,
showOverflowTooltip
:
true
,
width
:
170
,
},
{
prop
:
"operations"
,
label
:
"操作"
,
...
...
src/views/castbehind/investmentCecoveryAdd.vue
View file @
cc86f528
...
...
@@ -171,10 +171,7 @@
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label-width=
"260px"
label=
"投资总额-实际值"
>
<el-form-item
label-width=
"260px"
label=
"投资总额-实际值"
>
<el-input
precision=
"2"
v-model=
"formData.tzzesj"
...
...
@@ -203,10 +200,7 @@
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label-width=
"260px"
label=
"投资总额-计划值"
>
<el-form-item
label-width=
"260px"
label=
"投资总额-计划值"
>
<el-input
precision=
"2"
v-model=
"formData.tzzejhz"
...
...
@@ -221,12 +215,11 @@
</el-row>
</el-collapse-item>
<el-collapse-item
<
!-- <
el-collapse-item
:title="dynamicTitles.yearlyUpdateTitle"
:name="dynamicTitles.yearlyUpdateTitle"
>
<el-row gutter="20">
<!-- 第一行:决策目标值相关数字项 -->
<el-col :span="12">
<el-form-item
label-width="260px"
...
...
@@ -262,10 +255,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label-width=
"260px"
label=
"下一年完成数"
>
<el-form-item label-width="260px" label="下一年完成数">
<el-input
precision="2"
v-model="formData.xynwcs"
...
...
@@ -279,10 +269,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label-width=
"260px"
label=
"本年计划"
>
<el-form-item label-width="260px" label="本年计划">
<el-input
precision="2"
v-model="formData.bnjh"
...
...
@@ -296,7 +283,6 @@
</el-form-item>
</el-col>
<!-- 第二行:实际值相关数字项 -->
<el-col :span="12">
<el-form-item
label-width="260px"
...
...
@@ -332,10 +318,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label-width=
"260px"
label=
"累计欠收"
>
<el-form-item label-width="260px" label="累计欠收">
<el-input
precision="2"
v-model="formData.ljqs"
...
...
@@ -363,7 +346,6 @@
</el-form-item>
</el-col>
<!-- 第三行及以后:长文本说明项(占满整行) -->
<el-col :span="24">
<el-form-item label="计划与决策目标值差异说明">
<el-input
...
...
@@ -415,9 +397,20 @@
</el-form-item>
</el-col>
</el-row>
</el-collapse-item> -->
<el-collapse-item
:title=
"dynamicTitles.yearlyUpdateTitle"
:name=
"dynamicTitles.yearlyUpdateTitle"
>
<InvestmentRecoveryTable
v-model=
"formData.tzhsjc"
:is-preview=
"isPreview"
table-type=
"plan"
:table-title=
"`${currentYear}年投资回收计划`"
/>
</el-collapse-item>
<el-collapse-item
<
!-- <
el-collapse-item
title="截止12月末累计应收"
name="截止12月末累计应收"
>
...
...
@@ -435,9 +428,9 @@
v-model="formData.jzymljsh"
:is-preview="isPreview"
/>
</el-collapse-item>
</el-collapse-item>
-->
<el-collapse-item
<
!-- <
el-collapse-item
title="投资回收(计划)"
name="投资回收(计划)"
>
...
...
@@ -448,7 +441,7 @@
:showNameColumn="false"
:showTotalColumn="false"
/>
</el-collapse-item>
</el-collapse-item>
-->
<el-collapse-item
:title=
"dynamicTitles.yearlyCompletionTitle"
...
...
@@ -474,6 +467,8 @@
:plan-data=
"formData.tzhsjh"
:decision-data=
"formData.tzhsjc"
:last-year-plan-data=
"formData.lastyeartzhs"
:yearly-plan-data=
"formData.tzhsjc"
:yearly-completion-data=
"formData.tzhswcqkndgx"
:current-year=
"currentYear"
/>
</el-collapse-item>
...
...
@@ -1194,6 +1189,10 @@ let initTableData = () => {
formData
.
tzhswcqkydgx
=
{
tableData
:
[],
};
formData
.
tzhsjc
=
{
tableData
:
[],
};
};
const
formData
=
reactive
({
nd
:
new
Date
().
getFullYear
().
toString
(),
// 年度,默认当前年份
...
...
@@ -1203,6 +1202,7 @@ const formData = reactive({
tzhsjh
:
{},
tzhswcqkndgx
:
{},
tzhswcqkydgx
:
{},
tzhsjc
:
{},
// 投资回收完成情况年度计划
lastyeartzhs
:
null
,
// 去年投资回收计划数据
projectGdxxs
:
[],
});
...
...
@@ -1221,7 +1221,7 @@ const dynamicTitles = computed(() => ({
// 投资回收累计完成情况-年度更新
yearlyUpdateTitle
:
`
${
currentYear
.
value
}
年投资回收累计完成情况-年度更新`
,
// 投资回收完成情况-年度更新
yearlyCompletionTitle
:
`
${
currentYear
.
value
}
年投资回收完成情况(年度更新)`
,
yearlyCompletionTitle
:
`
${
currentYear
.
value
-
1
}
年投资回收完成情况(年度更新)`
,
// 投资回收完成情况-月度更新
monthlyCompletionTitle
:
`
${
currentYear
.
value
}
年投资回收完成情况(月度更新)`
,
}));
...
...
@@ -1237,7 +1237,7 @@ const getActiveCollapseItems = () => [
"投资回收(计划)"
,
dynamicTitles
.
value
.
yearlyUpdateTitle
,
"净现金流"
,
"
截止12月末累计应收
"
,
"
投资额完成情况(单位:万元)
"
,
"截止12月末累计实收"
,
"资金流出"
,
"分红情况"
,
...
...
@@ -1264,8 +1264,6 @@ const changeProject = (val) => {
url
:
"/api/project/getProjectFinalInfo"
,
data
:
{
id
:
val
},
callback
:
(
data
)
=>
{
loading
.
value
=
false
;
// Object.assign(formData, data);
loading
.
value
=
false
;
formData
.
projectName
=
data
.
projectName
||
""
;
formData
.
sbdw
=
data
.
sbdw
||
""
;
...
...
src/views/everydayPage/annualAdd.vue
View file @
cc86f528
...
...
@@ -12,7 +12,7 @@
>
<!-- 项目基本信息:字段完全对齐数据库 -->
<el-collapse-item
title=
"项目基本信息"
name=
"项目基本信息"
>
<el-row
:gutter=
"2
0
"
>
<el-row
:gutter=
"2
4
"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"项目信息"
required
>
<el-select
...
...
@@ -146,7 +146,7 @@
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label=
"建成后成效"
>
<el-input
v-model=
"formData.jchcx"
...
...
@@ -166,10 +166,10 @@
<!-- 战略类A:按数据库字段补充所有表单项 -->
<div
class=
"row"
>
<div
class=
"row_title"
>
战略类(A类)
</div>
<el-row
:gutter=
"2
0
"
>
<el-col
:span=
"
18
"
>
<el-row
:gutter=
"2
4
"
>
<el-col
:span=
"
20
"
>
<el-form-item
label-width=
"3
80
"
label-width=
"3
40px
"
label=
"是否国家中长期规划重大项目(A1)"
>
<CommonSelector
...
...
@@ -179,9 +179,9 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
80
"
label-width=
"3
40px
"
label=
"是否国家有关部门下达的重点项目(A2)"
>
<CommonSelector
...
...
@@ -191,9 +191,9 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
80
"
label-width=
"3
40px
"
label=
"大规模设备更新(A3)"
>
<CommonSelector
...
...
@@ -203,9 +203,9 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
80
"
label-width=
"3
40px
"
label=
"战略性新兴产业百大工程(A4)"
>
<CommonSelector
...
...
@@ -215,9 +215,9 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
80
"
label-width=
"3
40px
"
label=
"列入央企产业焕新和未来产业启航行动的项目(A5)"
>
<CommonSelector
...
...
@@ -227,9 +227,9 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
80
"
label-width=
"3
40px
"
label=
"强链补链重点项目(A6)"
>
<CommonSelector
...
...
@@ -239,9 +239,9 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
80
"
label-width=
"3
40px
"
label=
"对应重大或重点项目名录名称"
>
<el-input
...
...
@@ -250,9 +250,9 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
80
"
label-width=
"3
40px
"
label=
"战略性新兴产业分类(如有,必填)"
>
<el-input
...
...
@@ -267,10 +267,10 @@
<div
class=
"row_title"
>
发展类(B类)
</div>
<!-- 发展类B:按数据库字段补充所有表单项 -->
<el-row
:gutter=
"2
0
"
>
<el-col
:span=
"2
4
"
>
<el-row
:gutter=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
8
0px"
label-width=
"3
4
0px"
label=
"列入企业发展战略性新兴产业工作方案的项目(B1)"
>
<CommonSelector
...
...
@@ -280,9 +280,9 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
8
0px"
label-width=
"3
4
0px"
label=
"粮食、能源、矿产资源保障项目(B2)"
>
<CommonSelector
...
...
@@ -292,9 +292,9 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
8
0px"
label-width=
"3
4
0px"
label=
"传统产业高端化、智能化、绿色化转型升级项目(B3)"
>
<CommonSelector
...
...
@@ -304,9 +304,9 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
8
0px"
label-width=
"3
4
0px"
label=
"支撑企业发展的重点项目(B4)"
>
<CommonSelector
...
...
@@ -316,9 +316,9 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
8
0px"
label-width=
"3
4
0px"
label=
"制造业技术改造项目"
>
<CommonSelector
...
...
@@ -334,10 +334,10 @@
<div
class=
"row_title"
>
关注类(C类)
</div>
<!-- 关注类C:按数据库字段补充所有表单项 -->
<el-row
:gutter=
"2
0
"
>
<el-col
:span=
"2
4
"
>
<el-row
:gutter=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
80
"
label-width=
"3
40px
"
label=
"对外并购类投资项目(C1)"
>
<CommonSelector
...
...
@@ -347,9 +347,9 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
80
"
label-width=
"3
40px
"
label=
"特别监管类项目(C2)"
>
<CommonSelector
...
...
@@ -359,9 +359,9 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
80
"
label-width=
"3
40px
"
label=
"境外特别关注类项目(C3)"
>
<CommonSelector
...
...
@@ -371,9 +371,9 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
80
"
label-width=
"3
40px
"
label=
"对外参股类投资项目(C4)"
>
<CommonSelector
...
...
@@ -383,9 +383,9 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
80
"
label-width=
"3
40px
"
label=
"房地产投资项目(C5)"
>
<CommonSelector
...
...
@@ -395,9 +395,9 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
80
"
label-width=
"3
40px
"
label=
"PPP投资项目(C6)"
>
<CommonSelector
...
...
@@ -407,8 +407,11 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
label-width=
"380"
label=
"两高项目(C7)"
>
<el-col
:span=
"20"
>
<el-form-item
label-width=
"340px"
label=
"两高项目(C7)"
>
<CommonSelector
:radio=
"true"
v-model=
"formData.lgxm"
...
...
@@ -422,10 +425,10 @@
<!-- 管控类D:按数据库字段补充所有表单项 -->
<div
class=
"row_title"
>
管控类(D类)
</div>
<el-row
:gutter=
"2
0
"
>
<el-col
:span=
"2
4
"
>
<el-row
:gutter=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
80
"
label-width=
"3
40px
"
label=
"非主业投资项目(D1)"
>
<CommonSelector
...
...
@@ -435,9 +438,9 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
80
"
label-width=
"3
40px
"
label=
"持牌金融机构(D2)"
>
<CommonSelector
...
...
@@ -447,9 +450,9 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
80
"
label-width=
"3
40px
"
label=
"类金融机构(D3)"
>
<CommonSelector
...
...
@@ -459,9 +462,9 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
80
"
label-width=
"3
40px
"
label=
"其他金融机构(D4)"
>
<CommonSelector
...
...
@@ -471,9 +474,9 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
80
"
label-width=
"3
40px
"
label=
"基金及基金管理公司(D5)"
>
<CommonSelector
...
...
@@ -483,9 +486,9 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"3
80
"
label-width=
"3
40px
"
label=
"创业投资基金(D6)"
>
<CommonSelector
...
...
@@ -501,8 +504,8 @@
</el-collapse-item>
<!-- 最终分类情况:补充长文本输入框 -->
<el-collapse-item
title=
"最终分类情况"
name=
"最终分类情况"
>
<el-row
:gutter=
"2
0
"
>
<el-col
:span=
"2
4
"
>
<el-row
:gutter=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label=
"最终分类情况说明"
>
<el-input
v-model=
"formData.zzflqk"
...
...
@@ -589,7 +592,7 @@
<!-- 年度投资计划:基础信息 -->
<el-collapse-item
title=
"年度投资计划"
name=
"年度投资计划"
>
<el-row
:gutter=
"2
0
"
>
<el-row
:gutter=
"2
4
"
>
<!-- 基础短字段:span12分栏 -->
<el-col
:span=
"8"
>
<el-form-item
label-width=
"240px"
label=
"计划年份"
>
...
...
@@ -722,7 +725,7 @@
</el-form-item>
</el-col>
<!-- 长文本字段:span24通栏,用文本域 -->
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"240px"
label=
"预期实现效果"
>
<el-input
v-model=
"formData.yqSxXg"
...
...
@@ -732,7 +735,7 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"340px"
label=
"2025年投资金额(全口径)目标(决算)与计划差异说明"
...
...
@@ -745,7 +748,7 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"340px"
label=
"2025年计划投资目标(决算)与计划差异说明"
...
...
@@ -758,7 +761,7 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
4
"
>
<el-col
:span=
"2
0
"
>
<el-form-item
label-width=
"340px"
label=
"项目主要风险及主要风险应对举措"
...
...
@@ -794,7 +797,7 @@
title=
"项目年度计划(资金支付口径)"
name=
"项目年度计划(资金支付口径)"
>
<el-row
:gutter=
"2
0
"
>
<el-row
:gutter=
"2
4
"
>
<el-col
:span=
"6"
>
<el-form-item
label-width=
"180px"
label=
"资金支付比例(%)"
>
<el-input
...
...
@@ -937,7 +940,7 @@
title=
"2026年参股单位出资情况修正(单位:万元)"
name=
"2026年参股单位出资情况修正(单位:万元)"
>
<el-row
:gutter=
"2
0
"
>
<el-row
:gutter=
"2
4
"
>
<el-col
:span=
"24"
>
<el-form-item
label-width=
"0"
>
<DynamicTable
...
...
src/views/investingManage/constructionTime.vue
View file @
cc86f528
...
...
@@ -78,18 +78,11 @@ let tableColumns = ref([
showOverflowTooltip
:
true
,
},
{
prop
:
"
xmgsmc
"
,
label
:
"
项目公司名称
"
,
prop
:
"
nd
"
,
label
:
"
年度
"
,
showOverflowTooltip
:
true
,
},
{
prop
:
"ssejqy"
,
label
:
"所属二级企业"
,
showOverflowTooltip
:
true
,
width
:
170
,
},
{
prop
:
"operations"
,
label
:
"操作"
,
...
...
src/views/investingManage/constructionTimeAdd.vue
View file @
cc86f528
...
...
@@ -140,7 +140,7 @@
><el-row
gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
label-width=
"2
8
0px"
label-width=
"2
6
0px"
label=
"项目投资总额(决策值)"
>
<el-input
...
...
@@ -156,7 +156,7 @@
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label-width=
"2
8
0px"
label-width=
"2
6
0px"
label=
"我方资本金出资额-决策值"
>
<el-input
...
...
@@ -171,10 +171,7 @@
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label-width=
"280px"
label=
"投资总额-实际值"
>
<el-form-item
label-width=
"260px"
label=
"投资总额-实际值"
>
<el-input
precision=
"2"
v-model=
"formData.tzzesj"
...
...
@@ -188,7 +185,7 @@
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label-width=
"2
8
0px"
label-width=
"2
6
0px"
label=
"我方资本金出资额--实际值"
>
<el-input
...
...
@@ -203,10 +200,7 @@
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label-width=
"280px"
label=
"投资总额-计划值"
>
<el-form-item
label-width=
"260px"
label=
"投资总额-计划值"
>
<el-input
precision=
"2"
v-model=
"formData.tzzejhz"
...
...
@@ -221,15 +215,14 @@
</el-row>
</el-collapse-item>
<el-collapse-item
<
!-- <
el-collapse-item
:title="dynamicTitles.yearlyUpdateTitle"
:name="dynamicTitles.yearlyUpdateTitle"
>
<el-row gutter="20">
<!-- 第一行:决策目标值相关数字项 -->
<el-col :span="12">
<el-form-item
label-width=
"2
8
0px"
label-width="2
6
0px"
label="本年完成 投资回收决策目标值"
>
<el-input
...
...
@@ -246,7 +239,7 @@
</el-col>
<el-col :span="12">
<el-form-item
label-width=
"2
8
0px"
label-width="2
6
0px"
label="截止本年累计(决策目标值)"
>
<el-input
...
...
@@ -262,10 +255,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label-width=
"280px"
label=
"下一年完成数"
>
<el-form-item label-width="260px" label="下一年完成数">
<el-input
precision="2"
v-model="formData.xynwcs"
...
...
@@ -279,10 +269,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label-width=
"280px"
label=
"本年计划"
>
<el-form-item label-width="260px" label="本年计划">
<el-input
precision="2"
v-model="formData.bnjh"
...
...
@@ -296,10 +283,9 @@
</el-form-item>
</el-col>
<!-- 第二行:实际值相关数字项 -->
<el-col :span="12">
<el-form-item
label-width=
"2
8
0px"
label-width="2
6
0px"
label="本年完成--投资回收实际值"
>
<el-input
...
...
@@ -316,7 +302,7 @@
</el-col>
<el-col :span="12">
<el-form-item
label-width=
"2
8
0px"
label-width="2
6
0px"
label="截止本年累计--投资回收实际值"
>
<el-input
...
...
@@ -332,10 +318,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label-width=
"280px"
label=
"累计欠收"
>
<el-form-item label-width="260px" label="累计欠收">
<el-input
precision="2"
v-model="formData.ljqs"
...
...
@@ -349,7 +332,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label-width=
"2
8
0px"
label=
"完成率"
>
<el-form-item label-width="2
6
0px" label="完成率">
<el-input
precision="2"
v-model="formData.wcl"
...
...
@@ -363,7 +346,6 @@
</el-form-item>
</el-col>
<!-- 第三行及以后:长文本说明项(占满整行) -->
<el-col :span="24">
<el-form-item label="计划与决策目标值差异说明">
<el-input
...
...
@@ -415,9 +397,20 @@
</el-form-item>
</el-col>
</el-row>
</el-collapse-item> -->
<el-collapse-item
:title=
"dynamicTitles.yearlyUpdateTitle"
:name=
"dynamicTitles.yearlyUpdateTitle"
>
<InvestmentRecoveryTable
v-model=
"formData.tzhsjc"
:is-preview=
"isPreview"
table-type=
"plan"
:table-title=
"`${currentYear}年投资回收计划`"
/>
</el-collapse-item>
<el-collapse-item
<
!-- <
el-collapse-item
title="截止12月末累计应收"
name="截止12月末累计应收"
>
...
...
@@ -435,9 +428,9 @@
v-model="formData.jzymljsh"
:is-preview="isPreview"
/>
</el-collapse-item>
</el-collapse-item>
-->
<el-collapse-item
<
!-- <
el-collapse-item
title="投资回收(计划)"
name="投资回收(计划)"
>
...
...
@@ -448,7 +441,7 @@
:showNameColumn="false"
:showTotalColumn="false"
/>
</el-collapse-item>
</el-collapse-item>
-->
<el-collapse-item
:title=
"dynamicTitles.yearlyCompletionTitle"
...
...
@@ -474,6 +467,8 @@
:plan-data=
"formData.tzhsjh"
:decision-data=
"formData.tzhsjc"
:last-year-plan-data=
"formData.lastyeartzhs"
:yearly-plan-data=
"formData.tzhsjc"
:yearly-completion-data=
"formData.tzhswcqkndgx"
:current-year=
"currentYear"
/>
</el-collapse-item>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment