wujianwei
2026-01-14 4feb321e6fa88e86991da3610b2bdfcf5a2d87a7
ui/admin-ui3/src/views/tms/tmsConsignor/index.vue
@@ -66,6 +66,7 @@
import {hasPermission} from "@/utils/permissionUtils";
import {getTmsCustomerInfo, listTmsCustomerInfo} from "@/api/tms/tmsCustomerInfo";
import {getArea, getCity, getProvince, getStreet,getAddressCode} from "@/api/tms/tmsRegion";
import {mapRegeo} from "@/api/common";
const {proxy} = useCurrentInstance();
const crudRef = ref();
@@ -101,8 +102,8 @@
      prop: 'jcxx',
      column:{
        consignorCode: {
          label: '收发货人编码',minWidth: 150,
          addDisplay: true,
          label: '装卸货点编码',minWidth: 150,
          addDisplay: false, disabled: true,
          editDisplay: true,
          viewDisplay: true,
          hide: false,
@@ -110,12 +111,12 @@
          rules: [
            {
              required: true,
              message: "收发货人编码不能为空", trigger: "blur"
              message: "装卸货点编码不能为空", trigger: "blur"
            }
          ],
        },
        consignorName: {
          label: '收发货人名称',minWidth: 150,
          label: '装卸货点名称',minWidth: 150,
          addDisplay: true,
          editDisplay: true,
          viewDisplay: true,
@@ -124,7 +125,7 @@
          rules: [
            {
              required: true,
              message: "收发货人名称不能为空", trigger: "blur"
              message: "装卸货点名称不能为空", trigger: "blur"
            }
          ],
        },
@@ -147,7 +148,7 @@
              message: "所属客户不能为空", trigger: "change"
            }
          ],
          type: 'table',
          type: 'table',dataType: 'string',
          children:{
            border: true,
            searchMenuSpan: 5,
@@ -228,7 +229,7 @@
          ],
        },
        consignorType: {
          label: '收发货人类型',minWidth: 150,
          label: '装卸货点类型',minWidth: 150,
          type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/consignor_type',
          addDisplay: true,
          editDisplay: true,
@@ -238,7 +239,7 @@
          rules: [
            {
              required: true,
              message: "收发货人类型不能为空", trigger: "change"
              message: "装卸货点类型不能为空", trigger: "change"
            }
          ],
        },
