项目同步
This commit is contained in:
parent
0827182db1
commit
4c8a962edd
|
@ -7,11 +7,11 @@ const rateLevelConfig: RateLevelConfig = {
|
||||||
// AR: { badge: "3", ranking: "20%" },
|
// AR: { badge: "3", ranking: "20%" },
|
||||||
// BR: { ranking: "30%" },
|
// BR: { ranking: "30%" },
|
||||||
// CR: { ranking: "40%" },
|
// CR: { ranking: "40%" },
|
||||||
AAAʀ: { badge: "1", ranking: "5%" },
|
AAA: { badge: "1", ranking: "5%" },
|
||||||
AAʀ: { badge: "2", ranking: "10" },
|
AA: { badge: "2", ranking: "10" },
|
||||||
Aʀ: { badge: "3", ranking: "20%" },
|
A: { badge: "3", ranking: "20%" },
|
||||||
Bʀ: { ranking: "30%" },
|
B: { ranking: "30%" },
|
||||||
Cʀ: { ranking: "40%" }
|
C: { ranking: "40%" }
|
||||||
// B: { ranking: "50%" },
|
// B: { ranking: "50%" },
|
||||||
// CCC: { ranking: "60%" },
|
// CCC: { ranking: "60%" },
|
||||||
// CC: { ranking: "80%" },
|
// CC: { ranking: "80%" },
|
||||||
|
|
|
@ -41,12 +41,25 @@ interface Indicator {
|
||||||
得分: number;
|
得分: number;
|
||||||
档位: string;
|
档位: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface 指标数值与得分{
|
||||||
|
指标: string
|
||||||
|
数值: number
|
||||||
|
单位: string
|
||||||
|
权重: number
|
||||||
|
得分: number
|
||||||
|
}
|
||||||
interface RateResContent {
|
interface RateResContent {
|
||||||
final_scope: number;
|
评级结果:{
|
||||||
final_level: string;
|
级别:string,
|
||||||
level: string;
|
总分:number
|
||||||
total_score: number;
|
}
|
||||||
indicator: Indicator[];
|
指标数值与得分:指标数值与得分[]
|
||||||
|
// final_scope: number;
|
||||||
|
// final_level: string;
|
||||||
|
// level: string;
|
||||||
|
// total_score: number;
|
||||||
|
// indicator: Indicator[];
|
||||||
}
|
}
|
||||||
|
|
||||||
const RateDataMock: RateData[] = [
|
const RateDataMock: RateData[] = [
|
||||||
|
|
|
@ -258,17 +258,18 @@
|
||||||
:column-config="scope.row"
|
:column-config="scope.row"
|
||||||
v-if="tableEditAble"
|
v-if="tableEditAble"
|
||||||
class="max-w-[12rem]"
|
class="max-w-[12rem]"
|
||||||
:model-value="manDataEditTemp[scope.row?.key]"
|
:model-value="manDataEditTemp['经营问卷'][scope.row?.key]"
|
||||||
:size="'small'"
|
:size="'small'"
|
||||||
@update:model-value="(newVal)=>manDataEditTemp[scope.row?.key] = newVal"
|
@update:model-value="(newVal)=>manDataEditTemp['经营问卷'][scope.row?.key] = newVal"
|
||||||
></EditFormItem>
|
></EditFormItem>
|
||||||
<div v-else>{{ manDataEditTemp[scope.row?.key] }}</div>
|
<div v-else>{{ manDataEditTemp['经营问卷'][scope.row?.key] }}</div>
|
||||||
</template>
|
</template>
|
||||||
<!-- <template #default="scope">-->
|
<!-- <template #default="scope">-->
|
||||||
<!-- {{ manDataEditTemp["问卷数据"][scope.row?.key] }}-->
|
<!-- {{ manDataEditTemp["问卷数据"][scope.row?.key] }}-->
|
||||||
<!-- </template>-->
|
<!-- </template>-->
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<div class="flex pt-2 items-center">
|
<div class="flex pt-2 items-center">
|
||||||
<div class="ml-auto mr-2">
|
<div class="ml-auto mr-2">
|
||||||
<span class="mr-1">编辑
|
<span class="mr-1">编辑
|
||||||
|
@ -282,11 +283,11 @@
|
||||||
</div>
|
</div>
|
||||||
<div v-if="detailEditTab == '企业填报数据-财报'">
|
<div v-if="detailEditTab == '企业填报数据-财报'">
|
||||||
<el-table
|
<el-table
|
||||||
height="65vh"
|
height="60vh"
|
||||||
max-height="65vh"
|
max-height="60vh"
|
||||||
:span-method="arraySpanMethod"
|
:span-method="arraySpanMethod"
|
||||||
style="overflow-x: hidden"
|
style="overflow-x: hidden"
|
||||||
:data="bjDataConfig.企业填报数据.财报.columns"
|
:data="bjDataConfig.企业填报数据.财报.columns.filter(item=>item.key!=='是否审计' && item.key!=='会计事务所')"
|
||||||
border
|
border
|
||||||
>
|
>
|
||||||
<el-table-column align="center" label="科目">
|
<el-table-column align="center" label="科目">
|
||||||
|
@ -297,26 +298,28 @@
|
||||||
>
|
>
|
||||||
{{ scope.row?.name }}
|
{{ scope.row?.name }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-else>
|
<div v-else>
|
||||||
{{ scope.row?.name }}
|
{{ scope.row?.name }}
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
v-for="item in Object.keys(manDataEditTemp['财报数据'])"
|
v-for="item in ['2020年','2021年','2022年']"
|
||||||
:label="item"
|
:label="item"
|
||||||
align="center"
|
align="center"
|
||||||
>
|
>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<EditFormItem
|
<div v-if="tableEditAble">
|
||||||
:size="'small'"
|
<EditFormItem
|
||||||
v-if="tableEditAble"
|
:size="'small'"
|
||||||
:column-config="scope.row"
|
:column-config="scope.row"
|
||||||
class="max-w-[12rem]"
|
class="max-w-[12rem]"
|
||||||
:model-value='manDataEditTemp["财报数据"][item][scope.row?.key]'
|
:model-value='manDataEditTemp["财务问卷"][item][scope.row?.key]'
|
||||||
@update:model-value='(newVal)=>manDataEditTemp["财报数据"][ item ][scope.row?.key] = newVal'
|
@update:model-value='(newVal)=>manDataEditTemp["财务问卷"][ item ][scope.row?.key] = newVal'
|
||||||
></EditFormItem>
|
></EditFormItem>
|
||||||
<div v-else>{{ manDataEditTemp["财报数据"][item][scope.row?.key] }}</div>
|
</div>
|
||||||
|
<div v-else>{{ manDataEditTemp["财务问卷"][item][scope.row?.key] }}</div>
|
||||||
</template>
|
</template>
|
||||||
<!-- <template #default="scope">-->
|
<!-- <template #default="scope">-->
|
||||||
<!-- {{-->
|
<!-- {{-->
|
||||||
|
@ -327,6 +330,22 @@
|
||||||
<!-- </template>-->
|
<!-- </template>-->
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
<div class="mt-4">
|
||||||
|
<span class=" mx-2 " v-for="item in ['是否审计','会计事务所']">
|
||||||
|
<span class="mx-2 ">{{ item }}:</span>
|
||||||
|
<span v-if="tableEditAble">
|
||||||
|
<EditFormItem
|
||||||
|
:size="'small'"
|
||||||
|
:column-config="bjDataConfig.企业填报数据.财报.columns.find(col=>col.key==item)"
|
||||||
|
class="max-w-[12rem]"
|
||||||
|
:model-value='manDataEditTemp["财务问卷"][item]'
|
||||||
|
@update:model-value='(newVal)=>manDataEditTemp["财务问卷"][ item] = newVal'
|
||||||
|
></EditFormItem>
|
||||||
|
</span>
|
||||||
|
<span v-else>{{ manDataEditTemp["财务问卷"][item] }}</span>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
</div>
|
||||||
<div class="flex pt-2 items-center">
|
<div class="flex pt-2 items-center">
|
||||||
<div class="ml-auto mr-2">
|
<div class="ml-auto mr-2">
|
||||||
<span class="mr-1">编辑
|
<span class="mr-1">编辑
|
||||||
|
@ -433,11 +452,12 @@ const detailEditTab = ref("企业填报数据-问卷");
|
||||||
const tableEditAble = ref(false)
|
const tableEditAble = ref(false)
|
||||||
const rowTemp = ref<RateData | null>(null);
|
const rowTemp = ref<RateData | null>(null);
|
||||||
const manDataEditTemp = ref({
|
const manDataEditTemp = ref({
|
||||||
"问卷数据": {},
|
"经营问卷": {},
|
||||||
"财报数据": {
|
"财务问卷": {
|
||||||
"2023": {},
|
资产负债表: {},
|
||||||
"2022": {},
|
利润表: {},
|
||||||
"2021": {},
|
是否审计: null,
|
||||||
|
会计事务所: null
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -522,15 +542,16 @@ function showDetailEdit(row: RateData) {
|
||||||
rowTemp.value = res.data
|
rowTemp.value = res.data
|
||||||
if (!rowTemp.value?.man_data) {
|
if (!rowTemp.value?.man_data) {
|
||||||
manDataEditTemp.value = {
|
manDataEditTemp.value = {
|
||||||
"问卷数据": {},
|
"经营问卷": {},
|
||||||
"财报数据": {
|
"财务问卷": {
|
||||||
"2023": {},
|
资产负债表: {},
|
||||||
"2022": {},
|
利润表: {},
|
||||||
"2021": {},
|
是否审计: null,
|
||||||
|
会计事务所: null
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
// manDataEditTemp.value = JSON.parse(rowTemp.value.man_data);
|
manDataEditTemp.value = JSON.parse(rowTemp.value.man_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (!rowTemp.value?.file_data) {
|
// if (!rowTemp.value?.file_data) {
|
||||||
|
@ -557,7 +578,7 @@ function showDetailEdit(row: RateData) {
|
||||||
|
|
||||||
const arraySpanMethod = ({row, column, rowIndex, columnIndex}) => {
|
const arraySpanMethod = ({row, column, rowIndex, columnIndex}) => {
|
||||||
if (row.type == "label") {
|
if (row.type == "label") {
|
||||||
return [1, Object.keys(manDataEditTemp.value['财报数据']).length + 1];
|
return [1, 3 + 1];
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -128,13 +128,17 @@
|
||||||
prop="rate_time"
|
prop="rate_time"
|
||||||
width="180"
|
width="180"
|
||||||
></el-table-column>
|
></el-table-column>
|
||||||
<el-table-column align="center" label="操作" width="270">
|
<el-table-column align="center" label="操作" width="340">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div class="flex flex-c">
|
<div class="flex flex-c">
|
||||||
<el-button type="success" @click="doRate(scope.row)" size="small"
|
<el-button type="success" @click="doRate(scope.row)" size="small"
|
||||||
>评级
|
>评级
|
||||||
</el-button
|
</el-button
|
||||||
>
|
>
|
||||||
|
<el-button type="success" @click="downReport(scope.row)" size="small"
|
||||||
|
>报告下载
|
||||||
|
</el-button
|
||||||
|
>
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
@click="doPublish(scope.row)"
|
@click="doPublish(scope.row)"
|
||||||
|
@ -190,8 +194,8 @@
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<div style="font-size: 1.1rem" class="flex">
|
<div style="font-size: 1.1rem" class="flex">
|
||||||
<div>{{ rowTemp.company_name }}</div>
|
<div>{{ rowTemp.company_name }}</div>
|
||||||
<div class="ml-8">等级:{{ detailData.final_level }}</div>
|
<div class="ml-8">等级:{{ detailData.评级结果.级别 }}</div>
|
||||||
<div class="ml-8">得分:{{ detailData.final_scope }}</div>
|
<div class="ml-8">得分:{{ detailData.评级结果.总分 }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="ml-auto flex flex-c" style="font-size: 0.9rem">
|
<div class="ml-auto flex flex-c" style="font-size: 0.9rem">
|
||||||
|
@ -205,63 +209,55 @@
|
||||||
<div class="flex-1">
|
<div class="flex-1">
|
||||||
<el-tabs v-model="activeName">
|
<el-tabs v-model="activeName">
|
||||||
<el-tab-pane label="模型指标" name="模型指标">
|
<el-tab-pane label="模型指标" name="模型指标">
|
||||||
<el-table :data="detailData.indicator" height="68vh" border>
|
<el-table :data="detailData.指标数值与得分" height="68vh" border>
|
||||||
<el-table-column prop="一级指标" label="一级指标">
|
<el-table-column prop="指标" label="指标" width="320">
|
||||||
<template #default="scope">
|
<!-- <template #default="scope">-->
|
||||||
{{ ellipsis(scope.row["一级指标"]) }}
|
<!-- {{ scope.row["指标"] }}-->
|
||||||
</template>
|
<!-- </template>-->
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="二级指标" label="二级指标">
|
<el-table-column prop="数值" label="数值">
|
||||||
<template #default="scope">
|
|
||||||
{{ ellipsis(scope.row["二级指标"]) }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="三级指标" label="三级指标">
|
<el-table-column prop="单位" label="单位">
|
||||||
<template #default="scope">
|
|
||||||
{{ ellipsis(scope.row["三级指标"]) }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="四级指标" label="四级指标">
|
<el-table-column prop="权重" label="权重">
|
||||||
<template #default="scope">
|
|
||||||
{{ ellipsis(scope.row["四级指标"]) }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="数值" label="实际值">
|
<el-table-column prop="得分" label="得分">
|
||||||
<template #default="scope">
|
|
||||||
{{ ellipsis(scope.row["数值"]) }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="单位" label="单位"></el-table-column>
|
|
||||||
<el-table-column
|
|
||||||
prop="得分"
|
|
||||||
label="得分"
|
|
||||||
></el-table-column>
|
|
||||||
</el-table
|
|
||||||
>
|
|
||||||
</el-tab-pane>
|
|
||||||
<el-tab-pane label="调整项" name="调整项">
|
|
||||||
<el-table
|
|
||||||
:data="
|
|
||||||
Object.keys(detailData['调整项']).map(item => {
|
|
||||||
return {
|
|
||||||
key: item,
|
|
||||||
value: detailData['调整项'][item].value,
|
|
||||||
scope: detailData['调整项'][item].scope
|
|
||||||
};
|
|
||||||
})
|
|
||||||
"
|
|
||||||
height="68vh"
|
|
||||||
border
|
|
||||||
>
|
|
||||||
<el-table-column prop="key" label="调整项名称">
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="value" label="调整项值">
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="scope" label="调整项值">
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<!-- <el-table-column prop="单位" label="单位"></el-table-column>-->
|
||||||
|
<!-- <el-table-column-->
|
||||||
|
<!-- prop="得分"-->
|
||||||
|
<!-- label="得分"-->
|
||||||
|
<!-- ></el-table-column>-->
|
||||||
</el-table
|
</el-table
|
||||||
>
|
>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
|
<!-- <el-tab-pane label="调整项" name="调整项">-->
|
||||||
|
<!-- <el-table-->
|
||||||
|
<!-- :data="-->
|
||||||
|
<!-- Object.keys(detailData['调整项']).map(item => {-->
|
||||||
|
<!-- return {-->
|
||||||
|
<!-- key: item,-->
|
||||||
|
<!-- value: detailData['调整项'][item].value,-->
|
||||||
|
<!-- scope: detailData['调整项'][item].scope-->
|
||||||
|
<!-- };-->
|
||||||
|
<!-- })-->
|
||||||
|
<!-- "-->
|
||||||
|
<!-- height="68vh"-->
|
||||||
|
<!-- border-->
|
||||||
|
<!-- >-->
|
||||||
|
<!-- <el-table-column prop="key" label="调整项名称">-->
|
||||||
|
<!-- </el-table-column>-->
|
||||||
|
<!-- <el-table-column prop="value" label="调整项值">-->
|
||||||
|
<!-- </el-table-column>-->
|
||||||
|
<!-- <el-table-column prop="scope" label="调整项值">-->
|
||||||
|
<!-- </el-table-column>-->
|
||||||
|
<!-- </el-table-->
|
||||||
|
<!-- >-->
|
||||||
|
<!-- </el-tab-pane>-->
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -333,6 +329,55 @@ function doRate(row: RateData) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 辅助函数:将 Blob 转换为文本
|
||||||
|
function blobToText(blob) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const reader = new FileReader();
|
||||||
|
reader.onload = () => {
|
||||||
|
resolve(reader.result);
|
||||||
|
};
|
||||||
|
reader.onerror = () => {
|
||||||
|
reject(new Error("Failed to read blob."));
|
||||||
|
};
|
||||||
|
reader.readAsText(blob);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function downReport(row: RateData) {
|
||||||
|
// ElMessage.success("正在处理,请稍等")
|
||||||
|
api.post("/wd-smebiz/smebiz_rate/company_rate/get_report_admin", {id: row.id}, {responseType: "blob"})
|
||||||
|
.then(response => {
|
||||||
|
console.log(response)
|
||||||
|
const url = window.URL.createObjectURL(new Blob([response.data]));
|
||||||
|
const link = document.createElement('a');
|
||||||
|
link.href = url;
|
||||||
|
const contentDisposition = response.headers['content-disposition'];
|
||||||
|
let decodedFilename = "报告.docx"
|
||||||
|
if (contentDisposition) {
|
||||||
|
const filenameMatch = contentDisposition.match(/filename\*?=utf-8''([^;]+)/);
|
||||||
|
if (filenameMatch && filenameMatch.length > 1) {
|
||||||
|
const encodedFilename = filenameMatch[1];
|
||||||
|
decodedFilename = decodeURIComponent(encodedFilename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
link.setAttribute('download', decodedFilename); // 指定下载的文件名
|
||||||
|
document.body.appendChild(link);
|
||||||
|
link.click();
|
||||||
|
document.body.removeChild(link);
|
||||||
|
ElMessage.success("开始下载")
|
||||||
|
}).catch(async (error) => {
|
||||||
|
console.error(error);
|
||||||
|
// ElMessage.warning(e.response?.data?.detail || "错误");
|
||||||
|
if (error.response && error.response.data instanceof Blob) {
|
||||||
|
const errorText = await blobToText(error.response.data);
|
||||||
|
const data = JSON.parse(errorText)
|
||||||
|
ElMessage.warning(data.detail)
|
||||||
|
} else {
|
||||||
|
ElMessage.warning("错误")
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function doPublish(row: RateData) {
|
function doPublish(row: RateData) {
|
||||||
api
|
api
|
||||||
.post("/wd-smebiz/smebiz_rate/company_rate/update", {
|
.post("/wd-smebiz/smebiz_rate/company_rate/update", {
|
||||||
|
@ -379,15 +424,14 @@ function showDetail(row: RateData) {
|
||||||
if (rowTemp.value?.rate_data) {
|
if (rowTemp.value?.rate_data) {
|
||||||
const data = JSON.parse(rowTemp.value.rate_data);
|
const data = JSON.parse(rowTemp.value.rate_data);
|
||||||
console.log("data", data);
|
console.log("data", data);
|
||||||
detailData.value = data.content;
|
detailData.value = data.data;
|
||||||
} else {
|
} else {
|
||||||
detailData.value = {
|
detailData.value = {
|
||||||
final_scope: null,
|
评级结果: {
|
||||||
final_level: null,
|
总分: 0,
|
||||||
total_score: null,
|
级别: ""
|
||||||
level: null,
|
},
|
||||||
调整项: {},
|
指标数值与得分: []
|
||||||
indicator: []
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue