入表功调整
Showing
1 changed file
with
32 additions
and
10 deletions
| ... | @@ -11,6 +11,7 @@ import { changeNum } from "@/utils/common"; | ... | @@ -11,6 +11,7 @@ import { changeNum } from "@/utils/common"; |
| 11 | import { costDelete, getAssetCatalog, getCostList, sendEntryMsg } from "@/api/modules/dataEntry"; | 11 | import { costDelete, getAssetCatalog, getCostList, sendEntryMsg } from "@/api/modules/dataEntry"; |
| 12 | import * as XLSXS from 'xlsx-js-style'; | 12 | import * as XLSXS from 'xlsx-js-style'; |
| 13 | import { saveAs } from 'file-saver'; | 13 | import { saveAs } from 'file-saver'; |
| 14 | import { t } from "@wangeditor/editor"; | ||
| 14 | 15 | ||
| 15 | const { proxy } = getCurrentInstance() as any; | 16 | const { proxy } = getCurrentInstance() as any; |
| 16 | const userStore = useUserStore(); | 17 | const userStore = useUserStore(); |
| ... | @@ -226,9 +227,9 @@ const convertConfig = { | ... | @@ -226,9 +227,9 @@ const convertConfig = { |
| 226 | } | 227 | } |
| 227 | const costTableRef = ref(null); | 228 | const costTableRef = ref(null); |
| 228 | const initField: any = ref([ | 229 | const initField: any = ref([ |
| 229 | { label: "一级指标", field: "name1", level: 1, width: 120 }, | 230 | { label: "一级指标", field: "name1", level: 1, width: 120, visible: true }, |
| 230 | { label: "一级分类", field: "name2", level: 2, width: 120 }, | 231 | { label: "一级分类", field: "name2", level: 2, width: 120, visible: true }, |
| 231 | { label: "二级分类", field: "name3", level: 3, width: 200 }, | 232 | { label: "二级分类", field: "name3", level: 3, width: 200, visible: true }, |
| 232 | { label: "三级分类", field: "name4", level: 4, width: 200, visible: false }, | 233 | { label: "三级分类", field: "name4", level: 4, width: 200, visible: false }, |
| 233 | { | 234 | { |
| 234 | label: "累计投入", field: "total", width: 120, align: 'right', visible: false, columClass: 'inverse_cell', getName: (scope) => { | 235 | label: "累计投入", field: "total", width: 120, align: 'right', visible: false, columClass: 'inverse_cell', getName: (scope) => { |
| ... | @@ -241,6 +242,7 @@ const tableData: any = ref([]) | ... | @@ -241,6 +242,7 @@ const tableData: any = ref([]) |
| 241 | const besure = ref(false); | 242 | const besure = ref(false); |
| 242 | const mergeRowCount: any = ref({}); | 243 | const mergeRowCount: any = ref({}); |
| 243 | const checkedData: any = ref([]); | 244 | const checkedData: any = ref([]); |
| 245 | const checkedField: any = ref([]); | ||
| 244 | 246 | ||
| 245 | const entryItem = { | 247 | const entryItem = { |
| 246 | year: '', | 248 | year: '', |
| ... | @@ -438,8 +440,12 @@ const addSameData = (rIndex, name, level, tData) => { | ... | @@ -438,8 +440,12 @@ const addSameData = (rIndex, name, level, tData) => { |
| 438 | const lastCode = rowData[`code${level - 1}`]; | 440 | const lastCode = rowData[`code${level - 1}`]; |
| 439 | const tCode = tData[`code${level}`].split(lastCode)[1]; | 441 | const tCode = tData[`code${level}`].split(lastCode)[1]; |
| 440 | const codeVal = parseInt(tCode, 10) < 10 ? `0${parseInt(tCode, 10) + 1}` : parseInt(tCode, 10) + 1; | 442 | const codeVal = parseInt(tCode, 10) < 10 ? `0${parseInt(tCode, 10) + 1}` : parseInt(tCode, 10) + 1; |
| 443 | for(var r in rowData){ | ||
| 444 | if(r.indexOf('name') == -1 && r.indexOf('code') == -1) rowData[r] = ''; | ||
| 445 | } | ||
| 441 | rowData[`name${level}`] = name; | 446 | rowData[`name${level}`] = name; |
| 442 | rowData[`code${level}`] = `${lastCode}${codeVal}`; | 447 | rowData[`code${level}`] = `${lastCode}${codeVal}`; |
| 448 | rowData[`checked${level}`] = false; | ||
| 443 | delete rowData.name4; | 449 | delete rowData.name4; |
| 444 | delete rowData.code4; | 450 | delete rowData.code4; |
| 445 | tableData.value.splice(rIndex + 1, 0, rowData); | 451 | tableData.value.splice(rIndex + 1, 0, rowData); |
| ... | @@ -452,8 +458,14 @@ const addLowerData = (rIndex, name, level, len) => { | ... | @@ -452,8 +458,14 @@ const addLowerData = (rIndex, name, level, len) => { |
| 452 | const hasLowerItem = rowData[`code${level + 1}`] ? true : false; | 458 | const hasLowerItem = rowData[`code${level + 1}`] ? true : false; |
| 453 | const lastCode = rowData[`code${level}`]; | 459 | const lastCode = rowData[`code${level}`]; |
| 454 | const codeVal = (len + 1) < 10 ? '0' + (len + 1) : len + 1; | 460 | const codeVal = (len + 1) < 10 ? '0' + (len + 1) : len + 1; |
| 461 | for(var r in rowData){ | ||
| 462 | if(r.indexOf('name') == -1 && r.indexOf('code') == -1) rowData[r] = ''; | ||
| 463 | } | ||
| 455 | rowData[`name${level + 1}`] = name; | 464 | rowData[`name${level + 1}`] = name; |
| 456 | rowData[`code${level + 1}`] = `${lastCode}${codeVal}`; | 465 | rowData[`code${level + 1}`] = `${lastCode}${codeVal}`; |
| 466 | rowData[`checked${level + 1}`] = false; | ||
| 467 | rowData.edit = false; | ||
| 468 | |||
| 457 | hasLowerItem ? tableData.value.splice(rIndex + 1, 0, rowData) : tableData.value.splice(rIndex, 1, rowData); | 469 | hasLowerItem ? tableData.value.splice(rIndex + 1, 0, rowData) : tableData.value.splice(rIndex, 1, rowData); |
| 458 | tableField.value[3].visible = true; | 470 | tableField.value[3].visible = true; |
| 459 | getMergeRow(); | 471 | getMergeRow(); |
| ... | @@ -919,15 +931,25 @@ const s2ab = (s) => { | ... | @@ -919,15 +931,25 @@ const s2ab = (s) => { |
| 919 | // 生成成本设置表 | 931 | // 生成成本设置表 |
| 920 | const exportDetailsToExcel = async () => { | 932 | const exportDetailsToExcel = async () => { |
| 921 | // 准备工作表数据 | 933 | // 准备工作表数据 |
| 922 | const wsData = [] | 934 | let wsData = [], fields: any = []; |
| 935 | tableField.value.map(f => { | ||
| 936 | if (f.visible || f.field.indexOf('name') == -1) { | ||
| 937 | if (f.field == 'name4') { | ||
| 938 | const exist4 = checkedData.value.find(c => c.code4) | ||
| 939 | exist4 && fields.push(f) | ||
| 940 | } else { | ||
| 941 | fields.push(f) | ||
| 942 | } | ||
| 943 | } | ||
| 944 | }); | ||
| 923 | 945 | ||
| 924 | // 表头 | 946 | // 表头 |
| 925 | const headers = tableField.value.map(item => item.label) | 947 | const headers = fields.map(item => item.label) |
| 926 | wsData.push(headers) | 948 | wsData.push(headers) |
| 927 | 949 | ||
| 928 | // 处理数据行 | 950 | // 处理数据行 |
| 929 | checkedData.value.forEach(item => { | 951 | checkedData.value.forEach(item => { |
| 930 | const row = tableField.value.map(f => { | 952 | const row = fields.map(f => { |
| 931 | if (f.field.indexOf('name') == -1) { | 953 | if (f.field.indexOf('name') == -1) { |
| 932 | // 分类字段 | 954 | // 分类字段 |
| 933 | return changeNum(item[f.field], 2, true) | 955 | return changeNum(item[f.field], 2, true) |
| ... | @@ -941,7 +963,7 @@ const exportDetailsToExcel = async () => { | ... | @@ -941,7 +963,7 @@ const exportDetailsToExcel = async () => { |
| 941 | 963 | ||
| 942 | // 添加合计行 | 964 | // 添加合计行 |
| 943 | const totalRow = ['合计', '', '', '']; | 965 | const totalRow = ['合计', '', '', '']; |
| 944 | const numField = tableField.value.filter(item => item.field.indexOf('name') == -1); | 966 | const numField = fields.filter(item => item.field.indexOf('name') == -1); |
| 945 | const numericFields = numField.map(f => f.field); | 967 | const numericFields = numField.map(f => f.field); |
| 946 | let totalValues = {} | 968 | let totalValues = {} |
| 947 | 969 | ||
| ... | @@ -961,7 +983,7 @@ const exportDetailsToExcel = async () => { | ... | @@ -961,7 +983,7 @@ const exportDetailsToExcel = async () => { |
| 961 | }) | 983 | }) |
| 962 | 984 | ||
| 963 | // 将合计值添加到合计行 | 985 | // 将合计值添加到合计行 |
| 964 | tableField.value.forEach((field, index) => { | 986 | fields.forEach((field, index) => { |
| 965 | if (index < 4) return // 前4列已经处理 | 987 | if (index < 4) return // 前4列已经处理 |
| 966 | if (numericFields.includes(field.field)) { | 988 | if (numericFields.includes(field.field)) { |
| 967 | const value = totalValues[field.field] | 989 | const value = totalValues[field.field] |
| ... | @@ -978,7 +1000,7 @@ const exportDetailsToExcel = async () => { | ... | @@ -978,7 +1000,7 @@ const exportDetailsToExcel = async () => { |
| 978 | const ws = XLSXS.utils.aoa_to_sheet(wsData) | 1000 | const ws = XLSXS.utils.aoa_to_sheet(wsData) |
| 979 | 1001 | ||
| 980 | // 自动调整列宽 | 1002 | // 自动调整列宽 |
| 981 | const colWidths = tableField.value.map((field, index) => { | 1003 | const colWidths = fields.map((field, index) => { |
| 982 | const defaultWidth = field.width || 100 // 默认宽度100 | 1004 | const defaultWidth = field.width || 100 // 默认宽度100 |
| 983 | const colWidth = defaultWidth / 14 + 2; // 留一些余地 | 1005 | const colWidth = defaultWidth / 14 + 2; // 留一些余地 |
| 984 | 1006 | ||
| ... | @@ -1054,7 +1076,7 @@ const exportDetailsToExcel = async () => { | ... | @@ -1054,7 +1076,7 @@ const exportDetailsToExcel = async () => { |
| 1054 | 1076 | ||
| 1055 | // 数据行样式 | 1077 | // 数据行样式 |
| 1056 | const fieldIndex = C | 1078 | const fieldIndex = C |
| 1057 | const field = tableField.value[fieldIndex] | 1079 | const field = fields[fieldIndex] |
| 1058 | 1080 | ||
| 1059 | // 数值列右对齐 | 1081 | // 数值列右对齐 |
| 1060 | if (numericFields.includes(field.field)) { | 1082 | if (numericFields.includes(field.field)) { | ... | ... |
-
Please register or sign in to post a comment