| | |
| | | v-hasPermi="['tms:tmsQuoteDetail:export']" |
| | | >导出 |
| | | </el-button> |
| | | <el-button |
| | | type="default" |
| | | plain |
| | | icon="Back" |
| | | @click="handleBack" |
| | | >返回 |
| | | </el-button> |
| | | </template> |
| | | </avue-crud> |
| | | </basicContainer> |
| | |
| | | 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"]), |
| | |
| | | systemCode: { |
| | | label: '系统编号', |
| | | addDisplay: false, |
| | | editDisplay: true, disabled: true, |
| | | editDisplay: false, |
| | | viewDisplay: true, |
| | | }, |
| | | quotePlanCode: { |
| | |
| | | } |
| | | }, |
| | | }, |
| | | startRegion: { |
| | | startRegionCode: { |
| | | label: '起点行政区域', |
| | | addDisplay: true, |
| | | editDisplay: true, |
| | | editDisplay: true,dataType: 'string', |
| | | viewDisplay: true, |
| | | type:'cascader', |
| | | rules: [ |
| | |
| | | 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, |
| | |
| | | addDisplay: true, |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | | hide: false, |
| | | search: true, |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/license_type', |
| | | rules: [ |
| | | { |
| | | required: true, |
| | |
| | | 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, |
| | |
| | | status: { |
| | | label: '状态', |
| | | type: 'radio', dicUrl: '/system/dict/data/type/sys_normal_disable', |
| | | addDisplay: false, |
| | | addDisplay: false,dataType:'string', |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | | hide: false, |
| | |
| | | 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: { |
| | |
| | | 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: '运费报价', |
| | |
| | | }, |
| | | 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> |