85b45f665f5f42980b96993d7f56e3fea203b42d..2a83e96652851ca20794278b9be3607bbe4186fa
2025-12-05 zhangback
提交
2a83e9 对比 | 目录
2025-12-05 zhangback
提交
41d837 对比 | 目录
9个文件已修改
289 ■■■■ 已修改文件
tms/src/main/java/com/ruoyi/tms/domain/TmsDispatchOrder.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
tms/src/main/java/com/ruoyi/tms/service/impl/TmsQuotePlanServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
tms/src/main/resources/mapper/tms/TmsDispatchOrderMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ui/admin-ui3/src/views/cwgl/smartLockerApplication/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ui/admin-ui3/src/views/system/user/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ui/admin-ui3/src/views/tms/collectionTmsQuoteDetail/index.vue 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ui/admin-ui3/src/views/tms/collectionTmsQuotePlan/index.vue 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ui/admin-ui3/src/views/tms/paymentTmsQuotePlan/index.vue 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
tms/src/main/java/com/ruoyi/tms/domain/TmsDispatchOrder.java
@@ -499,6 +499,7 @@
    private String okTimeBegin;
    @TableField(exist = false)
    private String okTimeEnd;
    @TableField("commission_model")
    private Integer commissionModel;
}
tms/src/main/java/com/ruoyi/tms/service/impl/TmsQuotePlanServiceImpl.java
@@ -128,8 +128,6 @@
                tmsQuoteItem.setQuotePlanId(tmsQuotePlan.getId());
            });
            tmsQuoteItemService.insertTmsQuoteItemBatch(quoteItems);
        }else{
            throw new RuntimeException("请至少选择一个报价方案");
        }
        return 1;
    }
