sen
2026-01-15 13aedf29e82c77e7ea4a4f5cd826ba378006026a
ui/admin-ui3/src/views/tms/tmsDriver/index.vue
@@ -93,7 +93,309 @@
  pageKey: 'TmsDriver',
  rowKey: 'id',
  labelWidth: 120,
  searchLabelWidth: 120,
  searchLabelWidth: 100,
  group:[
    {
      label: '基本信息',
      prop: 'jbxx',
      column:{
        systemCode: {
          label: '系统编号',
          addDisplay: false,disabled:true,
          editDisplay: true,minWidth:150,
          viewDisplay: true,
          hide: false,
          search: true,
          rules: [
            {
              required: true,
              message: "系统编号不能为空", trigger: "blur"
            }
          ],
        },
        carrierType:{
          label: '驾驶员类型',
          display: true,
          type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/carrier_type',
          rules: [
            {
              required: true,
              message: "驾驶员类型不能为空", trigger: "blur"
            }
          ],
        },
        vehicleProviderId: {
          label: '车辆服务商',
          addDisplay: true,
          editDisplay: true,
          viewDisplay: true,
          hide: true,
          rules: [
            {
              required: true,
              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',dataType: 'string',
          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 || [],
                })
              })
            }
          }
        },
        driverName: {
          label: '驾驶员姓名',
          addDisplay: true,minWidth:150,
          editDisplay: true,
          viewDisplay: true,
          hide: false,
          search: true,
          rules: [
            {
              required: true,
              message: "驾驶员姓名不能为空", trigger: "blur"
            }
          ],
        },
        mobile: {
          label: '手机',
          addDisplay: true,minWidth:150,
          editDisplay: true,
          viewDisplay: true,
          hide: false,
          search: true,
          rules: [
            {
              required: true,
              message: "手机不能为空", trigger: "blur"
            }
          ],
        },
        email: {
          label: '邮箱',
          addDisplay: true,minWidth:150,
          editDisplay: true,
          viewDisplay: true,
          hide: false,
          search: false,
        },
        licenseType: {
          label: '准驾车型',
          type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/before_license_type',
          addDisplay: true,multiple:true,
          editDisplay: true,minWidth:150,
          viewDisplay: true,
          hide: false,
          search: false,
          rules: [
            {
              required: true,
              message: "准驾车型不能为空", trigger: "change"
            }
          ],
        },
        licenseNumber: {
          label: '驾驶证号',
          addDisplay: true,minWidth:150,
          editDisplay: true,
          viewDisplay: true,
          hide: false,
          search: true,
          rules: [
            {
              required: true,
              message: "驾驶证号不能为空", trigger: "blur"
            }
          ],
        },
        licenseIssueDate: {
          label: '驾驶证领取日期',minWidth:150,
          type: 'date', valueFormat: 'YYYY-MM-DD',
          addDisplay: true,
          editDisplay: true,
          viewDisplay: true,
          hide: false,
          search: false,
        },
        licenseValidPeriod: {
          label: '驾驶证有效期',
          addDisplay: true,
          editDisplay: true,minWidth:150,
          viewDisplay: true,
          hide: true,
          search: false,
          type: "daterange",
          format: 'YYYY-MM-DD',
          valueFormat: 'YYYY-MM-DD',
          change: ({value}:{value:any}) => {
            if (Array.isArray(value)){
              form.value.licenseValidPeriodBefore = value[0]
              form.value.licenseValidPeriodEnd = value[1]
            }
          }
        },
        currentVehicleCode: {
          label: '当前绑定车辆',minWidth:150,
          addDisplay: true,
          editDisplay: true,
          viewDisplay: true,
          hide: false,
          search: true,
        },
        licenseAttachment: {
          label: '驾驶证凭证',
          //type: 'textarea', minRows: 3, maxRows: 5,
          addDisplay: true,minWidth:150,
          editDisplay: true,
          viewDisplay: true,
          span: 24,
          accept:'string',dataType: 'string',
          type: 'upload',
          action: '/common/upload2',
          propsHttp:{
            home:'url',
            name:'newFileName',
          },
        },
      }
    },
    {
      label: '其他信息',
      prop: 'qtxx',
      column:{
        status: {
          label: '状态',dataType: 'string',
          type: 'radio', dicUrl: '/system/dict/data/type/sys_normal_disable',
          addDisplay: false,
          editDisplay: false,minWidth:150,
          viewDisplay: true,
          hide: false,
          search: true,
          rules: [
            {
              required: true,
              message: "状态不能为空", trigger: "blur"
            }
          ],
        },
        createBy: {
          label: '创建人',
          addDisplay: false,
          editDisplay: false,
          viewDisplay: true,
          hide: true,
          search: false,
        },
        createTime: {
          label: '创建时间',
          type: 'date', valueFormat: 'YYYY-MM-DD',
          addDisplay: false,
          editDisplay: false,
          viewDisplay: true,
          hide: true,
          search: false,
        },
        updateBy: {
          label: '更新人',
          addDisplay: false,minWidth:150,
          editDisplay: false,
          viewDisplay: true,
          hide: false,
          search: false,
        },
        updateTime: {
          label: '更新时间',
          type: 'date', valueFormat: 'YYYY-MM-DD',
          addDisplay: false,
          editDisplay: false,
          viewDisplay: true,minWidth:180,
          hide: false,
          search: false,
        },
        remark: {
          label: '备注',
          type: 'textarea', minRows: 3, maxRows: 5,
          addDisplay: true,
          editDisplay: true,
          viewDisplay: true,
          hide: true,
          search: false,span:24,
        },
      }
    }
  ],
  column: {
    // id: {
    //   label: '主键ID',
@@ -105,17 +407,9 @@
    // },
    systemCode: {
      label: '系统编号',
      addDisplay: false,disabled:true,
      editDisplay: true,minWidth:150,
      viewDisplay: true,
      display: false,minWidth:150,
      hide: false,
      search: true,
      rules: [
        {
          required: true,
          message: "系统编号不能为空", trigger: "blur"
        }
      ],
    },
    vehicleProviderName:{
      label: '车辆服务商',
@@ -123,89 +417,9 @@
      hide: false,
      search: true,
    },
    vehicleProviderId: {
      label: '车辆服务商',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: true,
      hide: true,
      rules: [
        {
          required: true,
          message: "车辆服务商不能为空", trigger: "blur"
        }
      ],
      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 || [],
            })
          })
        }
      }
    },
    driverName: {
      label: '驾驶员姓名',
      addDisplay: true,minWidth:150,
      editDisplay: true,
      viewDisplay: true,
      display: false,minWidth:150,
      hide: false,
      search: true,
      rules: [
@@ -217,9 +431,7 @@
    },
    mobile: {
      label: '手机',
      addDisplay: true,minWidth:150,
      editDisplay: true,
      viewDisplay: true,
      display: false,minWidth:150,
      hide: false,
      search: true,
      rules: [
@@ -231,160 +443,68 @@
    },
    email: {
      label: '邮箱',
      addDisplay: true,minWidth:150,
      editDisplay: true,
      viewDisplay: true,
      display: false,minWidth:150,
      hide: false,
      search: false,
    },
    licenseType: {
      label: '准驾车型',
      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/license_type',
      addDisplay: true,
      editDisplay: true,minWidth:150,
      viewDisplay: true,
      display: false,minWidth:150,multiple:true,
      hide: false,
      search: false,
      rules: [
        {
          required: true,
          message: "准驾车型不能为空", trigger: "change"
        }
      ],
    },
    licenseNumber: {
      label: '驾驶证号',
      addDisplay: true,minWidth:150,
      editDisplay: true,
      viewDisplay: true,
      display: false,minWidth:150,
      hide: false,
      search: true,
      rules: [
        {
          required: true,
          message: "驾驶证号不能为空", trigger: "blur"
        }
      ],
    },
    licenseIssueDate: {
      label: '驾驶证领取日期',minWidth:150,
      type: 'date', valueFormat: 'YYYY-MM-DD',
      addDisplay: true,
      editDisplay: true,
      viewDisplay: true,
      display: false,
      hide: false,
      search: false,
    },
    licenseValidPeriod: {
      label: '驾驶证有效期',
      addDisplay: true,
      editDisplay: true,minWidth:150,
      viewDisplay: true,
      hide: true,
      search: false,
      prop: "daterange",
      type: "daterange",
      format: 'YYYY-MM-DD',
      valueFormat: 'YYYY-MM-DD',
      change: ({value}:{value:any}) => {
        if (Array.isArray(value)){
          form.value.licenseValidPeriodBefore = value[0]
          form.value.licenseValidPeriodEnd = value[1]
        }
      }
    },
    // licenseValidPeriodBefore: {
    //   label: '驾驶证有效期开始时间',
    //   type: 'date', valueFormat: 'YYYY-MM-DD',
    //   addDisplay: true,
    //   editDisplay: true,
    //   viewDisplay: true,
    //   hide: true,
    //   search: false,
    // },
    // licenseValidPeriodEnd: {
    //   label: '驾驶证有效期结束时间',
    //   type: 'date', valueFormat: 'YYYY-MM-DD',
    //   addDisplay: true,
    //   editDisplay: true,
    //   viewDisplay: true,
    //   hide: true,
    //   search: false,
    // },
    licenseAttachment: {
      label: '驾驶证凭证链接',
      //type: 'textarea', minRows: 3, maxRows: 5,
      addDisplay: true,minWidth:150,
      editDisplay: true,
      viewDisplay: true,
      label: '驾驶证有效期',display: false,minWidth:200,
      hide: false,
      search: false,
      formatter: (row:any) => {
        return row.licenseValidPeriodBefore  + ' 至 ' + row.licenseValidPeriodEnd
      },
    },
    // licenseAttachment: {
    //   label: '驾驶证凭证链接',display: false,minWidth:150,
    //   hide: false,
    //   search: false,
    // },
    currentVehicleCode: {
      label: '当前绑定车辆',minWidth:150,
      addDisplay: true,
      editDisplay: true,
      viewDisplay: true,
      display: false,
      hide: false,
      search: true,
    },
    status: {
      label: '状态',dataType: 'string',
      type: 'radio', dicUrl: '/system/dict/data/type/sys_normal_disable',
      addDisplay: false,
      editDisplay: false,minWidth:150,
      viewDisplay: true,
     minWidth:150,
      display: false,
      hide: false,
      search: true,
      rules: [
        {
          required: true,
          message: "状态不能为空", trigger: "blur"
        }
      ],
    },
    createBy: {
      label: '创建人',
      addDisplay: false,
      editDisplay: false,
      viewDisplay: true,
      hide: true,
      search: false,
    },
    createTime: {
      label: '创建时间',
      type: 'date', valueFormat: 'YYYY-MM-DD',
      addDisplay: false,
      editDisplay: false,
      viewDisplay: true,
      hide: true,
      search: false,
    },
    updateBy: {
      label: '更新人',
      addDisplay: false,minWidth:150,
      editDisplay: false,
      viewDisplay: true,
      label: '更新人',minWidth:150,
      display: false,
      hide: false,
      search: false,
    },
    updateTime: {
      label: '更新时间',
      type: 'date', valueFormat: 'YYYY-MM-DD',
      addDisplay: false,
      editDisplay: false,
      viewDisplay: true,minWidth:180,
      display: false,minWidth:180,
      hide: false,
      search: false,
    },
    remark: {
      label: '备注',
      type: 'textarea', minRows: 3, maxRows: 5,
      addDisplay: true,
      editDisplay: true,
      viewDisplay: true,
      hide: true,
      search: false,span:24,
    },
  }
})
@@ -430,26 +550,7 @@
    }
  }
})
onMounted(() => {
  watch(() => form.value.vehicleProviderId, () => {
    if (!form.value.vehicleProviderId){
      return;
    }
    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,
      });
    }
  });
});
</script>