zhangback
2025-11-12 6324e356e52918442713f8917b1bbef5170e2d7b
ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue
@@ -45,6 +45,7 @@
        >导出
        </el-button>
      </template>
    </avue-crud>
  </basicContainer>
</template>
@@ -60,10 +61,19 @@
  updateTmsDispatchOrder
} from "@/api/tms/tmsDispatchOrder";
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 {getTmsProject, listTmsProject} from "@/api/tms/tmsProject";
import {getTmsServiceProvider, listTmsServiceProvider} from "@/api/tms/tmsServiceProvider";
import {getTmsLoadingServiceProvider, listTmsLoadingServiceProvider} from "@/api/tms/tmsLoadingServiceProvider";
import {getTmsCustomsServiceProvider, listTmsCustomsServiceProvider} from "@/api/tms/tmsCustomsServiceProvider";
import {getTmsDriver, listTmsDriver} from "@/api/tms/tmsDriver";
import {getTmsVehicle, listTmsVehicle} from "@/api/tms/tmsVehicle";
import {getTmsContainer, listTmsContainer} from "@/api/tms/tmsContainer";
import {getTmsShelf, listTmsShelf} from "@/api/tms/tmsShelf";
import {getTmsConsignor, listTmsConsignor} from "@/api/tms/tmsConsignor";
const {proxy} = useCurrentInstance();
const crudRef = ref();
@@ -76,7 +86,7 @@
    viewBtn: hasPermission(["tms:tmsDispatchOrder:query"]),
  }
})
console.log()
const data = reactive({
  form: <TmsDispatchOrderI>{},
  queryParams: <TmsDispatchOrderI & PageQueryInterface>{},
@@ -91,577 +101,1163 @@
const option = ref({
  pageKey: 'TmsDispatchOrder',
  rowKey: 'id',
  labelWidth:130,
  searchSpan:6,
  searchLabelWidth:150,
  group:[
    {
      label: '基本信息',
      prop: 'jbxx',
      column:{
        dispatchNo: {
          label: '调度单号',
          addDisplay: true,
          editDisplay: true,
          viewDisplay: true,
          hide: false,
          search: true,
        projectId: {
          label: '关联项目',
          display: true,
          rules: [
            {
              required: true,
              message: "调度单号不能为空", trigger: "blur"
              message: "关联项目不能为空", trigger: "change"
            }
          ],
        },
        customerName: {
          label: '客户名称',
          addDisplay: true,
          editDisplay: true,
          viewDisplay: true,
          hide: false,
          search: true,
          rules: [
            {
              required: true,
              message: "客户名称不能为空", trigger: "blur"
          change: (val: any) => {
            const table = crudRef.value?.getPropRef?.('projectId')?.$refs?.temp;
            if (!table) return;
            let active = table.active;
            if (Array.isArray(active)) active = active[0];
            if (active) {
                  Object.assign(form.value, {
                    projectId: active.id,
                    projectName: active.projectName,
                    customerId: active.relatedCustomerId,
                    customerName: active.relatedCustomerName,
                    contractId: active.relatedContractId,
                    contractName: active.relatedContractName,
                  });
            }
          ],
        },
        customerCode: {
          label: '客户编码',
          addDisplay: true,
          editDisplay: true,
          viewDisplay: false,
          hide: true,
          search: false,
        },
          type: 'table',suffixIcon:'search',
          children:{
            border: true,
            searchMenuSpan: 5,
            column:{
        projectName: {
          label: '项目名称',
          addDisplay: true,
          editDisplay: true,
                label: '项目名称', minWidth: 130,
                search: true,
              },
              projectCode: {
                label: '项目编号',minWidth: 120,
                search: true,
              },
              relatedContractName: {
                label: '关联合同',
                display: false,minWidth: 150,
                search: true,
              },
              relatedCustomerName: {
                label: '关联客户',
                display: false,minWidth: 150,
                search: true,
              },
              status: {
                label: '状态',dataType: 'string',
                type: 'radio', dicUrl: '/system/dict/data/type/data_status',
                addDisplay: false,minWidth: 150,
                editDisplay: false,
          viewDisplay: true,
          hide: false,
          search: true,
          rules: [
            {
              required: true,
              message: "项目名称不能为空", trigger: "blur"
                    message: "状态不能为空", trigger: "blur"
            }
          ],
        },
        transportPlanNo: {
          label: '运输计划编号',
          addDisplay: true,
          editDisplay: true,
          viewDisplay: true,
          hide: false,
          search: true,
          rules: [
            {
              required: true,
              message: "运输计划编号不能为空", trigger: "blur"
            }
          ],
        },
          },
          props:{
            label: 'projectName',
            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]
              }
              getTmsProject(id).then(res=>{
                return callback(res.data||{})
              })
            }else{
              listTmsProject({pageSize:page.pageSize,pageNum:page.currentPage,...data}).then(res=>{
                return callback({
                  total: res.total,
                  data: res.rows||[],
                })
              })
      }
    }
  ],
  column: {
    // id: {
    //   label: '主键ID',
    //   addDisplay: false,
    //   editDisplay: false,
    //   viewDisplay: false,
    //   hide: true,
    //   search: false,
    // },
    dispatchNo: {
      label: '调度单号',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: true,
      hide: false,
      search: true,
      rules: [
        {
          required: true,
          message: "调度单号不能为空", trigger: "blur"
        }
      ],
    },
    customerName: {
      label: '客户名称',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: true,
      hide: false,
      search: true,
          display: true,disabled:true
        },
        // customerCode: {
        //   label: '客户编码',
        //   display: true,disabled:true
        // },
        contractName: {
          label: '关联合同名称',
          display: true,disabled:true
        },
        orderType: {
          label: '订单类型',
          display: true,
          type: 'select', dataType: 'string',
          dicUrl: '/system/dict/data/type/order_type',
      rules: [
        {
          required: true,
          message: "客户名称不能为空", trigger: "blur"
              message: "订单类型不能为空", trigger: "change"
        }
      ],
    },
    customerCode: {
      label: '客户编码',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    projectName: {
      label: '项目名称',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: true,
      hide: false,
      search: true,
        signType: {
          label: '签收类型',
          display: true,
          type: 'select', dataType: 'string',
          dicUrl: '/system/dict/data/type/sign_type',
      rules: [
        {
          required: true,
          message: "项目名称不能为空", trigger: "blur"
              message: "签收类型不能为空", trigger: "change"
        }
      ],
    },
    transportPlanNo: {
      label: '运输计划编号',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: true,
      hide: false,
      search: true,
        vehicleProviderId: {
          label: '车辆服务商',
          display: true,
      rules: [
        {
          required: true,
          message: "运输计划编号不能为空", trigger: "blur"
              message: "车辆服务商不能为空", trigger: "change"
            }
          ],
          change: (val: any) => {
            const table = crudRef.value?.getPropRef?.('vehicleProviderId')?.$refs?.temp;
            if (!table) return;
            let active = table.active;
            if (Array.isArray(active)) active = active[0];
            if (active) {
              Object.assign(form.value, {
                vehicleProviderId: active.id,
                vehicleProviderName: active.serviceShortName,
              });
            }
          },
          type: 'table', suffixIcon: 'search',
          children: {
            border: true,
            searchLabelWidth: 100,
            searchMenuSpan: 5,
            column: {
              serviceCode: {
                label: '服务商编码', minWidth: 130,
                search: true,
              },
              serviceShortName: {
                label: '服务商简称', minWidth: 120,
                search: true,
              },
              serviceType: {
                label: '服务类型', multiple: true,
                type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/service_type',
                minWidth: 150,
              },
              isTransport: {
                label: '是否运输服务商',
                type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_number_is',
                minWidth: 150,
              },
              isStorage: {
                label: '是否仓储服务商',
                type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_number_is',
                minWidth: 150,
              },
              isExpress: {
                label: '是否快递服务商',
                type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_number_is',
                minWidth: 150,
              },
              contactName: {
                label: '联系人姓名', minWidth: 120,
              },
            },
          },
          props: {
            label: 'serviceShortName',
            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]
              }
              getTmsServiceProvider(id).then(res => {
                return callback(res.data || {})
              })
            } else {
              listTmsServiceProvider({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
                return callback({
                  total: res.total,
                  data: res.rows || [],
                })
              })
            }
          }
        },
        loadingServiceProviderId: {
          label: '装货服务商',
          display: true,
          rules: [
            {
              required: true,
              message: "装货服务商不能为空", trigger: "change"
            }
          ],
          change: (val: any) => {
            const table = crudRef.value?.getPropRef?.('loadingServiceProviderId')?.$refs?.temp;
            if (!table) return;
            let active = table.active;
            if (Array.isArray(active)) active = active[0];
            if (active) {
              Object.assign(form.value, {
                loadingServiceProviderId: active.id,
                loadingServiceProviderName: active.serviceShortName,
              });
            }
          },
          type: 'table', suffixIcon: 'search',
          children: {
            border: true,
            searchLabelWidth: 100,
            searchMenuSpan: 5,
            column: {
              serviceCode: {
                label: '服务商编码', minWidth: 130,
                search: true,
              },
              serviceShortName: {
                label: '服务商简称', minWidth: 120,
                search: true,
              },
              serviceType: {
                label: '服务类型', multiple: true,
                type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/service_type',
                minWidth: 150,
              },
              contactName: {
                label: '联系人姓名', minWidth: 120,
              },
            },
          },
          props: {
            label: 'serviceShortName',
            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]
              }
              getTmsLoadingServiceProvider(id).then(res => {
                return callback(res.data || {})
              })
            } else {
              listTmsLoadingServiceProvider({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
                return callback({
                  total: res.total,
                  data: res.rows || [],
                })
              })
            }
          }
        },
        customsServiceProviderId: {
          label: '报关服务商',
          display: true,
          rules: [
            {
              required: true,
              message: "报关服务商不能为空", trigger: "change"
            }
          ],
          change: (val: any) => {
            const table = crudRef.value?.getPropRef?.('customsServiceProviderId')?.$refs?.temp;
            if (!table) return;
            let active = table.active;
            if (Array.isArray(active)) active = active[0];
            if (active) {
              Object.assign(form.value, {
                customsServiceProviderId: active.id,
                customsServiceProviderName: active.serviceShortName,
              });
            }
          },
          type: 'table', suffixIcon: 'search',
          children: {
            border: true,
            searchLabelWidth: 100,
            searchMenuSpan: 5,
            column: {
              serviceCode: {
                label: '服务商编码', minWidth: 130,
                search: true,
              },
              serviceShortName: {
                label: '服务商简称', minWidth: 120,
                search: true,
              },
              serviceType: {
                label: '服务类型', multiple: true,
                type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/service_type',
                minWidth: 150,
              },
              contactName: {
                label: '联系人姓名', minWidth: 120,
              },
            },
          },
          props: {
            label: 'serviceShortName',
            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]
              }
              getTmsCustomsServiceProvider(id).then(res => {
                return callback(res.data || {})
              })
            } else {
              listTmsCustomsServiceProvider({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
                return callback({
                  total: res.total,
                  data: res.rows || [],
                })
              })
            }
          }
        },
        isUrgent: {
          label: '是否紧急',
          display: true,
          type: 'select', dicUrl: '/system/dict/data/type/sys_number_is', dataType: 'string',
          rules: [
            {
              required: true,
              message: "是否紧急不能为空", trigger: "blur"
        }
      ],
    },
    departureRegion: {
      label: '出发地行政区域',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: true,
      hide: false,
      search: true,
        transportType: {
          label: '运输方式',
          display: true, type: 'select', dicUrl: '/system/dict/data/type/dispatch_transport_mode', dataType: 'string',
        },
        loadMethod: {
          label: '配载方式',
          display: true, type: 'select', dicUrl: '/system/dict/data/type/load_method', dataType: 'string',
        },
        mainDriverId: {
          label: '主驾驶员',
          display: true,
      rules: [
        {
          required: true,
          message: "出发地行政区域不能为空", trigger: "blur"
              message: "主驾驶员不能为空", trigger: "change"
            }
          ],
          change: (val: any) => {
            const table = crudRef.value?.getPropRef?.('mainDriverId')?.$refs?.temp;
            if (!table) return;
            let active = table.active;
            if (Array.isArray(active)) active = active[0];
            if (active) {
              Object.assign(form.value, {
                mainDriverId: active.id,
                mainDriverName: active.driverName,
              });
            }
          },
          type: 'table',suffixIcon:'search',
          children:{
            border: true,
            searchMenuSpan: 5,
            column:{
              vehicleProviderName: {
                label: '车辆服务商', minWidth: 130,
                search: true,
              },
              driverName: {
                label: '驾驶员姓名',minWidth: 120,
                search: true,
              },
              licenseType: {
                label: '准驾车型',minWidth: 120,
                type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/license_type',
                search: true,
              },
            },
          },
          props:{
            label: 'driverName',
            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]
              }
              getTmsDriver(id).then(res=>{
                return callback(res.data||{})
              })
            }else{
              listTmsDriver({pageSize:page.pageSize,pageNum:page.currentPage,...data}).then(res=>{
                return callback({
                  total: res.total,
                  data: res.rows||[],
                })
              })
            }
          }
        },
        assistantDriverId: {
          label: '副驾驶员',
          display: true,
          change: (val: any) => {
            const table = crudRef.value?.getPropRef?.('assistantDriverId')?.$refs?.temp;
            if (!table) return;
            let active = table.active;
            if (Array.isArray(active)) active = active[0];
            if (active) {
              Object.assign(form.value, {
                assistantDriverId: active.id,
                assistantDriverName: active.driverName,
              });
            }
          },
          type: 'table', suffixIcon: 'search',
          children:{
            border: true,
            searchMenuSpan: 5,
            column:{
              vehicleProviderName: {
                label: '车辆服务商', minWidth: 130,
                search: true,
              },
              driverName: {
                label: '驾驶员姓名',minWidth: 120,
                search: true,
              },
              licenseType: {
                label: '准驾车型',minWidth: 120,
                type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/license_type',
                search: true,
              },
            },
          },
          props:{
            label: 'driverName',
            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]
              }
              getTmsDriver(id).then(res=>{
                return callback(res.data||{})
              })
            }else{
              listTmsDriver({pageSize:page.pageSize,pageNum:page.currentPage,...data}).then(res=>{
                return callback({
                  total: res.total,
                  data: res.rows||[],
                })
              })
            }
          }
        },
        requiredVehicleTypes: {
          label: '要求车型',multiple:true,
          display: true, type: 'select', dicUrl: '/system/dict/data/type/license_type', dataType: 'string',
          rules: [
            {
              required: true,
              message: "要求车型不能为空", trigger: "blur"
        }
      ],
    },
    destinationRegion: {
      label: '目的行政区域',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: true,
      hide: false,
      search: true,
        actualVehicleType: {
          label: '实际运输工具类型',
          display: true, type: 'select', dicUrl: '/system/dict/data/type/license_type', dataType: 'string',
        },
        vehicleId: {
          label: '车牌号',
          display: true,
      rules: [
        {
          required: true,
          message: "目的行政区域不能为空", trigger: "blur"
              message: "车牌号不能为空", trigger: "change"
        }
      ],
          change: (val: any) => {
            const table = crudRef.value?.getPropRef?.('vehicleId')?.$refs?.temp;
            if (!table) return;
            let active = table.active;
            if (Array.isArray(active)) active = active[0];
            if (active) {
              Object.assign(form.value, {
                vehicleId: active.id,
                licensePlate: active.licensePlate,
              });
            }
          },
          type: 'table', suffixIcon: 'search',
          children: {
            border: true,
            searchLabelWidth: 100,
            searchMenuSpan: 5,
            column: {
              serviceProviderName: {
                label: '车辆服务商', minWidth: 130,
                search: true,
              },
              vehicleType: {
                label: '车辆类型', minWidth: 120,
                search: true,
              },
              internalCode: {
                label: '车辆内部编码', minWidth: 120,
                search: true,
              },
              licensePlate: {
                label: '车牌号', minWidth: 120,
                search: true,
              },
              licenseHk: {
                label: '香港牌照', minWidth: 120,
                search: true,
              },
              licenseMo: {
                label: '澳门牌照', minWidth: 120,
                search: true,
              },
            },
          },
          props: {
            label: 'licensePlate',
            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]
              }
              getTmsVehicle(id).then(res => {
                return callback(res.data || {})
              })
            } else {
              listTmsVehicle({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
                return callback({
                  total: res.total,
                  data: res.rows || [],
                })
              })
            }
          }
        },
        containerId: {
          label: '关联集装箱信息',
          display: true,
          change: (val: any) => {
            const table = crudRef.value?.getPropRef?.('containerId')?.$refs?.temp;
            if (!table) return;
            let active = table.active;
            if (Array.isArray(active)) active = active[0];
            if (active) {
              Object.assign(form.value, {
                containerId: active.id,
                containerNo: active.containerCode,
              });
            }
          },
          type: 'table', suffixIcon: 'search',
          children: {
            border: true,
            searchLabelWidth: 100,
            searchMenuSpan: 5,
            column: {
              containerCode: {
                label: '集装箱号', minWidth: 130,
                search: true,
              },
              containerUseType: {
                label: '集装箱用途类型', minWidth: 120,
                type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/container_use_type',
                search: true,
              },
              containerSize: {
                label: '箱型',
                type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/container_type',
                display: false,
                hide: false,minWidth:150,
                search: true,
              },
            },
          },
          props: {
            label: 'containerCode',
            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]
              }
              getTmsContainer(id).then(res => {
                return callback(res.data || {})
              })
            } else {
              listTmsContainer({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
                return callback({
                  total: res.total,
                  data: res.rows || [],
                })
              })
            }
          }
        },
        shelfId: {
          label: '托板号',
          display: true,
          change: (val: any) => {
            const table = crudRef.value?.getPropRef?.('shelfId')?.$refs?.temp;
            if (!table) return;
            let active = table.active;
            if (Array.isArray(active)) active = active[0];
            if (active) {
              Object.assign(form.value, {
                shelfId: active.id,
                shelfCode: active.shelfCode,
              });
            }
          },
          type: 'table', suffixIcon: 'search',
          children: {
            border: true,
            searchLabelWidth: 100,
            searchMenuSpan: 5,
            column: {
              shelfCode: {
                label: '托架号', minWidth: 130,
                search: true,
              },
              shelfType: {
                type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/shelf_type',
                search: true,
              },
              compatibleContainerType: {
                label: '适配集装箱类型', minWidth: 120,
                type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/container_type',
                search: true,
              },
            },
          },
          props: {
            label: 'shelfCode',
            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]
              }
              getTmsShelf(id).then(res => {
                return callback(res.data || {})
              })
            } else {
              listTmsShelf({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
                return callback({
                  total: res.total,
                  data: res.rows || [],
                })
              })
            }
          }
        },
      }
    },
    {
      label: '收发货人信息',
      prop: 'shffxrxx',
      column:{
        shipperId: {
          label: '发货人',
          display: true,
          change: (val: any) => {
            const table = crudRef.value?.getPropRef?.('shipperId')?.$refs?.temp;
            if (!table) return;
            let active = table.active;
            if (Array.isArray(active)) active = active[0];
            if (active) {
              Object.assign(form.value, {
                      shipperId: active.id,
                      shipperName: active.consignorName,
                      shipperRegionCode: active.regionLabel,
                      shipperAddress: active.addressDetail,
                      shipperMobile: active.contactPhone,
              });
              form.value.transportLine = form.value.shipperRegionCode
                    +(form.value.receiverRegionCode? '>' + form.value.receiverRegionCode : '') ;
            }
          },
          rules: [
            {
              required: true,
              message: "发货人不能为空", trigger: "change"
            }
          ],
          type: 'table', suffixIcon: 'search',
          children: {
            border: true,
            searchLabelWidth: 100,
            searchMenuSpan: 5,
            column: {
              consignorCode: {
                label: '收发货人编码', minWidth: 130,
                search: true,
              },
              consignorName: {
                label: '收发货人名称', minWidth: 130,
                search: true,
              },
              consignorType: {
                label: '收发货人类型',minWidth: 80,
                type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/consignor_type',
                display: false,
                hide: false,
                search: true,
              },
              contactName: {
                label: '联系人姓名',minWidth: 110,
                display: false,
                hide: false,
                search: true,
              },
              contactPhone: {
                label: '联系人电话',minWidth: 110,
                display: false,
                hide: false,
                search: true,
              },
              regionLabel: {
                label: '行政区域',minWidth: 180,
                display: false,
                hide: false,
                search: true,
              },
            },
          },
          props: {
            label: 'consignorName',
            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]
              }
              getTmsConsignor(id).then(res => {
                return callback(res.data || {})
              })
            } else {
              listTmsConsignor({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
                return callback({
                  total: res.total,
                  data: res.rows || [],
                })
              })
            }
          }
        },
        shipperRegionCode: {
          label: '发货人行政区域',
          display: true,disabled:true
        },
        shipperAddress: {
          label: '发货人详细地址',
          display: true,disabled:true
        },
        shipperMobile: {
          label: '发货人联系方式',
          display: true,disabled:true
        },
        receiverId: {
          label: '收货人',
          display: true,
          rules: [
            {
              required: true,
              message: "收货人不能为空", trigger: "change"
            }
          ],
          change: (val: any) => {
            const table = crudRef.value?.getPropRef?.('receiverId')?.$refs?.temp;
            if (!table) return;
            let active = table.active;
            if (Array.isArray(active)) active = active[0];
            if (active) {
              Object.assign(form.value, {
                      receiverId: active.id,
                      receiverName: active.consignorName,
                      receiverRegionCode: active.regionLabel,
                      receiverAddress: active.addressDetail,
                      receiverMobile: active.contactPhone,
              });
                  form.value.transportLine =
                      (form.value.shipperRegionCode? form.value.shipperRegionCode + '>': '') +form.value.receiverRegionCode;
            }
          },
          type: 'table', suffixIcon: 'search',
          children: {
            border: true,
            searchLabelWidth: 100,
            searchMenuSpan: 5,
            column: {
              consignorCode: {
                label: '收发货人编码', minWidth: 130,
                search: true,
              },
              consignorName: {
                label: '收发货人名称', minWidth: 130,
                search: true,
              },
              consignorType: {
                label: '收发货人类型',minWidth: 80,
                type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/consignor_type',
                display: false,
                hide: false,
                search: true,
              },
              contactName: {
                label: '联系人姓名',minWidth: 110,
                display: false,
                hide: false,
                search: true,
              },
              contactPhone: {
                label: '联系人电话',minWidth: 110,
                display: false,
                hide: false,
                search: true,
              },
              regionLabel: {
                label: '行政区域',minWidth: 180,
                display: false,
                hide: false,
                search: true,
              },
            },
          },
          props: {
            label: 'consignorName',
            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]
              }
              getTmsConsignor(id).then(res => {
                return callback(res.data || {})
              })
            } else {
              listTmsConsignor({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => {
                return callback({
                  total: res.total,
                  data: res.rows || [],
                })
              })
            }
          }
        },
        receiverRegionCode: {
          label: '收货人行政区域',
          display: true,disabled:true
        },
        receiverAddress: {
          label: '收货人详细地址',
          display: true,disabled:true
        },
        receiverMobile: {
          label: '收货人联系方式',
          display: true,disabled:true
    },
    transportLine: {
      label: '运输线路',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: true,
      hide: false,
      search: true,
      rules: [
        {
          required: true,
          message: "运输线路不能为空", trigger: "blur"
          label: '运输线路',span:24,
          display: true,disabled:true
        },
        }
      ],
    },
    vehicleProvider: {
      label: '车辆服务商',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: true,
      hide: false,
      search: true,
      rules: [
        {
          required: true,
          message: "车辆服务商不能为空", trigger: "blur"
        }
      ],
    },
    mainDriver: {
      label: '主驾驶员',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: true,
      hide: false,
      search: true,
      rules: [
        {
          required: true,
          message: "主驾驶员不能为空", trigger: "blur"
        }
      ],
    },
    assistantDriver: {
      label: '副驾驶员',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    requiredVehicleType: {
      label: '要求运输工具类型',
      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/dispatch_transport_mode',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: true,
      hide: false,
      search: true,
      rules: [
        {
          required: true,
          message: "要求运输工具类型不能为空", trigger: "change"
        }
      ],
    },
    vehicleNumber: {
      label: '运输工具号码',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: true,
      hide: false,
      search: true,
      rules: [
        {
          required: true,
          message: "运输工具号码不能为空", trigger: "blur"
        }
      ],
    },
    transportMode: {
      label: '运输方式',
      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/dispatch_transport_mode',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
      rules: [
        {
          required: true,
          message: "运输方式不能为空", trigger: "change"
        }
      ],
    },
    loadMode: {
      label: '配载方式',
      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/load_method',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
      rules: [
        {
          required: true,
          message: "配载方式不能为空", trigger: "change"
        }
      ],
    },
    goodsName: {
      label: '货品名称',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    quantity: {
      label: '数量',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    goodsType: {
      label: '货品类型',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    weight: {
      label: '重量(kg)',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    netWeight: {
      label: '净重(kg)',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    volume: {
      label: '体积(m³)',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    loosePieces: {
      label: '散件数',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    fullContainers: {
      label: '整箱数',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    containerNo: {
      label: '集装箱号',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    palletCount: {
      label: '托数',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
      label: '运输要求信息',
      prop: 'ysyqxx',
      column:{
    earliestDeparture: {
      label: '要求最早出发时间',
      type: 'date', valueFormat: 'YYYY-MM-DD',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
          display: true,
    },
    latestDeparture: {
      label: '要求最晚出发时间',
      type: 'date', valueFormat: 'YYYY-MM-DD',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
          display: true,
    },
    earliestArrival: {
      label: '要求最早到达时间',
      type: 'date', valueFormat: 'YYYY-MM-DD',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
          display: true,
    },
    latestArrival: {
      label: '要求最晚到达时间',
      type: 'date', valueFormat: 'YYYY-MM-DD',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
          display: true,
    },
    departureAddress: {
      label: '出发地地址',
      type: 'textarea', minRows: 3, maxRows: 5,
      addDisplay: false,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
      }
    },
    destinationAddress: {
      label: '目的地地址',
      type: 'textarea', minRows: 3, maxRows: 5,
      addDisplay: false,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    actualVehicleType: {
      label: '实际运输工具类型',
      addDisplay: false,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    actualLoadStart: {
      label: '实际装车开始时间',
      type: 'date', valueFormat: 'YYYY-MM-DD',
      addDisplay: false,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    actualUnloadEnd: {
      label: '实际卸车完成时间',
      type: 'date', valueFormat: 'YYYY-MM-DD',
      addDisplay: false,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    actualDeparture: {
      label: '实际出发时间',
      type: 'date', valueFormat: 'YYYY-MM-DD',
      addDisplay: false,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    actualArrival: {
      label: '实际到达时间',
      type: 'date', valueFormat: 'YYYY-MM-DD',
      addDisplay: false,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    actualQuantity: {
      label: '实发数量',
      addDisplay: false,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    actualWeight: {
      label: '实发重量(kg)',
      addDisplay: false,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    actualVolume: {
      label: '实发体积(m³)',
      addDisplay: false,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    reweighWeight: {
      label: '复磅重量(kg)',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    electronicLock: {
      label: '电子锁编号',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    containerInfo: {
      label: '集装箱号',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    carPlate: {
      label: '车板号',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    {
      label: '车辆信息',
      prop: 'clxx',
      column:{
    emptyMileage: {
      label: '空载里程(Km)',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
          label: '空载里程',append:'Km',
          display: true,
    },
    emptyFuel: {
      label: '空载油耗(L)',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
          label: '空载油耗',append:'L',
          display: true,
    },
    loadedMileage: {
      label: '重载里程(Km)',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
          label: '重载里程',append:'Km',
          display: true,
    },
    loadedFuel: {
      label: '重载油耗(L)',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
          label: '重载油耗',append:'L',
          display: true,
    },
      }
    },
    {
      label: '其他信息',
      prop: 'qtyxx',
      column:{
    shiftNo: {
      label: '班次号',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
          display: true,
    },
    lineNo: {
      label: '线路号',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
          display: true,
    },
        remark: {
          label: '备注',span:24,
          type: 'textarea', minRows: 3, maxRows: 5,
          display: true,
        },
      }
    }
  ],
  column: {
    dispatchNo: {
      label: '调度单号', minWidth: 120,
      display: false,
      search: true,
    },
    customerName: {
      label: '客户',
      display: false,minWidth: 120,
      search: true,
    },
    projectName: {
      label: '项目名称',
      display: false,minWidth: 120,
      search: true,
    },
    contractName: {
      label: '关联合同名称',minWidth: 120,
      display: false,
      search: true,
    },
    orderType: {
      label: '订单类型',
      display: false,
      search: true,minWidth: 120,
      type: 'select', dataType: 'string',
      dicUrl: '/system/dict/data/type/order_type',
    },
    signType: {
      label: '订单类型',
      display: false,
      search: true,minWidth: 120,
      type: 'select', dataType: 'string',
      dicUrl: '/system/dict/data/type/order_type',
    },
    transportLine: {
      label: '运输线路',
      display: false,
      search: true,minWidth: 180, overHidden:true
    },
    vehicleProviderName: {
      label: '车辆服务商名称',minWidth: 150,
      display: false,
      search: true,
    },
    loadingServiceProviderName: {
      label: '装货服务商名称',minWidth: 150,
      display: false,
      search: true,
    },
    customsServiceProviderName: {
      label: '报关服务商名称',minWidth: 150,
      display: false,
      search: true,
    },
    isUrgent: {
      label: '是否紧急否',
      display: false,minWidth: 100,
      search: true,
      type: 'select', dicUrl: '/system/dict/data/type/sys_number_is', dataType: 'string',
    },
    mainDriverName: {
      label: '主驾驶员',
      display: false,minWidth: 120,
      search: true,
    },
    // requiredVehicleTypes: {
    //   label: '要求运输工具类型',
    //   display: false,
    //   search: true,
    // },
    actualVehicleType: {
      label: '实际运输工具类型',minWidth: 130,
      display: false,
      search: true,
     type: 'select', dicUrl: '/system/dict/data/type/license_type', dataType: 'string',
    },
    licensePlate: {
      label: '车牌号',minWidth: 120,
      display: false,
      search: true,
    },
    shipperName: {
      label: '发货人名称',
      display: false,minWidth: 120,
      search: true,
    },
    receiverName: {
      label: '收货人名称',minWidth: 120,
      display: false,
      search: true,
    },
    accountsReceivableStatus: {
      label: '应收费用生成状态',minWidth: 160,
      display: false,
      hide: false,
      search: true,
      rules: [
        {
          required: true,
          message: "应收费用生成状态不能为空", trigger: "blur"
        }
      ],
    },
    accountsPayableStatus: {
      label: '应付费用生成状态',minWidth: 160,
      display: false,
      hide: false,
      search: true,
      rules: [
        {
          required: true,
          message: "应付费用生成状态不能为空", trigger: "blur"
        }
      ]
    },
    status: {
      label: '状态',
      label: '状态',minWidth: 120,
      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/tms_dispatch_order_status',
      addDisplay: false,
      editDisplay: false,
      viewDisplay: true,
      display: false,
      hide: false,
      search: true,
      rules: [
@@ -671,25 +1267,9 @@
        }
      ],
    },
    createBy: {
      label: '创建人',
      addDisplay: false,
      editDisplay: false,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    createTime: {
      label: '创建时间',
      type: 'date', valueFormat: 'YYYY-MM-DD',
      addDisplay: false,
      editDisplay: false,
      viewDisplay: false,
      hide: true,
      search: false,
    },
    updateBy: {
      label: '更新人',
      label: '更新人',minWidth: 150,
      addDisplay: false,
      editDisplay: false,
      viewDisplay: false,
@@ -697,23 +1277,15 @@
      search: false,
    },
    updateTime: {
      label: '更新时间',
      type: 'date', valueFormat: 'YYYY-MM-DD',
      label: '更新时间',minWidth: 180,
      addDisplay: false,
      editDisplay: false,
      viewDisplay: false,
      hide: false,
      search: false,
    },
    remark: {
      label: '备注',
      type: 'textarea', minRows: 3, maxRows: 5,
      addDisplay: true,
      editDisplay: true,
      viewDisplay: false,
      hide: true,
      search: false,
    },
  }
})
@@ -754,5 +1326,8 @@
  }
})
onMounted(() => {
});
</script>