zhangback
2025-11-18 4636b03d801662db1b8712d7a9ae9105462eca37
ui/admin-ui3/src/views/tms/tmsQuoteDetail/index.vue
@@ -44,6 +44,13 @@
            v-hasPermi="['tms:tmsQuoteDetail:export']"
        >导出
        </el-button>
        <el-button
            type="default"
            plain
            icon="Back"
            @click="handleBack"
        >返回
        </el-button>
      </template>
    </avue-crud>
  </basicContainer>
@@ -65,10 +72,13 @@
import {usePagePlus} from "@/hooks/usePagePlus";
import {hasPermission} from "@/utils/permissionUtils";
import {getTmsServiceProvider, listTmsServiceProvider} from "@/api/tms/tmsServiceProvider";
import {getArea, getCity, getProvince, getStreet} from "@/api/tms/tmsRegion";
import {useRoute,useRouter } from "vue-router";
const {proxy} = useCurrentInstance();
const crudRef = ref();
const route = useRoute();
const router  = useRouter();
const permissionList = computed(() => {
  return {
    addBtn: hasPermission(["tms:tmsQuoteDetail:add"]),
@@ -101,7 +111,7 @@
        systemCode: {
          label: '系统编号',
          addDisplay: false,
          editDisplay: true, disabled: true,
          editDisplay: false,
          viewDisplay: true,
        },
        quotePlanCode: {
@@ -199,10 +209,10 @@
            }
          },
        },
        startRegion: {
        startRegionCode: {
          label: '起点行政区域',
          addDisplay: true,
          editDisplay: true,
          editDisplay: true,dataType: 'string',
          viewDisplay: true,
          type:'cascader',
          rules: [
@@ -216,37 +226,134 @@
            label: 'name',
            value: 'code'
          },
          change:({value=[]}:{value:any})=>{
            if (value && value.length>0){
              const cascader = crudRef.value?.getPropRef?.('startRegionCode')?.$refs?.temp;
              console.log('cascader.getCheckedNodes()',cascader.getCheckedNodes())
              if (cascader.getCheckedNodes() && cascader.getCheckedNodes().length >0){
                form.value.startRegionCode= cascader.getCheckedNodes()[0].pathValues.toString();
                form.value.startRegion= cascader.getCheckedNodes()[0].text!;
                form.value.transportRoute = `${form.value.startRegion}->${form.value.endRegion}`;
              }
            }
          },
          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
              })));
            };
            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();
            }
          }
        },
        startWarehouse: {
          label: '起点仓库',
          addDisplay: true,
          editDisplay: true,
          viewDisplay: true,
          hide: false,
          search: true,
          type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/sys_warehouse',
        },
        endRegion: {
        endRegionCode: {
          label: '终点行政区域',
          addDisplay: true,
          editDisplay: true,
          viewDisplay: true,
          hide: false,
          search: true,
          viewDisplay: true,dataType: 'string',
          type:'cascader',
          rules: [
            {
              required: true,
              message: "终点行政区域不能为空", trigger: "blur"
            }
          ],
          lazy: true,
          props: {
            label: 'name',
            value: 'code'
          },
          change:({value=[]}:{value:any})=>{
            if (value && value.length>0){
              const cascader = crudRef.value?.getPropRef?.('endRegionCode')?.$refs?.temp;
              if (cascader.getCheckedNodes() && cascader.getCheckedNodes().length >0){
                form.value.endRegionCode= cascader.getCheckedNodes()[0].pathValues.toString();
                form.value.endRegion= cascader.getCheckedNodes()[0].text!;
                form.value.transportRoute = `${form.value.startRegion}->${form.value.endRegion}`;
              }
            }
          },
          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
              })));
            };
            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();
            }
          }
        },
        endWarehouse: {
          label: '终点仓库',
          addDisplay: true,
          editDisplay: true,
          viewDisplay: true,
          hide: false,
          search: true,
          type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/sys_warehouse',
        },
        transportRoute: {
          label: '运输线路',span:24,
@@ -269,8 +376,7 @@
          addDisplay: true,
          editDisplay: true,
          viewDisplay: true,
          hide: false,
          search: true,
          type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/license_type',
          rules: [
            {
              required: true,
@@ -283,24 +389,23 @@
          addDisplay: true,
          editDisplay: true,
          viewDisplay: true,
          hide: false,
          search: true,
          type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/transport_mode',
        },
        routeType: {
          label: '线路类型',
          addDisplay: true,
          editDisplay: true,
          viewDisplay: true,
          hide: false,
          search: true,
          type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/route_type',
        },
        freightPrice: {
          label: '运费报价',
          addDisplay: true,
          editDisplay: true,
          viewDisplay: true,
          hide: false,
          search: true,
          viewDisplay: true,type: 'number',
          rules: [
            {
              required: true,
@@ -317,7 +422,7 @@
        status: {
          label: '状态',
          type: 'radio', dicUrl: '/system/dict/data/type/sys_normal_disable',
          addDisplay: false,
          addDisplay: false,dataType:'string',
          editDisplay: true,
          viewDisplay: true,
          hide: false,
@@ -399,29 +504,31 @@
    startRegion: {
      label: '起点行政区域',
      display: false,minWidth:150,
      hide: false,
      hide: false,overHidden: true,
      search: false,
    },
    startWarehouse: {
      label: '起点仓库',   display: false,
      hide: false,minWidth:150,
      search: true,
      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/sys_warehouse',
    },
    endRegion: {
      label: '终点行政区域',
      label: '终点行政区域',overHidden: true,
      display: false,minWidth:150,
      hide: false,
    },
    endWarehouse: {
      label: '终点仓库',
      display: false,minWidth:150,
      hide: false,
      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/sys_warehouse',
      search: true,
    },
    vehicleType: {
      label: '车型',
      display: false,minWidth:150,
      hide: false,
      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/license_type',
      search: true,
    },
    transportMode: {
@@ -429,12 +536,16 @@
      display: false,
      hide: false,
      search: true,
      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/transport_mode',
    },
    routeType: {
      label: '线路类型',
      display: false,
      hide: false,minWidth:150,
      search: true,
      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/route_type',
    },
    freightPrice: {
      label: '运费报价',
@@ -493,8 +604,19 @@
  },
  handleSelectionChangeFunc: (selection: any) => {
    selectionList.value = selection;
  }
})
  },
  getBeginListFunc(params:any = {}){
    params.quotePlanId = (route.query?.quotePlanId||'') as string;
    return params;
  },
  rowSaveBegin:(row:any)=>{
    row.quotePlanId = (route.query?.quotePlanId||'') as string;
    console.log(row)
  },
})
const handleBack = () => {
  router.back()
}
</script>