明树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 diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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,
};
}
This diff is collapsed.
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,
};
}
This diff is collapsed.
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