| | |
| | | @PostMapping |
| | | public AjaxResult add(@RequestBody TmsConsignor tmsConsignor) |
| | | { |
| | | return toAjax(tmsConsignorService.insertTmsConsignor(tmsConsignor)); |
| | | return AjaxResult.success(tmsConsignorService.insertTmsConsignor(tmsConsignor)); |
| | | } |
| | | |
| | | /** |
| | |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @TableField("create_time") |
| | | private Date createTime; |
| | | |
| | | @TableField(exist = false) |
| | | private String createTimeBegin; |
| | | @TableField(exist = false) |
| | | private String createTimeEnd; |
| | | |
| | | /** 更新人 */ |
| | | @Excel(name = "更新人") |
| | |
| | | @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") |
| | | @TableField("update_time") |
| | | private Date updateTime; |
| | | |
| | | @TableField(exist = false) |
| | | private String updateTimeBegin; |
| | | @TableField(exist = false) |
| | | private String updateTimeEnd; |
| | | |
| | | /** 备注 */ |
| | | @TableField("remark") |
| | |
| | | @Excel(name = "关联报价方案ID") |
| | | @TableField("quote_plan_id") |
| | | private Integer quotePlanId; |
| | | |
| | | /** |
| | | * 确认时间 |
| | | */ |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @TableField("confirm_time") |
| | | private Date confirmTime; |
| | | @TableField(exist = false) |
| | | private String confirmTimeBegin; |
| | | @TableField(exist = false) |
| | | private String confirmTimeEnd; |
| | | /** |
| | | * 完成时间 |
| | | */ |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @TableField("ok_time") |
| | | private Date okTime; |
| | | |
| | | @TableField(exist = false) |
| | | private String okTimeBegin; |
| | | @TableField(exist = false) |
| | | private String okTimeEnd; |
| | | |
| | | |
| | | } |
| | |
| | | @TableField("carrier_type") |
| | | private Integer carrierType; |
| | | |
| | | @TableField("settlement_id") |
| | | private Integer settlementId; |
| | | |
| | | @TableField("settlement_name") |
| | | private String settlementName; |
| | | @TableField("car_key_no") |
| | | private String carKeyNo; |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | */ |
| | | private Integer customerId; |
| | | |
| | | private String customerCode; |
| | | |
| | | /** |
| | | * 客户全称呼 |
| | | */ |
| | |
| | | * @param tmsConsignor 收发货人管理 |
| | | * @return 结果 |
| | | */ |
| | | public int insertTmsConsignor(TmsConsignor tmsConsignor); |
| | | public TmsConsignor insertTmsConsignor(TmsConsignor tmsConsignor); |
| | | |
| | | /** |
| | | * 新增收发货人管理[批量] |
| | |
| | | * @return 结果 |
| | | */ |
| | | @Override |
| | | public int insertTmsConsignor(TmsConsignor tmsConsignor) |
| | | public TmsConsignor insertTmsConsignor(TmsConsignor tmsConsignor) |
| | | { |
| | | tmsConsignor.setConsignorCode(systemDataNoService.getNoByKey(SystemDataNoEnum.ZXH)); |
| | | tmsConsignor.setCreateBy(SecurityUtils.getUsername()); |
| | | tmsConsignor.setCreateTime(DateUtils.getNowDate()); |
| | | return tmsConsignorMapper.insertTmsConsignor(tmsConsignor); |
| | | tmsConsignorMapper.insertTmsConsignor(tmsConsignor); |
| | | return tmsConsignor; |
| | | } |
| | | |
| | | /** |
| | |
| | | if (tmsDispatchOrder.getVehicleId() == null){ |
| | | return AjaxResult.error("请先选择车辆"); |
| | | } |
| | | |
| | | tmsDispatchOrder.setConfirmTime(DateUtils.getNowDate()); |
| | | tmsDispatchOrder.setStatus(1); |
| | | |
| | | tmsDispatchOrder.setUpdateBy(SecurityUtils.getUsername()); |
| | |
| | | return AjaxResult.error("该调度单数据状态异常"); |
| | | } |
| | | tmsDispatchOrder.setStatus(3); |
| | | |
| | | tmsDispatchOrder.setOkTime(DateUtils.getNowDate()); |
| | | tmsDispatchOrder.setUpdateBy(SecurityUtils.getUsername()); |
| | | int i = tmsDispatchOrderMapper.updateTmsDispatchOrder(tmsDispatchOrder); |
| | | if (i > 0){ |
| | |
| | | <result property="quoteDetailId" column="quote_detail_id" /> |
| | | <result property="operationMode" column="operation_mode" /> |
| | | <result property="quotePlanId" column="quote_plan_id" /> |
| | | <result property="okTime" column="ok_time" /> |
| | | <result property="confirmTime" column="confirm_time" /> |
| | | |
| | | </resultMap> |
| | | |
| | | <sql id="selectTmsDispatchOrderVo"> |
| | | select thisTab.id, thisTab.dispatch_no, thisTab.customer_id, thisTab.customer_name, thisTab.customer_code, thisTab.project_id, thisTab.project_name, thisTab.contract_id, thisTab.contract_name, thisTab.order_type, thisTab.transport_line, thisTab.sign_type, thisTab.vehicle_provider_id, thisTab.vehicle_provider_name, thisTab.loading_service_provider_id, thisTab.loading_service_provider_name, thisTab.customs_service_provider_id, thisTab.customs_service_provider_name, thisTab.is_urgent, thisTab.transport_type, thisTab.load_method, thisTab.main_driver_id, thisTab.main_driver_name, thisTab.assistant_driver_id, thisTab.required_vehicle_types, thisTab.assistant_driver_name, thisTab.vehicle_id, thisTab.container_no, thisTab.license_plate, thisTab.shipper_id, thisTab.earliest_departure, thisTab.shipper_name, thisTab.latest_departure, thisTab.shipper_mobile, thisTab.earliest_arrival, thisTab.shipper_address, thisTab.latest_arrival, thisTab.departure_address, thisTab.shipper_region_code, thisTab.receiver_id, thisTab.destination_address, thisTab.receiver_name, thisTab.actual_vehicle_type, thisTab.receiver_mobile, thisTab.actual_load_start, thisTab.shipper_region_label, thisTab.receiver_address, thisTab.actual_unload_end, thisTab.receiver_region_code, thisTab.actual_departure, thisTab.actual_arrival, thisTab.actual_quantity, thisTab.actual_weight, thisTab.receiver_region_label, thisTab.actual_volume, thisTab.reweigh_weight, thisTab.container_id, thisTab.electronic_lock, thisTab.empty_mileage, thisTab.shelf_id, thisTab.empty_fuel, thisTab.shelf_code, thisTab.loaded_mileage, thisTab.loaded_fuel, thisTab.shift_no, thisTab.line_no, thisTab.status, thisTab.create_by, thisTab.create_time, thisTab.update_by, thisTab.update_time, thisTab.remark, thisTab.accounts_receivable_status, thisTab.accounts_payable_status, thisTab.collection_plan_id, thisTab.payment_plan_id , thisTab.is_customs, thisTab.start_region_code, thisTab.end_region_code, thisTab.quote_detail_id, thisTab.operation_mode, thisTab.quote_plan_id from tms_dispatch_order AS thisTab |
| | | select thisTab.id, thisTab.dispatch_no, thisTab.customer_id, thisTab.customer_name, thisTab.customer_code, thisTab.project_id, thisTab.project_name, thisTab.contract_id, thisTab.contract_name, thisTab.order_type, thisTab.transport_line, thisTab.sign_type, thisTab.vehicle_provider_id, thisTab.vehicle_provider_name, thisTab.loading_service_provider_id, thisTab.loading_service_provider_name, thisTab.customs_service_provider_id, thisTab.customs_service_provider_name, thisTab.is_urgent, thisTab.transport_type, thisTab.load_method, thisTab.main_driver_id, thisTab.main_driver_name, thisTab.assistant_driver_id, thisTab.required_vehicle_types, thisTab.assistant_driver_name, thisTab.vehicle_id, thisTab.container_no, thisTab.license_plate, thisTab.shipper_id, thisTab.earliest_departure, thisTab.shipper_name, thisTab.latest_departure, thisTab.shipper_mobile, thisTab.earliest_arrival, thisTab.shipper_address, thisTab.latest_arrival, thisTab.departure_address, thisTab.shipper_region_code, thisTab.receiver_id, thisTab.destination_address, thisTab.receiver_name, thisTab.actual_vehicle_type, thisTab.receiver_mobile, thisTab.actual_load_start, thisTab.shipper_region_label, thisTab.receiver_address, thisTab.actual_unload_end, thisTab.receiver_region_code, thisTab.actual_departure, thisTab.actual_arrival, thisTab.actual_quantity, thisTab.actual_weight, thisTab.receiver_region_label, thisTab.actual_volume, thisTab.reweigh_weight, thisTab.container_id, thisTab.electronic_lock, thisTab.empty_mileage, thisTab.shelf_id, thisTab.empty_fuel, thisTab.shelf_code, thisTab.loaded_mileage, thisTab.loaded_fuel, thisTab.shift_no, thisTab.line_no, thisTab.status, thisTab.create_by, thisTab.create_time, thisTab.update_by, thisTab.update_time, thisTab.remark, thisTab.accounts_receivable_status, thisTab.accounts_payable_status, thisTab.collection_plan_id, thisTab.payment_plan_id , thisTab.is_customs, thisTab.start_region_code, thisTab.end_region_code, thisTab.quote_detail_id, thisTab.operation_mode, thisTab.quote_plan_id, thisTab.ok_time, thisTab.confirm_time from tms_dispatch_order AS thisTab |
| | | </sql> |
| | | <sql id="selectTmsDispatchOrderVoCount"> |
| | | select count(0) from tms_dispatch_order as thisTab |
| | |
| | | <if test="quoteDetailId != null "> and thisTab.quote_detail_id = #{quoteDetailId}</if> |
| | | <if test="operationMode != null "> and thisTab.operation_mode = #{operationMode}</if> |
| | | <if test="quotePlanId != null "> and thisTab.quote_plan_id = #{quotePlanId}</if> |
| | | <if test="createTimeBegin != null and createTimeBegin != '' and createTimeEnd != null and createTimeEnd != ''"> and thisTab.create_time between #{createTimeBegin} and #{createTimeEnd}</if> |
| | | <if test="updateTimeBegin != null and updateTimeBegin != '' and updateTimeEnd != null and updateTimeEnd != ''"> and thisTab.update_time between #{updateTimeBegin} and #{updateTimeEnd}</if> |
| | | <if test="confirmTimeBegin != null and confirmTimeBegin != '' and confirmTimeEnd != null and confirmTimeEnd != ''"> and thisTab.confirm_time between #{confirmTimeBegin} and #{confirmTimeEnd}</if> |
| | | <if test="okTimeBegin != null and okTimeBegin != '' and okTimeEnd != null and okTimeEnd != ''"> and thisTab.ok_time between #{okTimeBegin} and #{okTimeEnd}</if> |
| | | |
| | | |
| | | |
| | | </sql> |
| | | |
| | | <!--查询--> |
| | |
| | | <if test="quoteDetailId != null">quote_detail_id = #{quoteDetailId},</if> |
| | | <if test="operationMode != null">operation_mode = #{operationMode},</if> |
| | | <if test="quotePlanId != null">quote_plan_id = #{quotePlanId},</if> |
| | | <if test="confirmTime != null">confirm_time,</if> |
| | | <if test="okTime != null">ok_time = #{okTime},</if> |
| | | |
| | | </trim> |
| | | where id = #{id} |
| | | </update> |
| | |
| | | <result property="updateTime" column="update_time" /> |
| | | <result property="remark" column="remark" /> |
| | | <result property="carrierType" column="carrier_type" /> |
| | | <result property="settlementId" column="settlement_id" /> |
| | | <result property="settlementName" column="settlement_name" /> |
| | | <result property="carKeyNo" column="car_key_no" /> |
| | | </resultMap> |
| | | |
| | | <sql id="selectTmsVehicleVo"> |
| | | select thisTab.id, thisTab.system_code, thisTab.service_provider_id, thisTab.vehicle_type, thisTab.service_provider_name, thisTab.internal_code, thisTab.license_plate, thisTab.license_hk, thisTab.license_mo, thisTab.license_color, thisTab.owner, thisTab.is_blacklist, thisTab.is_customs_control, thisTab.is_trailer, thisTab.main_driver, thisTab.main_driver_phone, thisTab.assistant_driver, thisTab.assistant_driver_phone, thisTab.has_task, thisTab.vehicle_usage_status, thisTab.body_color, thisTab.frame_number, thisTab.engine_number, thisTab.energy_type, thisTab.empty_load_fuel, thisTab.full_load_fuel, thisTab.purchase_date, thisTab.purchase_price, thisTab.mandatory_scrap_date, thisTab.last_annual_inspection, thisTab.commercial_insurance_expiry, thisTab.traffic_insurance_expiry, thisTab.actual_length, thisTab.actual_width, thisTab.actual_height, thisTab.load_volume, thisTab.load_weight, thisTab.emission_standard, thisTab.engine_power, thisTab.status, thisTab.create_by, thisTab.create_time, thisTab.update_by, thisTab.update_time, thisTab.remark,thisTab.carrier_type from tms_vehicle AS thisTab |
| | | select thisTab.id, thisTab.system_code, thisTab.service_provider_id, thisTab.vehicle_type, thisTab.service_provider_name, thisTab.internal_code, thisTab.license_plate, thisTab.license_hk, thisTab.license_mo, thisTab.license_color, thisTab.owner, thisTab.is_blacklist, thisTab.is_customs_control, thisTab.is_trailer, thisTab.main_driver, thisTab.main_driver_phone, thisTab.assistant_driver, thisTab.assistant_driver_phone, thisTab.has_task, thisTab.vehicle_usage_status, thisTab.body_color, thisTab.frame_number, thisTab.engine_number, thisTab.energy_type, thisTab.empty_load_fuel, thisTab.full_load_fuel, thisTab.purchase_date, thisTab.purchase_price, thisTab.mandatory_scrap_date, thisTab.last_annual_inspection, thisTab.commercial_insurance_expiry, thisTab.traffic_insurance_expiry, thisTab.actual_length, thisTab.actual_width, thisTab.actual_height, thisTab.load_volume, thisTab.load_weight, thisTab.emission_standard, thisTab.engine_power, thisTab.status, thisTab.create_by, thisTab.create_time, thisTab.update_by, thisTab.update_time, thisTab.remark,thisTab.carrier_type, thisTab.settlement_id, thisTab.settlement_name, thisTab.car_key_no from tms_vehicle AS thisTab |
| | | </sql> |
| | | <sql id="selectTmsVehicleVoCount"> |
| | | select count(0) from tms_vehicle as thisTab |
| | |
| | | <if test="vehicleUsageStatus != null "> and thisTab.vehicle_usage_status = #{vehicleUsageStatus}</if> |
| | | <if test="status != null "> and thisTab.status = #{status}</if> |
| | | <if test="carrierType != null "> and thisTab.carrier_type = #{carrierType}</if> |
| | | <if test="settlementId != null "> and thisTab.settlement_id = #{settlementId}</if> |
| | | <if test="settlementName != null and settlementName != ''"> and thisTab.settlement_name like concat('%', #{settlementName}, '%')</if> |
| | | <if test="carKeyNo != null "> and thisTab.car_key_no = #{carKeyNo}</if> |
| | | </sql> |
| | | |
| | | <!--查询--> |
| | |
| | | <if test="updateTime != null">update_time,</if> |
| | | <if test="remark != null">remark,</if> |
| | | <if test="carrierType != null">carrier_type,</if> |
| | | <if test="settlementId != null">settlement_id,</if> |
| | | <if test="settlementName != null">settlement_name,</if> |
| | | <if test="carKeyNo != null">car_key_no,</if> |
| | | </trim> |
| | | <trim prefix="values (" suffix=")" suffixOverrides=","> |
| | | <if test="systemCode != null and systemCode != ''">#{systemCode},</if> |
| | |
| | | <if test="updateTime != null">#{updateTime},</if> |
| | | <if test="remark != null">#{remark},</if> |
| | | <if test="carrierType != null">#{carrierType},</if> |
| | | <if test="settlementId != null">#{settlementId},</if> |
| | | <if test="settlementName != null">#{settlementName},</if> |
| | | <if test="carKeyNo != null">#{carKeyNo},</if> |
| | | </trim> |
| | | </insert> |
| | | |
| | | <insert id="insertTmsVehicleBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id"> |
| | | insert into tms_vehicle |
| | | <trim prefix="(" suffix=") values" suffixOverrides=","> |
| | | id,system_code,service_provider_id,vehicle_type,service_provider_name,internal_code,license_plate,license_hk,license_mo,license_color,owner,is_blacklist,is_customs_control,is_trailer,main_driver,main_driver_phone,assistant_driver,assistant_driver_phone,has_task,vehicle_usage_status,body_color,frame_number,engine_number,energy_type,empty_load_fuel,full_load_fuel,purchase_date,purchase_price,mandatory_scrap_date,last_annual_inspection,commercial_insurance_expiry,traffic_insurance_expiry,actual_length,actual_width,actual_height,load_volume,load_weight,emission_standard,engine_power,status,create_by,create_time,update_by,update_time,remark,carrier_type, |
| | | id,system_code,service_provider_id,vehicle_type,service_provider_name,internal_code,license_plate,license_hk,license_mo,license_color,owner,is_blacklist,is_customs_control,is_trailer,main_driver,main_driver_phone,assistant_driver,assistant_driver_phone,has_task,vehicle_usage_status,body_color,frame_number,engine_number,energy_type,empty_load_fuel,full_load_fuel,purchase_date,purchase_price,mandatory_scrap_date,last_annual_inspection,commercial_insurance_expiry,traffic_insurance_expiry,actual_length,actual_width,actual_height,load_volume,load_weight,emission_standard,engine_power,status,create_by,create_time,update_by,update_time,remark,carrier_type,settlement_id,settlement_name,car_key_no, |
| | | </trim> |
| | | <foreach item="item" index="index" collection="list" separator=","> |
| | | <trim prefix="(" suffix=") " suffixOverrides=","> |
| | | #{item.id},#{item.systemCode},#{item.serviceProviderId},#{item.vehicleType},#{item.serviceProviderName},#{item.internalCode},#{item.licensePlate},#{item.licenseHk},#{item.licenseMo},#{item.licenseColor},#{item.owner},#{item.isBlacklist},#{item.isCustomsControl},#{item.isTrailer},#{item.mainDriver},#{item.mainDriverPhone},#{item.assistantDriver},#{item.assistantDriverPhone},#{item.hasTask},#{item.vehicleUsageStatus},#{item.bodyColor},#{item.frameNumber},#{item.engineNumber},#{item.energyType},#{item.emptyLoadFuel},#{item.fullLoadFuel},#{item.purchaseDate},#{item.purchasePrice},#{item.mandatoryScrapDate},#{item.lastAnnualInspection},#{item.commercialInsuranceExpiry},#{item.trafficInsuranceExpiry},#{item.actualLength},#{item.actualWidth},#{item.actualHeight},#{item.loadVolume},#{item.loadWeight},#{item.emissionStandard},#{item.enginePower},#{item.status},#{item.createBy},#{item.createTime},#{item.updateBy},#{item.updateTime},#{item.remark},#{item.carrierType}, |
| | | #{item.id},#{item.systemCode},#{item.serviceProviderId},#{item.vehicleType},#{item.serviceProviderName},#{item.internalCode},#{item.licensePlate},#{item.licenseHk},#{item.licenseMo},#{item.licenseColor},#{item.owner},#{item.isBlacklist},#{item.isCustomsControl},#{item.isTrailer},#{item.mainDriver},#{item.mainDriverPhone},#{item.assistantDriver},#{item.assistantDriverPhone},#{item.hasTask},#{item.vehicleUsageStatus},#{item.bodyColor},#{item.frameNumber},#{item.engineNumber},#{item.energyType},#{item.emptyLoadFuel},#{item.fullLoadFuel},#{item.purchaseDate},#{item.purchasePrice},#{item.mandatoryScrapDate},#{item.lastAnnualInspection},#{item.commercialInsuranceExpiry},#{item.trafficInsuranceExpiry},#{item.actualLength},#{item.actualWidth},#{item.actualHeight},#{item.loadVolume},#{item.loadWeight},#{item.emissionStandard},#{item.enginePower},#{item.status},#{item.createBy},#{item.createTime},#{item.updateBy},#{item.updateTime},#{item.remark},#{item.carrierType},#{item.settlementId},#{item.settlementName},#{item.carKeyNo}, |
| | | </trim> |
| | | </foreach> |
| | | </insert> |
| | |
| | | <if test="updateTime != null">update_time = #{updateTime},</if> |
| | | <if test="remark != null">remark = #{remark},</if> |
| | | <if test="carrierType != null">carrier_type = #{carrierType},</if> |
| | | <if test="settlementId != null">settlement_id = #{settlementId},</if> |
| | | <if test="settlementName != null">settlement_name = #{settlementName},</if> |
| | | <if test="carKeyNo != null">car_key_no = #{carKeyNo},</if> |
| | | </trim> |
| | | where id = #{id} |
| | | </update> |
| | |
| | | <if test="item.updateTime != null">update_time = #{item.updateTime},</if> |
| | | <if test="item.remark != null">remark = #{item.remark},</if> |
| | | <if test="item.carrierType != null">carrier_type = #{item.carrierType},</if> |
| | | <if test="item.settlementId != null">settlement_id = #{item.settlementId},</if> |
| | | <if test="item.settlementName != null">settlement_name = #{item.settlementName},</if> |
| | | <if test="item.carKeyNo != null">car_key_no = #{item.carKeyNo},</if> |
| | | </trim> |
| | | where id = #{item.id} |
| | | </foreach> |
| | |
| | | import request, {requestType} from "@/utils/request"; |
| | | |
| | | import axios from "axios"; |
| | | |
| | | |
| | | export const getNoCountApi: requestType = () => { |
| | |
| | | url: '/tms/tmsMessageNotify/read/'+id, |
| | | method: 'get' |
| | | }) |
| | | } |
| | | } |
| | | |
| | | export const mapRegeo: requestType = (latitude, longitude) => { |
| | | return axios.get(`https://restapi.amap.com/v3/geocode/regeo?platform=JS&s=rsv3&logversion=2.0&key=69e209992bdd0d511d6cf6dc73dfd0c0&sdkversion=2.0.6.4&csid=E8C55ED3-3588-409E-B4C4-DC5651FC93C5&jscode=a1004b7eb9064c8c09f3725ccc135767&key=69e209992bdd0d511d6cf6dc73dfd0c0&s=rsv3&language=zh_cn&location=${longitude},${latitude}`); |
| | | } |
| | |
| | | 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(); |
| | |
| | | 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: '调度单运输地', |
| | |
| | | }, |
| | | 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] |
| | | } |
| | | }, |
| | |
| | | crudRef.value.getPropRef('mapLocationDetail').$refs.temp.text = form.value.mapLocationDetail; |
| | | |
| | | } |
| | | nextTick(()=>{ |
| | | crudRef.value.getPropRef('region').$refs.temp.$forceUpdate() |
| | | }) |
| | | // nextTick(()=>{ |
| | | // crudRef.value.getPropRef('region').$refs.temp.$forceUpdate() |
| | | // }) |
| | | console.log( ) |
| | | // crudRef.value.getPropRef('region').$refs.temp.setCheckedKeys(form.value.region); |
| | | |
| | |
| | | addDisplay: true, |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | | hide: false,minWidth:150, |
| | | hide: false,minWidth:150,dataType: 'string', |
| | | search: true, |
| | | rules: [ |
| | | { |
| | |
| | | addDisplay: true,value:'1', |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | | change: ({value}: any) => { |
| | | option.value.group.forEach((item: any) => { |
| | | if (item.prop == 'fjxx') { |
| | | item.column.attachmentPath.rules.forEach((item:any)=>{ |
| | | item.required = value == 1; |
| | | }) |
| | | } |
| | | }) |
| | | console.log(value) |
| | | }, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | |
| | | }, |
| | | } |
| | | }, |
| | | { |
| | | label : '商务对接信息', |
| | | prop: 'swjdxx', |
| | | column:{ |
| | | signCompanyId: { |
| | | label: '签约公司', |
| | | addDisplay: true, minWidth: 150, |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | | hide: false, |
| | | search: true, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "签约公司不能为空", trigger: "change" |
| | | } |
| | | ], |
| | | type: 'table', suffixIcon: 'search', |
| | | children: { |
| | | border: true, |
| | | searchMenuSpan: 5, |
| | | column: { |
| | | customerType: { |
| | | label: '客户类型', |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/customer_type', |
| | | display: false, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | }, |
| | | customerShortName: { |
| | | label: '客户简称', |
| | | display: false, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | }, |
| | | customerCode: { |
| | | label: '客户编号', |
| | | display: false, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | }, |
| | | contactName: { |
| | | label: '联系人姓名', |
| | | display: false, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | }, |
| | | businessContactName: { |
| | | label: '商务对接人名称', |
| | | display: false, |
| | | hide: false,minWidth:150,labelWidth:140, |
| | | search: true, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "商务对接人名称不能为空", trigger: "blur" |
| | | } |
| | | ], |
| | | }, |
| | | creditRating: { |
| | | label: '客户信用评级', |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/sys_credit_rating', |
| | | display: false, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | }, |
| | | creditLimitAmount: { |
| | | label: '信用额度', |
| | | display: false, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | }, |
| | | creditLimitQuantity: { |
| | | label: '信用额度', |
| | | display: false, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | }, |
| | | operatingStatus: { |
| | | label: '经营状态', |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/business_status', |
| | | display: false, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | }, |
| | | contractStatus: { |
| | | label: '合同状态', |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/contract_status', |
| | | display: false, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | }, |
| | | dataStatus: { |
| | | label: '数据状态', |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/data_status', |
| | | display: false, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "数据状态不能为空", trigger: "change" |
| | | } |
| | | ], |
| | | }, |
| | | }, |
| | | |
| | | }, |
| | | props: { |
| | | label: 'customerShortName', |
| | | 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] |
| | | } |
| | | getTmsSettlementEntity(id).then(res => { |
| | | return callback(res.data || {}) |
| | | }) |
| | | } else { |
| | | listTmsSettlementEntity({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => { |
| | | return callback({ |
| | | total: res.total, |
| | | data: res.rows || [], |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | }, |
| | | change: (val: any) => { |
| | | const table = crudRef.value?.getPropRef?.('signCompanyId')?.$refs?.temp; |
| | | if (!table) return; |
| | | let active = table.active; |
| | | if (Array.isArray(active)) active = active[0]; |
| | | if (active) { |
| | | Object.assign(form.value, { |
| | | signCompanyId: active.id, |
| | | signCompanyName: active.customerShortName, |
| | | bizContactEmail: active.businessContactEmail, |
| | | bizContactPhone: active.businessContactPhone, |
| | | bizContactName: active.businessContactName, |
| | | }); |
| | | } |
| | | }, |
| | | }, |
| | | bizContactName: { |
| | | label: '商务对接人名称', |
| | | addDisplay: true, |
| | | editDisplay: true, minWidth: 120, |
| | | viewDisplay: true, |
| | | hide: false, |
| | | search: true, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "商务对接人名称不能为空", trigger: "blur" |
| | | } |
| | | ], |
| | | |
| | | }, |
| | | bizContactPhone: { |
| | | label: '商务对接人电话', |
| | | addDisplay: true, |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | | hide: true, |
| | | search: false, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "商务对接人电话不能为空", trigger: "blur" |
| | | } |
| | | ], |
| | | }, |
| | | bizContactEmail: { |
| | | label: '商务对接人邮箱', |
| | | addDisplay: true, |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | | hide: true, |
| | | search: false, |
| | | }, |
| | | } |
| | | }, |
| | | // { |
| | | // label : '商务对接信息', |
| | | // prop: 'swjdxx', |
| | | // column:{ |
| | | // signCompanyId: { |
| | | // label: '签约公司', |
| | | // addDisplay: true, minWidth: 150, |
| | | // editDisplay: true, |
| | | // viewDisplay: true, |
| | | // hide: false, |
| | | // search: true, |
| | | // rules: [ |
| | | // { |
| | | // required: true, |
| | | // message: "签约公司不能为空", trigger: "change" |
| | | // } |
| | | // ], |
| | | // type: 'table', suffixIcon: 'search', |
| | | // children: { |
| | | // border: true, |
| | | // searchMenuSpan: 5, |
| | | // column: { |
| | | // customerType: { |
| | | // label: '客户类型', |
| | | // type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/customer_type', |
| | | // display: false, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // }, |
| | | // customerShortName: { |
| | | // label: '客户简称', |
| | | // display: false, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // }, |
| | | // customerCode: { |
| | | // label: '客户编号', |
| | | // display: false, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // }, |
| | | // contactName: { |
| | | // label: '联系人姓名', |
| | | // display: false, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // }, |
| | | // businessContactName: { |
| | | // label: '商务对接人名称', |
| | | // display: false, |
| | | // hide: false,minWidth:150,labelWidth:140, |
| | | // search: true, |
| | | // rules: [ |
| | | // { |
| | | // required: true, |
| | | // message: "商务对接人名称不能为空", trigger: "blur" |
| | | // } |
| | | // ], |
| | | // }, |
| | | // creditRating: { |
| | | // label: '客户信用评级', |
| | | // type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/sys_credit_rating', |
| | | // display: false, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // }, |
| | | // creditLimitAmount: { |
| | | // label: '信用额度', |
| | | // display: false, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // }, |
| | | // creditLimitQuantity: { |
| | | // label: '信用额度', |
| | | // display: false, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // }, |
| | | // operatingStatus: { |
| | | // label: '经营状态', |
| | | // type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/business_status', |
| | | // display: false, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // }, |
| | | // contractStatus: { |
| | | // label: '合同状态', |
| | | // type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/contract_status', |
| | | // display: false, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // }, |
| | | // dataStatus: { |
| | | // label: '数据状态', |
| | | // type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/data_status', |
| | | // display: false, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // rules: [ |
| | | // { |
| | | // required: true, |
| | | // message: "数据状态不能为空", trigger: "change" |
| | | // } |
| | | // ], |
| | | // }, |
| | | // }, |
| | | // |
| | | // }, |
| | | // props: { |
| | | // label: 'customerShortName', |
| | | // 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] |
| | | // } |
| | | // getTmsSettlementEntity(id).then(res => { |
| | | // return callback(res.data || {}) |
| | | // }) |
| | | // } else { |
| | | // listTmsSettlementEntity({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => { |
| | | // return callback({ |
| | | // total: res.total, |
| | | // data: res.rows || [], |
| | | // }) |
| | | // }) |
| | | // } |
| | | // |
| | | // }, |
| | | // change: (val: any) => { |
| | | // const table = crudRef.value?.getPropRef?.('signCompanyId')?.$refs?.temp; |
| | | // if (!table) return; |
| | | // let active = table.active; |
| | | // if (Array.isArray(active)) active = active[0]; |
| | | // if (active) { |
| | | // Object.assign(form.value, { |
| | | // signCompanyId: active.id, |
| | | // signCompanyName: active.customerShortName, |
| | | // bizContactEmail: active.businessContactEmail, |
| | | // bizContactPhone: active.businessContactPhone, |
| | | // bizContactName: active.businessContactName, |
| | | // }); |
| | | // } |
| | | // }, |
| | | // }, |
| | | // bizContactName: { |
| | | // label: '商务对接人名称', |
| | | // addDisplay: true, |
| | | // editDisplay: true, minWidth: 120, |
| | | // viewDisplay: true, |
| | | // hide: false, |
| | | // search: true, |
| | | // rules: [ |
| | | // { |
| | | // required: true, |
| | | // message: "商务对接人名称不能为空", trigger: "blur" |
| | | // } |
| | | // ], |
| | | // |
| | | // }, |
| | | // bizContactPhone: { |
| | | // label: '商务对接人电话', |
| | | // addDisplay: true, |
| | | // editDisplay: true, |
| | | // viewDisplay: true, |
| | | // hide: true, |
| | | // search: false, |
| | | // rules: [ |
| | | // { |
| | | // required: true, |
| | | // message: "商务对接人电话不能为空", trigger: "blur" |
| | | // } |
| | | // ], |
| | | // }, |
| | | // bizContactEmail: { |
| | | // label: '商务对接人邮箱', |
| | | // addDisplay: true, |
| | | // editDisplay: true, |
| | | // viewDisplay: true, |
| | | // hide: true, |
| | | // search: false, |
| | | // }, |
| | | // } |
| | | // }, |
| | | { |
| | | label : '信用信息', |
| | | prop: 'xyxx', addDisplay: false, |
| | |
| | | hide: false, |
| | | search: true, |
| | | }, |
| | | signCompanyName: { |
| | | label: '签约公司',minWidth: 150, |
| | | display:false, |
| | | hide: false, |
| | | search: true, |
| | | }, |
| | | bizContactName: { |
| | | label: '商务对接人名称', minWidth: 120, |
| | | display:false, |
| | | hide: false, |
| | | search: true, |
| | | }, |
| | | // signCompanyName: { |
| | | // label: '签约公司',minWidth: 150, |
| | | // display:false, |
| | | // hide: false, |
| | | // search: true, |
| | | // }, |
| | | // bizContactName: { |
| | | // label: '商务对接人名称', minWidth: 120, |
| | | // display:false, |
| | | // hide: false, |
| | | // search: true, |
| | | // }, |
| | | creditRating: { |
| | | label: '客户信用评级', minWidth: 120, |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/sys_credit_rating', |
| | |
| | | @on-load="onLoad" |
| | | > |
| | | <template #menu-left> |
| | | <!-- <el-button--> |
| | | <!-- type="success"--> |
| | | <!-- icon="Edit"--> |
| | | <!-- :disabled="pageF.single"--> |
| | | <!-- v-hasPermi="['tms:tmsDispatchOrder:edit']"--> |
| | | <!-- @click="handleUpdate">修改--> |
| | | <!-- </el-button>--> |
| | | <!-- <el-button--> |
| | | <!-- type="danger"--> |
| | | <!-- icon="Delete"--> |
| | | <!-- :disabled="pageF.multiple"--> |
| | | <!-- @click="handleDelete"--> |
| | | <!-- v-hasPermi="['tms:tmsDispatchOrder:remove']"--> |
| | | <!-- >删除--> |
| | | <!-- </el-button>--> |
| | | <!-- <el-button--> |
| | | <!-- type="success"--> |
| | | <!-- icon="Edit"--> |
| | | <!-- :disabled="pageF.single"--> |
| | | <!-- v-hasPermi="['tms:tmsDispatchOrder:edit']"--> |
| | | <!-- @click="handleUpdate">修改--> |
| | | <!-- </el-button>--> |
| | | <!-- <el-button--> |
| | | <!-- type="danger"--> |
| | | <!-- icon="Delete"--> |
| | | <!-- :disabled="pageF.multiple"--> |
| | | <!-- @click="handleDelete"--> |
| | | <!-- v-hasPermi="['tms:tmsDispatchOrder:remove']"--> |
| | | <!-- >删除--> |
| | | <!-- </el-button>--> |
| | | <el-button |
| | | type="warning" |
| | | plain |
| | |
| | | |
| | | </template> |
| | | <template #menu-before="{row}"> |
| | | <el-link size="small" type="primary" @click="handleAddGoods(row)" class="link-btn" |
| | | <el-link size="small" type="primary" @click="handleAddGoods(row)" class="link-btn" |
| | | v-hasPermi="['tms:tmsGoodsDetail:add']" |
| | | :underline="false" icon="el-icon-document-add">运输货品登记 |
| | | </el-link> |
| | | <el-link size="small" type="primary" @click="handleActual(row)" class="link-btn" |
| | | <el-link size="small" type="primary" @click="handleActual(row)" class="link-btn" |
| | | v-hasPermi="['tms:tmsDispatchOrder:update']" |
| | | :underline="false" icon="el-icon-set-up">实际运输记录 |
| | | </el-link> |
| | | <el-link size="small" type="primary" v-if="row.status == 0" @click="handleConfirm(row)" class="link-btn" |
| | | v-hasPermi="['tms:tmsDispatchOrder:confirmOrder']" |
| | | :underline="false" icon="el-icon-pointer">确定 |
| | | </el-link> |
| | | <el-link size="small" type="primary" @click="handleCopy(row)" class="link-btn" :underline="false" |
| | | v-hasPermi="['tms:tmsDispatchOrder:copyOrder']" |
| | | icon="el-icon-connection">复制 |
| | | </el-link> |
| | | <el-link size="small" type="primary" v-if="[1,2].includes(row.status)" @click="handleUploadItinerary(row)" |
| | | v-hasPermi="['tms:tmsTrip:add']" |
| | | class="link-btn" :underline="false" icon="el-icon-upload">上传行程 |
| | | </el-link> |
| | | <el-link size="small" type="primary" v-if="![0,1].includes(row.status)" @click="handleLogItinerary(row)" |
| | | v-hasPermi="['tms:tmsTrip:list']" |
| | | class="link-btn" :underline="false" icon="el-icon-view">查看行程 |
| | | </el-link> |
| | | <el-link size="small" type="primary" v-if="[2].includes(row.status)" @click="handleOk(row)" class="link-btn" |
| | | v-hasPermi="['tms:tmsDispatchOrder:okOrder']" |
| | | :underline="false" icon="el-icon-circle-check">完成行程 |
| | | </el-link> |
| | | <el-link size="small" type="primary" v-if="[2,3].includes(row.status)" @click="handleAddFinance(row)" class="link-btn" |
| | | <el-link size="small" type="primary" v-if="[2,3].includes(row.status)" @click="handleAddFinance(row)" |
| | | class="link-btn" v-hasPermi="['tms:tmsFinanceDetail:add']" |
| | | :underline="false" icon="el-icon-edit-pen">费用登记 |
| | | </el-link> |
| | | </template> |
| | |
| | | icon="el-icon-tickets">日志 |
| | | </el-link> |
| | | </template> |
| | | |
| | | <template #shipperId-form> |
| | | <div style="display:flex; align-items: center;justify-content: space-between"> |
| | | <avue-input-table :props="consignorProps" |
| | | :children="consignorOption" |
| | | :on-load="onShipperLoad" suffixIcon="search" |
| | | v-model="form.shipperId" style="width: 80%" |
| | | @change="changeShipper" |
| | | placeholder="请选择装货点"></avue-input-table> |
| | | <el-button icon="plus" @click="handleAddShipper"></el-button> |
| | | </div> |
| | | </template> |
| | | <template #receiverId-form> |
| | | <div style="display:flex; align-items: center;justify-content: space-between"> |
| | | <avue-input-table :props="consignorProps" |
| | | :children="consignorOption" |
| | | :on-load="onConsignorLoad" suffixIcon="search" |
| | | v-model="form.receiverId" |
| | | @change="changeReceiver" style="width: 80%" |
| | | placeholder="请选择卸货点"></avue-input-table> |
| | | <el-button icon="plus" @click="handleAddReceiver"></el-button> |
| | | </div> |
| | | </template> |
| | | |
| | | </avue-crud> |
| | | <el-dialog :title="pageF.title" v-model="pageF.open" class="avue-dialog avue-dialog--top" width="80%"> |
| | | <h2 v-if="optionType == 'addFinance'">报价费用</h2> |
| | | <avue-crud v-if="optionType == 'addFinance'" |
| | | :option="itemsTableOption" |
| | | :data="itemsTableData" |
| | | :option="itemsTableOption" |
| | | :data="itemsTableData" |
| | | @selection-change="selectionChange2" |
| | | > |
| | | <template #count="{row}"> |
| | | <el-input-number v-model="row.count" @change="countChange(row)" placeholder="请输入计费数量" min="0"></el-input-number> |
| | | <el-input-number v-model="row.count" @change="countChange(row)" placeholder="请输入计费数量" |
| | | min="0"></el-input-number> |
| | | </template> |
| | | </avue-crud> |
| | | <h2 v-if="optionType == 'addFinance'">实报实销费用</h2> |
| | | <avue-form v-if="optionType == 'addItinerary' || optionType == 'addFinance'" v-model="boxForm" ref="boxFormRef" :option="boxFormOption"> |
| | | <avue-form v-if="optionType == 'addItinerary' || optionType == 'addFinance'" v-model="boxForm" ref="boxFormRef" |
| | | :option="boxFormOption"> |
| | | |
| | | </avue-form> |
| | | <avue-crud |
| | |
| | | </avue-crud> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-button type="primary" v-if="optionType == 'addItinerary' || optionType == 'addFinance'" :loading="pageF.isUploading" @click="submitForm"> |
| | | <el-button type="primary" v-if="optionType == 'addItinerary' || optionType == 'addFinance'" |
| | | :loading="pageF.isUploading" @click="submitForm"> |
| | | {{ pageF.isUploading ? '提交中' : '确 定' }} |
| | | </el-button> |
| | | |
| | | <el-button type="primary" v-if="optionType == 'generate' " :loading="pageF.isUploading" @click="submitGenerate"> |
| | | <el-button type="primary" v-if="optionType == 'generate' " :loading="pageF.isUploading" |
| | | @click="submitGenerate"> |
| | | {{ pageF.isUploading ? '生成中' : '生成费用' }} |
| | | </el-button> |
| | | <el-button @click="cancelBox">取 消</el-button> |
| | |
| | | border |
| | | > |
| | | <el-descriptions-item label="调度单号">{{ form.dispatchNo }}</el-descriptions-item> |
| | | <el-descriptions-item label="客户" >{{ form.customerName }}</el-descriptions-item> |
| | | <el-descriptions-item label="实际运输工具类型" >{{ form.$actualVehicleType}}</el-descriptions-item> |
| | | <el-descriptions-item label="运输工具号码" >{{ form.licensePlate }}</el-descriptions-item> |
| | | <el-descriptions-item label="托架号" >{{ form.shelfCode }}</el-descriptions-item> |
| | | <el-descriptions-item label="主驾驶员" >{{ form.mainDriverName }}</el-descriptions-item> |
| | | <el-descriptions-item label="副驾驶员" >{{ form.assistantDriverName }}</el-descriptions-item> |
| | | <el-descriptions-item label="客户">{{ form.customerName }}</el-descriptions-item> |
| | | <el-descriptions-item label="实际运输工具类型">{{ form.$actualVehicleType }}</el-descriptions-item> |
| | | <el-descriptions-item label="运输工具号码">{{ form.licensePlate }}</el-descriptions-item> |
| | | <el-descriptions-item label="托架号">{{ form.shelfCode }}</el-descriptions-item> |
| | | <el-descriptions-item label="主驾驶员">{{ form.mainDriverName }}</el-descriptions-item> |
| | | <el-descriptions-item label="副驾驶员">{{ form.assistantDriverName }}</el-descriptions-item> |
| | | </el-descriptions> |
| | | </div> |
| | | <div v-if="optionType == 'connectHang'"> |
| | | <div v-if="optionType == 'connectHang'"> |
| | | <el-descriptions style="margin-bottom: 20px" |
| | | :column="2" |
| | | border |
| | | :column="2" |
| | | border |
| | | > |
| | | <el-descriptions-item label="调度单号">{{ form.dispatchNo }}</el-descriptions-item> |
| | | <el-descriptions-item label="客户" >{{ form.customerName }}</el-descriptions-item> |
| | | <el-descriptions-item label="实际运输工具类型" >{{ form.$actualVehicleType}}</el-descriptions-item> |
| | | <el-descriptions-item label="托架号" >{{ form.shelfCode }}</el-descriptions-item> |
| | | <el-descriptions-item label="客户">{{ form.customerName }}</el-descriptions-item> |
| | | <el-descriptions-item label="实际运输工具类型">{{ form.$actualVehicleType }}</el-descriptions-item> |
| | | <el-descriptions-item label="托架号">{{ form.shelfCode }}</el-descriptions-item> |
| | | </el-descriptions> |
| | | <avue-form v-model="form" ref="boxFormRef" :option="boxFormOption"> |
| | | |
| | |
| | | </div> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-button type="primary" :loading="pageF.isUploading" @click="submitForm2"> |
| | | <el-button type="primary" :loading="pageF.isUploading" @click="submitForm2"> |
| | | {{ pageF.isUploading ? '提交中' : '确 定' }} |
| | | </el-button> |
| | | <el-button @click="cancelBox2">取 消</el-button> |
| | |
| | | :data="goodsTableData" ref="goodsCrudRef" |
| | | > |
| | | </avue-crud> |
| | | <!-- <template #footer>--> |
| | | <!-- <div class="dialog-footer">--> |
| | | <!-- <el-button type="primary" :loading="pageF.isUploading" @click="submitForm2">--> |
| | | <!-- {{ pageF.isUploading ? '提交中' : '确 定' }}--> |
| | | <!-- </el-button>--> |
| | | <!-- <el-button @click="open2 = false">取 消</el-button>--> |
| | | <!-- </div>--> |
| | | <!-- </template>--> |
| | | <!-- <template #footer>--> |
| | | <!-- <div class="dialog-footer">--> |
| | | <!-- <el-button type="primary" :loading="pageF.isUploading" @click="submitForm2">--> |
| | | <!-- {{ pageF.isUploading ? '提交中' : '确 定' }}--> |
| | | <!-- </el-button>--> |
| | | <!-- <el-button @click="open2 = false">取 消</el-button>--> |
| | | <!-- </div>--> |
| | | <!-- </template>--> |
| | | </el-dialog> |
| | | |
| | | <el-dialog title="实际运输信息" v-model="open3" class="avue-dialog avue-dialog--top" width="80%"> |
| | | <avue-form v-model="actualForm" |
| | | ref="actualFormRef" |
| | | :option="actualFormOption"> |
| | | <avue-form v-model="actualForm" |
| | | ref="actualFormRef" |
| | | :option="actualFormOption"> |
| | | |
| | | </avue-form> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-button type="primary" :loading="pageF.isUploading" @click="submitForm3"> |
| | | {{ pageF.isUploading ? '提交中' : '确 定' }} |
| | | </el-button> |
| | | <el-button @click="open3 = false">取 消</el-button> |
| | | </div> |
| | | </template> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-button type="primary" :loading="pageF.isUploading" @click="submitForm3"> |
| | | {{ pageF.isUploading ? '提交中' : '确 定' }} |
| | | </el-button> |
| | | <el-button @click="open3 = false">取 消</el-button> |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | |
| | | |
| | | |
| | | </basicContainer> |
| | |
| | | confirmOrder, copyOrder, okOrder, initGenerate, generateTmsDispatchOrder, dropHook, connectHang |
| | | } from "@/api/tms/tmsDispatchOrder"; |
| | | import useCurrentInstance from "@/utils/useCurrentInstance"; |
| | | import {computed, onMounted, reactive, ref, toRefs, watch} from "vue"; |
| | | import {computed, onMounted, reactive, ref, toRefs, watch, getCurrentInstance} from "vue"; |
| | | import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface"; |
| | | import {usePagePlus} from "@/hooks/usePagePlus"; |
| | | import {hasPermission} from "@/utils/permissionUtils"; |
| | |
| | | import {getTmsVehicle, listTmsVehicle} from "@/api/tms/tmsVehicle"; |
| | | import {getTmsContainer, listTmsContainer} from "@/api/tms/tmsContainer"; |
| | | import {getTmsShelf, listTmsShelf} from "@/api/tms/tmsShelf"; |
| | | import {getTmsConsignor, listTmsConsignor} from "@/api/tms/tmsConsignor"; |
| | | import {addTmsConsignor, getTmsConsignor, listTmsConsignor} from "@/api/tms/tmsConsignor"; |
| | | import {ElMessage, ElMessageBox} from "element-plus"; |
| | | import {addTmsTrip, listTmsTrip} from "@/api/tms/tmsTrip"; |
| | | import {addTmsFinanceDetail, listTmsFinanceDetail, updateTmsFinanceDetail} from "@/api/tms/tmsFinanceDetail"; |
| | |
| | | import {addTmsGoodsDetail, delTmsGoodsDetail, listTmsGoodsDetail, updateTmsGoodsDetail} from "@/api/tms/tmsGoodsDetail"; |
| | | import {getTransportRouteVi, listTransportRouteVi} from "@/api/tms/tmsTransportRouteVi"; |
| | | import {listTmsQuoteItem} from "@/api/tms/tmsQuotePlanItem"; |
| | | import {$DialogForm} from '@smallwei/avue' |
| | | import {getTmsCustomerInfo, listTmsCustomerInfo} from "@/api/tms/tmsCustomerInfo"; |
| | | import {getAddressCode} from "@/api/tms/tmsRegion"; |
| | | import {mapRegeo} from "@/api/common"; |
| | | |
| | | const {appContext} = getCurrentInstance(); |
| | | |
| | | const {proxy} = useCurrentInstance(); |
| | | const crudRef = ref(); |
| | |
| | | } else if (key == 'delBtn') { |
| | | return hasPermission(["tms:tmsDispatchOrder:remove"]) && row?.status == 0 |
| | | } else if (key == 'editBtn') { |
| | | return hasPermission(["tms:tmsDispatchOrder:edit"]) && [0,1].includes(row?.status) |
| | | return hasPermission(["tms:tmsDispatchOrder:edit"]) && [0, 1].includes(row?.status) |
| | | } else if (key == 'viewBtn') { |
| | | return hasPermission(["tms:tmsDispatchOrder:query"]) |
| | | } else { |
| | |
| | | boxTableOption: <any>{}, |
| | | title: '', |
| | | open: false, |
| | | open2:false, |
| | | open2: false, |
| | | goodsTableData: <any>[], |
| | | selectionList2: <any>[], |
| | | goodsForm:<any>{}, |
| | | goodsForm: <any>{}, |
| | | open3: false, |
| | | actualForm:<any>{}, |
| | | actualForm: <any>{}, |
| | | }) |
| | | const {queryParams, form, page, selectionList,open3, |
| | | const { |
| | | queryParams, form, page, selectionList, open3, |
| | | boxTableData, optionType, |
| | | boxFormOption,boxForm,boxTableOption,title,open,open2, |
| | | goodsTableData,goodsForm,actualForm,selectionList2 |
| | | boxFormOption, boxForm, boxTableOption, title, open, open2, |
| | | goodsTableData, goodsForm, actualForm, selectionList2 |
| | | } = toRefs(data); |
| | | const option = ref({ |
| | | pageKey: 'TmsDispatchOrder', |
| | |
| | | display: true, disabled: true |
| | | }, |
| | | requiredVehicleTypes: { |
| | | label: '下单车型',disabled: true, |
| | | label: '下单车型', disabled: true, |
| | | display: true, type: 'select', dicUrl: '/system/dict/data/type/vehicle_type', dataType: 'string', |
| | | rules: [ |
| | | { |
| | |
| | | message: "订单类型不能为空", trigger: "change" |
| | | } |
| | | ], |
| | | change:({value}: any)=>{ |
| | | option.value.group.forEach((item:any) =>{ |
| | | if (item.prop == 'pcxx'){ |
| | | item.column.shipperId.rules.forEach((cItem:any)=>{ |
| | | cItem.required = !(value == 1); |
| | | }) ; |
| | | item.column.receiverId.rules.forEach((cItem:any)=>{ |
| | | cItem.required = !(value == 1); |
| | | }) ; |
| | | } |
| | | }) |
| | | change: ({value}: any) => { |
| | | option.value.group.forEach((item: any) => { |
| | | if (item.prop == 'pcxx') { |
| | | item.column.shipperId.rules.forEach((cItem: any) => { |
| | | cItem.required = !(value == 1); |
| | | }); |
| | | item.column.receiverId.rules.forEach((cItem: any) => { |
| | | cItem.required = !(value == 1); |
| | | }); |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | // signType: { |
| | |
| | | ], |
| | | }, |
| | | latestArrival: { |
| | | label: '要求最晚到达时间',labelWidth: 150, |
| | | label: '要求最晚到达时间', labelWidth: 150, |
| | | type: 'datetime', // 改为 datetime 类型 |
| | | format: 'YYYY-MM-DD HH:mm:ss', |
| | | valueFormat: 'YYYY-MM-DD HH:mm:ss', |
| | |
| | | }, |
| | | |
| | | |
| | | |
| | | } |
| | | }, |
| | | { |
| | | label: '派车信息', |
| | | prop: 'pcxx', |
| | | column: { |
| | | operationMode:{ |
| | | label: '是否是自营车队',value:0, |
| | | operationMode: { |
| | | label: '是否是自营车队', value: 0, |
| | | type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_number_is', |
| | | rules: [ |
| | | { |
| | |
| | | message: "是否是自营车队不能为空", trigger: "change" |
| | | } |
| | | ], |
| | | change: ({value}:any) => { |
| | | change: ({value}: any) => { |
| | | console.log(value) |
| | | option.value.group.forEach((item:any) =>{ |
| | | if (item.prop == 'pcxx'){ |
| | | item.column.vehicleProviderId.rules.forEach((cItem:any)=>{ |
| | | cItem.required = value != 1; |
| | | }) ; |
| | | option.value.group.forEach((item: any) => { |
| | | if (item.prop == 'pcxx') { |
| | | item.column.vehicleProviderId.rules.forEach((cItem: any) => { |
| | | cItem.required = value == 1; |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | |
| | | }, |
| | | mainDriverId: { |
| | | label: '主驾驶员', |
| | | display: true,dataType: 'string', |
| | | display: true, dataType: 'string', |
| | | rules: [ |
| | | { |
| | | required: true, |
| | |
| | | licenseType: { |
| | | label: '准驾车型', minWidth: 120, |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/license_type', |
| | | search: true,multiple:true, |
| | | search: true, multiple: true, |
| | | }, |
| | | }, |
| | | |
| | |
| | | return callback(res.data || {}) |
| | | }) |
| | | } else { |
| | | listTmsDriver({pageSize: page.pageSize, pageNum: page.currentPage, ...data,carrierType:form.value.operationMode}).then(res => { |
| | | listTmsDriver({ |
| | | pageSize: page.pageSize, |
| | | pageNum: page.currentPage, ...data, |
| | | carrierType: form.value.operationMode |
| | | }).then(res => { |
| | | return callback({ |
| | | total: res.total, |
| | | data: res.rows || [], |
| | |
| | | }, |
| | | assistantDriverId: { |
| | | label: '副驾驶员', |
| | | display: true,dataType: 'string', |
| | | display: true, dataType: 'string', |
| | | change: (val: any) => { |
| | | const table = crudRef.value?.getPropRef?.('assistantDriverId')?.$refs?.temp; |
| | | if (!table) return; |
| | |
| | | search: true, |
| | | }, |
| | | licenseType: { |
| | | label: '准驾车型', minWidth: 120,multiple:true, |
| | | label: '准驾车型', minWidth: 120, multiple: true, |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/license_type', |
| | | search: true, |
| | | }, |
| | |
| | | return callback(res.data || {}) |
| | | }) |
| | | } else { |
| | | listTmsDriver({pageSize: page.pageSize, pageNum: page.currentPage, ...data,carrierType:form.value.operationMode}).then(res => { |
| | | listTmsDriver({ |
| | | pageSize: page.pageSize, |
| | | pageNum: page.currentPage, ...data, |
| | | carrierType: form.value.operationMode |
| | | }).then(res => { |
| | | return callback({ |
| | | total: res.total, |
| | | data: res.rows || [], |
| | |
| | | |
| | | }, |
| | | vehicleId: { |
| | | label: '车牌号',dataType: 'string', |
| | | label: '车牌号', dataType: 'string', |
| | | display: true, |
| | | rules: [ |
| | | { |
| | |
| | | return callback(res.data || {}) |
| | | }) |
| | | } else { |
| | | listTmsVehicle({pageSize: page.pageSize, pageNum: page.currentPage, ...data,carrierType:form.value.operationMode}).then(res => { |
| | | listTmsVehicle({ |
| | | pageSize: page.pageSize, |
| | | pageNum: page.currentPage, ...data, |
| | | carrierType: form.value.operationMode |
| | | }).then(res => { |
| | | return callback({ |
| | | total: res.total, |
| | | data: res.rows || [], |
| | |
| | | display: true, type: 'select', dicUrl: '/system/dict/data/type/vehicle_type', dataType: 'string', |
| | | }, |
| | | shipperId: { |
| | | label: '装货点',dataType:'string', |
| | | label: '装货点', dataType: 'string', |
| | | display: true, |
| | | change: (val: any) => { |
| | | const table = crudRef.value?.getPropRef?.('shipperId')?.$refs?.temp; |
| | | if (!table) return; |
| | | let active = table.active; |
| | | if (Array.isArray(active)) active = active[0]; |
| | | if (active) { |
| | | let shipperRegionCode = ''; |
| | | if (active.provinceId){ |
| | | shipperRegionCode = active.provinceId; |
| | | } |
| | | if (active.cityId){ |
| | | shipperRegionCode =shipperRegionCode+ ","+active.cityId; |
| | | |
| | | } |
| | | if (active.districtId){ |
| | | shipperRegionCode =shipperRegionCode+ ","+active.districtId; |
| | | |
| | | } |
| | | if (active.streetId){ |
| | | shipperRegionCode =shipperRegionCode+ ","+active.streetId; |
| | | } |
| | | Object.assign(form.value, { |
| | | shipperId: active.id, |
| | | shipperName: active.consignorName, |
| | | shipperRegionLabel: active.regionLabel, |
| | | shipperAddress: active.addressDetail, |
| | | shipperMobile: active.contactPhone, |
| | | shipperRegionCode:shipperRegionCode |
| | | }); |
| | | } |
| | | }, |
| | | rules: [ |
| | | { |
| | | required: false, |
| | | message: "装货点不能为空", trigger: "change" |
| | | } |
| | | ], |
| | | type: 'table', suffixIcon: 'search', |
| | | children: { |
| | | border: true, |
| | | searchLabelWidth: 100, |
| | | searchMenuSpan: 5, |
| | | column: { |
| | | consignorCode: { |
| | | label: '收装货点编码', minWidth: 130, |
| | | search: true, |
| | | }, |
| | | consignorName: { |
| | | label: '收装货点名称', minWidth: 130, |
| | | search: true, |
| | | }, |
| | | consignorType: { |
| | | label: '收装货点类型', minWidth: 80, |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/consignor_type', |
| | | display: false, |
| | | hide: false, |
| | | search: true, |
| | | }, |
| | | contactName: { |
| | | label: '联系人姓名', minWidth: 110, |
| | | display: false, |
| | | hide: false, |
| | | search: true, |
| | | }, |
| | | contactPhone: { |
| | | label: '联系人电话', minWidth: 110, |
| | | display: false, |
| | | hide: false, |
| | | search: true, |
| | | }, |
| | | regionLabel: { |
| | | label: '行政区域', minWidth: 180, |
| | | display: false, |
| | | hide: false, |
| | | search: true, |
| | | }, |
| | | }, |
| | | |
| | | }, |
| | | props: { |
| | | label: 'consignorName', |
| | | 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] |
| | | } |
| | | getTmsConsignor(id).then(res => { |
| | | return callback(res.data || {}) |
| | | }) |
| | | } else { |
| | | if (form.value.startRegionCode) { |
| | | const split = form.value.startRegionCode.split(','); |
| | | const [provinceId, cityId, districtId, streetId] = split; |
| | | |
| | | if (provinceId) data.provinceId = provinceId; |
| | | if (cityId) data.cityId = cityId; |
| | | if (districtId) data.districtId = districtId; |
| | | if (streetId) data.streetId = streetId; |
| | | } |
| | | console.log(form.value.startRegionCode) |
| | | listTmsConsignor({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => { |
| | | return callback({ |
| | | total: res.total, |
| | | data: res.rows || [], |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | } |
| | | |
| | | }, |
| | | shipperRegionLabel: { |
| | |
| | | }, |
| | | receiverId: { |
| | | label: '卸货点', |
| | | display: true, dataType:'string', |
| | | display: true, dataType: 'string', |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "卸货点不能为空", trigger: "change" |
| | | } |
| | | ], |
| | | change: (val: any) => { |
| | | const table = crudRef.value?.getPropRef?.('receiverId')?.$refs?.temp; |
| | | if (!table) return; |
| | | let active = table.active; |
| | | if (Array.isArray(active)) active = active[0]; |
| | | if (active) { |
| | | let receiverRegionCode = ''; |
| | | if (active.provinceId){ |
| | | receiverRegionCode = active.provinceId; |
| | | } |
| | | if (active.cityId){ |
| | | receiverRegionCode =receiverRegionCode+ ","+active.cityId; |
| | | |
| | | } |
| | | if (active.districtId){ |
| | | receiverRegionCode =receiverRegionCode+ ","+active.districtId; |
| | | |
| | | } |
| | | if (active.streetId){ |
| | | receiverRegionCode =receiverRegionCode+ ","+active.streetId; |
| | | } |
| | | |
| | | Object.assign(form.value, { |
| | | receiverId: active.id, |
| | | receiverName: active.consignorName, |
| | | receiverRegionLabel: active.regionLabel, |
| | | receiverAddress: active.addressDetail, |
| | | receiverMobile: active.contactPhone, |
| | | receiverRegionCode:receiverRegionCode, |
| | | }); |
| | | } |
| | | }, |
| | | type: 'table', suffixIcon: 'search', |
| | | children: { |
| | | border: true, |
| | | searchLabelWidth: 100, |
| | | searchMenuSpan: 5, |
| | | column: { |
| | | consignorCode: { |
| | | label: '收装货点编码', minWidth: 130, |
| | | search: true, |
| | | }, |
| | | consignorName: { |
| | | label: '收装货点名称', minWidth: 130, |
| | | search: true, |
| | | }, |
| | | consignorType: { |
| | | label: '收装货点类型', minWidth: 80, |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/consignor_type', |
| | | display: false, |
| | | hide: false, |
| | | search: true, |
| | | }, |
| | | contactName: { |
| | | label: '联系人姓名', minWidth: 110, |
| | | display: false, |
| | | hide: false, |
| | | search: true, |
| | | }, |
| | | contactPhone: { |
| | | label: '联系人电话', minWidth: 110, |
| | | display: false, |
| | | hide: false, |
| | | search: true, |
| | | }, |
| | | regionLabel: { |
| | | label: '行政区域', minWidth: 180, |
| | | display: false, |
| | | hide: false, |
| | | search: true, |
| | | }, |
| | | }, |
| | | |
| | | }, |
| | | props: { |
| | | label: 'consignorName', |
| | | 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] |
| | | } |
| | | getTmsConsignor(id).then(res => { |
| | | return callback(res.data || {}) |
| | | }) |
| | | } else { |
| | | if (form.value.endRegionCode) { |
| | | const split = form.value.endRegionCode.split(','); |
| | | const [provinceId, cityId, districtId, streetId] = split; |
| | | |
| | | if (provinceId) data.provinceId = provinceId; |
| | | if (cityId) data.cityId = cityId; |
| | | if (districtId) data.districtId = districtId; |
| | | if (streetId) data.streetId = streetId; |
| | | } |
| | | listTmsConsignor({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => { |
| | | return callback({ |
| | | total: res.total, |
| | | data: res.rows || [], |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | } |
| | | |
| | | }, |
| | | receiverRegionLabel: { |
| | | label: '卸货点行政区域', |
| | |
| | | hide: false, |
| | | search: false, |
| | | }, |
| | | |
| | | updateTimeRange: { |
| | | label: '更新时间', display: false, search: true, searchRange: true, type: 'date', |
| | | format: 'YYYY-MM-DD', hide: true, searchSpan: 5, |
| | | valueFormat: 'YYYY-MM-DD', |
| | | }, |
| | | confirmTimeRange: { |
| | | label: '确认时间', display: false, search: true, searchRange: true, type: 'date', |
| | | format: 'YYYY-MM-DD', hide: true, searchSpan: 5, |
| | | valueFormat: 'YYYY-MM-DD', |
| | | }, |
| | | okTimeRange: { |
| | | label: '完成时间', display: false, search: true, searchRange: true, type: 'date', |
| | | format: 'YYYY-MM-DD', hide: true, searchSpan: 5, |
| | | valueFormat: 'YYYY-MM-DD', |
| | | }, |
| | | |
| | | } |
| | | }) |
| | |
| | | voucherUrl: { |
| | | label: '行程凭证', |
| | | display: true, |
| | | span: 24,dataType: 'string', |
| | | span: 24, dataType: 'string', |
| | | type: 'upload', |
| | | action: '/common/upload2', |
| | | |
| | |
| | | voucherUrl: { |
| | | label: '行程凭证', |
| | | display: true, |
| | | span: 24,dataType: 'string', |
| | | span: 24, dataType: 'string', |
| | | type: 'upload', |
| | | action: '/common/upload2', |
| | | |
| | |
| | | label: '行程凭证', |
| | | display: true, |
| | | span: 24, |
| | | accept:'string',dataType: 'string', |
| | | accept: 'string', dataType: 'string', |
| | | type: 'upload', |
| | | action: '/common/upload2', |
| | | |
| | |
| | | label: '费用凭证', |
| | | display: true, |
| | | span: 24, |
| | | accept:'string',dataType: 'object', |
| | | accept: 'string', dataType: 'object', |
| | | type: 'upload', |
| | | action: '/common/upload2', |
| | | |
| | |
| | | }, |
| | | transportLine: { |
| | | label: '运输线路', |
| | | display: false,minWidth: 180, overHidden: true |
| | | display: false, minWidth: 180, overHidden: true |
| | | }, |
| | | actualVehicleType: { |
| | | label: '车型', minWidth: 130, |
| | |
| | | message: "接挂车辆号码不能为空", trigger: "change" |
| | | } |
| | | ], |
| | | type: 'table', suffixIcon: 'search',dataType: 'string', |
| | | type: 'table', suffixIcon: 'search', dataType: 'string', |
| | | children: { |
| | | border: true, |
| | | searchLabelWidth: 100, |
| | |
| | | message: "接挂司机不能为空", trigger: "change" |
| | | } |
| | | ], |
| | | type: 'table', suffixIcon: 'search',dataType: 'string', |
| | | type: 'table', suffixIcon: 'search', dataType: 'string', |
| | | children: { |
| | | border: true, |
| | | searchMenuSpan: 5, |
| | |
| | | licenseType: { |
| | | label: '准驾车型', minWidth: 120, |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/license_type', |
| | | search: true,multiple:true, |
| | | search: true, multiple: true, |
| | | }, |
| | | }, |
| | | |
| | |
| | | viewBtn: false, |
| | | column: { |
| | | productId: { |
| | | label: '货品名称',hide:true, |
| | | display: true,minWidth: 120, type: 'table', suffixIcon: 'search',dataType: 'string', |
| | | label: '货品名称', hide: true, |
| | | display: true, minWidth: 120, type: 'table', suffixIcon: 'search', dataType: 'string', |
| | | children: { |
| | | border: true, |
| | | searchLabelWidth: 100, |
| | |
| | | return callback(res.data || {}) |
| | | }) |
| | | } else { |
| | | listTmsProductInfo({pageSize: page.pageSize, |
| | | listTmsProductInfo({ |
| | | pageSize: page.pageSize, |
| | | pageNum: page.currentPage, |
| | | ...data, |
| | | customerId:form.value.customerId |
| | | // customerId:form.value.customerId |
| | | }).then(res => { |
| | | return callback({ |
| | | total: res.total, |
| | |
| | | packUnit: active.packUnit, |
| | | }); |
| | | |
| | | goodsForm.value.sumWeight = active.grossWeight|| 0 * goodsForm.value.quantity; |
| | | goodsForm.value.sumNetWeight = active.netWeight || 0* goodsForm.value.quantity; |
| | | goodsForm.value.sumVolume = active.volume|| 0 * goodsForm.value.quantity; |
| | | goodsForm.value.sumWeight = active.grossWeight || 0 * goodsForm.value.quantity; |
| | | goodsForm.value.sumNetWeight = active.netWeight || 0 * goodsForm.value.quantity; |
| | | goodsForm.value.sumVolume = active.volume || 0 * goodsForm.value.quantity; |
| | | |
| | | } |
| | | }, |
| | | }, |
| | | productName: { |
| | | label: '货品名称',minWidth: 120, |
| | | display :false, |
| | | label: '货品名称', minWidth: 120, |
| | | display: false, |
| | | hide: false, |
| | | }, |
| | | quantity: { |
| | | label: '数量', |
| | | addDisplay :true,minWidth: 100, |
| | | editDisplay :true, |
| | | viewDisplay :true, |
| | | addDisplay: true, minWidth: 100, |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | | value: 1, |
| | | change:()=>{ |
| | | change: () => { |
| | | goodsForm.value.sumWeight = goodsForm.value.grossWeight || 0 * goodsForm.value.quantity; |
| | | goodsForm.value.sumNetWeight = goodsForm.value.netWeight || 0* goodsForm.value.quantity; |
| | | goodsForm.value.sumNetWeight = goodsForm.value.netWeight || 0 * goodsForm.value.quantity; |
| | | goodsForm.value.sumVolume = goodsForm.value.volume || 0 * goodsForm.value.quantity; |
| | | } |
| | | }, |
| | | sumWeight: { |
| | | label: '重量(kg)', |
| | | addDisplay :true,minWidth: 100,append: 'Kg', |
| | | editDisplay :true, |
| | | viewDisplay :true, |
| | | addDisplay: true, minWidth: 100, append: 'Kg', |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | | }, |
| | | sumNetWeight: { |
| | | label: '净重(kg)', |
| | | addDisplay :true, |
| | | editDisplay :true,minWidth: 100,append: 'Kg', |
| | | viewDisplay :true, |
| | | addDisplay: true, |
| | | editDisplay: true, minWidth: 100, append: 'Kg', |
| | | viewDisplay: true, |
| | | }, |
| | | sumVolume: { |
| | | label: '体积(m³)', |
| | | addDisplay :true, |
| | | editDisplay :true,minWidth: 100,append: 'm³', |
| | | viewDisplay :true, |
| | | addDisplay: true, |
| | | editDisplay: true, minWidth: 100, append: 'm³', |
| | | viewDisplay: true, |
| | | }, |
| | | |
| | | |
| | | loosePieces: { |
| | | label: '散件数', |
| | | addDisplay :true, |
| | | editDisplay :true,minWidth: 100, |
| | | viewDisplay :true, |
| | | addDisplay: true, |
| | | editDisplay: true, minWidth: 100, |
| | | viewDisplay: true, |
| | | }, |
| | | |
| | | fullContainers: { |
| | | label: '整箱数', |
| | | addDisplay :true, |
| | | editDisplay :true,minWidth: 100, |
| | | viewDisplay :true, |
| | | addDisplay: true, |
| | | editDisplay: true, minWidth: 100, |
| | | viewDisplay: true, |
| | | }, |
| | | containerNo: { |
| | | label: '集装箱号', |
| | | addDisplay :true, |
| | | editDisplay :true,minWidth: 100, |
| | | viewDisplay :true, |
| | | addDisplay: true, |
| | | editDisplay: true, minWidth: 100, |
| | | viewDisplay: true, |
| | | }, |
| | | palletCount: { |
| | | label: '托数', |
| | | addDisplay :true,minWidth: 100, |
| | | editDisplay :true, |
| | | viewDisplay :true, |
| | | addDisplay: true, minWidth: 100, |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | | } |
| | | }}) |
| | | } |
| | | }) |
| | | |
| | | const actualFormOption = ref({ |
| | | menuBtn: false, labelWidth: 140, |
| | | column:{ |
| | | departureAddress:{ |
| | | menuBtn: false, labelWidth: 140, |
| | | column: { |
| | | departureAddress: { |
| | | label: '实际出发地地址', |
| | | span:24, |
| | | span: 24, |
| | | }, |
| | | destinationAddress:{ |
| | | destinationAddress: { |
| | | label: '实际目的地地址', |
| | | span:24, |
| | | span: 24, |
| | | }, |
| | | actualLoadStart: { |
| | | label: '实际装车开始时间', |
| | |
| | | display: true, |
| | | }, |
| | | actualQuantity: { |
| | | label: '实发数量',type: 'number', |
| | | label: '实发数量', type: 'number', |
| | | }, |
| | | actualWeight: { |
| | | label: '实发重量',type: 'number', |
| | | label: '实发重量', type: 'number', |
| | | }, |
| | | actualVolume: { |
| | | label: '实发体积',type: 'number', |
| | | label: '实发体积', type: 'number', |
| | | }, |
| | | reweighWeight: { |
| | | label: '复磅重量',type: 'number', |
| | | label: '复磅重量', type: 'number', |
| | | }, |
| | | electronicLock:{ |
| | | electronicLock: { |
| | | label: '电子锁', |
| | | } |
| | | } |
| | |
| | | pageKey: 'itemsTable', |
| | | rowKey: 'rowKey', |
| | | header: false, |
| | | addBtn: false,menu: false, |
| | | column:{ |
| | | feeType:{ |
| | | addBtn: false, menu: false, |
| | | column: { |
| | | feeType: { |
| | | label: '费用名称', |
| | | }, |
| | | unit:{ |
| | | unit: { |
| | | label: '*计量单位', |
| | | }, |
| | | price:{ |
| | | price: { |
| | | label: '*计费金额', |
| | | }, |
| | | currency:{ |
| | | currency: { |
| | | label: '币制', |
| | | }, |
| | | count:{ |
| | | label: '计费数量',minWidth:130, |
| | | count: { |
| | | label: '计费数量', minWidth: 130, |
| | | }, |
| | | sum:{ |
| | | sum: { |
| | | label: '总金额', |
| | | } |
| | | } |
| | | }) |
| | | const itemsCrudRef =ref() |
| | | |
| | | const consignorOption = ref({ |
| | | border: true, |
| | | searchLabelWidth: 100, |
| | | searchMenuSpan: 5, |
| | | column: { |
| | | consignorCode: { |
| | | label: '收装货点编码', minWidth: 130, |
| | | search: true, |
| | | }, |
| | | consignorName: { |
| | | label: '收装货点名称', minWidth: 130, |
| | | search: true, |
| | | }, |
| | | consignorType: { |
| | | label: '收装货点类型', minWidth: 80, |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/consignor_type', |
| | | display: false, |
| | | hide: false, |
| | | search: true, |
| | | }, |
| | | contactName: { |
| | | label: '联系人姓名', minWidth: 110, |
| | | display: false, |
| | | hide: false, |
| | | search: true, |
| | | }, |
| | | contactPhone: { |
| | | label: '联系人电话', minWidth: 110, |
| | | display: false, |
| | | hide: false, |
| | | search: true, |
| | | }, |
| | | regionLabel: { |
| | | label: '行政区域', minWidth: 180, |
| | | display: false, |
| | | hide: false, |
| | | search: true, |
| | | }, |
| | | }, |
| | | }) |
| | | const consignorProps = ref({ |
| | | label: 'consignorName', |
| | | value: 'id' |
| | | }) |
| | | |
| | | |
| | | const itemsCrudRef = ref() |
| | | const itemsTableData = ref<any>([]) |
| | | |
| | | const { |
| | |
| | | }, |
| | | handleSelectionChangeFunc: (selection: any) => { |
| | | selectionList.value = selection; |
| | | }, |
| | | getBeginListFunc: () => { |
| | | queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.createTimeRange, 'createTime') || {}; |
| | | queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.updateTimeRange, 'updateTime') || {}; |
| | | queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.confirmTimeRange, 'confirmTime') || {}; |
| | | queryParams.value = proxy.addDateRangeNew(queryParams.value, queryParams.value?.okTimeRange, 'okTime') || {}; |
| | | } |
| | | }) |
| | | const handleConfirm = (row: any) => { |
| | |
| | | } |
| | | |
| | | const submitForm = () => { |
| | | if (optionType.value === 'addItinerary'){ |
| | | if (optionType.value === 'addItinerary') { |
| | | if (Array.isArray(boxForm.value.voucherUrl)) { |
| | | boxForm.value.voucherUrl = boxForm.value.voucherUrl.toString(); |
| | | } |
| | |
| | | cancelBox(); |
| | | onLoad(page.value); |
| | | }) |
| | | }else if (optionType.value === 'addFinance'){ |
| | | } else if (optionType.value === 'addFinance') { |
| | | if (Array.isArray(boxForm.value.feeVoucherUrl)) { |
| | | boxForm.value.feeVoucherUrl = boxForm.value.feeVoucherUrl.toString(); |
| | | } |
| | | let filter = selectionList2.value.filter((item:any)=>{ |
| | | let filter = selectionList2.value.filter((item: any) => { |
| | | return !item.count |
| | | }); |
| | | if (filter.length > 0){ |
| | | if (filter.length > 0) { |
| | | proxy.$modal.msgError("勾选报价费用请填写计费数量"); |
| | | return; |
| | | } |
| | | boxForm.value.items = selectionList2.value; |
| | | addTmsFinanceDetail(boxForm.value).then(res=>{ |
| | | addTmsFinanceDetail(boxForm.value).then(res => { |
| | | ElMessage({ |
| | | message: "操作成功!", |
| | | type: 'success' |
| | |
| | | }) |
| | | } |
| | | |
| | | const handleAddFinance = async (row:any)=>{ |
| | | const handleAddFinance = async (row: any) => { |
| | | optionType.value = 'addFinance'; |
| | | boxFormOption.value = financeOption.value; |
| | | boxTableOption.value = financeTableOption.value; |
| | | const quotePlanItemRes = await listTmsQuoteItem({quotePlanId:row.quotePlanId,pageNum: 1, pageSize: 999}); |
| | | const quotePlanItemRes = await listTmsQuoteItem({quotePlanId: row.quotePlanId, pageNum: 1, pageSize: 999}); |
| | | let items = quotePlanItemRes.rows || []; |
| | | itemsTableData.value = items.map((item:any) => { |
| | | itemsTableData.value = items.map((item: any) => { |
| | | return { |
| | | rowKey: item.id, |
| | | feeType: item.freeName, |
| | | unit: item.unit, |
| | | price: item.price, |
| | | currency: item.currency, |
| | | count: 0, |
| | | count: 0, |
| | | sum: 0, |
| | | } |
| | | }) |
| | | |
| | | listTmsFinanceDetail({ |
| | | dispatchOrderId: row.id,financeType:2, |
| | | pageNum: 1, pageSize: 999}).then(res => { |
| | | dispatchOrderId: row.id, financeType: 2, |
| | | pageNum: 1, pageSize: 999 |
| | | }).then(res => { |
| | | |
| | | |
| | | boxTableData.value = res.rows || []; |
| | |
| | | boxForm.value = { |
| | | dispatchOrderId: row.id, |
| | | dataSource: 0, |
| | | financeType:2, |
| | | financeType: 2, |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const handleGenerate = () => { |
| | | let ids = selectionList.value.map((item:any) => item.id); |
| | | let ids = selectionList.value.map((item: any) => item.id); |
| | | initGenerate(ids).then(res => { |
| | | boxTableData.value = res.data|| []; |
| | | boxTableData.value = res.data || []; |
| | | optionType.value = 'generate'; |
| | | pageF.open = true; |
| | | pageF.title = '生成应收应付费用数据'; |
| | |
| | | |
| | | const submitGenerate = () => { |
| | | pageF.isUploading = true; |
| | | let ids = selectionList.value.map((item:any) => item.id); |
| | | let ids = selectionList.value.map((item: any) => item.id); |
| | | |
| | | generateTmsDispatchOrder(ids).then(res => { |
| | | pageF.isUploading = false; |
| | |
| | | }) |
| | | cancelBox(); |
| | | onLoad(page.value); |
| | | }).finally(()=>{ |
| | | }).finally(() => { |
| | | pageF.isUploading = false; |
| | | }) |
| | | } |
| | |
| | | * 甩挂 |
| | | */ |
| | | const handleDropHook = () => { |
| | | title.value = '调度单甩挂'; |
| | | title.value = '调度单甩挂'; |
| | | open.value = true; |
| | | form.value = selectionList.value[0]; |
| | | optionType.value = 'dropHook'; |
| | |
| | | }) |
| | | cancelBox2(); |
| | | onLoad(page.value); |
| | | }).finally(()=>{ |
| | | }).finally(() => { |
| | | pageF.isUploading = false; |
| | | }) |
| | | }else{ |
| | | } else { |
| | | connectHang({ |
| | | dispatchId:form.value.id, |
| | | vehicleId:form.value.vehicleId, |
| | | driverId:form.value.driverId |
| | | dispatchId: form.value.id, |
| | | vehicleId: form.value.vehicleId, |
| | | driverId: form.value.driverId |
| | | }).then(res => { |
| | | ElMessage({ |
| | | message: "提交成功!", |
| | |
| | | }) |
| | | cancelBox2(); |
| | | onLoad(page.value); |
| | | }).finally(()=>{ |
| | | }).finally(() => { |
| | | pageF.isUploading = false |
| | | }) |
| | | } |
| | |
| | | } |
| | | |
| | | const handleAddGoods = (row: any) => { |
| | | listTmsGoodsDetail({dispatchId: row.id,pageSize:999,pageNum:1}).then(res=>{ |
| | | goodsTableData.value = res.rows || []; |
| | | listTmsGoodsDetail({dispatchId: row.id, pageSize: 999, pageNum: 1}).then(res => { |
| | | goodsTableData.value = res.rows || []; |
| | | form.value = row; |
| | | open2.value = true; |
| | | }) |
| | | } |
| | | const rowGoodsUpdate = (row:any,index:any,done:any, loading:any) => { |
| | | const rowGoodsUpdate = (row: any, index: any, done: any, loading: any) => { |
| | | updateTmsGoodsDetail(row).then(res => { |
| | | ElMessage({ |
| | | message: "修改成功!", |
| | |
| | | handleAddGoods(form.value); |
| | | onLoad(page.value); |
| | | done(); |
| | | }).catch(()=>{ |
| | | }).catch(() => { |
| | | loading() |
| | | }) |
| | | } |
| | | const rowGoodsSave = (row:any, done:any, loading:any) => { |
| | | const rowGoodsSave = (row: any, done: any, loading: any) => { |
| | | row.dispatchId = form.value.id; |
| | | row.dispatchNo = form.value.dispatchNo; |
| | | addTmsGoodsDetail(row).then(res=>{ |
| | | addTmsGoodsDetail(row).then(res => { |
| | | ElMessage({ |
| | | message: "新增成功!", |
| | | type: 'success' |
| | |
| | | handleAddGoods(form.value); |
| | | onLoad(page.value); |
| | | done(); |
| | | }).catch(()=>{ |
| | | }).catch(() => { |
| | | loading() |
| | | }) |
| | | } |
| | | const rowGoodsDel = (row:any) => { |
| | | ElMessageBox.confirm("确定将选择数据删除?", '系统提示', {confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning'}).then(() => { |
| | | const rowGoodsDel = (row: any) => { |
| | | ElMessageBox.confirm("确定将选择数据删除?", '系统提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | return delTmsGoodsDetail(row.id); |
| | | }).then(() => { |
| | | handleAddGoods(form.value); |
| | |
| | | }); |
| | | } |
| | | |
| | | const handleActual = (row:any) => { |
| | | actualForm.value = row; |
| | | open3.value = true; |
| | | const handleActual = (row: any) => { |
| | | actualForm.value = row; |
| | | open3.value = true; |
| | | |
| | | } |
| | | |
| | | const submitForm3 = ()=>{ |
| | | updateTmsDispatchOrder(actualForm.value).then(res=>{ |
| | | const submitForm3 = () => { |
| | | updateTmsDispatchOrder(actualForm.value).then(res => { |
| | | ElMessage({ |
| | | message: "操作成功!", |
| | | type: 'success' |
| | |
| | | onLoad(page.value) |
| | | }) |
| | | } |
| | | const countChange = (row:any) => { |
| | | const countChange = (row: any) => { |
| | | row.sum = Number(row.price) * Number(row.count); |
| | | } |
| | | |
| | |
| | | selectionList2.value = selection; |
| | | } |
| | | |
| | | const onShipperLoad = ({page, value, data}: { page: any, value: any, data: any }, callback: any) => { |
| | | if (value) { |
| | | let id = value; |
| | | if (Array.isArray(value)) { |
| | | id = value[0] |
| | | } |
| | | getTmsConsignor(id).then(res => { |
| | | return callback(res.data || {}) |
| | | }) |
| | | } else { |
| | | if (form.value.startRegionCode) { |
| | | const split = form.value.startRegionCode.split(','); |
| | | const [provinceId, cityId, districtId, streetId] = split; |
| | | |
| | | if (provinceId) data.provinceId = provinceId; |
| | | if (cityId) data.cityId = cityId; |
| | | if (districtId) data.districtId = districtId; |
| | | if (streetId) data.streetId = streetId; |
| | | } |
| | | listTmsConsignor({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => { |
| | | return callback({ |
| | | total: res.total, |
| | | data: res.rows || [], |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | | const onConsignorLoad = ({page, value, data}: { page: any, value: any, data: any }, callback: any) => { |
| | | if (value) { |
| | | let id = value; |
| | | if (Array.isArray(value)) { |
| | | id = value[0] |
| | | } |
| | | getTmsConsignor(id).then(res => { |
| | | return callback(res.data || {}) |
| | | }) |
| | | } else { |
| | | if (form.value.endRegionCode) { |
| | | const split = form.value.endRegionCode.split(','); |
| | | const [provinceId, cityId, districtId, streetId] = split; |
| | | |
| | | if (provinceId) data.provinceId = provinceId; |
| | | if (cityId) data.cityId = cityId; |
| | | if (districtId) data.districtId = districtId; |
| | | if (streetId) data.streetId = streetId; |
| | | } |
| | | listTmsConsignor({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => { |
| | | return callback({ |
| | | total: res.total, |
| | | data: res.rows || [], |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | | const changeShipper = ({value}: any) => { |
| | | |
| | | if (value) { |
| | | let id = value; |
| | | if (Array.isArray(value)) { |
| | | id = value[0] |
| | | } |
| | | getTmsConsignor(id).then(res => { |
| | | let active = res.data || {}; |
| | | let shipperRegionCode = ''; |
| | | if (active.provinceId) { |
| | | shipperRegionCode = active.provinceId; |
| | | } |
| | | if (active.cityId) { |
| | | shipperRegionCode = shipperRegionCode + "," + active.cityId; |
| | | |
| | | } |
| | | if (active.districtId) { |
| | | shipperRegionCode = shipperRegionCode + "," + active.districtId; |
| | | |
| | | } |
| | | if (active.streetId) { |
| | | shipperRegionCode = shipperRegionCode + "," + active.streetId; |
| | | } |
| | | Object.assign(form.value, { |
| | | shipperId: active.id, |
| | | shipperName: active.consignorName, |
| | | shipperRegionLabel: active.regionLabel, |
| | | shipperAddress: active.addressDetail, |
| | | shipperMobile: active.contactPhone, |
| | | shipperRegionCode: shipperRegionCode |
| | | }); |
| | | }) |
| | | } |
| | | } |
| | | const changeReceiver = ({value}: any) => { |
| | | |
| | | if (value) { |
| | | let id = value; |
| | | if (Array.isArray(value)) { |
| | | id = value[0] |
| | | } |
| | | getTmsConsignor(id).then(res => { |
| | | let active = res.data || {}; |
| | | let receiverRegionCode = ''; |
| | | if (active.provinceId) { |
| | | receiverRegionCode = active.provinceId; |
| | | } |
| | | if (active.cityId) { |
| | | receiverRegionCode = receiverRegionCode + "," + active.cityId; |
| | | |
| | | } |
| | | if (active.districtId) { |
| | | receiverRegionCode = receiverRegionCode + "," + active.districtId; |
| | | |
| | | } |
| | | if (active.streetId) { |
| | | receiverRegionCode = receiverRegionCode + "," + active.streetId; |
| | | } |
| | | |
| | | Object.assign(form.value, { |
| | | receiverId: active.id, |
| | | receiverName: active.consignorName, |
| | | receiverRegionLabel: active.regionLabel, |
| | | receiverAddress: active.addressDetail, |
| | | receiverMobile: active.contactPhone, |
| | | receiverRegionCode: receiverRegionCode, |
| | | }); |
| | | }) |
| | | } |
| | | } |
| | | const consignorAddOption =ref({ |
| | | labelWidth: 120, |
| | | group: [ |
| | | { |
| | | label: '基础信息', |
| | | prop: 'jcxx', |
| | | column:{ |
| | | // consignorCode: { |
| | | // label: '装卸货点编码',minWidth: 150, |
| | | // addDisplay: false, disabled: true, |
| | | // editDisplay: true, |
| | | // viewDisplay: true, |
| | | // hide: false, |
| | | // search: true, |
| | | // rules: [ |
| | | // { |
| | | // required: true, |
| | | // message: "装卸货点编码不能为空", trigger: "blur" |
| | | // } |
| | | // ], |
| | | // }, |
| | | consignorName: { |
| | | label: '装卸货点名称',minWidth: 150, |
| | | addDisplay: true, |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | | hide: false, |
| | | search: true, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "装卸货点名称不能为空", trigger: "blur" |
| | | } |
| | | ], |
| | | }, |
| | | customerName:{ |
| | | label: '所属客户',minWidth: 150,disabled: true, |
| | | }, |
| | | // customerId: { |
| | | // label: '所属客户',minWidth: 150, |
| | | // addDisplay: true, |
| | | // editDisplay: true,suffixIcon:'search', |
| | | // viewDisplay: true, |
| | | // hide: true, |
| | | // search: true, |
| | | // rules: [ |
| | | // { |
| | | // required: true, |
| | | // message: "所属客户不能为空", trigger: "change" |
| | | // } |
| | | // ], |
| | | // type: 'table', |
| | | // children:{ |
| | | // border: true, |
| | | // searchMenuSpan: 5, |
| | | // column:{ |
| | | // customerType: { |
| | | // label: '客户类型', minWidth: 120, |
| | | // type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/customer_type', |
| | | // search: true, |
| | | // }, |
| | | // customerShortName: { |
| | | // label: '客户简称', minWidth: 130, |
| | | // search: true, |
| | | // }, |
| | | // customerCode: { |
| | | // label: '客户编号',minWidth: 120, |
| | | // search: true, |
| | | // }, |
| | | // contactName: { |
| | | // label: '联系人姓名',minWidth: 120, |
| | | // }, |
| | | // signCompanyName: { |
| | | // label: '签约公司', minWidth: 150, |
| | | // }, |
| | | // }, |
| | | // |
| | | // }, |
| | | // props:{ |
| | | // label: 'customerShortName', |
| | | // 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] |
| | | // } |
| | | // getTmsCustomerInfo(id).then(res=>{ |
| | | // return callback(res.data||{}) |
| | | // }) |
| | | // }else{ |
| | | // listTmsCustomerInfo({pageSize:page.pageSize,pageNum:page.currentPage,...data}).then(res=>{ |
| | | // return callback({ |
| | | // total: res.total, |
| | | // data: res.rows||[], |
| | | // }) |
| | | // }) |
| | | // } |
| | | // |
| | | // }, |
| | | // change: ({value}: any) => { |
| | | // if(value){ |
| | | // getTmsCustomerInfo(value).then(res=>{ |
| | | // let active = res.data || {}; |
| | | // if (active){ |
| | | // console.log(dialForm.value) |
| | | // form2.value.customerId = active.id |
| | | // form2.value.customerSysCode = active.customerCode |
| | | // form2.value.customerName = active.customerShortName |
| | | // } |
| | | // }) |
| | | // } |
| | | // }, |
| | | // }, |
| | | // customerSysCode: { |
| | | // label: '客户编码',minWidth: 150, |
| | | // addDisplay: true, |
| | | // editDisplay: true, |
| | | // viewDisplay: true, |
| | | // hide: false, |
| | | // search: true, |
| | | // disabled: true, |
| | | // rules: [ |
| | | // { |
| | | // required: true, |
| | | // message: "客户编码不能为空", trigger: "blur" |
| | | // } |
| | | // ], |
| | | // }, |
| | | consignorType: { |
| | | label: '装卸货点类型',minWidth: 150, |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/consignor_type', |
| | | addDisplay: true, |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | | hide: false, |
| | | search: true, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "装卸货点类型不能为空", trigger: "change" |
| | | } |
| | | ], |
| | | }, |
| | | } |
| | | }, |
| | | { |
| | | label: '联系人信息', |
| | | prop: 'lxrxx', |
| | | column:{ |
| | | contactName: { |
| | | label: '联系人姓名',minWidth: 150, |
| | | addDisplay: true, |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | | hide: false, |
| | | search: true, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "联系人姓名不能为空", trigger: "blur" |
| | | } |
| | | ], |
| | | }, |
| | | contactPhone: { |
| | | label: '联系人电话',minWidth: 150, |
| | | addDisplay: true, |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | | hide: true, |
| | | search: false, |
| | | }, |
| | | contactEmail: { |
| | | label: '联系人邮箱',minWidth: 150, |
| | | addDisplay: true, |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | | hide: true, |
| | | search: false, |
| | | }, |
| | | } |
| | | }, |
| | | { |
| | | label: '地址信息', |
| | | prop: 'dzxx', |
| | | column:{ |
| | | |
| | | mapLocationDetail: { |
| | | label: '地图位置',minWidth: 150, |
| | | addDisplay: true, |
| | | editDisplay: true,span:24, |
| | | viewDisplay: true, |
| | | hide: true, |
| | | search: false, |
| | | type: 'map', |
| | | // mapChange: async (params:any)=>{ |
| | | // 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 || {}; |
| | | // form2.value.regionLabel = province + " / " + city + " / " + district + " / " + township; |
| | | // //form2.value.region = [provinceCode, cityCode, districtCode, townshipCode]; |
| | | // form2.value.provinceId = provinceCode; |
| | | // form2.value.cityId = cityCode; |
| | | // form2.value.districtId = districtCode; |
| | | // form2.value.streetId = townshipCode; |
| | | // form2.value.dispatchTransportArea = params.regeocode.formattedAddress; |
| | | // console.log(form2.value,"form2") |
| | | // } |
| | | // }, |
| | | 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 || {}; |
| | | form2.value.regionLabel = province + " / " + city + " / " + district + " / " + township; |
| | | form2.value.provinceId = provinceCode; |
| | | form2.value.cityId = cityCode; |
| | | form2.value.districtId = districtCode; |
| | | form2.value.streetId = townshipCode; |
| | | form2.value.dispatchTransportArea = params.regeocode.formatted_address || params.regeocode.formattedAddress; |
| | | console.log(form2.value, "form2") |
| | | } |
| | | }); |
| | | } |
| | | }, |
| | | }, |
| | | // dispatchTransportArea: { |
| | | // label: '调度单运输地', |
| | | // addDisplay: true,minWidth: 150, |
| | | // editDisplay: true, |
| | | // viewDisplay: true, |
| | | // hide: false, |
| | | // search: true, |
| | | // rules: [ |
| | | // { |
| | | // required: true, |
| | | // message: "调度单运输地不能为空", trigger: "blur" |
| | | // } |
| | | // ], |
| | | // }, |
| | | electronicFenceRange: { |
| | | label: '电子围栏范围', |
| | | addDisplay: true,minWidth: 150, |
| | | editDisplay: true, |
| | | viewDisplay: true,append:'米', |
| | | hide: false, |
| | | search: true, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "电子围栏范围不能为空", trigger: "blur" |
| | | } |
| | | ], |
| | | }, |
| | | } |
| | | }, |
| | | { |
| | | label: '其他信息', |
| | | prop: 'qtyxx', |
| | | column:{ |
| | | remark: { |
| | | label: '备注',minWidth: 150, |
| | | type: 'textarea', minRows: 3, maxRows: 5, |
| | | addDisplay: true, |
| | | editDisplay: true,span:24, |
| | | viewDisplay: true, |
| | | hide: true, |
| | | search: false, |
| | | }, |
| | | } |
| | | } |
| | | ], |
| | | }) |
| | | const form2 = ref<any>({}); |
| | | const dialForm = ref(); |
| | | |
| | | const handleAddShipper = () => { |
| | | if (!form.value.customerId){ |
| | | return ElMessage.error('请先选择运输路线'); |
| | | } |
| | | form2.value = { |
| | | customerId: form.value.customerId, |
| | | customerSysCode: form.value.customerCode, |
| | | customerName: form.value.customerName, |
| | | }; |
| | | dialForm.value = $DialogForm(appContext)({ |
| | | title: '新增装货地', |
| | | data:form2.value, |
| | | width: '80%', |
| | | option: consignorAddOption.value, |
| | | menuPosition: 'right', |
| | | callback: (res:any,) => { |
| | | let data1 = res.data; |
| | | if (data1.mapLocationDetail){ |
| | | data1.mapLocation = data1.mapLocationDetail[0]+','+data1.mapLocationDetail[1]; |
| | | data1.addressDetail = data1.mapLocationDetail[2] |
| | | } |
| | | addTmsConsignor({...form2.value,...data1}).then(res2=>{ |
| | | let active = res2.data || {}; |
| | | if (active) { |
| | | let shipperRegionCode = ''; |
| | | if (active.provinceId){ |
| | | shipperRegionCode = active.provinceId; |
| | | } |
| | | if (active.cityId){ |
| | | shipperRegionCode =shipperRegionCode+ ","+active.cityId; |
| | | |
| | | } |
| | | if (active.districtId){ |
| | | shipperRegionCode =shipperRegionCode+ ","+active.districtId; |
| | | |
| | | } |
| | | if (active.streetId){ |
| | | shipperRegionCode =shipperRegionCode+ ","+active.streetId; |
| | | } |
| | | Object.assign(form.value, { |
| | | shipperId: active.id, |
| | | shipperName: active.consignorName, |
| | | shipperRegionLabel: active.regionLabel, |
| | | shipperAddress: active.addressDetail, |
| | | shipperMobile: active.contactPhone, |
| | | shipperRegionCode:shipperRegionCode |
| | | }); |
| | | } |
| | | dialForm.value.close(); |
| | | res.done(); |
| | | }).catch(err=>{ |
| | | res.done(); |
| | | }) |
| | | }, |
| | | }) |
| | | } |
| | | |
| | | const handleAddReceiver = () => { |
| | | if (!form.value.customerId){ |
| | | return ElMessage.error('请先选择运输路线'); |
| | | } |
| | | form2.value = { |
| | | customerId: form.value.customerId, |
| | | customerSysCode: form.value.customerCode, |
| | | customerName: form.value.customerName, |
| | | }; |
| | | dialForm.value = $DialogForm(appContext)({ |
| | | title: '新增卸货地', |
| | | data:form2.value, |
| | | width: '80%', |
| | | option: consignorAddOption.value, |
| | | menuPosition: 'right', |
| | | callback: (res:any,) => { |
| | | let data1 = res.data; |
| | | if (data1.mapLocationDetail){ |
| | | data1.mapLocation = data1.mapLocationDetail[0]+','+data1.mapLocationDetail[1]; |
| | | data1.addressDetail = data1.mapLocationDetail[2] |
| | | } |
| | | addTmsConsignor({...form2.value,...data1}).then(res2=>{ |
| | | let active = res2.data || {}; |
| | | if (active) { |
| | | let receiverRegionCode = ''; |
| | | if (active.provinceId){ |
| | | receiverRegionCode = active.provinceId; |
| | | } |
| | | if (active.cityId){ |
| | | receiverRegionCode =receiverRegionCode+ ","+active.cityId; |
| | | |
| | | } |
| | | if (active.districtId){ |
| | | receiverRegionCode =receiverRegionCode+ ","+active.districtId; |
| | | |
| | | } |
| | | if (active.streetId){ |
| | | receiverRegionCode =receiverRegionCode+ ","+active.streetId; |
| | | } |
| | | |
| | | Object.assign(form.value, { |
| | | receiverId: active.id, |
| | | receiverName: active.consignorName, |
| | | receiverRegionLabel: active.regionLabel, |
| | | receiverAddress: active.addressDetail, |
| | | receiverMobile: active.contactPhone, |
| | | receiverRegionCode:receiverRegionCode, |
| | | }); |
| | | } |
| | | dialForm.value.close(); |
| | | res.done(); |
| | | }).catch(err=>{ |
| | | res.done(); |
| | | }) |
| | | }, |
| | | }) |
| | | } |
| | | |
| | | |
| | | </script> |
| | |
| | | }, |
| | | licenseType: { |
| | | label: '准驾车型', |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/license_type', |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/before_license_type', |
| | | addDisplay: true,multiple:true, |
| | | editDisplay: true,minWidth:150, |
| | | viewDisplay: true, |
| | |
| | | label: '基础信息', |
| | | prop: 'jcxx', |
| | | column: { |
| | | customerId: { |
| | | label: '所属客户',minWidth: 150, |
| | | addDisplay: true, |
| | | editDisplay: true,suffixIcon:'search', |
| | | viewDisplay: true, |
| | | hide: true, |
| | | search: true, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "所属客户不能为空", trigger: "change" |
| | | } |
| | | ], |
| | | type: 'table', |
| | | children:{ |
| | | border: true, |
| | | searchMenuSpan: 5, |
| | | column:{ |
| | | customerType: { |
| | | label: '客户类型', minWidth: 120, |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/customer_type', |
| | | search: true, |
| | | }, |
| | | customerShortName: { |
| | | label: '客户简称', minWidth: 130, |
| | | search: true, |
| | | }, |
| | | customerCode: { |
| | | label: '客户编号',minWidth: 120, |
| | | search: true, |
| | | }, |
| | | contactName: { |
| | | label: '联系人姓名',minWidth: 120, |
| | | }, |
| | | signCompanyName: { |
| | | label: '签约公司', minWidth: 150, |
| | | }, |
| | | }, |
| | | |
| | | }, |
| | | props:{ |
| | | label: 'customerShortName', |
| | | 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] |
| | | } |
| | | getTmsCustomerInfo(id).then(res=>{ |
| | | return callback(res.data||{}) |
| | | }) |
| | | }else{ |
| | | listTmsCustomerInfo({pageSize:page.pageSize,pageNum:page.currentPage,...data}).then(res=>{ |
| | | return callback({ |
| | | total: res.total, |
| | | data: res.rows||[], |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | }, |
| | | change: (val: any) => { |
| | | const table = crudRef.value?.getPropRef?.('customerId')?.$refs?.temp; |
| | | if (!table) return; |
| | | let active = table.active; |
| | | if (Array.isArray(active)) active = active[0]; |
| | | if (active) { |
| | | Object.assign(form.value, { |
| | | customerId: active.id, |
| | | customer: active.customerShortName, |
| | | }); |
| | | } |
| | | }, |
| | | }, |
| | | // customerId: { |
| | | // label: '所属客户',minWidth: 150, |
| | | // addDisplay: true, |
| | | // editDisplay: true,suffixIcon:'search', |
| | | // viewDisplay: true, |
| | | // hide: true, |
| | | // search: true, |
| | | // rules: [ |
| | | // { |
| | | // required: true, |
| | | // message: "所属客户不能为空", trigger: "change" |
| | | // } |
| | | // ], |
| | | // type: 'table', |
| | | // children:{ |
| | | // border: true, |
| | | // searchMenuSpan: 5, |
| | | // column:{ |
| | | // customerType: { |
| | | // label: '客户类型', minWidth: 120, |
| | | // type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/customer_type', |
| | | // search: true, |
| | | // }, |
| | | // customerShortName: { |
| | | // label: '客户简称', minWidth: 130, |
| | | // search: true, |
| | | // }, |
| | | // customerCode: { |
| | | // label: '客户编号',minWidth: 120, |
| | | // search: true, |
| | | // }, |
| | | // contactName: { |
| | | // label: '联系人姓名',minWidth: 120, |
| | | // }, |
| | | // signCompanyName: { |
| | | // label: '签约公司', minWidth: 150, |
| | | // }, |
| | | // }, |
| | | // |
| | | // }, |
| | | // props:{ |
| | | // label: 'customerShortName', |
| | | // 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] |
| | | // } |
| | | // getTmsCustomerInfo(id).then(res=>{ |
| | | // return callback(res.data||{}) |
| | | // }) |
| | | // }else{ |
| | | // listTmsCustomerInfo({pageSize:page.pageSize,pageNum:page.currentPage,...data}).then(res=>{ |
| | | // return callback({ |
| | | // total: res.total, |
| | | // data: res.rows||[], |
| | | // }) |
| | | // }) |
| | | // } |
| | | // |
| | | // }, |
| | | // change: (val: any) => { |
| | | // const table = crudRef.value?.getPropRef?.('customerId')?.$refs?.temp; |
| | | // if (!table) return; |
| | | // let active = table.active; |
| | | // if (Array.isArray(active)) active = active[0]; |
| | | // if (active) { |
| | | // Object.assign(form.value, { |
| | | // customerId: active.id, |
| | | // customer: active.customerShortName, |
| | | // }); |
| | | // } |
| | | // }, |
| | | // }, |
| | | productCode: { |
| | | label: '货品编码', |
| | | addDisplay: true, |
| | |
| | | // search: false, |
| | | // }, |
| | | |
| | | customer: { |
| | | label: '所属客户', |
| | | display: false, |
| | | hide: false, minWidth: 150, |
| | | search: true, |
| | | }, |
| | | // customer: { |
| | | // label: '所属客户', |
| | | // display: false, |
| | | // hide: false, minWidth: 150, |
| | | // search: true, |
| | | // }, |
| | | productCode: { |
| | | label: '货品编码', |
| | | display: false, |
| | |
| | | viewDisplay: true, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "运营主体简称不能为空", trigger: "blur" |
| | | } |
| | | ], |
| | | |
| | | }, |
| | | |
| | | customerFullName: { |
| | |
| | | viewDisplay: true, |
| | | hide: true, |
| | | search: false, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "运营主体全称不能为空", trigger: "blur" |
| | | } |
| | | ], |
| | | }, |
| | | businessRegistrationNumber: { |
| | | label: '经营登记证件号码', |
| | |
| | | // }, |
| | | // } |
| | | // }, |
| | | { |
| | | label: '信用信息', |
| | | prop: 'xyxx', |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: true, |
| | | column: { |
| | | creditRating: { |
| | | label: '运营主体信用评级', |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/sys_credit_rating', |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: true, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | }, |
| | | creditLimitAmount: { |
| | | label: '信用额度', |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: true, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | }, |
| | | creditLimitQuantity: { |
| | | label: '信用额度', |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: true, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | }, |
| | | operatingStatus: { |
| | | label: '经营状态', |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/business_status', |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: true, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "经营状态不能为空", trigger: "change" |
| | | } |
| | | ], |
| | | }, |
| | | contractStatus: { |
| | | label: '合同状态', |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/contract_status', |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: true, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "合同状态不能为空", trigger: "change" |
| | | } |
| | | ], |
| | | }, |
| | | } |
| | | }, |
| | | // { |
| | | // label: '信用信息', |
| | | // prop: 'xyxx', |
| | | // addDisplay: false, |
| | | // editDisplay: false, |
| | | // viewDisplay: true, |
| | | // column: { |
| | | // creditRating: { |
| | | // label: '运营主体信用评级', |
| | | // type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/sys_credit_rating', |
| | | // addDisplay: false, |
| | | // editDisplay: false, |
| | | // viewDisplay: true, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // }, |
| | | // creditLimitAmount: { |
| | | // label: '信用额度', |
| | | // addDisplay: false, |
| | | // editDisplay: false, |
| | | // viewDisplay: true, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // }, |
| | | // creditLimitQuantity: { |
| | | // label: '信用额度', |
| | | // addDisplay: false, |
| | | // editDisplay: false, |
| | | // viewDisplay: true, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // }, |
| | | // operatingStatus: { |
| | | // label: '经营状态', |
| | | // type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/business_status', |
| | | // addDisplay: false, |
| | | // editDisplay: false, |
| | | // viewDisplay: true, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // rules: [ |
| | | // { |
| | | // required: true, |
| | | // message: "经营状态不能为空", trigger: "change" |
| | | // } |
| | | // ], |
| | | // }, |
| | | // contractStatus: { |
| | | // label: '合同状态', |
| | | // type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/contract_status', |
| | | // addDisplay: false, |
| | | // editDisplay: false, |
| | | // viewDisplay: true, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // rules: [ |
| | | // { |
| | | // required: true, |
| | | // message: "合同状态不能为空", trigger: "change" |
| | | // } |
| | | // ], |
| | | // }, |
| | | // } |
| | | // }, |
| | | { |
| | | label: '其他信息', |
| | | prop: 'qtyxx', |
| | | column: { |
| | | dataStatus: { |
| | | label: '数据状态', |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/data_status', |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | viewDisplay: true, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "数据状态不能为空", trigger: "change" |
| | | } |
| | | ], |
| | | }, |
| | | // dataStatus: { |
| | | // label: '数据状态', |
| | | // type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/data_status', |
| | | // addDisplay: false, |
| | | // editDisplay: false, |
| | | // viewDisplay: true, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // rules: [ |
| | | // { |
| | | // required: true, |
| | | // message: "数据状态不能为空", trigger: "change" |
| | | // } |
| | | // ], |
| | | // }, |
| | | createBy: { |
| | | label: '创建人', |
| | | addDisplay: false, |
| | |
| | | ], |
| | | |
| | | column: { |
| | | customerType: { |
| | | label: '运营主体类型', |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/customer_type', |
| | | display: false, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | }, |
| | | // customerType: { |
| | | // label: '运营主体类型', |
| | | // type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/customer_type', |
| | | // display: false, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // }, |
| | | customerShortName: { |
| | | label: '运营主体简称', |
| | | display: false, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | }, |
| | | customerFullName: { |
| | | label: '运营主体全称', minWidth: 150, display: false, |
| | | search: true, |
| | | }, |
| | | customerCode: { |
| | |
| | | // } |
| | | // ], |
| | | // }, |
| | | creditRating: { |
| | | label: '运营主体信用评级', |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/sys_credit_rating', |
| | | display: false, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | }, |
| | | creditLimitAmount: { |
| | | label: '信用额度', |
| | | display: false, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | }, |
| | | creditLimitQuantity: { |
| | | label: '信用额度', |
| | | display: false, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | }, |
| | | // creditRating: { |
| | | // label: '运营主体信用评级', |
| | | // type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/sys_credit_rating', |
| | | // display: false, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // }, |
| | | // creditLimitAmount: { |
| | | // label: '信用额度', |
| | | // display: false, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // }, |
| | | // creditLimitQuantity: { |
| | | // label: '信用额度', |
| | | // display: false, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // }, |
| | | operatingStatus: { |
| | | label: '经营状态', |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/business_status', |
| | |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | }, |
| | | contractStatus: { |
| | | label: '合同状态', |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/contract_status', |
| | | display: false, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | }, |
| | | dataStatus: { |
| | | label: '数据状态', |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/data_status', |
| | | display: false, |
| | | hide: false,minWidth:150, |
| | | search: true, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "数据状态不能为空", trigger: "change" |
| | | } |
| | | ], |
| | | }, |
| | | // contractStatus: { |
| | | // label: '合同状态', |
| | | // type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/contract_status', |
| | | // display: false, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // }, |
| | | // dataStatus: { |
| | | // label: '数据状态', |
| | | // type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/data_status', |
| | | // display: false, |
| | | // hide: false,minWidth:150, |
| | | // search: true, |
| | | // rules: [ |
| | | // { |
| | | // required: true, |
| | | // message: "数据状态不能为空", trigger: "change" |
| | | // } |
| | | // ], |
| | | // }, |
| | | updateBy: { |
| | | label: '更新人', |
| | | display: false, |
| | |
| | | import {hasPermission} from "@/utils/permissionUtils"; |
| | | import {getTmsCustomerInfo, listTmsCustomerInfo} from "@/api/tms/tmsCustomerInfo"; |
| | | import {getTmsServiceProvider, listTmsServiceProvider} from "@/api/tms/tmsServiceProvider"; |
| | | import {getTmsSettlementEntity, listTmsSettlementEntity} from "@/api/tms/tmsSettlementEntity"; |
| | | |
| | | const {proxy} = useCurrentInstance(); |
| | | const crudRef = ref(); |
| | |
| | | } |
| | | ], |
| | | }, |
| | | carrierType:{ |
| | | carrierType: { |
| | | label: '车辆服务商类型', |
| | | display: true, |
| | | type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/carrier_type',value: '0', |
| | | type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/carrier_type', value: '0', |
| | | rules: [ |
| | | { |
| | | required: true, |
| | |
| | | } |
| | | ], |
| | | change: ({value}: any) => { |
| | | option.value.group.forEach((item:any) =>{ |
| | | if (item.prop == 'jbxx'){ |
| | | item.column.serviceProviderId.display = value == 1 |
| | | } |
| | | }) |
| | | option.value.group.forEach((item: any) => { |
| | | if (item.prop == 'jbxx') { |
| | | item.column.serviceProviderId.display = value == 1 |
| | | item.column.settlementId.display = value != 1 |
| | | } |
| | | }) |
| | | console.log(value) |
| | | } |
| | | }, |
| | | settlementId: { |
| | | label: '所属运营主体', |
| | | minWidth: 150, |
| | | display: true, |
| | | hide: false, |
| | | search: true, |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "所属运营主体不能为空", trigger: "change" |
| | | } |
| | | ], |
| | | type: 'table', suffixIcon: 'search', |
| | | children: { |
| | | border: true, |
| | | searchLabelWidth: 100, |
| | | searchMenuSpan: 5, |
| | | column: { |
| | | customerCode: { |
| | | label: '运营主体编号', minWidth: 130, |
| | | search: true, |
| | | }, |
| | | customerShortName: { |
| | | label: '运营主体简称', minWidth: 120, |
| | | search: true, |
| | | }, |
| | | customerFullName: { |
| | | label: '运营主体全称', minWidth: 120, |
| | | search: true, |
| | | }, |
| | | contactName: { |
| | | label: '联系人姓名', |
| | | display: false, |
| | | hide: false, minWidth: 150, |
| | | search: true, |
| | | }, |
| | | operatingStatus: { |
| | | label: '经营状态', |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/business_status', |
| | | display: false, |
| | | hide: false, minWidth: 150, |
| | | search: true, |
| | | }, |
| | | }, |
| | | |
| | | }, |
| | | props: { |
| | | label: 'customerFullName', |
| | | 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] |
| | | } |
| | | getTmsSettlementEntity(id).then(res => { |
| | | return callback(res.data || {}) |
| | | }) |
| | | } else { |
| | | listTmsSettlementEntity({pageSize: page.pageSize, pageNum: page.currentPage, ...data}).then(res => { |
| | | return callback({ |
| | | total: res.total, |
| | | data: res.rows || [], |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | }, |
| | | change: (val: any) => { |
| | | const table = crudRef.value?.getPropRef?.('settlementId')?.$refs?.temp; |
| | | if (!table) return; |
| | | let active = table.active; |
| | | if (Array.isArray(active)) active = active[0]; |
| | | if (active) { |
| | | Object.assign(form.value, { |
| | | settlementId: active.id, |
| | | settlementName: active.customerFullName, |
| | | }); |
| | | } |
| | | }, |
| | | }, |
| | | serviceProviderId: { |
| | | label: '车辆服务商', |
| | |
| | | }, |
| | | }, |
| | | |
| | | }, |
| | | 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 || [], |
| | | }, |
| | | 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 || [], |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | }, |
| | | change: (val: any) => { |
| | | const table = crudRef.value?.getPropRef?.('serviceProviderId')?.$refs?.temp; |
| | | if (!table) return; |
| | | let active = table.active; |
| | | if (Array.isArray(active)) active = active[0]; |
| | | if (active) { |
| | | Object.assign(form.value, { |
| | | serviceProviderId: active.id, |
| | | serviceProviderName: active.serviceShortName, |
| | | }); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | }, |
| | | vehicleType: { |
| | | label: '车辆类型', |
| | | addDisplay: true, minWidth: 150, |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/vehicle_type', |
| | | vehicleType: { |
| | | label: '车辆类型', |
| | | addDisplay: true, minWidth: 150, |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/vehicle_type', |
| | | |
| | | }, |
| | | internalCode: { |
| | |
| | | hide: true, |
| | | search: false, |
| | | }, |
| | | carKeyNo: { |
| | | label: '车辆钥匙编号', |
| | | addDisplay: true, |
| | | editDisplay: true, |
| | | viewDisplay: true, |
| | | }, |
| | | isBlacklist: { |
| | | label: '是否黑名单', value: '1', dataType: 'string', |
| | | type: 'radio', dicUrl: '/system/dict/data/type/sys_number_is', |
| | |
| | | } |
| | | ], |
| | | }, |
| | | |
| | | } |
| | | }, |
| | | { |
| | |
| | | }, |
| | | { |
| | | label: '实时信息', |
| | | prop: 'ssxx',addDisplay: false,editDisplay: false, |
| | | prop: 'ssxx', addDisplay: false, editDisplay: false, |
| | | column: { |
| | | hasTask: { |
| | | label: '是否有任务', |
| | |
| | | }, |
| | | } |
| | | }, |
| | | { |
| | | { |
| | | label: '车辆详细信息', |
| | | prop: 'clxqxx', |
| | | column: { |
| | |
| | | }, |
| | | emptyLoadFuel: { |
| | | label: '空载油耗', |
| | | addDisplay: true,append:'L/Km', |
| | | addDisplay: true, append: 'L/Km', |
| | | editDisplay: true, |
| | | viewDisplay: true, minWidth: 150, |
| | | hide: true, |
| | |
| | | }, |
| | | fullLoadFuel: { |
| | | label: '重载油耗', |
| | | addDisplay: true,append:'L/Km', |
| | | addDisplay: true, append: 'L/Km', |
| | | editDisplay: true, minWidth: 150, |
| | | viewDisplay: true, |
| | | hide: true, |
| | |
| | | purchasePrice: { |
| | | label: '车辆购置价', minWidth: 150, |
| | | addDisplay: true, |
| | | editDisplay: true,append:'万元', |
| | | editDisplay: true, append: '万元', |
| | | viewDisplay: true, |
| | | hide: true, |
| | | search: false, |
| | |
| | | actualLength: { |
| | | label: '实际长', |
| | | addDisplay: true, |
| | | editDisplay: true,append:'mm', |
| | | editDisplay: true, append: 'mm', |
| | | viewDisplay: true, |
| | | hide: true, |
| | | search: false, |
| | |
| | | actualWidth: { |
| | | label: '实际宽', |
| | | addDisplay: true, |
| | | editDisplay: true,append:'mm', |
| | | editDisplay: true, append: 'mm', |
| | | viewDisplay: true, |
| | | hide: true, |
| | | search: false, |
| | |
| | | actualHeight: { |
| | | label: '实际高', |
| | | addDisplay: true, |
| | | editDisplay: true,append:'mm', |
| | | editDisplay: true, append: 'mm', |
| | | viewDisplay: true, |
| | | hide: true, |
| | | search: false, |
| | |
| | | loadVolume: { |
| | | label: '装载体积', |
| | | addDisplay: true, |
| | | editDisplay: true,append:'m³', |
| | | editDisplay: true, append: 'm³', |
| | | viewDisplay: true, |
| | | hide: true, |
| | | search: false, |
| | |
| | | loadWeight: { |
| | | label: '装载重量', |
| | | addDisplay: true, |
| | | editDisplay: true,append:'Kg', |
| | | editDisplay: true, append: 'Kg', |
| | | viewDisplay: true, |
| | | hide: true, |
| | | search: false, |
| | |
| | | prop: 'qtxx', |
| | | column: { |
| | | status: { |
| | | label: '状态',row:true,span:24, |
| | | label: '状态', row: true, span: 24, |
| | | type: 'radio', dicUrl: '/system/dict/data/type/sys_normal_disable', |
| | | addDisplay: false, |
| | | editDisplay: false, dataType: 'string', |
| | |
| | | }, |
| | | serviceProviderName: { |
| | | label: '车辆服务商', |
| | | minWidth: 150, |
| | | minWidth: 150, |
| | | display: false, |
| | | hide: false, |
| | | search: true, |
| | |
| | | display: false, |
| | | hide: false, |
| | | search: true, |
| | | type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/vehicle_type', |
| | | |
| | | }, |
| | | internalCode: { |
| | | label: '车辆内部编码',minWidth: 150, |
| | | label: '车辆内部编码', minWidth: 150, |
| | | display: false, |
| | | hide: false, |
| | | search: false, |
| | |
| | | search: false, |
| | | }, |
| | | licenseMo: { |
| | | label: '澳门牌照',minWidth: 150, |
| | | label: '澳门牌照', minWidth: 150, |
| | | display: false, |
| | | hide: false, |
| | | search: false, |
| | | }, |
| | | hasTask: { |
| | | label: '是否有任务', |
| | | type: 'select', |
| | | type: 'select', |
| | | dataType: 'string', |
| | | minWidth: 150, dicUrl: '/system/dict/data/type/sys_number_is', |
| | | minWidth: 150, dicUrl: '/system/dict/data/type/sys_number_is', |
| | | display: false, |
| | | search: true, |
| | | rules: [ |
| | |
| | | label: '状态', |
| | | type: 'radio', dicUrl: '/system/dict/data/type/sys_normal_disable', |
| | | display: false, dataType: 'string', |
| | | minWidth: 150, |
| | | minWidth: 150, |
| | | hide: false, |
| | | search: true, |
| | | rules: [ |
| | |
| | | search: false, |
| | | }, |
| | | updateTime: { |
| | | label: '更新时间',minWidth: 180, |
| | | label: '更新时间', minWidth: 180, |
| | | display: false, |
| | | hide: false, |
| | | search: false, |
| | |
| | | selectionList.value = selection; |
| | | } |
| | | }) |
| | | onMounted(() => { |
| | | watch(() => form.value.serviceProviderId, () => { |
| | | |
| | | if (!form.value.serviceProviderId){ |
| | | return; |
| | | } |
| | | const table = crudRef.value?.getPropRef?.('serviceProviderId')?.$refs?.temp; |
| | | if (!table) return; |
| | | |
| | | let active = table.active; |
| | | if (Array.isArray(active)) active = active[0]; |
| | | |
| | | if (active) { |
| | | Object.assign(form.value, { |
| | | serviceProviderId: active.id, |
| | | serviceProviderName: active.serviceShortName, |
| | | }); |
| | | } |
| | | }); |
| | | }); |
| | | |
| | | </script> |