Просмотр исходного кода

fix: 填报任务固定表添加指标编号、计算方式列,成本审核生成核定模版完不显示修复,保存核定模版后表格出错修复

shiyanyu 1 месяц назад
Родитель
Сommit
a17ea86b2e

+ 26 - 0
src/views/EntDeclaration/auditTaskManagement/components/FixedTableDialog.vue

@@ -44,6 +44,32 @@
         </template>
       </el-table-column>
 
+      <!-- 指标编号(cellCode,只读) -->
+      <el-table-column
+        prop="cellCode"
+        label="指标编号"
+        width="120"
+        align="center"
+      >
+        <template slot-scope="scope">
+          <span v-if="!scope.row.isCategory">{{ scope.row.cellCode }}</span>
+        </template>
+      </el-table-column>
+
+      <!-- 计算方式(calculationFormula,只读) -->
+      <el-table-column
+        prop="calculationFormula"
+        label="计算方式"
+        min-width="180"
+        align="left"
+      >
+        <template slot-scope="scope">
+          <span v-if="!scope.row.isCategory">
+            {{ scope.row.calculationFormula }}
+          </span>
+        </template>
+      </el-table-column>
+
       <!-- 动态年份列 -->
       <el-table-column
         v-for="year in yearColumns"

+ 52 - 19
src/views/costAudit/auditInfo/auditManage/costAudit.vue

@@ -121,15 +121,19 @@
         :prop="item.prop"
         :label="item.label"
         :width="item.width"
+        :min-width="item.minWidth"
         :align="item.align"
         :fixed="item.fixed"
+        :show-overflow-tooltip="item.showOverflowTooltip"
       >
         <template slot-scope="scope">
+          <span v-if="item.isDisplayOnly">{{ scope.row[item.prop] }}</span>
           <el-input
+            v-else
             v-model="scope.row[item.prop]"
             :placeholder="item.label"
             :disabled="item.disabled"
-            style="width: 80%"
+            style="width: 100%"
           ></el-input>
         </template>
       </el-table-column>
@@ -435,7 +439,7 @@
           }),
           getCostFormVersionsByTemplateId({
             taskId: this.selectedProject.taskId,
-            surveyTemplateId: '',
+            surveyTemplateId: this.auditForm.surveyTemplateId,
           }),
         ])
         // 处理表头数据
@@ -521,16 +525,26 @@
               ...item,
               prop: item.fieldEname,
               label: item.fieldName,
-              width: item.fieldName == '序号' ? '80px' : '150px',
+              // 自动宽度:仅"序号"使用固定宽,其余使用最小宽度并开启溢出提示
+              width: item.fieldName == '序号' ? '80px' : undefined,
+              minWidth: item.fieldName == '序号' ? undefined : '150px',
               align: 'center',
+              showOverflowTooltip: item.fieldName == '序号' ? false : true,
             }
             this.costAuditcolumn.push(column)
           })
-          this.costAuditcolumn.push({
-            prop: 'unit',
-            label: '单位',
-            width: '80px',
-          })
+          // 若表头未包含“单位”列,则追加;已包含则不重复添加
+          const hasUnitCol = this.costAuditcolumn.some(
+            (c) => c && (c.label === '单位' || c.fieldName === '单位')
+          )
+          if (!hasUnitCol) {
+            this.costAuditcolumn.push({
+              prop: 'unit',
+              label: '单位',
+              width: '80px',
+              align: 'center',
+            })
+          }
           // 检查tableHeadersRes数组是否包含年账面值
           const hasBookValueColumn = this.checkHasBookValueColumn()
 
@@ -675,7 +689,13 @@
               if (header && header.fieldEname && header.fieldName) {
                 let fieldEname = header.fieldEname
                 let fieldName = header.fieldName
-                let fieldValue = item[fieldName] || ''
+                // 优先用中文列名取值,不存在则用英文prop取值
+                let fieldValue =
+                  (item &&
+                    (item[fieldName] != null ? item[fieldName] : undefined)) !==
+                  undefined
+                    ? item[fieldName]
+                    : item[fieldEname] || ''
 
                 // 将字段值添加到行数据中
                 rowData[fieldEname] = fieldValue
@@ -842,9 +862,12 @@
           rvalue: '',
         }))
       },
-      splitFixedTableDataForSave() {
-        let fixedHeaders = this.tableHeadersRes
-        let fixedTables = this.costAuditData
+      splitFixedTableDataForSave(
+        tables = this.costAuditData,
+        headers = this.tableHeadersRes
+      ) {
+        let fixedHeaders = headers
+        let fixedTables = tables
         let fixedFields = fixedHeaders
           .map((header) => header.fieldName)
           .join(',')
@@ -869,18 +892,28 @@
             const correspondingHeader = fixedHeaders.find(
               (header) => header.fieldName === title.rkey
             )
+            if (!correspondingHeader) {
+              return
+            }
             const newItem = {
               rkey: title.rkey,
               rvalue:
-                node[correspondingHeader.prop] ||
-                node[correspondingHeader.fieldEname] ||
-                '',
+                node[correspondingHeader.prop] !== undefined &&
+                node[correspondingHeader.prop] !== null
+                  ? node[correspondingHeader.prop]
+                  : node[correspondingHeader.fieldEname] !== undefined &&
+                    node[correspondingHeader.fieldEname] !== null
+                  ? node[correspondingHeader.fieldEname]
+                  : '',
               [correspondingHeader.fieldName]:
-                node[correspondingHeader.fieldEname] || '',
+                node[correspondingHeader.fieldEname] !== undefined &&
+                node[correspondingHeader.fieldEname] !== null
+                  ? node[correspondingHeader.fieldEname]
+                  : '',
               surveyTemplateId:
                 node.surveyTemplateId || correspondingHeader.surveyTemplateId,
               versionId: node.versionId || correspondingHeader.versionId,
-              tabtype: node.tabtype || correspondingHeader.templateType,
+              tabtype: correspondingHeader.tabtype || node.tabtype,
               // 添加 headersId 字段(表头的id)
               headersId: correspondingHeader ? correspondingHeader.id : null,
               // 添加记录的id(itemlist中每条记录的id)
@@ -966,8 +999,8 @@
               nextAvailableOrderNum++
             }
 
-            // 分配新的orderNum并标记为已使用
-            item.orderNum = nextAvailableOrderNum
+            // 分配新的orderNum并标记为已使用(保持原有顺序,不修改行原始顺序号)
+            item.orderNum = item.orderNum
             usedOrderNums.add(nextAvailableOrderNum)
             nextAvailableOrderNum++
           }