| | |
| | | updateTmsConsignor |
| | | } from "@/api/tms/tmsConsignor"; |
| | | import useCurrentInstance from "@/utils/useCurrentInstance"; |
| | | import {computed, reactive, ref, toRefs,watch,onMounted} from "vue"; |
| | | import {computed, reactive, ref, toRefs,watch,nextTick} from "vue"; |
| | | import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface"; |
| | | import {usePagePlus} from "@/hooks/usePagePlus"; |
| | | import {hasPermission} from "@/utils/permissionUtils"; |
| | | import {getTmsCustomerInfo, listTmsCustomerInfo} from "@/api/tms/tmsCustomerInfo"; |
| | | import {getArea, getCity, getProvince, getStreet} from "@/api/tms/tmsRegion"; |
| | | import {getArea, getCity, getProvince, getStreet,getAddressCode} from "@/api/tms/tmsRegion"; |
| | | import {mapRegeo} from "@/api/common"; |
| | | |
| | | const {proxy} = useCurrentInstance(); |
| | | const crudRef = ref(); |
| | |
| | | prop: 'jcxx', |
| | | column:{ |
| | | consignorCode: { |
| | | label: '收发货人编码',minWidth: 150, |
| | | addDisplay: true, |
| | | label: '装卸货点编码',minWidth: 150, |
| | | addDisplay: false, disabled: true, |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | | hide: false, |
| | |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "收发货人编码不能为空", trigger: "blur" |
| | | message: "装卸货点编码不能为空", trigger: "blur" |
| | | } |
| | | ], |
| | | }, |
| | | consignorName: { |
| | | label: '收发货人名称',minWidth: 150, |
| | | label: '装卸货点名称',minWidth: 150, |
| | | addDisplay: true, |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "收发货人名称不能为空", trigger: "blur" |
| | | message: "装卸货点名称不能为空", trigger: "blur" |
| | | } |
| | | ], |
| | | }, |
| | |
| | | message: "所属客户不能为空", trigger: "change" |
| | | } |
| | | ], |
| | | type: 'table', |
| | | type: 'table',dataType: 'string', |
| | | children:{ |
| | | border: true, |
| | | searchMenuSpan: 5, |
| | |
| | | contactName: { |
| | | label: '联系人姓名',minWidth: 120, |
| | | }, |
| | | signCompany: { |
| | | signCompanyName: { |
| | | label: '签约公司', minWidth: 150, |
| | | }, |
| | | }, |
| | |
| | | ], |
| | | }, |
| | | consignorType: { |
| | | label: '收发货人类型',minWidth: 150, |
| | | label: '装卸货点类型',minWidth: 150, |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/consignor_type', |
| | | addDisplay: true, |
| | | editDisplay: true, |
| | |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "收发货人类型不能为空", trigger: "change" |
| | | message: "装卸货点类型不能为空", trigger: "change" |
| | | } |
| | | ], |
| | | }, |
| | |
| | | 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})=>{ |
| | | 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){ |
| | | 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 |
| | | }))); |
| | | }; |
| | | 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, |
| | |
| | | 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; |
| | | // |
| | | // } |
| | | // } |
| | | 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: '调度单运输地', |
| | |
| | | } |
| | | ], |
| | | }, |
| | | electronicFenceRange: { |
| | | label: '电子围栏范围', |
| | | addDisplay: true,minWidth: 150, |
| | | editDisplay: true, |
| | | viewDisplay: true,append:'米', |
| | | hide: false, |
| | | search: true, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "电子围栏范围不能为空", trigger: "blur" |
| | | } |
| | | ], |
| | | }, |
| | | // 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(); |
| | | // } |
| | | // } |
| | | // }, |
| | | } |
| | | }, |
| | | { |
| | |
| | | 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, |
| | |
| | | disabled: true, |
| | | }, |
| | | consignorType: { |
| | | label: '收发货人类型',minWidth: 150, |
| | | label: '装卸货点类型',minWidth: 150, |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/consignor_type', |
| | | display: false, |
| | | hide: false, |
| | |
| | | }, |
| | | 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:()=>{ |
| | | 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]; |
| | | 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; |
| | | |
| | | } |
| | | // 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'){ |