zhangback
2025-11-18 f7490c5b05906399fe754fecdb1f32172a01170d
ui/admin-ui3/src/views/tms/tmsProductInfo/index.vue
@@ -60,10 +60,11 @@
  updateTmsProductInfo
} from "@/api/tms/tmsProductInfo";
import useCurrentInstance from "@/utils/useCurrentInstance";
import {computed, reactive, ref, toRefs} from "vue";
import {computed, onMounted, reactive, ref, toRefs, watch} from "vue";
import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
import {usePagePlus} from "@/hooks/usePagePlus";
import {hasPermission} from "@/utils/permissionUtils";
import {getTmsCustomerInfo, listTmsCustomerInfo} from "@/api/tms/tmsCustomerInfo";
const {proxy} = useCurrentInstance();
const crudRef = ref();
@@ -93,202 +94,404 @@
  rowKey: 'id',
  labelWidth: 150,
  // searchLabelWidth: 150,
  group: [
    {
      label: '基础信息',
      prop: 'jcxx',
      column: {
        customerId: {
          label: '所属客户',minWidth: 150,
          addDisplay: true,
          editDisplay: true,suffixIcon:'search',
          viewDisplay: true,
          hide: true,
          search: true,
          rules: [
            {
              required: true,
              message: "所属客户不能为空", trigger: "change"
            }
          ],
          type: 'table',
          children:{
            border: true,
            searchMenuSpan: 5,
            column:{
              customerType: {
                label: '客户类型', minWidth: 120,
                type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/customer_type',
                search: true,
              },
              customerShortName: {
                label: '客户简称', minWidth: 130,
                search: true,
              },
              customerCode: {
                label: '客户编号',minWidth: 120,
                search: true,
              },
              contactName: {
                label: '联系人姓名',minWidth: 120,
              },
              signCompanyName: {
                label: '签约公司', minWidth: 150,
              },
            },
          },
          props:{
            label: 'customerShortName',
            value: 'id'
          },
          onLoad: ({ page, value, data }: { page: any, value: any, data: any }, callback:any) => {
            if (value){
              let id = value;
              if (Array.isArray(value)){
                id = value[0]
              }
              getTmsCustomerInfo(id).then(res=>{
                return callback(res.data||{})
              })
            }else{
              listTmsCustomerInfo({pageSize:page.pageSize,pageNum:page.currentPage,...data}).then(res=>{
                return callback({
                  total: res.total,
                  data: res.rows||[],
                })
              })
            }
          },
          change: (val: any) => {
            const table = crudRef.value?.getPropRef?.('customerId')?.$refs?.temp;
            if (!table) return;
            let active = table.active;
            if (Array.isArray(active)) active = active[0];
            if (active) {
              Object.assign(form.value, {
                customerId: active.id,
                customer: active.customerShortName,
              });
            }
          },
        },
        productCode: {
          label: '货品编码',
          addDisplay: true,
          editDisplay: true,
          viewDisplay: true,
          hide: false, minWidth: 150,
          search: true,
          rules: [
            {
              required: true,
              message: "货品编码不能为空", trigger: "blur"
            }
          ],
        },
        productName: {
          label: '货品名称',
          addDisplay: true,
          editDisplay: true,
          viewDisplay: true,
          hide: false, minWidth: 150,
          search: false,
          rules: [
            {
              required: true,
              message: "货品名称不能为空", trigger: "blur"
            }
          ],
        },
        grossWeight: {
          label: '货品重量',
          addDisplay: true,
          editDisplay: true,append:'Kg',
          viewDisplay: true,
          hide: false, minWidth: 150,
          search: false,
        },
        netWeight: {
          label: '货品净重',
          addDisplay: true,
          editDisplay: true,append:'Kg',
          viewDisplay: true,
          hide: false, minWidth: 150,
          search: false,
        },
        volume: {
          label: '货品体积',
          addDisplay: true,append:'m³',
          editDisplay: true,
          viewDisplay: true,
          hide: false, minWidth: 150,
          search: false,
        },
        productType: {
          label: '货品类型',
          addDisplay: true,
          editDisplay: true,
          viewDisplay: true,
          hide: false, minWidth: 150,
          search: false,
        },
        packUnit: {
          label: '包装单位',
          type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/pack_unit',
          addDisplay: true,
          editDisplay: true,
          viewDisplay: true,
          hide: false, minWidth: 150,
          search: false,
        },
        packLength: {
          label: '包装长',
          addDisplay: true,append:'mm',
          editDisplay: true,
          viewDisplay: true,
          hide: false, minWidth: 150,
          search: false,
        },
        packWidth: {
          label: '包装宽',
          addDisplay: true,append:'mm',
          editDisplay: true,
          viewDisplay: true,
          hide: false, minWidth: 150,
          search: false,
        },
        packHeight: {
          label: '包装高',
          addDisplay: true,append:'mm',
          editDisplay: true,
          viewDisplay: true,
          hide: false, minWidth: 150,
          search: false,
        },
        specModel: {
          label: '商品规格型号',
          type: 'textarea', minRows: 3, maxRows: 5,
          addDisplay: true,span:24,
          editDisplay: true,
          viewDisplay: true,
          hide: false, minWidth: 150,
          search: false,
        },
      }
    },
    {
      label: '其他信息',
      prop: 'qtxx',
      column: {
        temperatureRequired: {
          label: '温度要求',dataType: 'string',
          type: 'radio', dicUrl: '/system/dict/data/type/sys_number_is',
          addDisplay: true,
          editDisplay: true,
          viewDisplay: true,
          hide: true,
          search: false,
          change:({value}:{value:any})=>{
            option.value.group.forEach((item: any) => {
              if (item.column.maxTemperature) {
                item.column.maxTemperature.display = value == 0;
              }
              if (item.column.minTemperature) {
                item.column.minTemperature.display = value == 0
              }
            })
          }
        },
        maxTemperature: {
          label: '最高温度',
          display: true,append:'℃',
          hide: true,
          search: false,
        },
        minTemperature: {
          label: '最低温度',
          display: true,append:'℃',
          hide: true,
          search: false,
        },
        maxHumidity: {
          label: '最高湿度',
          addDisplay: true,append:'RH',
          editDisplay: true,
          viewDisplay: true,
          hide: true,
          search: false,
        },
        minHumidity: {
          label: '最低湿度',
          addDisplay: true,append:'RH',
          editDisplay: true,
          viewDisplay: true,
          hide: true,
          search: false,
        },
        isHazardous: {
          label: '是否危险品',dataType: 'string',
          type: 'radio', dicUrl: '/system/dict/data/type/sys_number_is',
          addDisplay: true,
          editDisplay: true,
          viewDisplay: true,
          hide: true,
          search: false,
        },
        status: {
          label: '状态',dataType: 'string',
          type: 'radio', dicUrl: '/system/dict/data/type/sys_normal_disable',
          addDisplay: false,
          editDisplay: true,
          viewDisplay: true,
          hide: false, minWidth: 150,
          search: true,
          rules: [
            {
              required: true,
              message: "状态不能为空", trigger: "blur"
            }
          ],
        },
        createBy: {
          label: '创建人',
          addDisplay: false,
          editDisplay: false,
          viewDisplay: true,
          hide: true,
          search: false,
        },
        createTime: {
          label: '创建时间',
          type: 'date',
          addDisplay: false,
          editDisplay: false,
          viewDisplay: true,
          hide: true,
          search: false,
        },
        updateBy: {
          label: '更新人',
          addDisplay: false,
          editDisplay: false,
          viewDisplay: true,
          hide: false, minWidth: 150,
          search: false,
        },
        updateTime: {
          label: '更新时间',
          addDisplay: false,
          editDisplay: false,
          viewDisplay: true, minWidth: 150,
        },
        remark: {
          label: '备注',
          type: 'textarea', minRows: 3, maxRows: 5,
          addDisplay: true,span:24,
          editDisplay: true,
          viewDisplay: true,
          hide: true,
          search: false,
        },
      }
    }
  ],
  column: {
    // id: {
    //   label: '自增ID',
    //   addDisplay: false,
    //   editDisplay: false,
    //   viewDisplay: false,
    //   viewDisplay: true,
    //   hide: true,
    //   search: false,
    // },
    customerId: {
      label: '所属客户',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: true,
      hide: false,minWidth: 150,
      search: true,
      rules: [
        {
          required: true,
          message: "所属客户不能为空", trigger: "blur"
        }
      ],
    },
    customer: {
      label: '所属客户',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: true,
      hide: false,minWidth: 150,
      display: false,
      hide: false, minWidth: 150,
      search: true,
      rules: [
        {
          required: true,
          message: "所属客户不能为空", trigger: "blur"
        }
      ],
    },
    productCode: {
      label: '货品编码',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: true,
      hide: false,minWidth: 150,
      display: false,
      hide: false, minWidth: 150,
      search: true,
      rules: [
        {
          required: true,
          message: "货品编码不能为空", trigger: "blur"
        }
      ],
    },
    productName: {
      label: '货品名称',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: false,minWidth: 150,
      display: false,
      hide: false, minWidth: 150,
      search: false,
      rules: [
        {
          required: true,
          message: "货品名称不能为空", trigger: "blur"
        }
      ],
    },
    grossWeight: {
      label: '货品重量',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: false,minWidth: 150,
      display: false,
      hide: false, minWidth: 150,
      search: false,
    },
    netWeight: {
      label: '货品净重',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: false,minWidth: 150,
      display: false,
      hide: false, minWidth: 150,
      search: false,
    },
    volume: {
      label: '货品体积',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: false,minWidth: 150,
      display: false,
      hide: false, minWidth: 150,
      search: false,
    },
    specModel: {
      label: '商品规格型号',
      type: 'textarea', minRows: 3, maxRows: 5,
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: false,minWidth: 150,
      display: false,
      hide: false, minWidth: 150,
      search: false,
    },
    productType: {
      label: '货品类型',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: false,minWidth: 150,
      display: false,
      hide: false, minWidth: 150,
      search: false,
    },
    packUnit: {
      label: '包装单位',
      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/pack_unit',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: false,minWidth: 150,
      display: false,
      hide: false, minWidth: 150,
      search: false,
    },
    packLength: {
      label: '包装长',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: false,minWidth: 150,
      display: false,
      hide: false, minWidth: 150,
      search: false,
    },
    packWidth: {
      label: '包装宽',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: false,minWidth: 150,
      display: false,
      hide: false, minWidth: 150,
      search: false,
    },
    packHeight: {
      label: '包装高',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: false,minWidth: 150,
      display: false,
      hide: false, minWidth: 150,
      search: false,
    },
    temperatureRequired: {
      label: '温度要求',
      type: 'radio', dicUrl: '/system/dict/data/type/sys_number_is',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    maxTemperature: {
      label: '最高温度',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    minTemperature: {
      label: '最低温度',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    maxHumidity: {
      label: '最高湿度',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    minHumidity: {
      label: '最低湿度',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    isHazardous: {
      label: '是否危险品',
      type: 'radio', dicUrl: '/system/dict/data/type/sys_number_is',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    status: {
      label: '状态',
      label: '状态',dataType: 'string',
      type: 'radio', dicUrl: '/system/dict/data/type/sys_normal_disable',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: true,
      hide: false,minWidth: 150,
      display: false,
      hide: false, minWidth: 150,
      search: true,
      rules: [
        {
@@ -297,49 +500,19 @@
        }
      ],
    },
    createBy: {
      label: '创建人',
      addDisplay: false,
      editDisplay: false,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    createTime: {
      label: '创建时间',
      type: 'date',
      addDisplay: false,
      editDisplay: false,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    updateBy: {
      label: '更新人',
      addDisplay: false,
      editDisplay: false,
      viewDisplay: false,
      hide: false,minWidth: 150,
      display: false,
      hide: false, minWidth: 150,
      search: false,
    },
    updateTime: {
      label: '更新时间',
      type: 'date', valueFormat: 'YYYY-MM-DD',
      addDisplay: false,
      editDisplay: false,
      viewDisplay: false,
      hide: false,minWidth: 150,
      display: false,
      hide: false, minWidth: 180,
      search: false,
    },
    remark: {
      label: '备注',
      type: 'textarea', minRows: 3, maxRows: 5,
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
  }
})
@@ -381,4 +554,5 @@
})
</script>