@@ -284,77 +285,7 @@
      label: '地址信息',
      prop: 'dzxx',
      column:{
        // region: {
        //   label: '行政区域',minWidth: 150,type:'cascader',
        //   addDisplay: true,checkStrictly:true,
        //   editDisplay: true,
        //   viewDisplay: true,span: 24,
        //   hide: true,
        //   search: false,
        //   lazy: true,
        //   props: {
        //     label: 'name',
        //     value: 'code'
        //   },
        //   rules: [
        //     {
        //       required: true,
        //       message: "行政区域不能为空", trigger: "blur"
        //     }
        //   ],
        //   change:({value=[]}:{value:any})=>{
        //     console.log('value',value)
        //     if (value && value.length>0){
        //       form.value.provinceId = value[0];
        //       form.value.cityId = value[1];
        //       form.value.districtId = value[2];
        //       form.value.streetId = value[3];
        //       const cascader = crudRef.value?.getPropRef?.('region')?.$refs?.temp;
        //       if (cascader.getCheckedNodes() && cascader.getCheckedNodes().length >0){
        //         console.log('cascader.getCheckedNodes()',cascader.getCheckedNodes())
        //         form.value.regionLabel= cascader.getCheckedNodes()[0].text!;
        //       }
        //     }
        //   },
        //   lazyLoad (node:any, resolve:any) {
        //     const stopLevel = 3;
        //     const level = node.level;
        //     const data = node.data || {};
        //     const code = data.code;
        //     let list:any = [];
        //     const callback = () => {
        //       if (resolve){
        //       resolve((list || []).map((ele:any) => ({
        //         ...ele,
        //         leaf: level >= stopLevel
        //       })));
        //       }
        //     };
        //     if (level === 0) {
        //       getProvince().then(res => {
        //         list = res.data || [];
        //         callback();
        //       });
        //     } else if (level === 1) {
        //       getCity(code).then(res => {
        //         list = res.data ||[];
        //         callback();
        //       });
        //     } else if (level === 2) {
        //       getArea(code).then(res => {
        //         list = res.data ||  [];
        //         callback();
        //       });
        //     }else if (level === 3) {
        //       getStreet(code).then(res => {
        //         list = res.data || [];
        //         callback();
        //       });
        //     } else {
        //       callback();
        //     }
        //   }
        // },
        mapLocationDetail: {
          label: '地图位置',minWidth: 150,
          addDisplay: true,
@@ -363,27 +294,44 @@
          hide: true,
          search: false,
          type: 'map',
          mapChange: async (params:any)=>{
            if (params.info === "OK") {
              console.log( params)
              let { province, city, district, township } = params.regeocode.addressComponent || {};
              const res = await getAddressCode({province, city, district, township});
              const {provinceCode, cityCode, districtCode, townshipCode} = res.data || {};
              form.value.regionLabel = province + " / " + city + " / " + district + " / " + township;
              form.value.region = [provinceCode, cityCode, districtCode, townshipCode];
              form.value.provinceId = provinceCode;
              form.value.cityId = cityCode;
              form.value.districtId = districtCode;
              form.value.streetId = townshipCode;
              form.value.dispatchTransportArea = params.regeocode.formattedAddress;
          // mapChange: async (params:any)=>{
          //   if (params.info === "OK") {
          //     console.log( params)
          //     let { province, city, district, township } = params.regeocode.addressComponent || {};
          //
          //     const res = await getAddressCode({province, city, district, township});
          //     const {provinceCode, cityCode, districtCode, townshipCode} = res.data || {};
          //
          //     form.value.regionLabel = province + " / " + city + " / " + district + " / " + township;
          //
          //     form.value.region = [provinceCode, cityCode, districtCode, townshipCode];
          //     form.value.provinceId = provinceCode;
          //     form.value.cityId = cityCode;
          //     form.value.districtId = districtCode;
          //     form.value.streetId = townshipCode;
          //
          //     form.value.dispatchTransportArea = params.regeocode.formattedAddress;
          //
          //   }
          // }
          change: async ({value}:any)=>{
            if (Array.isArray(value) && value.length === 3){
              mapRegeo(value[1], value[0]).then(async res => {
                let params = res.data || {};
                if (params.info === "OK") {
                  let {province, city, district, township} = params.regeocode.addressComponent || {};
                  const res = await getAddressCode({province, city, district, township});
                  const {provinceCode, cityCode, districtCode, townshipCode} = res.data || {};
                  form.value.regionLabel = province + " / " + city + " / " + district + " / " + township;
                  form.value.provinceId = provinceCode;
                  form.value.cityId = cityCode;
                  form.value.districtId = districtCode;
                  form.value.streetId = townshipCode;
                  form.value.dispatchTransportArea = params.regeocode.formatted_address || params.regeocode.formattedAddress;
                }
              });
            }
          }
          },
        },
        dispatchTransportArea: {
          label: '调度单运输地',
@@ -413,6 +361,80 @@
            }
          ],
        },
        // region: {
        //   label: '行政区域',minWidth: 150,type:'cascader',
        //   addDisplay: true,
        //   editDisplay: true,checkStrictly:true,
        //   viewDisplay: true,span: 24,checkOnClickNode:true,
        //   hide: true,
        //   search: false,
        //   lazy: true,
        //   props: {
        //     label: 'name',
        //     value: 'code'
        //   },
        //   rules: [
        //     {
        //       required: true,
        //       message: "行政区域不能为空", trigger: "blur"
        //     }
        //   ],
        //   change:({value=[]}:{value:any})=>{
        //     if (value && value.length>0){
        //       console.log( value)
        //       form.value.provinceId = value[0];
        //       form.value.cityId = value[1];
        //       form.value.districtId = value[2];
        //       form.value.streetId = value[3];
        //       const cascader = crudRef.value?.getPropRef?.('region')?.$refs?.temp;
        //       console.log('cascader.getCheckedNodes()',cascader)
        //       nextTick(()=>{
        //         crudRef.value.getPropRef('region').$refs.temp.$forceUpdate()
        //       })
        //       if (cascader.getCheckedNodes() && cascader.getCheckedNodes().length >0){
        //         form.value.regionLabel= cascader.getCheckedNodes()[0].text!;
        //       }
        //     }
        //   },
        //   lazyLoad (node:any, resolve:any) {
        //     const stopLevel = 3;
        //     const level = node.level;
        //     const data = node.data || {};
        //     const code = data.code;
        //     let list:any = [];
        //     const callback = () => {
        //
        //       resolve((list || []).map((ele:any) => ({
        //         ...ele,
        //         leaf: level >= stopLevel
        //       })));
        //     };
        //     console.log( level)
        //     if (level === 0) {
        //       getProvince().then(res => {
        //         list = res.data || [];
        //         callback();
        //       });
        //     } else if (level === 1) {
        //       getCity(code).then(res => {
        //         list = res.data ||[];
        //         callback();
        //       });
        //     } else if (level === 2) {
        //       getArea(code).then(res => {
        //         list = res.data ||  [];
        //         callback();
        //       });
        //     }else if (level === 3) {
        //       getStreet(code).then(res => {
        //         list = res.data || [];
        //         callback();
        //       });
        //     } else {
        //       callback();
        //     }
        //   }
        // },
      }
    },
    {
@@ -493,13 +515,13 @@
  column: {
    consignorCode: {
      label: '收发货人编码',minWidth: 150,
      label: '装卸货点编码',minWidth: 150,
      display: false,
      hide: false,
      search: true,
    },
    consignorName: {
      label: '收发货人名称',minWidth: 150,
      label: '装卸货点名称',minWidth: 150,
      display: false,
      hide: false,
      search: true,
@@ -518,7 +540,7 @@
      disabled: true,
    },
    consignorType: {
      label: '收发货人类型',minWidth: 150,
      label: '装卸货点类型',minWidth: 150,
      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/consignor_type',
      display: false,
      hide: false,
@@ -593,27 +615,29 @@
  },
  rowSaveBegin:(row:any)=>{
    if (row.mapLocationDetail){
      row.mapLocation = row.mapLocationDetail[1]+','+row.mapLocationDetail[0];
      row.mapLocation = row.mapLocationDetail[0]+','+row.mapLocationDetail[1];
      row.addressDetail = row.mapLocationDetail[2]
    }
  },
  rowUpdateBegin:(row:any)=>{
    if (row.mapLocationDetail){
      row.mapLocation = row.mapLocationDetail[1]+','+row.mapLocationDetail[0];
      row.mapLocation = row.mapLocationDetail[0]+','+row.mapLocationDetail[1];
      row.addressDetail = row.mapLocationDetail[2]
    }
  },
  handleEndOpenFunc: async ()=>{
  handleEndOpenFunc:  ()=>{
    if (form.value.mapLocation && form.value.addressDetail) {
      form.value.mapLocationDetail = [...form.value.mapLocation.split(',').map(item=> Number(item)), form.value.addressDetail];
      crudRef.value.getPropRef('mapLocationDetail').$refs.temp.text = form.value.mapLocationDetail;
    form.value.region = [
      form.value.provinceId,
      form.value.cityId,
      form.value.districtId,
      form.value.streetId
    ]
    if (form.value.mapLocation && form.value.addressDetail){
      form.value.mapLocationDetail = [...form.value.mapLocation.split(','), form.value.addressDetail];
    }
    // nextTick(()=>{
    //   crudRef.value.getPropRef('region').$refs.temp.$forceUpdate()
    // })
    console.log( )
     // crudRef.value.getPropRef('region').$refs.temp.setCheckedKeys(form.value.region);
  },
  handleBeforeOpenFunc:(type:string)=>{
    if (type=='add'){