Przeglądaj źródła

feat: 列设置功能保存异常

lanjianrong 17 godzin temu
rodzic
commit
7d50ee57c4

+ 1 - 1
app/controller/contract_controller.js

@@ -412,7 +412,7 @@ module.exports = app => {
                 if (!ctx.session.sessionUser.is_admin) throw '无权进行列设置';
                 const colType = ctx.request.body.col_type;
                 const colSet = JSON.parse(ctx.request.body.col_set);
-                const contractType = ctx.request.body.type;
+                const contractType = Number(ctx.request.body.type);
                 if ([contractConst.type.expenses, contractConst.type.income].indexOf(contractType) < 0) throw '合同类型错误';
                 await ctx.service.contractColSet.setContractColSet(ctx.subProject.id, ctx.contractOptions.tid, contractType, colType, colSet);
                 ctx.redirect(ctx.request.header.referer);

+ 6 - 2
app/service/contract_col_set.js

@@ -100,8 +100,12 @@ module.exports = app => {
               const dcs = defaultColSet.find(x => x.field === field); // 取默认配置(兜底)
 
               if (csd) {
-                  // 合并:colSetDefine(name、fixed)> colSet(show、alias、顺序)> defaultColSet(兜底)
-                  result.push({ ...dcs, ...cs, ...csd });
+                  // 列定义提供名称、类型等元数据;显示状态和别名必须以已保存配置为准。
+                  // 附加属性定义本身也带有 show/alias,不能让它覆盖用户的列设置。
+                  const item = { ...dcs, ...cs, ...csd };
+                  if (Object.prototype.hasOwnProperty.call(cs, 'show')) item.show = cs.show;
+                  if (Object.prototype.hasOwnProperty.call(cs, 'alias')) item.alias = cs.alias;
+                  result.push(item);
               }
               colSetFieldSet.add(field); // 标记该字段已处理
             }