快乐的昕的电脑
2025-10-13 dc073060ea4be3ef8de0076616b90c2e1fbc2708
components/mold.vue
@@ -127,39 +127,47 @@
      },
      methods: {
         async fetchTools(searchKey) {
            const res = await this.$post({
               url: '/MesCutterLedger/QueryTools',
               data: JSON.stringify({
                  searchKey,
                  pageIndex: this.pageIndex,
                  pageSize: this.pageSize
               }),
               headers: { 'Content-Type': 'application/json' }
            });
            try {
               const res = await this.$post({
                  url: '/MesCutterLedger/QueryTools',
                  data: JSON.stringify({
                     searchKey,
                     pageIndex: this.pageIndex,
                     pageSize: this.pageSize
                  }),
                  headers: { 'Content-Type': 'application/json' }
               });
            if (res.status === 0) {
               // 兼容不同返回结构:直接数组 / { tbBillList, total } / { data: [...] }
               const payload = Array.isArray(res.data) ? res.data
                  : (res.data && res.data.tbBillList) ? res.data.tbBillList
                     : (res.data && res.data.data) ? res.data.data
                        : [];
               if (res.status === 0) {
                  // 兼容不同返回结构:直接数组 / { tbBillList, total } / { data: [...] }
                  const payload = Array.isArray(res.data) ? res.data
                     : (res.data && res.data.tbBillList) ? res.data.tbBillList
                        : (res.data && res.data.data) ? res.data.data
                           : [];
               const getField = (obj, ...keys) => {
                  for (const k of keys) if (obj?.[k] !== undefined && obj?.[k] !== null) return obj[k];
                  return null;
               };
                  const getField = (obj, ...keys) => {
                     for (const k of keys) if (obj?.[k] !== undefined && obj?.[k] !== null) return obj[k];
                     return null;
                  };
               this.filteredTools = (payload || []).map(t => ({
                  no: getField(t, 'cutterId', 'CUTTER_ID', 'cutteR_ID', 'daA001', 'no'),
                  name: getField(t, 'cutterName', 'CUTTER_NAME', 'cutteR_NAME', 'name'),
                  model: getField(t, 'cutterModel', 'CUTTER_MODEL', 'cutteR_MODEL', 'model')
               }));
                  const mapped = (payload || []).map(t => ({
                     no: getField(t, 'cutterId', 'CUTTER_ID', 'cutteR_ID', 'daA001', 'no'),
                     name: getField(t, 'cutterName', 'CUTTER_NAME', 'cutteR_NAME', 'name'),
                     model: getField(t, 'cutterModel', 'CUTTER_MODEL', 'cutteR_MODEL', 'model')
                  }));
               // 总数兼容多个字段名
               this.total = (res.data && (res.data.total ?? res.totalCount ?? res.total))
                  || payload.length || 0;
            } else {
               this.$showMessage(res.message || '查询失败');
                  // 填充弹窗列表和下拉列表(模板中下拉使用 toolList)
                  this.filteredTools = mapped;
                  this.toolList = mapped.slice();
                  // 总数优先取顶层 totalCount,再取嵌套 total,再退回 payload 长度
                  this.total = Number(res.totalCount ?? res.data?.total ?? res.data?.totalCount ?? res.total ?? mapped.length ?? 0) || 0;
               } else {
                  this.$showMessage(res.message || '查询失败');
               }
            } catch (err) {
               console.error('fetchTools 错误:', err);
               this.$showMessage('查询刀具失败,请检查网络或接口');
            }
         },
         //翻页