12aec4f5 by lxs

入表功调整

1 parent d1e89582
...@@ -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)) {
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!