Commit 4ef853eb authored by 高滢's avatar 高滢

feat(资金计划): 资金来源表格六列

parent b3dd25b9
...@@ -59,3 +59,6 @@ ul { ...@@ -59,3 +59,6 @@ ul {
.tableshow { .tableshow {
display: revert; display: revert;
} }
.vben-editable-cell__action{
display: none;
}
...@@ -219,8 +219,6 @@ import {onMounted, ref, unref} from 'vue'; ...@@ -219,8 +219,6 @@ import {onMounted, ref, unref} from 'vue';
dataIndex: 'totalOwnFunds', dataIndex: 'totalOwnFunds',
width: 180, width: 180,
}, },
],
},
{ {
title: '资金缺口', title: '资金缺口',
dataIndex: 'fundingGap', dataIndex: 'fundingGap',
...@@ -228,6 +226,8 @@ import {onMounted, ref, unref} from 'vue'; ...@@ -228,6 +226,8 @@ import {onMounted, ref, unref} from 'vue';
}, },
], ],
}, },
],
},
]; ];
} else { } else {
return [ return [
...@@ -295,8 +295,6 @@ import {onMounted, ref, unref} from 'vue'; ...@@ -295,8 +295,6 @@ import {onMounted, ref, unref} from 'vue';
dataIndex: 'totalOwnFunds', dataIndex: 'totalOwnFunds',
width: 180, width: 180,
}, },
],
},
{ {
title: '资金缺口', title: '资金缺口',
dataIndex: 'fundingGap', dataIndex: 'fundingGap',
...@@ -304,6 +302,8 @@ import {onMounted, ref, unref} from 'vue'; ...@@ -304,6 +302,8 @@ import {onMounted, ref, unref} from 'vue';
}, },
], ],
}, },
],
},
]; ];
} }
} }
......
...@@ -31,29 +31,10 @@ ...@@ -31,29 +31,10 @@
</CollapseContainer> </CollapseContainer>
<BasicForm :loading="loading" @register="item.Form[0]" /> <BasicForm :loading="loading" @register="item.Form[0]" />
<div style="display: flex; align-items: flex-start"> <div style="display: flex; align-items: flex-start">
<div style="width: 500px; height: 400px"> <div style="width: 100%; height: 400px">
<div style="padding: 0 30px"> <div style="padding: 0 30px">
<span style="color: #ed6f6f">{{ '* ' }}</span> <span style="color: #ed6f6f">{{ '* ' }}</span>
<span>{{ item.year + '资金来源' }}</span> <span>{{ item.year + '年资金来源' }}</span>
</div>
<BasicTable
@register="item.table"
@edit-change="
(e) => {
beforeEditSubmit(item, index);
}
"
:beforeEditSubmit="
(e) => {
beforeEditSubmit(item, index);
}
"
/>
</div>
<div style="width: 800px; height: 400px">
<div style="padding: 0 30px">
<span style="color: #ed6f6f">{{ '* ' }}</span>
<span>{{ item.year + '年资金计划额' }}</span>
</div> </div>
<BasicTable <BasicTable
@register="item.tableTwo" @register="item.tableTwo"
...@@ -67,6 +48,7 @@ ...@@ -67,6 +48,7 @@
beforeEditSubmitTwo(item, index); beforeEditSubmitTwo(item, index);
} }
" "
:scroll="{ x: 2000, y:400}"
/> />
</div> </div>
</div> </div>
...@@ -91,9 +73,7 @@ ...@@ -91,9 +73,7 @@
import { router } from '@/router'; import { router } from '@/router';
import { BasicTable, useTable } from '@/components/Table'; import { BasicTable, useTable } from '@/components/Table';
import { import {
getBasicColumns,
getBasicColumnsTwo, getBasicColumnsTwo,
basicColumnsDisabled,
basicColumnsTwoDisabled, basicColumnsTwoDisabled,
} from './tableData'; } from './tableData';
import { ref, nextTick, onMounted, unref, reactive } from 'vue'; import { ref, nextTick, onMounted, unref, reactive } from 'vue';
...@@ -117,24 +97,6 @@ ...@@ -117,24 +97,6 @@
const engineerId = ref(''); const engineerId = ref('');
const routeId = ref(''); const routeId = ref('');
let show = ref<Recordable[]>([]); let show = ref<Recordable[]>([]);
function beforeEditSubmit(item, index) {
let { getDataSource } = item.table[1];
const res = getDataSource();
const totalNo = res.reduce((prev, next) => {
prev += Number(next.value);
return prev;
}, 0);
tabsFormSchema[index].table[1].setProps({
summaryData: [
{
quarter: '合计',
value: totalNo,
},
],
});
return true;
}
function beforeEditSubmitTwo(item, index) { function beforeEditSubmitTwo(item, index) {
let { getDataSource } = item.tableTwo[1]; let { getDataSource } = item.tableTwo[1];
const res = getDataSource(); const res = getDataSource();
...@@ -154,6 +116,14 @@ ...@@ -154,6 +116,14 @@
prev += Number(next.governmentGrant); prev += Number(next.governmentGrant);
return prev; return prev;
}, 0); }, 0);
const totalNofiv = res.reduce((prev, next) => {
prev += Number(next.fundingGap);
return prev;
}, 0);
const totalNosix = res.reduce((prev, next) => {
prev += Number(next.totalValue);
return prev;
}, 0);
tabsFormSchema[index].tableTwo[1].setProps({ tabsFormSchema[index].tableTwo[1].setProps({
summaryData: [ summaryData: [
{ {
...@@ -162,6 +132,8 @@ ...@@ -162,6 +132,8 @@
bankFinancing: totalNoTwo, bankFinancing: totalNoTwo,
ownFunds: totalNoThree, ownFunds: totalNoThree,
governmentGrant: totalNofour, governmentGrant: totalNofour,
fundingGap: totalNofiv,
totalValue: totalNosix,
}, },
], ],
}); });
...@@ -203,21 +175,25 @@ ...@@ -203,21 +175,25 @@
let res = await getItem({ id }); let res = await getItem({ id });
console.log('后端返回的数据', res); console.log('后端返回的数据', res);
for (let i = 0; i < res.length; i++) { for (let i = 0; i < res.length; i++) {
const amountList = res[i].amountList; // const amountList = res[i].amountList;
let num = 0; // let num = 0;
for (let a = 0; a < amountList.length; a++) { // for (let a = 0; a < amountList.length; a++) {
num += Number(amountList[a].value); // num += Number(amountList[a].value);
} // }
const sourceList = res[i].sourceList; const sourceList = res[i].sourceList;
let specialBondNum = 0; let specialBondNum = 0;
let bankFinancingNum = 0; let bankFinancingNum = 0;
let ownFundsNum = 0; let ownFundsNum = 0;
let governmentGrantNum = 0; let governmentGrantNum = 0;
let totalValueNum = 0;
let fundingGapNum = 0;
for (let a = 0; a < sourceList.length; a++) { for (let a = 0; a < sourceList.length; a++) {
specialBondNum += Number(sourceList[a].specialBond); specialBondNum += Number(sourceList[a].specialBond);
bankFinancingNum += Number(sourceList[a].bankFinancing); bankFinancingNum += Number(sourceList[a].bankFinancing);
ownFundsNum += Number(sourceList[a].ownFunds); ownFundsNum += Number(sourceList[a].ownFunds);
governmentGrantNum += Number(sourceList[a].governmentGrant); governmentGrantNum += Number(sourceList[a].governmentGrant);
totalValueNum += Number(sourceList[a].totalValue);
fundingGapNum += Number(sourceList[a].fundingGap);
} }
const item = { const item = {
proId: res[i].proId, proId: res[i].proId,
...@@ -231,16 +207,6 @@ ...@@ -231,16 +207,6 @@
baseFormConfig, baseFormConfig,
) as FormProps, ) as FormProps,
), ),
table: useTable({
title: '表尾行合计示例',
columns: disabled.value == 1 ? basicColumnsDisabled() : getBasicColumns(),
showSummary: true,
summaryData: [{ quarter: '合计', value: num }],
maxHeight: 180,
maxWidth: 200,
showIndexColumn: false,
pagination: false,
}),
tableTwo: useTable({ tableTwo: useTable({
title: '表尾行合计示例', title: '表尾行合计示例',
columns: disabled.value == 1 ? basicColumnsTwoDisabled() : getBasicColumnsTwo(), columns: disabled.value == 1 ? basicColumnsTwoDisabled() : getBasicColumnsTwo(),
...@@ -252,6 +218,8 @@ ...@@ -252,6 +218,8 @@
bankFinancing: bankFinancingNum, bankFinancing: bankFinancingNum,
ownFunds: ownFundsNum, ownFunds: ownFundsNum,
governmentGrant: governmentGrantNum, governmentGrant: governmentGrantNum,
totalValue: totalValueNum,
fundingGap: fundingGapNum,
}, },
], ],
maxHeight: 180, maxHeight: 180,
...@@ -267,7 +235,7 @@ ...@@ -267,7 +235,7 @@
if (formData.value.subList === undefined) { if (formData.value.subList === undefined) {
formData.value.subList = []; formData.value.subList = [];
} }
setTable(item.table[1], info.amountList); // setTable(item.table[1], info.amountList);
setTable(item.tableTwo[1], info.sourceList); setTable(item.tableTwo[1], info.sourceList);
nextTick(() => { nextTick(() => {
setFieldsValue(info); setFieldsValue(info);
...@@ -286,7 +254,7 @@ ...@@ -286,7 +254,7 @@
proId: string; proId: string;
name: string; name: string;
show?: boolean; show?: boolean;
sumData?: any; // sumData?: any;
sumDatatwo?: any; sumDatatwo?: any;
forceRender?: boolean; forceRender?: boolean;
Form: UseFormReturnType; Form: UseFormReturnType;
...@@ -336,12 +304,6 @@ ...@@ -336,12 +304,6 @@
baseFormConfig, baseFormConfig,
) as FormProps, ) as FormProps,
), ),
sumData: [
{
quarter: '合计',
value: 0,
},
],
sumDataTwo: [ sumDataTwo: [
{ {
quarter: '合计', quarter: '合计',
...@@ -349,21 +311,13 @@ ...@@ -349,21 +311,13 @@
bankFinancing: 0, bankFinancing: 0,
ownFunds: 0, ownFunds: 0,
governmentGrant: 0, governmentGrant: 0,
fundingGap: 0,
totalValue: 0,
}, },
], ],
table: [], // table: [],
tableTwo: [], tableTwo: [],
}; };
item.table = useTable({
title: '表尾行合计示例',
columns: getBasicColumns(),
showSummary: true,
summaryData: item.sumData,
maxHeight: 180,
maxWidth: 200,
showIndexColumn: false,
pagination: false,
});
item.tableTwo = useTable({ item.tableTwo = useTable({
title: '表尾行合计示例', title: '表尾行合计示例',
columns: getBasicColumnsTwo(), columns: getBasicColumnsTwo(),
...@@ -377,24 +331,6 @@ ...@@ -377,24 +331,6 @@
const { setFieldsValue } = item.Form[1]; const { setFieldsValue } = item.Form[1];
tabsFormSchema.push(item); tabsFormSchema.push(item);
setTable(item.table[1], [
{
quarter: '一季度',
value: '',
},
{
quarter: '二季度',
value: '',
},
{
quarter: '三季度',
value: '',
},
{
quarter: '四季度',
value: '',
},
]);
setTable(item.tableTwo[1], [ setTable(item.tableTwo[1], [
{ {
quarter: '一季度', quarter: '一季度',
...@@ -402,6 +338,8 @@ ...@@ -402,6 +338,8 @@
bankFinancing: '', bankFinancing: '',
ownFunds: '', ownFunds: '',
governmentGrant: '', governmentGrant: '',
fundingGap: '',
totalValue: '',
}, },
{ {
quarter: '二季度', quarter: '二季度',
...@@ -409,6 +347,8 @@ ...@@ -409,6 +347,8 @@
bankFinancing: '', bankFinancing: '',
ownFunds: '', ownFunds: '',
governmentGrant: '', governmentGrant: '',
fundingGap: '',
totalValue: '',
}, },
{ {
quarter: '三季度', quarter: '三季度',
...@@ -416,6 +356,8 @@ ...@@ -416,6 +356,8 @@
bankFinancing: '', bankFinancing: '',
ownFunds: '', ownFunds: '',
governmentGrant: '', governmentGrant: '',
fundingGap: '',
totalValue: '',
}, },
{ {
quarter: '四季度', quarter: '四季度',
...@@ -423,6 +365,8 @@ ...@@ -423,6 +365,8 @@
bankFinancing: '', bankFinancing: '',
ownFunds: '', ownFunds: '',
governmentGrant: '', governmentGrant: '',
fundingGap: '',
totalValue: '',
}, },
]); ]);
nextTick(() => { nextTick(() => {
...@@ -435,6 +379,7 @@ ...@@ -435,6 +379,7 @@
projectOverview: info.projectOverview, projectOverview: info.projectOverview,
fundingSource: info.fundingSource, fundingSource: info.fundingSource,
implementingEntity: info.implementingEntity, implementingEntity: info.implementingEntity,
projectInvestment: info.projectInvestment,
}); });
}); });
// } // }
...@@ -474,7 +419,6 @@ ...@@ -474,7 +419,6 @@
{ field: 'constructionNature', required: false }, { field: 'constructionNature', required: false },
{ field: 'time', required: false }, { field: 'time', required: false },
{ field: 'imageProgress', required: false }, { field: 'imageProgress', required: false },
{ field: 'fundingGap', required: false },
]); ]);
} else { } else {
updateSchema([ updateSchema([
...@@ -491,7 +435,6 @@ ...@@ -491,7 +435,6 @@
{ field: 'constructionNature', required: planType.value === '计划投资项目' }, { field: 'constructionNature', required: planType.value === '计划投资项目' },
{ field: 'time', required: planType.value === '计划投资项目' }, { field: 'time', required: planType.value === '计划投资项目' },
{ field: 'imageProgress', required: planType.value === '计划投资项目' }, { field: 'imageProgress', required: planType.value === '计划投资项目' },
{ field: 'fundingGap', required: true },
]); ]);
} }
} }
...@@ -504,25 +447,23 @@ ...@@ -504,25 +447,23 @@
let item = tabsFormSchema[i]; let item = tabsFormSchema[i];
if (item.show) { if (item.show) {
const { validate, getFieldsValue } = item.Form[1]; const { validate, getFieldsValue } = item.Form[1];
let data = getData(item.table[1]); // let data = getData(item.table[1]);
let dataTwo = getData(item.tableTwo[1]); let dataTwo = getData(item.tableTwo[1]);
await validate(); await validate();
let res = getFieldsValue(); let res = getFieldsValue();
console.log('表单的数据', res); console.log('表单的数据', res);
for (let a = 0; a < data.length; a++) {
data[a].value = Number(data[a].value);
}
for (let j = 0; j < dataTwo.length; j++) { for (let j = 0; j < dataTwo.length; j++) {
dataTwo[j].governmentGrant = Number(dataTwo[j].governmentGrant); dataTwo[j].governmentGrant = Number(dataTwo[j].governmentGrant);
dataTwo[j].specialBond = Number(dataTwo[j].specialBond); dataTwo[j].specialBond = Number(dataTwo[j].specialBond);
dataTwo[j].bankFinancing = Number(dataTwo[j].bankFinancing); dataTwo[j].bankFinancing = Number(dataTwo[j].bankFinancing);
dataTwo[j].ownFunds = Number(dataTwo[j].ownFunds); dataTwo[j].ownFunds = Number(dataTwo[j].ownFunds);
dataTwo[j].totalValue = Number(dataTwo[j].totalValue);
dataTwo[j].fundingGap = Number(dataTwo[j].fundingGap);
} }
var obj = { var obj = {
startTime: res.time ? res.time[0] : '', startTime: res.time ? res.time[0] : '',
endTime: res.time ? res.time[1] : '', endTime: res.time ? res.time[1] : '',
proId: item.proId, proId: item.proId,
amountList: data,
sourceList: dataTwo, sourceList: dataTwo,
}; };
obj = deepMerge(obj, res); obj = deepMerge(obj, res);
...@@ -541,11 +482,7 @@ ...@@ -541,11 +482,7 @@
addItemData.businessType = '已竣工验收项目陈欠资金计划'; addItemData.businessType = '已竣工验收项目陈欠资金计划';
await addItemApi(addItemData); await addItemApi(addItemData);
} else if (!isUpdate.value) { } else if (!isUpdate.value) {
const res = await addItem(unref(formData)); await addItem(unref(formData));
addItemData.operateType = operateType.add;
addItemData.businessId = res;
addItemData.businessType = '已竣工验收项目陈欠资金计划';
await addItemApi(addItemData);
} }
loading.value = true; loading.value = true;
if (isSubmit === '1') { if (isSubmit === '1') {
......
import { FormProps, FormSchema, BasicColumn } from '@/components/Table'; import { FormSchema, BasicColumn } from '@/components/Table';
export function getBasicColumns(): BasicColumn[] { export function getBasicColumns(): BasicColumn[] {
return [ return [
...@@ -10,9 +10,7 @@ export function getBasicColumns(): BasicColumn[] { ...@@ -10,9 +10,7 @@ export function getBasicColumns(): BasicColumn[] {
{ {
title: '数值(万元)', title: '数值(万元)',
dataIndex: 'value', dataIndex: 'value',
width: 150, width: 80,
// sorter: true,
// defaultHidden: true,
edit: true, edit: true,
editable: true, editable: true,
editRule: true, editRule: true,
...@@ -31,9 +29,7 @@ export function basicColumnsDisabled(): BasicColumn[] { ...@@ -31,9 +29,7 @@ export function basicColumnsDisabled(): BasicColumn[] {
{ {
title: '数值(万元)', title: '数值(万元)',
dataIndex: 'value', dataIndex: 'value',
width: 150, width: 80,
// sorter: true,
// defaultHidden: true,
editComponent: 'InputNumber', editComponent: 'InputNumber',
}, },
]; ];
...@@ -44,52 +40,69 @@ export function getBasicColumnsTwo(): BasicColumn[] { ...@@ -44,52 +40,69 @@ export function getBasicColumnsTwo(): BasicColumn[] {
{ {
title: '季度', title: '季度',
dataIndex: 'quarter', dataIndex: 'quarter',
width: 80, width: 50,
fixed: 'left',
}, },
{ {
title: '政府拨款', title: '政府拨款(万元)',
dataIndex: 'governmentGrant', dataIndex: 'governmentGrant',
width: 150, width: 50,
// sorter: true,
// defaultHidden: true,
edit: true, edit: true,
editable: true, editable: true,
editRule: true, editRule: true,
editComponent: 'InputNumber', editComponent: 'InputNumber',
}, },
{ {
title: '专项债拨款', title: '专项债拨款(万元)',
dataIndex: 'specialBond', dataIndex: 'specialBond',
width: 150, width: 50,
// sorter: true,
// defaultHidden: true,
edit: true, edit: true,
editable: true, editable: true,
editRule: true, editRule: true,
editComponent: 'InputNumber', editComponent: 'InputNumber',
}, },
{ {
title: '银行融资', title: '银行融资(万元)',
dataIndex: 'bankFinancing', dataIndex: 'bankFinancing',
width: 150, width: 50,
// sorter: true,
// defaultHidden: true,
edit: true, edit: true,
editable: true, editable: true,
editRule: true, editRule: true,
editComponent: 'InputNumber', editComponent: 'InputNumber',
}, },
{ {
title: '自有资金', title: '自有资金(万元)',
dataIndex: 'ownFunds', dataIndex: 'ownFunds',
width: 150, width: 50,
// sorter: true, edit: true,
// defaultHidden: true, editable: true,
editRule: true,
editComponent: 'InputNumber',
},
{
title: '资金缺口(万元)',
dataIndex: 'fundingGap',
width: 50,
edit: true, edit: true,
editable: true, editable: true,
editRule: true, editRule: true,
editComponent: 'InputNumber', editComponent: 'InputNumber',
}, },
{
title: '资金计划额(万元)',
dataIndex: 'totalValue',
width: 50,
customRender: ({ record }) => {
// 这里可以根据record的其他字段计算值
record.totalValue =
record.ownFunds +
record.specialBond +
record.bankFinancing +
record.governmentGrant +
record.fundingGap; // 计算新值
return record.totalValue; // 返回计算后的值
},
},
]; ];
} }
...@@ -104,32 +117,36 @@ export function basicColumnsTwoDisabled(): BasicColumn[] { ...@@ -104,32 +117,36 @@ export function basicColumnsTwoDisabled(): BasicColumn[] {
title: '政府拨款', title: '政府拨款',
dataIndex: 'governmentGrant', dataIndex: 'governmentGrant',
width: 150, width: 150,
// sorter: true,
// defaultHidden: true,
editComponent: 'InputNumber', editComponent: 'InputNumber',
}, },
{ {
title: '专项债拨款', title: '专项债拨款',
dataIndex: 'specialBond', dataIndex: 'specialBond',
width: 150, width: 150,
// sorter: true,
// defaultHidden: true,
editComponent: 'InputNumber', editComponent: 'InputNumber',
}, },
{ {
title: '银行融资', title: '银行融资',
dataIndex: 'bankFinancing', dataIndex: 'bankFinancing',
width: 150, width: 150,
// sorter: true,
// defaultHidden: true,
editComponent: 'InputNumber', editComponent: 'InputNumber',
}, },
{ {
title: '自有资金', title: '自有资金',
dataIndex: 'ownFunds', dataIndex: 'ownFunds',
width: 150, width: 150,
// sorter: true, editComponent: 'InputNumber',
// defaultHidden: true, },
{
title: '资金缺口(万元)',
dataIndex: 'fundingGap',
width: 50,
editComponent: 'InputNumber',
},
{
title: '资金计划额(万元)',
dataIndex: 'totalValue',
width: 50,
editComponent: 'InputNumber', editComponent: 'InputNumber',
}, },
]; ];
...@@ -262,6 +279,21 @@ export function formSchema(year, planType): FormSchema[] { ...@@ -262,6 +279,21 @@ export function formSchema(year, planType): FormSchema[] {
}, },
colProps: { span: 7, offset: 1 }, colProps: { span: 7, offset: 1 },
}, },
{
field: 'fundSource',
label: '资金来源',
required: true,
component: 'Select',
componentProps: {
options: [
{ label: '政府投资项目', value: '政府投资项目' },
{ label: '公司投资项目', value: '公司投资项目' },
{ label: '专项债项目', value: '专项债项目' },
{ label: '承建项目', value: '承建项目' },
],
},
colProps: { span: 7, offset: 1 },
},
{ {
field: 'time', field: 'time',
component: 'RangePicker', component: 'RangePicker',
...@@ -303,17 +335,17 @@ export function formSchema(year, planType): FormSchema[] { ...@@ -303,17 +335,17 @@ export function formSchema(year, planType): FormSchema[] {
component: 'Input', component: 'Input',
colProps: { span: 7, offset: 1 }, colProps: { span: 7, offset: 1 },
}, },
{ // {
field: 'fundingGap', // field: 'fundingGap',
label: '2024资金缺口:', // label: '2024资金缺口:',
labelWidth: 200, // labelWidth: 200,
required: true, // required: true,
component: 'InputNumber', // component: 'InputNumber',
componentProps: { // componentProps: {
addonAfter: '万元', // addonAfter: '万元',
}, // },
colProps: { span: 7, offset: 1 }, // colProps: { span: 7, offset: 1 },
}, // },
{ {
label: '备注', label: '备注',
field: 'remarks', field: 'remarks',
......
...@@ -49,6 +49,16 @@ export let formSchema: FormSchema[] = [ ...@@ -49,6 +49,16 @@ export let formSchema: FormSchema[] = [
style: { width: '100%' }, style: { width: '100%' },
}, },
}, },
{
field: 'projectInvestment',
label: '立项总投资',
required: true,
component: 'InputNumber',
componentProps: {
addonAfter: '万元',
},
labelWidth: '140px',
},
{ {
field: 'isReserveProject', field: 'isReserveProject',
label: '储备项目', label: '储备项目',
......
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