@@ -161,7 +159,7 @@
        int i = tmsQuotePlanMapper.updateTmsQuotePlan(tmsQuotePlan);
        if (tmsQuotePlan.getPlanType() == 0){
            List<TmsQuoteItem> quoteItems = tmsQuotePlan.getQuoteItems();
            if (quoteItems != null && !quoteItems.isEmpty()){
                List<TmsQuoteItem> tmsQuoteItems = tmsQuoteItemService.selectTmsQuoteItemList(new TmsQuoteItem() {{
@@ -191,10 +189,7 @@
                }
            }else{
                throw new RuntimeException("请至少选择一个报价方案");
            }
        }
        return i;
    }
tms/src/main/resources/mapper/tms/TmsDispatchOrderMapper.xml
@@ -90,11 +90,12 @@
        <result property="okTime"    column="ok_time"    />
        <result property="confirmTime"    column="confirm_time"    />
        <result property="isLoad"    column="is_load"    />
        <result property="commissionModel"    column="commission_model"    />
    </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, thisTab.ok_time, thisTab.confirm_time, thisTab.is_load 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, thisTab.is_load ,thisTab.commission_model from tms_dispatch_order AS thisTab
    </sql>
    <sql id="selectTmsDispatchOrderVoCount">
        select count(0) from tms_dispatch_order as thisTab
@@ -161,7 +162,7 @@
        <if test="okTimeBegin != null and okTimeBegin != '' and okTimeEnd != null and okTimeEnd != ''"> and  thisTab.ok_time between #{okTimeBegin} and #{okTimeEnd}</if>
        <if test="isLoad != null "> and thisTab.is_load = #{isLoad}</if>
        <if test="commissionModel != null "> and thisTab.commission_model = #{commissionModel}</if>
    </sql>
    <!--查询-->
@@ -269,6 +270,7 @@
            <if test="operationMode != null">operation_mode,</if>
            <if test="quotePlanId != null">quote_plan_id,</if>
            <if test="isLoad != null">is_load,</if>
            <if test="commissionModel != null">commission_model,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="dispatchNo != null and dispatchNo != ''">#{dispatchNo},</if>
@@ -353,17 +355,18 @@
            <if test="operationMode != null">#{operationMode},</if>
            <if test="quotePlanId != null">#{quotePlanId},</if>
            <if test="isLoad != null">#{isLoad},</if>
            <if test="commissionModel != null">#{commissionModel},</if>
        </trim>
    </insert>
    <insert id="insertTmsDispatchOrderBatch" parameterType="java.util.List"  useGeneratedKeys="true" keyProperty="id">
        insert into tms_dispatch_order
        <trim prefix="(" suffix=") values" suffixOverrides=",">
            id,dispatch_no,customer_id,customer_name,customer_code,project_id,project_name,contract_id,contract_name,order_type,transport_line,sign_type,vehicle_provider_id,vehicle_provider_name,loading_service_provider_id,loading_service_provider_name,customs_service_provider_id,customs_service_provider_name,is_urgent,transport_type,load_method,main_driver_id,main_driver_name,assistant_driver_id,required_vehicle_types,assistant_driver_name,vehicle_id,container_no,license_plate,shipper_id,earliest_departure,shipper_name,latest_departure,shipper_mobile,earliest_arrival,shipper_address,latest_arrival,departure_address,shipper_region_code,receiver_id,destination_address,receiver_name,actual_vehicle_type,receiver_mobile,actual_load_start,shipper_region_label,receiver_address,actual_unload_end,receiver_region_code,actual_departure,actual_arrival,actual_quantity,actual_weight,receiver_region_label,actual_volume,reweigh_weight,container_id,electronic_lock,empty_mileage,shelf_id,empty_fuel,shelf_code,loaded_mileage,loaded_fuel,shift_no,line_no,status,create_by,create_time,update_by,update_time,remark,accounts_receivable_status,accounts_payable_status,collection_plan_id,payment_plan_id,is_customs,start_region_code,end_region_code,quote_detail_id,operation_mode,quote_plan_id,is_load,
            id,dispatch_no,customer_id,customer_name,customer_code,project_id,project_name,contract_id,contract_name,order_type,transport_line,sign_type,vehicle_provider_id,vehicle_provider_name,loading_service_provider_id,loading_service_provider_name,customs_service_provider_id,customs_service_provider_name,is_urgent,transport_type,load_method,main_driver_id,main_driver_name,assistant_driver_id,required_vehicle_types,assistant_driver_name,vehicle_id,container_no,license_plate,shipper_id,earliest_departure,shipper_name,latest_departure,shipper_mobile,earliest_arrival,shipper_address,latest_arrival,departure_address,shipper_region_code,receiver_id,destination_address,receiver_name,actual_vehicle_type,receiver_mobile,actual_load_start,shipper_region_label,receiver_address,actual_unload_end,receiver_region_code,actual_departure,actual_arrival,actual_quantity,actual_weight,receiver_region_label,actual_volume,reweigh_weight,container_id,electronic_lock,empty_mileage,shelf_id,empty_fuel,shelf_code,loaded_mileage,loaded_fuel,shift_no,line_no,status,create_by,create_time,update_by,update_time,remark,accounts_receivable_status,accounts_payable_status,collection_plan_id,payment_plan_id,is_customs,start_region_code,end_region_code,quote_detail_id,operation_mode,quote_plan_id,is_load,commission_model
        </trim>
        <foreach item="item" index="index" collection="list" separator=",">
            <trim prefix="(" suffix=") " suffixOverrides=",">
                #{item.id},#{item.dispatchNo},#{item.customerId},#{item.customerName},#{item.customerCode},#{item.projectId},#{item.projectName},#{item.contractId},#{item.contractName},#{item.orderType},#{item.transportLine},#{item.signType},#{item.vehicleProviderId},#{item.vehicleProviderName},#{item.loadingServiceProviderId},#{item.loadingServiceProviderName},#{item.customsServiceProviderId},#{item.customsServiceProviderName},#{item.isUrgent},#{item.transportType},#{item.loadMethod},#{item.mainDriverId},#{item.mainDriverName},#{item.assistantDriverId},#{item.requiredVehicleTypes},#{item.assistantDriverName},#{item.vehicleId},#{item.containerNo},#{item.licensePlate},#{item.shipperId},#{item.earliestDeparture},#{item.shipperName},#{item.latestDeparture},#{item.shipperMobile},#{item.earliestArrival},#{item.shipperAddress},#{item.latestArrival},#{item.departureAddress},#{item.shipperRegionCode},#{item.receiverId},#{item.destinationAddress},#{item.receiverName},#{item.actualVehicleType},#{item.receiverMobile},#{item.actualLoadStart},#{item.shipperRegionLabel},#{item.receiverAddress},#{item.actualUnloadEnd},#{item.receiverRegionCode},#{item.actualDeparture},#{item.actualArrival},#{item.actualQuantity},#{item.actualWeight},#{item.receiverRegionLabel},#{item.actualVolume},#{item.reweighWeight},#{item.containerId},#{item.electronicLock},#{item.emptyMileage},#{item.shelfId},#{item.emptyFuel},#{item.shelfCode},#{item.loadedMileage},#{item.loadedFuel},#{item.shiftNo},#{item.lineNo},#{item.status},#{item.createBy},#{item.createTime},#{item.updateBy},#{item.updateTime},#{item.remark},#{item.accountsReceivableStatus},#{item.accountsPayableStatus},#{item.collectionPlanId},#{item.paymentPlanId},#{item.isCustoms},#{item.startRegionCode},#{item.endRegionCode},#{item.quoteDetailId},#{item.operationMode},#{item.quotePlanId},#{item.isLoad},
                #{item.id},#{item.dispatchNo},#{item.customerId},#{item.customerName},#{item.customerCode},#{item.projectId},#{item.projectName},#{item.contractId},#{item.contractName},#{item.orderType},#{item.transportLine},#{item.signType},#{item.vehicleProviderId},#{item.vehicleProviderName},#{item.loadingServiceProviderId},#{item.loadingServiceProviderName},#{item.customsServiceProviderId},#{item.customsServiceProviderName},#{item.isUrgent},#{item.transportType},#{item.loadMethod},#{item.mainDriverId},#{item.mainDriverName},#{item.assistantDriverId},#{item.requiredVehicleTypes},#{item.assistantDriverName},#{item.vehicleId},#{item.containerNo},#{item.licensePlate},#{item.shipperId},#{item.earliestDeparture},#{item.shipperName},#{item.latestDeparture},#{item.shipperMobile},#{item.earliestArrival},#{item.shipperAddress},#{item.latestArrival},#{item.departureAddress},#{item.shipperRegionCode},#{item.receiverId},#{item.destinationAddress},#{item.receiverName},#{item.actualVehicleType},#{item.receiverMobile},#{item.actualLoadStart},#{item.shipperRegionLabel},#{item.receiverAddress},#{item.actualUnloadEnd},#{item.receiverRegionCode},#{item.actualDeparture},#{item.actualArrival},#{item.actualQuantity},#{item.actualWeight},#{item.receiverRegionLabel},#{item.actualVolume},#{item.reweighWeight},#{item.containerId},#{item.electronicLock},#{item.emptyMileage},#{item.shelfId},#{item.emptyFuel},#{item.shelfCode},#{item.loadedMileage},#{item.loadedFuel},#{item.shiftNo},#{item.lineNo},#{item.status},#{item.createBy},#{item.createTime},#{item.updateBy},#{item.updateTime},#{item.remark},#{item.accountsReceivableStatus},#{item.accountsPayableStatus},#{item.collectionPlanId},#{item.paymentPlanId},#{item.isCustoms},#{item.startRegionCode},#{item.endRegionCode},#{item.quoteDetailId},#{item.operationMode},#{item.quotePlanId},#{item.isLoad},#{item.commissionModel}
            </trim>
        </foreach>
    </insert>
@@ -456,6 +459,7 @@
            <if test="confirmTime != null">confirm_time = #{confirmTime},</if>
            <if test="okTime != null">ok_time = #{okTime},</if>
            <if test="isLoad != null">is_load = #{isLoad},</if>
            <if test="commissionModel != null">commission_model = #{commissionModel},</if>
        </trim>
        where id = #{id}
@@ -547,6 +551,7 @@
                <if test="item.operationMode != null">operation_mode = #{item.operationMode},</if>
                <if test="item.quotePlanId != null">quote_plan_id = #{item.quotePlanId},</if>
                <if test="item.isLoad != null">is_load = #{item.isLoad},</if>
                <if test="item.commissionModel != null">commission_model = #{item.commissionModel},</if>
            </trim>
            where id = #{item.id}
        </foreach>
ui/admin-ui3/src/views/cwgl/smartLockerApplication/index.vue
@@ -361,7 +361,7 @@
// 定义实际要执行的函数
const handleItemNameChange = (val: any) => {
  // 判断 itemType 是否为 '0',并且 itemName 有值
  if (form.value.itemType === '0' && val) {
  if (form.value.itemType == 0 && val) {
    // 在这里添加你的请求接口逻辑
    smartLockerApplicationQuery({ licensePlateNumber: val }).then(response => {
      if (response.code == 200) {
@@ -377,7 +377,7 @@
const handleInvalid = (row: any) => {
  proxy.$modal.confirm(`是否作废该申领人编码 :${row.applicantCode}?`).then(function () {
    return smartLockerApplicationInvalid(row.id);
  }).then((res) => {
  }).then((res:any) => {
    onLoad(page.value);
    proxy.$modal.msgSuccess(res.msg);
  })
ui/admin-ui3/src/views/system/user/index.vue
@@ -19,7 +19,7 @@
            :page="page"
            :permission="permissionList"
            :before-open="beforeOpen"
            v-model="form"
            v-model="form" v-model:search="queryParams"
            ref="crudRef"
            @row-update="rowUpdate"
            @row-save="rowSave"
ui/admin-ui3/src/views/tms/collectionTmsQuoteDetail/index.vue
@@ -174,7 +174,7 @@
const option = ref({
  pageKey: 'TmsQuoteDetail',
  rowKey: 'id',
  labelWidth: 120,
  labelWidth: 150,
  dialogWidth:'80%',
  group:[
    {
@@ -377,6 +377,44 @@
              itemsTableOption.value.column.segment2Currency.hide = true;
              itemsTableOption.value.column.segment2TaxRate.hide = true;
              itemsTableOption.value.column.totalFreight.hide = true;
              option.value.group.forEach((item:any) =>{
                if (item.prop == 'jcxx'){
                  item.column.freightPrice.editDisplay = true;
                  item.column.freightPrice.viewDisplay = true;
                  item.column.currency.editDisplay = true;
                  item.column.currency.viewDisplay = true;
                  item.column.taxRate.editDisplay = true;
                  item.column.taxRate.viewDisplay = true;
                  item.column.segment1FreightQuote.editDisplay = false;
                  item.column.segment1FreightQuote.viewDisplay = false;
                  item.column.segment1Currency.editDisplay = false;
                  item.column.segment1Currency.viewDisplay = false;
                  item.column.segment1TaxRate.editDisplay = false;
                  item.column.segment1TaxRate.viewDisplay = false;
                  item.column.segment2FreightQuote.editDisplay = false;
                  item.column.segment2FreightQuote.viewDisplay = false;
                  item.column.segment2Currency.editDisplay = false;
                  item.column.segment2Currency.viewDisplay = false;
                  item.column.segment2TaxRate.editDisplay = false;
                  item.column.segment2TaxRate.viewDisplay = false;
                  item.column.totalFreightCny.editDisplay = false;
                  item.column.totalFreightCny.viewDisplay = false;
                  item.column.totalFreightHkd.editDisplay = false;
                  item.column.totalFreightHkd.viewDisplay = false;
                }
              })
            }else{
              itemsTableOption.value.column.freightPrice.hide = true;
              itemsTableOption.value.column.currency.hide = true;
@@ -388,6 +426,48 @@
              itemsTableOption.value.column.segment2Currency.hide = false;
              itemsTableOption.value.column.segment2TaxRate.hide = false;
              itemsTableOption.value.column.totalFreight.hide = false;
              option.value.group.forEach((item:any) =>{
                 if (item.prop == 'jcxx'){
                   item.column.freightPrice.editDisplay = false;
                   item.column.freightPrice.viewDisplay = false;
                   item.column.currency.editDisplay = false;
                   item.column.currency.viewDisplay = false;
                   item.column.taxRate.editDisplay = false;
                   item.column.taxRate.viewDisplay = false;
                   item.column.segment1FreightQuote.editDisplay = true;
                   item.column.segment1FreightQuote.viewDisplay = true;
                   item.column.segment1Currency.editDisplay = true;
                   item.column.segment1Currency.viewDisplay = true;
                   item.column.segment1TaxRate.editDisplay = true;
                   item.column.segment1TaxRate.viewDisplay = true;
                   item.column.segment2FreightQuote.editDisplay = true;
                   item.column.segment2FreightQuote.viewDisplay = true;
                   item.column.segment2Currency.editDisplay = true;
                   item.column.segment2Currency.viewDisplay = true;
                   item.column.segment2TaxRate.editDisplay = true;
                   item.column.segment2TaxRate.viewDisplay = true;
                   item.column.totalFreightCny.editDisplay = true;
                   item.column.totalFreightCny.viewDisplay = true;
                   item.column.totalFreightHkd.editDisplay = true;
                   item.column.totalFreightHkd.viewDisplay = true;
                 }
              })
            }
          }
        },
@@ -454,6 +534,84 @@
            }
          ],
        },
        segment1FreightQuote:{
          label: '一段运费报价',  addDisplay: false,
          editDisplay: true,
          viewDisplay: true,type: 'number',
          rules: [
            {
              required: true,
              message: "一段运费报价不能为空", trigger: "blur"
            }
          ],
        },
        segment1Currency:{
          label: '一段运费币制',addDisplay: false,
          type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_currency',
          rules: [
            {
              required: true,
              message: "一段运费币制不能为空", trigger: "blur"
            }
          ],
        },
        segment1TaxRate:{
          label: '一段运费税点%',  addDisplay: false,
          editDisplay: true,
          viewDisplay: true,type: 'number',
          rules: [
            {
              required: true,
              message: "一段运费税点不能为空", trigger: "blur"
            }
          ],
        },
        segment2FreightQuote:{
          label: '二段运费报价', addDisplay: false,
          editDisplay: true,
          viewDisplay: true,type: 'number',
          rules: [
            {
              required: true,
              message: "二段运费报价不能为空", trigger: "blur"
            }
          ],
        },
        segment2Currency:{
          label: '二段运费币制',addDisplay: false,
        type: 'radio', dataType: 'string', dicUrl: '/system/dict/data/type/sys_currency',
        rules: [
          {
            required: true,
            message: "二段运费币制不能为空", trigger: "blur"
          }
        ],
        },
        segment2TaxRate:{
          label: '二段运费税点%',addDisplay: false,
          editDisplay: true,
          viewDisplay: true,type: 'number',
          rules: [
            {
              required: true,
              message: "二段运费税点不能为空", trigger: "blur"
            }
          ],
        },
        totalFreightCny:{
          label: '总运费人民币报价', disabled: true, addDisplay: false,
          editDisplay: true,
          viewDisplay: true,
        },
        totalFreightHkd:{
          label: '总运费港币报价',disabled: true ,addDisplay: false,
          editDisplay: true,
          viewDisplay: true
        }
      }
    },
    {
ui/admin-ui3/src/views/tms/collectionTmsQuotePlan/index.vue
@@ -456,39 +456,34 @@
    }
  },
  rowSaveBegin:(row:any,loading:any)=>{
      if (selectionList2.value.length == 0){
        proxy.$modal.msgError("请至少选择一条应收费用报价项");
        loading();
        throw new Error("请至少选择一条应收费用报价项");
      if (selectionList2.value.length > 0){
        let filter = selectionList2.value.filter((item:any)=>{
          return !item.price || !item.currency
        });
        if (filter.length > 0){
          proxy.$modal.msgError("请填写所有必填项");
          loading();
          throw new Error("请填写所有必填项")
        }
        row.quoteItems = selectionList2.value;
      }
  },
  rowUpdateBegin(row:any,loading:any){
    if (selectionList2.value.length > 0){
      let filter = selectionList2.value.filter((item:any)=>{
         return !item.price || !item.currency
       });
        return !item.price || !item.currency
      });
      if (filter.length > 0){
        proxy.$modal.msgError("请填写所有必填项");
        loading();
        throw new Error("请填写所有必填项")
      }
      row.quoteItems = selectionList2.value;
  },
  rowUpdateBegin(row:any,loading:any){
    if (selectionList2.value.length == 0){
      proxy.$modal.msgError("请至少选择一条应收费用报价项");
      loading();
      throw new Error("请至少选择一条应收费用报价项");
    }
    let filter = selectionList2.value.filter((item:any)=>{
      return !item.price || !item.currency
    });
    if (filter.length > 0){
      proxy.$modal.msgError("请填写所有必填项");
      loading();
      throw new Error("请填写所有必填项")
    }
    row.quoteItems = selectionList2.value;
  },
  handleEndOpenFunc:(type:string,res:any)=>{
    if (type === 'edit'){
ui/admin-ui3/src/views/tms/paymentTmsQuotePlan/index.vue
@@ -572,39 +572,35 @@
    }
  },
  rowSaveBegin:(row:any,loading:any)=>{
    if (selectionList2.value.length == 0){
      proxy.$modal.msgError("请至少选择一条应收费用报价项");
      loading();
      throw new Error("请至少选择一条应收费用报价项");
    if (selectionList2.value.length > 0){
      let filter = selectionList2.value.filter((item:any)=>{
        return !item.price || !item.currency
      });
      if (filter.length > 0){
        proxy.$modal.msgError("请填写所有必填项");
        loading();
        throw new Error("请填写所有必填项")
      }
      row.quoteItems = selectionList2.value;
    }
    let filter = selectionList2.value.filter((item:any)=>{
      return !item.price || !item.currency
    });
    if (filter.length > 0){
      proxy.$modal.msgError("请填写所有必填项");
      loading();
      throw new Error("请填写所有必填项")
    }
    row.quoteItems = selectionList2.value;
  },
  rowUpdateBegin(row:any,loading:any){
    if (selectionList2.value.length == 0){
      proxy.$modal.msgError("请至少选择一条应收费用报价项");
      loading();
      throw new Error("请至少选择一条应收费用报价项");
    if (selectionList2.value.length > 0){
      let filter = selectionList2.value.filter((item:any)=>{
        return !item.price || !item.currency
      });
      if (filter.length > 0){
        proxy.$modal.msgError("请填写所有必填项");
        loading();
        throw new Error("请填写所有必填项")
      }
      row.quoteItems = selectionList2.value;
    }
    let filter = selectionList2.value.filter((item:any)=>{
      return !item.price || !item.currency
    });
    if (filter.length > 0){
      proxy.$modal.msgError("请填写所有必填项");
      loading();
      throw new Error("请填写所有必填项")
    }
    row.quoteItems = selectionList2.value;
  },
  handleEndOpenFunc:(type:string,res:any)=>{
    activeProviderType.value = form.value.providerType;
ui/admin-ui3/src/views/tms/tmsDispatchOrder/index.vue
@@ -783,6 +783,7 @@
            console.log(value)
            option.value.group.forEach((item: any) => {
              if (item.prop == 'pcxx') {
                item.column.commissionModel.display = value != 1;
                item.column.vehicleProviderId.display = value == 1;
                // item.column.vehicleProviderId.rules.forEach((cItem: any) => {
                //   cItem.required = value == 1;
@@ -791,6 +792,16 @@
            })
          },
        },
        commissionModel:{
          label: '提成模式',
          display: true, type: 'radio', dicUrl: '/system/dict/data/type/commission_model', dataType: 'string',
          rules: [
            {
              required: true,
              message: "提成模式不能为空", trigger: "change"
            }
          ],
        },
        vehicleProviderId: {
          label: '车辆服务商',
          display: true,