董国庆
2026-03-31 66bf1e4ebb87da9667dfcde39557313817b8e9da
Merge branch 'main' of http://120.76.84.145:10101/gitblit/r/H5/xp-robotaxi-web
5个文件已修改
1217 ■■■■■ 已修改文件
src/views/transaction/navigationAndRoutePlanning/index.vue 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/transaction/order/evaluationRecord/index.vue 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/transaction/order/orderManagement/detail.vue 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/transaction/pricingManagement/detail.vue 572 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/transaction/transactionStrategy/index.vue 432 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/transaction/navigationAndRoutePlanning/index.vue
@@ -1,8 +1,8 @@
<script setup lang="tsx">
import type { DataTableColumns } from 'naive-ui'
import { useBoolean } from '@/hooks'
import { getRoutePlanList, deleteRoutePlan } from '@/service/api/transaction'
import { NButton, NSpace } from 'naive-ui'
import { deleteRoutePlan, getRoutePlanList } from '@/service/api/transaction'
import { NButton, NSpace, NTooltip } from 'naive-ui'
import SearchPanel from '@/components/custom/SearchPanel.vue'
import TableModal from './components/TableModal.vue'
import dayjs from 'dayjs'
@@ -34,21 +34,21 @@
  pageSize: 10,
})
const columns = computed<DataTableColumns<any>>(() =>[
const columns = computed<DataTableColumns<any>>(() => [
  {
    title: '序号',
    key: 'serialNumber',
    resizable: true,
    width: 60
    width: 60,
  },
  {
    title: '名称',
    key: 'planName',
    resizable: true,
    ellipsis: {
      tooltip: true
      tooltip: true,
    },
    width: 200
    width: 200,
  },
  {
    title: '开通城市',
@@ -56,9 +56,9 @@
    resizable: true,
    width: 200,
    ellipsis: {
      tooltip: true
      tooltip: true,
    },
    render: (row) => row.cityName + row.districtName || '-'
    render: row => row.cityName + row.districtName || '-',
  },
  {
    title: '优先规则',
@@ -66,20 +66,20 @@
    resizable: true,
    minWidth: 300,
    ellipsis: {
      tooltip: true
      tooltip: true,
    },
    render: (row) => {
      return options.find(item => item.value === row.routePlanRule)?.label || '-'
    }
    },
  },
  {
    title: '备注',
    key: 'remarks',
    resizable: true,
    ellipsis: {
      tooltip: true
      tooltip: true,
    },
    width: 200
    width: 200,
  },
  {
    title: '添加时间',
@@ -99,12 +99,12 @@
          <NButton
            text
            v-permission="6062"
            type='primary'
            type="primary"
            onClick={() => modalRef.value.openModal('edit', row)}
          >
            编辑
          </NButton>
           <NButton
          <NButton
            text
            v-permission="6063"
            type="primary"
@@ -117,13 +117,13 @@
                maskClosable: false,
                autoFocus: false,
                onPositiveClick: () => {
                  deleteRoutePlan(row.id).then(res => {
                  if (res.code === 200) {
                    message.success('删除成功')
                    getList()
                  }
                })
                }
                  deleteRoutePlan(row.id).then((res) => {
                    if (res.code === 200) {
                      message.success('删除成功')
                      getList()
                    }
                  })
                },
              })
            }}
          >
@@ -164,46 +164,46 @@
    label: '不走高速',
    value: 35,
  },
   {
  {
    label: '少收费',
    value: 36,
   },
   {
  },
  {
    label: '大路优先',
    value: 37,
   },
   {
  },
  {
    label: '速度最快',
    value: 38,
   },
   {
  },
  {
    label: '躲避拥堵+高速优先',
    value: 39,
   },
   {
  },
  {
    label: '躲避拥堵+不走高速',
    value: 40,
   },
   {
  },
  {
    label: '躲避拥堵+少收费',
    value: 41,
   },
   {
  },
  {
    label: '少收费+不走高速',
    value: 42,
   },
   {
  },
  {
    label: '躲避拥堵+少收费+不走高速',
    value: 43,
   },
   {
  },
  {
    label: '躲避拥堵+大路优先',
    value: 44,
   },
   {
  },
  {
    label: '躲避拥堵+速度最快',
    value: 45,
   }
  },
]
const filterItems = computed(() => [
@@ -215,7 +215,14 @@
  {
    label: '优先规则',
    path: 'routePlanRule',
    render: () => <n-select v-model:value={model.value.routePlanRule} onUpdate:show={(val: any) => isElectronicAreaIdOpen.value = val} options={options} clearable >
    render: () => (
      <n-select
        v-model:value={model.value.routePlanRule}
        onUpdate:show={(val: any) => isElectronicAreaIdOpen.value = val}
        options={options}
        clearable
        renderOption={renderOption}
      >
        {{
          arrow: () => (
            <img
@@ -226,12 +233,23 @@
            />
          ),
        }}
      </n-select>,
  }
      </n-select>
    ),
  },
])
const count = ref(0)
const listData = ref<any[]>([])
function renderOption({ node, option }: { node: VNode, option: any }) {
  return h(NTooltip, {
    style: { backgroundColor: '#fff', color: '#333' },
    arrowStyle: { backgroundColor: '#fff' },
  }, {
    trigger: () => node,
    default: () => `${option.label}`,
  })
}
async function getList() {
  startLoading()
@@ -242,7 +260,7 @@
  }
  getRoutePlanList(params).then((res) => {
    listData.value = res.data.records || []
    listData.value.forEach((item: any, index: number)  => {
    listData.value.forEach((item: any, index: number) => {
      item.serialNumber = (pageParams.value.pageNum - 1) * pageParams.value.pageSize + index + 1
    })
    count.value = res.data.total || res.data.records?.length
@@ -286,23 +304,27 @@
    <n-card class="flex-1 robotaxi-table-card">
      <template #header>
        <n-flex justify="flex-end" v-permission="6061">
        <n-flex v-permission="6061" justify="flex-end">
          <NButton type="primary" secondary @click="modalRef.openModal('add')">
            新增
          </NButton>
        </n-flex>
      </template>
      <div class="flex-1 flex flex-col h-full">
        <n-data-table class="flex-1" :columns="columns" :data="listData" :loading="loading" flex-height
          :bordered="false" :header-height="18" :row-height="18">
        <n-data-table
          class="flex-1" :columns="columns" :data="listData" :loading="loading" flex-height
          :bordered="false" :header-height="18" :row-height="18"
        >
          <template #empty>
            <div class="flex-center">
              <img src="/src/assets/element-img/no-data.png" style="width:123px;height:125px" @error="(e: any) => { e.target.src = 'https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/images/ab6c7ff4-403a-4a2c-9ebf-310c023dc20f.png' }">
            </div>
          </template>
        </n-data-table>
        <Pagination class="robotaxi-pagination mt-12px" :count="count" :page-size="pageParams.pageSize"
          :page="pageParams.pageNum" @change="changePage" />
        <Pagination
          class="robotaxi-pagination mt-12px" :count="count" :page-size="pageParams.pageSize"
          :page="pageParams.pageNum" @change="changePage"
        />
      </div>
      <TableModal ref="modalRef" modal-name="线路规划配置" @refresh="handleSearch" />
src/views/transaction/order/evaluationRecord/index.vue
@@ -14,7 +14,7 @@
  orderRating: null,
  phoneNumber: '',
  plateNumber: '',
  time: null
  time: null,
}
const model = ref({ ...initialModel })
function handleResetSearch() {
@@ -33,49 +33,50 @@
})
const isElectronicAreaIdOpen = ref(false)
const columns = computed<DataTableColumns<any>>(() =>[
const columns = computed<DataTableColumns<any>>(() => [
  {
    title: '序号',
    key: 'serialNumber',
    resizable: true,
    width: 80
    width: 80,
  },
  {
    title: '评价时间',
    key: 'evaluateTime',
    resizable: true,
    render: row => <span>{row.evaluateTime ? dayjs(row.evaluateTime).format('YYYY/MM/DD HH:mm') : '-'}</span>,
    width: 200
    width: 200,
  },
  {
    title: '评价用户昵称',
    key: 'nickName',
    resizable: true,
    width: 150
    width: 150,
  },
  {
    title: '评价用户手机号',
    key: 'phoneNumber',
    resizable: true
    resizable: true,
  },
  {
    title: '服务车辆',
    key: 'plateNumber',
    resizable: true,
    width: 140
    width: 140,
  },
  {
    title: '评价分数',
    key: 'orderRating',
    resizable: true,
    width: 120,
    render: (row: any) => {
      const option = options.find(item => item.value === row.orderRating)
      return (
        <n-tag type={option?.type || 'primary'}>
        <n-tag type={option?.type || 'primary'} bordered={false}>
          {option?.label || ''}
        </n-tag>
      )
    }
    },
  },
  {
    title: '关联订单号',
@@ -85,17 +86,18 @@
    render(row) {
      return (
        <div
        class="cursor-pointer text-ellipsis whitespace-nowrap w-full overflow-hidden text-[#0068FF]"
        onClick={() => router.push({
          class="cursor-pointer text-ellipsis whitespace-nowrap w-full overflow-hidden text-[#0068FF]"
          onClick={() => router.push({
            name: 'orderDetail',
            query: {
              orderId: row.orderId!,
            },
          })}>
          })}
        >
          {row.orderNumber}
        </div>
      )
    }
    },
  },
])
@@ -115,7 +117,7 @@
    label: '不满意',
    value: 1,
    type: 'error',
  }
  },
]
const filterItems = computed(() => [
@@ -127,9 +129,13 @@
  {
    label: '评价分数',
    path: 'orderRating',
    render: () => <n-select v-model:value={model.value.orderRating} onUpdate:show={(val: any) => isElectronicAreaIdOpen.value = val}
    render: () => (
      <n-select
        v-model:value={model.value.orderRating}
        onUpdate:show={(val: any) => isElectronicAreaIdOpen.value = val}
        options={options}
        clearable >
        clearable
      >
        {{
          arrow: () => (
            <img
@@ -140,7 +146,8 @@
            />
          ),
        }}
      </n-select>,
      </n-select>
    ),
  },
  {
    label: '车辆',
@@ -150,8 +157,8 @@
  {
    label: '评价时间',
    path: 'time',
    render: () => <n-date-picker format="yyyy/MM/dd" v-model:value={model.value.time} type="daterange" clearable  actions={[]} close-on-select={true}/>
  }
    render: () => <n-date-picker format="yyyy/MM/dd" v-model:value={model.value.time} type="daterange" clearable actions={[]} close-on-select={true} />,
  },
])
const count = ref(0)
@@ -169,8 +176,8 @@
  }
  getOrderEvaluateList(params).then((res) => {
    listData.value = res.data.records || []
    listData.value.forEach((item: any, index: number)  => {
       item.serialNumber = (pageParams.value.pageNum - 1) * pageParams.value.pageSize + index + 1
    listData.value.forEach((item: any, index: number) => {
      item.serialNumber = (pageParams.value.pageNum - 1) * pageParams.value.pageSize + index + 1
    })
    count.value = res.data.total || res.data.records?.length || 0
  }).finally(() => {
@@ -213,16 +220,20 @@
    <n-card class="flex-1 robotaxi-table-card">
      <div class="flex-1 flex flex-col h-full">
        <n-data-table class="flex-1" :columns="columns" :data="listData" :loading="loading" flex-height
          :bordered="false" :header-height="18" :row-height="18">
        <n-data-table
          class="flex-1" :columns="columns" :data="listData" :loading="loading" flex-height
          :bordered="false" :header-height="18" :row-height="18"
        >
          <template #empty>
            <div class="flex-center">
              <img src="/src/assets/element-img/no-data.png" style="width:123px;height:125px" @error="(e: any) => { e.target.src = 'https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/images/ab6c7ff4-403a-4a2c-9ebf-310c023dc20f.png' }">
            </div>
          </template>
        </n-data-table>
        <Pagination class="robotaxi-pagination mt-12px" :count="count" :page="pageParams.pageNum"
          :page-size="pageParams.pageSize" @change="changePage" />
        <Pagination
          class="robotaxi-pagination mt-12px" :count="count" :page="pageParams.pageNum"
          :page-size="pageParams.pageSize" @change="changePage"
        />
      </div>
    </n-card>
  </div>
src/views/transaction/order/orderManagement/detail.vue
@@ -6,6 +6,7 @@
import { getOrderDetail } from '@/service/api/transaction'
import { fetchCruiseOrderDetail } from '@/service/api/cruise'
import { fetchTestOrderDetail } from '@/service/api/copyText'
import dayjs from 'dayjs'
const { load } = useScriptTag(
  `https://webapi.amap.com/maps?v=2.0&key=${import.meta.env.VITE_MAP_KEY}&plugin=AMap.PlaceSearch,AMap.Geocoder`,
@@ -222,7 +223,7 @@
            </n-gi>
            <n-gi v-if="type !== 'cruise'">
              <div class="info-item">
                <span class="label">上车时间:</span><span class="value">{{ model.boardingTime || '-'
                <span class="label">上车时间:</span><span class="value">{{ model.boardingTime ? dayjs(model.boardingTime).format('YYYY/MM/DD HH:mm') : '-'
                }}</span>
              </div>
            </n-gi>
@@ -234,7 +235,7 @@
            </n-gi>
            <n-gi v-if="type !== 'cruise'">
              <div class="info-item">
                <span class="label">下车时间:</span><span class="value">{{ model.getoffTime || '-'
                <span class="label">下车时间:</span><span class="value">{{ model.getoffTime ? dayjs(model.getoffTime).format('YYYY/MM/DD HH:mm') : '-'
                }}</span>
              </div>
            </n-gi>
@@ -356,7 +357,7 @@
.info-item {
  display: flex;
  align-items: center;
  /* align-items: center; */
}
.label {
@@ -366,29 +367,18 @@
.value {
  color: #171F26;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.value:hover {
  white-space: normal;
  overflow: visible;
  word-break: break-all;
  position: relative;
  z-index: 10;
  background-color: #fff;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
  padding: 4px;
  border-radius: 4px;
  margin: -4px;
  /* white-space: nowrap; */
  /* overflow: hidden; */
  /* text-overflow: ellipsis; */
}
.plate-tag {
  background-color: #DCF5DD;
  color: #0BB52D;
  padding: 2px 6px;
  padding: 0 6px;
  border-radius: 4px;
  font-size: 12px;
  height: 20px;
  line-height: 20px;
}
</style>
src/views/transaction/pricingManagement/detail.vue
@@ -4,6 +4,7 @@
import { useRoute, useRouter } from 'vue-router'
import { getPricingDetail, setPricing } from '@/service/api/transaction'
import TableModal from './components/TableModal.vue'
import { handleInputNumberKeyDown } from '@/utils/common'
const { bool: loading, setTrue: startLoading, setFalse: endLoading } = useBoolean(false)
@@ -18,8 +19,6 @@
const formRef = ref()
const modalRef = ref()
import { handleInputNumberKeyDown } from '@/utils/common'
const initialModel: any = {
  isDynamicPrice: 0,
@@ -353,39 +352,53 @@
<template>
  <div class="w-full h-full relative content">
    <div class="main">
      <div class="box py-16px! title mb-12px flex items-center justify-between" v-if="type === 'view'">
      <div v-if="type === 'view'" class="box py-16px! title mb-12px flex items-center justify-between">
        <span>定价详情</span>
        <NButton v-permission="6025" secondary type="primary" @click="modalRef.openModal('edit', id)">
          编辑
        </NButton>
      </div>
      <div v-if="type === 'add'">
        <n-form ref="formRef" :model="model" label-placement="left" inline :show-feedback="false"
          require-mark-placement="left" class="w-full">
        <n-form
          ref="formRef" :model="model" label-placement="left" inline :show-feedback="false"
          require-mark-placement="left" class="w-full"
        >
          <n-spin :show="loading" class="w-full">
            <NSpace vertical :size="12">
              <div class="box  p-y16px!">
                <n-grid :cols="3" :x-gap="18">
                  <n-grid-item>
                    <div class="flex items-center mb-16px">
                      <div class="label">适用城市:</div>
                      <div class="value">{{ detail?.cityName || '-' }}</div>
                      <div class="label">
                        适用城市:
                      </div>
                      <div class="value">
                        {{ detail?.cityName || '-' }}
                      </div>
                    </div>
                  </n-grid-item>
                  <n-grid-item>
                    <div class="flex items-center mb-16px">
                      <div class="label">车型:</div>
                      <div class="value">{{ detail?.vehicleModel || '-' }}</div>
                      <div class="label">
                        车型:
                      </div>
                      <div class="value">
                        {{ detail?.vehicleModel || '-' }}
                      </div>
                    </div>
                  </n-grid-item>
                  <n-grid-item>
                    <div class="flex items-center mb-16px">
                      <div class="label">渠道:</div>
                      <div class="value">{{ detail?.channel || '-' }}</div>
                      <div class="label">
                        渠道:
                      </div>
                      <div class="value">
                        {{ detail?.channel || '-' }}
                      </div>
                    </div>
                  </n-grid-item>
                </n-grid>
                <div class="line"></div>
                <div class="line" />
                <!-- 一口价 -->
                <!-- 基础定价 -->
                <NSpace v-if="category === '2'" vertical :size="16">
@@ -395,30 +408,40 @@
                  <div>
                    <n-form-item label="起步价设置:" path="num1" required>
                      起步价为
                      <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson2.num1" min="0" max="999" :precision="2"
                        :show-button="false" placeholder="最多3位数" class="mx-2 w-115px" />
                      <n-input-number
                        v-model:value="model.basicPricingJson2.num1" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                        :show-button="false" placeholder="最多3位数" class="mx-2 w-115px"
                      />
                      元,起步价包含
                      <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson2.num2" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mx-2 w-115px" />
                      <n-input-number
                        v-model:value="model.basicPricingJson2.num2" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mx-2 w-115px"
                      />
                      公里,
                      <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson2.num3" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-2 w-115px" />
                      <n-input-number
                        v-model:value="model.basicPricingJson2.num3" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-2 w-115px"
                      />
                      分钟
                    </n-form-item>
                  </div>
                  <div>
                    <n-form-item label="里程费设置:" path="num4" required>
                      超过起步里程后每公里
                      <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson2.num4" min="0" max="999" :precision="2"
                        :show-button="false" placeholder="最多3位数" class="mx-2 w-115px" />
                      <n-input-number
                        v-model:value="model.basicPricingJson2.num4" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                        :show-button="false" placeholder="最多3位数" class="mx-2 w-115px"
                      />
                      元
                    </n-form-item>
                  </div>
                  <div>
                    <n-form-item label="时长费设置:" path="num5" required>
                      超过起步时长后每分钟
                      <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson2.num5" min="0" max="999" :precision="2"
                        :show-button="false" placeholder="最多3位数" class="mx-2 w-115px" />
                      <n-input-number
                        v-model:value="model.basicPricingJson2.num5" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                        :show-button="false" placeholder="最多3位数" class="mx-2 w-115px"
                      />
                      元
                    </n-form-item>
                  </div>
@@ -427,110 +450,141 @@
                  <div class="head">
                    基础定价
                  </div>
                  <div v-for="(item, index) in model.startingFareJson" :key="index">
                  <div v-for="(item, index) in model.startingFareJson" :key="index" class="mb-16px">
                    <NSpace vertical :size="16" :style="Number(index) > 0 ? { marginTop: '24px' } : ''">
                      <n-form-item label="时段:" path="item.num1" required>
                        <n-time-picker v-model:formatted-value="item.num1" format="HH:mm" value-format="HH:mm" clearable
                          class="mr-2 w-115px" placeholder="开始时间" />至
                        <n-time-picker v-model:formatted-value="item.num2" format="HH:mm" value-format="HH:mm" clearable
                          class="mx-2 w-115px" placeholder="结束时间" />
                        <icon-park-outline-delete @click="removeTimePeriod(item)" class="cursor-pointer" />
                        <n-time-picker
                          v-model:formatted-value="item.num1" format="HH:mm" value-format="HH:mm" clearable
                          class="mr-2 w-115px" placeholder="开始时间"
                        />至
                        <n-time-picker
                          v-model:formatted-value="item.num2" format="HH:mm" value-format="HH:mm" clearable
                          class="mx-2 w-115px" placeholder="结束时间"
                        />
                        <icon-park-outline-delete class="cursor-pointer" @click="removeTimePeriod(item)" />
                      </n-form-item>
                      <div>
                        <n-form-item label="起步价设置:" path="item.num3" required>
                          起步价为
                          <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="item.num3" min="0" max="999" :precision="2"
                            :show-button="false" placeholder="最多3位数" class="mx-2 w-115px" />
                          <n-input-number
                            v-model:value="item.num3" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                            :show-button="false" placeholder="最多3位数" class="mx-2 w-115px"
                          />
                          元,起步价包含
                          <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="item.num4" min="0" max="999" :precision="0"
                            :show-button="false" placeholder="最多3位数" class="mx-2 w-115px" />
                          <n-input-number
                            v-model:value="item.num4" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="0"
                            :show-button="false" placeholder="最多3位数" class="mx-2 w-115px"
                          />
                          公里,
                          <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="item.num5" min="0" max="999" :precision="0"
                            :show-button="false" placeholder="最多3位数" class="mx-2 w-115px" />
                          <n-input-number
                            v-model:value="item.num5" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="0"
                            :show-button="false" placeholder="最多3位数" class="mx-2 w-115px"
                          />
                          分钟
                        </n-form-item>
                      </div>
                      <div>
                        <n-form-item label="里程费设置:" path="item.num6" required>
                          超过起步里程后每公里
                          <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="item.num6" min="0" max="999" :precision="2"
                            :show-button="false" placeholder="最多3位数" class="mx-2 w-115px" />
                          <n-input-number
                            v-model:value="item.num6" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                            :show-button="false" placeholder="最多3位数" class="mx-2 w-115px"
                          />
                          元
                        </n-form-item>
                      </div>
                      <div>
                        <n-form-item label="时长费设置:" path="item.num7" required>
                          超过起步时长后每分钟
                          <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="item.num7" min="0" max="999" :precision="2"
                            :show-button="false" placeholder="最多3位数" class="mx-2 w-115px" />
                          <n-input-number
                            v-model:value="item.num7" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                            :show-button="false" placeholder="最多3位数" class="mx-2 w-115px"
                          />
                          元
                        </n-form-item>
                      </div>
                    </NSpace>
                  </div>
                  <NButton type="primary" class="w-240px! mt-16px" secondary @click="addTimePeriod">
                  <NButton type="primary" class="w-240px!" secondary @click="addTimePeriod">
                    <template #icon>
                      <img src="@/assets/pricingManagement/add.svg" class="w-16px h-16px" />
                      <img src="@/assets/pricingManagement/add.svg" class="w-16px h-16px">
                    </template>
                    添加时段
                  </NButton>
                </div>
              </div>
              <div class="box" v-if="category === '1'">
              <div v-if="category === '1'" class="box">
                <div class="head">
                  特殊价格
                </div>
                <div>
                  <div class="flex items-center mb-12px text-14px font-600">
                    <img src="@/assets/pricingManagement/wait.svg" class="w-16px h-16px mr-8px" />
                    <img src="@/assets/pricingManagement/wait.svg" class="w-16px h-16px mr-8px">
                    等待费设置
                  </div>
                  <n-form-item label="" path="basicPricingJson1.num4">
                    司机到达预约地点
                    <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num4" min="0" max="999" :precision="0"
                      :show-button="false" placeholder="最多3位数" class="mx-2 w-115px" />
                    <n-input-number
                      v-model:value="model.basicPricingJson1.num4" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="0"
                      :show-button="false" placeholder="最多3位数" class="mx-2 w-115px"
                    />
                    分钟后开始收取等待费,为
                    <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num5" min="0" max="999" :precision="2"
                      :show-button="false" placeholder="最多3位数" class="mx-2 w-115px" />
                    <n-input-number
                      v-model:value="model.basicPricingJson1.num5" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                      :show-button="false" placeholder="最多3位数" class="mx-2 w-115px"
                    />
                    元/分,不足一分钟按一分钟计算
                  </n-form-item>
                </div>
                <div>
                  <div class="flex items-center mb-12px text-14px font-600 mt-32px">
                    <img src="@/assets/pricingManagement/long.svg" class="w-16px h-16px mr-8px" />
                    <img src="@/assets/pricingManagement/long.svg" class="w-16px h-16px mr-8px">
                    远途费设置
                  </div>
                  <n-form-item label="" path="basicPricingJson1.num6">
                    <NSpace vertical :size="16">
                      <NSpace align="center" :size="[8,16]">
                      <NSpace align="center" :size="[8, 16]">
                        总里程超过起步包含公里数时,公里不足
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num7" min="0" max="999" :precision="0"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num7" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="0"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        公里,超出部分每公里加收
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num8" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num8" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        元
                      </NSpace>
                      <NSpace align="center" :size="[8,16]">
                      <NSpace align="center" :size="[8, 16]">
                        超过
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num9" min="0" max="999" :precision="0"
                          :show-button="false" placeholder="最多3位数" class="w-115px" disabled />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num9" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="0"
                          :show-button="false" placeholder="最多3位数" class="w-115px" disabled
                        />
                        不足
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num10" min="0" max="999" :precision="0"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num10" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="0"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        公里时,超出部分每公里加收
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num11" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num11" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        元
                      </NSpace>
                      <NSpace align="center" :size="[8,16]">
                      <NSpace align="center" :size="[8, 16]">
                        超过
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num12" min="0" max="999" :precision="0"
                          :show-button="false" placeholder="最多3位数" class="w-115px" disabled />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num12" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="0"
                          :show-button="false" placeholder="最多3位数" class="w-115px" disabled
                        />
                        公里以后,超出部分每公里加收
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num13" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num13" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        元
                      </NSpace>
                    </NSpace>
@@ -538,38 +592,54 @@
                </div>
                <div>
                  <div class="flex items-center mb-12px text-14px font-600 mt-32px">
                    <img src="@/assets/pricingManagement/night.svg" class="w-16px h-16px mr-8px" />
                    <img src="@/assets/pricingManagement/night.svg" class="w-16px h-16px mr-8px">
                    夜间行驶费用设置
                  </div>
                  <n-form-item label="" path="basicPricingJson1.num14">
                    <NSpace vertical :size="16">
                      <NSpace align="center" :size="[8,16]">
                        <n-time-picker v-model:formatted-value="model.basicPricingJson1.num14" format="HH:mm"
                          value-format="HH:mm" clearable class="w-115px" />至
                        <n-time-picker v-model:formatted-value="model.basicPricingJson1.num141" format="HH:mm"
                          value-format="HH:mm" clearable class="w-115px" />
                      <NSpace align="center" :size="[8, 16]">
                        <n-time-picker
                          v-model:formatted-value="model.basicPricingJson1.num14" format="HH:mm"
                          value-format="HH:mm" clearable class="w-115px"
                        />至
                        <n-time-picker
                          v-model:formatted-value="model.basicPricingJson1.num141" format="HH:mm"
                          value-format="HH:mm" clearable class="w-115px"
                        />
                        点为夜间行车时间,起步价变为
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num15" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num15" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        元
                      </NSpace>
                      <NSpace align="center" :size="[8,16]">
                      <NSpace align="center" :size="[8, 16]">
                        里程费为每公里
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num16" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num16" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        元,时长费为每
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num17" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num17" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        元
                      </NSpace>
                      <NSpace align="center" :size="[8,16]">
                      <NSpace align="center" :size="[8, 16]">
                        远途费为每公里加收
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num18" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num19" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num20" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num18" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num19" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num20" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        元
                      </NSpace>
                    </NSpace>
@@ -577,78 +647,110 @@
                </div>
                <div>
                  <div class="flex items-center mb-12px text-14px font-600 mt-32px">
                    <img src="@/assets/pricingManagement/peakhours.svg" class="w-16px h-16px mr-8px" />
                    <img src="@/assets/pricingManagement/peakhours.svg" class="w-16px h-16px mr-8px">
                    高峰期费用设置
                  </div>
                  <n-form-item label="" path="basicPricingJson1.num21">
                    <NSpace vertical :size="16">
                      <NSpace align="center" :size="[8,16]">
                        <n-time-picker v-model:formatted-value="model.basicPricingJson1.num21" format="HH:mm"
                          value-format="HH:mm" clearable class="w-115px" />至
                        <n-time-picker v-model:formatted-value="model.basicPricingJson1.num211" format="HH:mm"
                          value-format="HH:mm" clearable class="w-115px" />
                      <NSpace align="center" :size="[8, 16]">
                        <n-time-picker
                          v-model:formatted-value="model.basicPricingJson1.num21" format="HH:mm"
                          value-format="HH:mm" clearable class="w-115px"
                        />至
                        <n-time-picker
                          v-model:formatted-value="model.basicPricingJson1.num211" format="HH:mm"
                          value-format="HH:mm" clearable class="w-115px"
                        />
                        和
                        <n-time-picker v-model:formatted-value="model.basicPricingJson1.num22" format="HH:mm"
                          value-format="HH:mm" clearable class="w-115px" />至
                        <n-time-picker v-model:formatted-value="model.basicPricingJson1.num221" format="HH:mm"
                          value-format="HH:mm" clearable class="w-115px" />
                        <n-time-picker
                          v-model:formatted-value="model.basicPricingJson1.num22" format="HH:mm"
                          value-format="HH:mm" clearable class="w-115px"
                        />至
                        <n-time-picker
                          v-model:formatted-value="model.basicPricingJson1.num221" format="HH:mm"
                          value-format="HH:mm" clearable class="w-115px"
                        />
                        为高峰期行车时间,起步价变为
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num23" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num23" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        元
                      </NSpace>
                      <NSpace align="center" :size="[8,16]">
                      <NSpace align="center" :size="[8, 16]">
                        里程费为每公里
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num24" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num24" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        元,时长费为每
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num25" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num25" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        元
                      </NSpace>
                      <NSpace align="center" :size="[8,16]">
                      <NSpace align="center" :size="[8, 16]">
                        远途费为每公里加收
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num26" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num27" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num28" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num26" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num27" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num28" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        元
                      </NSpace>
                    </NSpace>
                  </n-form-item>
                </div>
                <div>
                   <div class="flex items-center mb-12px text-14px font-600 mt-32px">
                    <img src="@/assets/pricingManagement/holidays.svg" class="w-16px h-16px mr-8px" />
                  <div class="flex items-center mb-12px text-14px font-600 mt-32px">
                    <img src="@/assets/pricingManagement/holidays.svg" class="w-16px h-16px mr-8px">
                    节假日额外收费
                  </div>
                  <n-form-item label="" path="basicPricingJson1.num29">
                    <NSpace vertical :size="16">
                      <NSpace align="center" :size="[8,16]">
                      <NSpace align="center" :size="[8, 16]">
                        节假日起步价变为
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num29" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num29" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        元
                      </NSpace>
                      <NSpace align="center" :size="[8,16]">
                      <NSpace align="center" :size="[8, 16]">
                        里程费为每公里
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num30" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num30" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        元,时长费为每
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num31" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num31" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        元
                      </NSpace>
                      <NSpace align="center" :size="[8,16]">
                      <NSpace align="center" :size="[8, 16]">
                        远途费为每公里加收
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num32" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num33" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.basicPricingJson1.num34" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px" />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num32" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num33" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        <n-input-number
                          v-model:value="model.basicPricingJson1.num34" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" max="999" :precision="2"
                          :show-button="false" placeholder="最多3位数" class="w-115px"
                        />
                        元
                      </NSpace>
                    </NSpace>
@@ -679,33 +781,45 @@
                </div>
                <div class="mb-16px flex">
                  <n-form-item label="供需计算周期:" path="dynamicPricingJson.num1" label-style="color:rgba(23, 31, 38, 0.8)">
                    <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.dynamicPricingJson.num1" min="0" :precision="0"
                      :show-button="false" class="mx-2 w-115px" />分钟
                    <n-input-number
                      v-model:value="model.dynamicPricingJson.num1" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" :precision="0"
                      :show-button="false" class="mx-2 w-115px"
                    />分钟
                  </n-form-item>
                  <n-form-item label="订单需求阈值:" path="dynamicPricingJson.num2" label-style="color:rgba(23, 31, 38, 0.8)">
                    <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.dynamicPricingJson.num2" min="0" :precision="0"
                      :show-button="false" class="mx-2 w-115px" />单以上开始上浮
                    <n-input-number
                      v-model:value="model.dynamicPricingJson.num2" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" :precision="0"
                      :show-button="false" class="mx-2 w-115px"
                    />单以上开始上浮
                  </n-form-item>
                  <n-form-item label="车辆供给阈值:" path="dynamicPricingJson.num3" label-style="color:rgba(23, 31, 38, 0.8)">
                    <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.dynamicPricingJson.num3" min="0" :precision="0"
                      :show-button="false" class="mx-2 w-115px" />辆以下开始触发上浮
                    <n-input-number
                      v-model:value="model.dynamicPricingJson.num3" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" :precision="0"
                      :show-button="false" class="mx-2 w-115px"
                    />辆以下开始触发上浮
                  </n-form-item>
                </div>
                <div class="mb-16px flex">
                  <n-form-item label="供需价格系数:" path="dynamicPricingJson.num4" label-style="color:rgba(23, 31, 38, 0.8)">
                    每增加
                    <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.dynamicPricingJson.num4" min="0" :precision="0"
                      :show-button="false" class="mx-2 w-115px" />
                    <n-input-number
                      v-model:value="model.dynamicPricingJson.num4" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" :precision="0"
                      :show-button="false" class="mx-2 w-115px"
                    />
                    单,价格上浮
                    <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.dynamicPricingJson.num5" min="0" :precision="0"
                      :show-button="false" class="mx-2 w-115px" max="100" />%
                    <n-input-number
                      v-model:value="model.dynamicPricingJson.num5" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" :precision="0"
                      :show-button="false" class="mx-2 w-115px" max="100"
                    />%
                  </n-form-item>
                </div>
                <div class="mb-32px flex">
                  <n-form-item label="供需冷却时间:" path="dynamicPricingJson.num6" label-style="color:rgba(23, 31, 38, 0.8)">
                    调价后
                    <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.dynamicPricingJson.num6" min="0" :precision="0"
                      :show-button="false" class="mx-2 w-115px" />
                    <n-input-number
                      v-model:value="model.dynamicPricingJson.num6" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" :precision="0"
                      :show-button="false" class="mx-2 w-115px"
                    />
                    分钟内不再重复调整
                  </n-form-item>
                </div>
@@ -715,18 +829,24 @@
                <div class="mb-16px flex">
                  <n-form-item label="拥堵判断阈值:" path="dynamicPricingJson.num7" label-style="color:rgba(23, 31, 38, 0.8)">
                    道路速度
                    &lt; <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.dynamicPricingJson.num7" min="0" :precision="0"
                      :show-button="false" class="mx-2 w-115px" />
                    &lt; <n-input-number
                      v-model:value="model.dynamicPricingJson.num7" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" :precision="0"
                      :show-button="false" class="mx-2 w-115px"
                    />
                    km/h视为拥堵,拥堵价格上浮比例:
                    <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.dynamicPricingJson.num8" min="0" :precision="0"
                      :show-button="false" class="mx-2 w-115px" max="100" />%
                    <n-input-number
                      v-model:value="model.dynamicPricingJson.num8" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" :precision="0"
                      :show-button="false" class="mx-2 w-115px" max="100"
                    />%
                  </n-form-item>
                </div>
                <div>
                  <n-form-item label="拥堵影响半径:" path="dynamicPricingJson.num9" label-style="color:rgba(23, 31, 38, 0.8)">
                    以订单起点为中心
                    <n-input-number :input-props="{ onKeydown: handleInputNumberKeyDown }" v-model:value="model.dynamicPricingJson.num9" min="0" :precision="0"
                      :show-button="false" class="mx-2 w-115px" />
                    <n-input-number
                      v-model:value="model.dynamicPricingJson.num9" :input-props="{ onKeydown: handleInputNumberKeyDown }" min="0" :precision="0"
                      :show-button="false" class="mx-2 w-115px"
                    />
                    m范围内
                  </n-form-item>
                </div>
@@ -736,44 +856,66 @@
        </n-form>
      </div>
      <div v-else>
        <n-form ref="formRef" :model="model" label-placement="left" inline :show-feedback="false"
          require-mark-placement="left">
        <n-form
          ref="formRef" :model="model" label-placement="left" inline :show-feedback="false"
          require-mark-placement="left"
        >
          <n-spin :show="loading" class="w-full">
            <NSpace vertical :size="12">
              <div class="box p-24px!">
                <n-grid :cols="3" :x-gap="18">
                  <n-grid-item>
                    <div class="flex items-center mb-16px">
                      <div class="label">适用城市:</div>
                      <div class="value">{{ detail?.cityName || '-' }}</div>
                      <div class="label">
                        适用城市:
                      </div>
                      <div class="value">
                        {{ detail?.cityName || '-' }}
                      </div>
                    </div>
                  </n-grid-item>
                  <n-grid-item>
                    <div class="flex items-center mb-16px">
                      <div class="label">车型:</div>
                      <div class="value">{{ detail?.vehicleModel || '-' }}</div>
                      <div class="label">
                        车型:
                      </div>
                      <div class="value">
                        {{ detail?.vehicleModel || '-' }}
                      </div>
                    </div>
                  </n-grid-item>
                  <n-grid-item>
                    <div class="flex items-center mb-16px">
                      <div class="label">渠道:</div>
                      <div class="value">{{ detail?.channel || '-' }}</div>
                      <div class="label">
                        渠道:
                      </div>
                      <div class="value">
                        {{ detail?.channel || '-' }}
                      </div>
                    </div>
                  </n-grid-item>
                  <n-grid-item>
                    <div class="flex items-center mb-16px">
                      <div class="label">计费规则:</div>
                      <div class="value">{{ detail?.pricingType === 1 ? '动态计费' : '一口价' }}</div>
                      <div class="label">
                        计费规则:
                      </div>
                      <div class="value">
                        {{ detail?.pricingType === 1 ? '动态计费' : '一口价' }}
                      </div>
                    </div>
                  </n-grid-item>
                  <n-grid-item>
                    <div class="flex items-center mb-16px">
                      <div class="label">说明:</div>
                      <div class="value">{{ detail?.remark || '-' }}</div>
                      <div class="label">
                        说明:
                      </div>
                      <div class="value">
                        {{ detail?.remark || '-' }}
                      </div>
                    </div>
                  </n-grid-item>
                </n-grid>
                <div class="line"></div>
                <div class="line" />
                <!-- 一口价 -->
                <!-- 基础定价 -->
                <div v-if="category === '2'">
@@ -783,22 +925,34 @@
                  <n-grid :cols="3" :x-gap="18">
                    <n-grid-item>
                      <div class="flex mb-16px">
                        <div class="label">起步价设置:</div>
                        <div class="value">起步价为 {{ model.basicPricingJson2.num1 }} 元,起步包含 {{
                          model.basicPricingJson2.num2 }} 公里,最多
                          {{ model.basicPricingJson2.num3 }} 分钟</div>
                        <div class="label">
                          起步价设置:
                        </div>
                        <div class="value">
                          起步价为 {{ model.basicPricingJson2.num1 }} 元,起步包含 {{
                            model.basicPricingJson2.num2 }} 公里,最多
                          {{ model.basicPricingJson2.num3 }} 分钟
                        </div>
                      </div>
                    </n-grid-item>
                    <n-grid-item>
                      <div class="flex mb-16px">
                        <div class="label">里程费设置:</div>
                        <div class="value">超过起步里程后每公里 {{ model.basicPricingJson2.num4 }} 元</div>
                        <div class="label">
                          里程费设置:
                        </div>
                        <div class="value">
                          超过起步里程后每公里 {{ model.basicPricingJson2.num4 }} 元
                        </div>
                      </div>
                    </n-grid-item>
                    <n-grid-item>
                      <div class="flex mb-16px">
                        <div class="label">时长费设置:</div>
                        <div class="value">超过起步时长后每分钟 {{ model.basicPricingJson2.num5 }} 元</div>
                        <div class="label">
                          时长费设置:
                        </div>
                        <div class="value">
                          超过起步时长后每分钟 {{ model.basicPricingJson2.num5 }} 元
                        </div>
                      </div>
                    </n-grid-item>
                  </n-grid>
@@ -811,41 +965,63 @@
                    <n-grid :cols="3" :x-gap="18" :y-gap="16">
                      <n-grid-item :span="3">
                        <div class="flex">
                          <div class="label">时段:</div>
                          <div class="value">{{ item.num1 }}~{{ item.num2 }}</div>
                          <div class="label">
                            时段:
                          </div>
                          <div class="value">
                            {{ item.num1 }}~{{ item.num2 }}
                          </div>
                        </div>
                      </n-grid-item>
                      <n-grid-item>
                        <div class="flex">
                          <div class="label">起步价设置:</div>
                          <div class="value">起步价为 {{ item.num3 }} 元,起步包含 {{ item.num4 }} 公里,最多 {{ item.num5 }} 分钟</div>
                          <div class="label">
                            起步价设置:
                          </div>
                          <div class="value">
                            起步价为 {{ item.num3 }} 元,起步包含 {{ item.num4 }} 公里,最多 {{ item.num5 }} 分钟
                          </div>
                        </div>
                      </n-grid-item>
                      <n-grid-item>
                        <div class="flex">
                          <div class="label">里程费设置:</div>
                          <div class="value">超过起步里程后每公里 {{ item.num6 }} 元</div>
                          <div class="label">
                            里程费设置:
                          </div>
                          <div class="value">
                            超过起步里程后每公里 {{ item.num6 }} 元
                          </div>
                        </div>
                      </n-grid-item>
                      <n-grid-item>
                        <div class="flex">
                          <div class="label">时长费设置:</div>
                          <div class="value">超过起步时长后每分钟 {{ item.num7 }} 元</div>
                          <div class="label">
                            时长费设置:
                          </div>
                          <div class="value">
                            超过起步时长后每分钟 {{ item.num7 }} 元
                          </div>
                        </div>
                      </n-grid-item>
                    </n-grid>
                    <div class="line mt-16px"></div>
                    <div class="line mt-16px" />
                  </div>
                  <n-grid :cols="3" :x-gap="18" :y-gap="16">
                    <n-grid-item :span="2">
                      <div class="flex">
                        <div class="label">等待费设置:</div>
                        <div class="value">司机到达预约地点 {{ model.basicPricingJson1.num4 }} 分钟开始收取等待费,为 {{
                          model.basicPricingJson1.num5 }}
                          元/分,不足一分钟按一分钟计算</div>
                        <div class="label">
                          等待费设置:
                        </div>
                        <div class="value">
                          司机到达预约地点 {{ model.basicPricingJson1.num4 }} 分钟开始收取等待费,为 {{
                            model.basicPricingJson1.num5 }}
                          元/分,不足一分钟按一分钟计算
                        </div>
                      </div>
                      <div class="flex mt-16px">
                        <div class="label">远途费设置:</div>
                        <div class="label">
                          远途费设置:
                        </div>
                        <div class="value">
                          <NSpace align="center">
                            总里程超过起步包含公里数时,公里不足 {{ model.basicPricingJson1.num7 }} 公里,超出部分每公里加收 {{
@@ -862,7 +1038,9 @@
                        </div>
                      </div>
                      <div class="flex mt-16px">
                        <div class="label">高峰期费用设置:</div>
                        <div class="label">
                          高峰期费用设置:
                        </div>
                        <div class="value">
                          <NSpace align="center">
                            {{ model.basicPricingJson1.num21 }}~{{ model.basicPricingJson1.num211 }} 和 {{
@@ -881,7 +1059,9 @@
                    </n-grid-item>
                    <n-grid-item>
                      <div class="flex">
                        <div class="label">夜间行驶费用设置:</div>
                        <div class="label">
                          夜间行驶费用设置:
                        </div>
                        <div class="value">
                          <NSpace align="center">
                            {{ model.basicPricingJson1.num14 }}~{{ model.basicPricingJson1.num141 }} 点为夜间行车时间,起步价变为 {{
@@ -897,7 +1077,9 @@
                        </div>
                      </div>
                      <div class="flex mt-16px">
                        <div class="label">节假日额外收费:</div>
                        <div class="label">
                          节假日额外收费:
                        </div>
                        <div class="value">
                          <NSpace align="center">
                            节假日起步价变为 {{ model.basicPricingJson1.num29 }} 元
@@ -921,11 +1103,17 @@
                  动态定价
                </div>
                <div class="flex mb-16px">
                  <div class="label">是否开启动态调价:</div>
                  <div class="value">{{ model.isDynamicPrice === 1 ? '是' : '否' }}</div>
                  <div class="label">
                    是否开启动态调价:
                  </div>
                  <div class="value">
                    {{ model.isDynamicPrice === 1 ? '是' : '否' }}
                  </div>
                </div>
                <div class="flex mb-16px">
                  <div class="label">供需关系调价规则:</div>
                  <div class="label">
                    供需关系调价规则:
                  </div>
                  <div class="value">
                    <div>
                      供需计算周期 {{ model.dynamicPricingJson.num1 }} 分钟, 订单需求阈值为 {{ model.dynamicPricingJson.num2 }}
@@ -941,18 +1129,20 @@
                  </div>
                </div>
                <div class="flex mb-16px">
                  <div class="label">区域拥堵调价规则(根据实时路况自动调整价格):</div>
                  <div class="label">
                    区域拥堵调价规则(根据实时路况自动调整价格):
                  </div>
                  <div class="value">
                    <div>
                      拥堵判断阈值:道路速度 &lt; {{ model.dynamicPricingJson.num7 }} km/h视为拥堵,拥堵价格上浮比例:{{
                        model.dynamicPricingJson.num8 }}
                      %</div>
                      %
                    </div>
                    <div>
                      拥堵影响半径:以订单起点为中心 {{ model.dynamicPricingJson.num9 }} m 范围内的车辆均受影响
                    </div>
                  </div>
                </div>
              </div>
              <!-- 计费规则说明 -->
              <div class="box px-24px!">
@@ -966,12 +1156,12 @@
        </n-form>
      </div>
    </div>
    <div class="footer" v-if="type === 'add'">
    <div v-if="type === 'add'" class="footer">
      <NSpace justify="end" :size="8">
        <NButton @click="handleCancel" class="w-84px">
        <NButton class="w-84px" @click="handleCancel">
          取消
        </NButton>
        <NButton v-permission="6051" type='primary' @click="handleSubmit" class="w-84px">
        <NButton v-permission="6051" type="primary" class="w-84px" @click="handleSubmit">
          保存
        </NButton>
      </NSpace>
src/views/transaction/transactionStrategy/index.vue
@@ -1,23 +1,23 @@
<script setup lang="tsx">
import { useBoolean } from "@/hooks";
import type { DataTableColumns } from "naive-ui";
import { NButton, NSpace } from "naive-ui";
import { useTabStore } from "@/store";
import { useBoolean } from '@/hooks'
import type { DataTableColumns } from 'naive-ui'
import { NButton, NSpace } from 'naive-ui'
import { useTabStore } from '@/store'
import {
  editTradingStrategy,
  getTradingStrategyDetail,
} from "@/service/api/transaction";
} from '@/service/api/transaction'
import { handleInputNumberKeyDown } from '@/utils/common'
const {
  bool: loading,
  setTrue: startLoading,
  setFalse: endLoading,
} = useBoolean(false);
const message = useMessage();
const router = useRouter();
const route = useRoute();
const tabStore = useTabStore();
import { handleInputNumberKeyDown } from "@/utils/common";
} = useBoolean(false)
const message = useMessage()
const router = useRouter()
const route = useRoute()
const tabStore = useTabStore()
const initialModel: any = {
  cancleCount: null, // 取消订单次数
@@ -51,7 +51,7 @@
  weightTime: null, // 权重时间
  weightTimeDifference: null, // 权重时间差
  cityList: [], // 豁免城市列表
};
}
const model = ref({ ...initialModel });
const formRef = ref();
@@ -59,290 +59,297 @@
const options = computed(() => [
  {
    label: "全部",
    label: '全部',
    value: 0,
  },
  {
    label: "新客",
    label: '新客',
    value: 1,
    disabled: model.value.exemptionRole.includes(0),
  },
  {
    label: "老客",
    label: '老客',
    value: 2,
    disabled: model.value.exemptionRole.includes(0),
  },
  {
    label: "流失召回",
    label: '流失召回',
    value: 3,
    disabled: model.value.exemptionRole.includes(0),
  },
  {
    label: "媒体",
    label: '媒体',
    value: 4,
    disabled: model.value.exemptionRole.includes(0),
  },
]);
])
const columns =
  computed <
  DataTableColumns <
  any >>
    (() => [
      {
        title() {
          return h(
            "div",
            {
              style: {
                fontWeight: "bold",
              },
const columns
  = computed <
    DataTableColumns <
      any
    >
  >
  (() => [
    {
      title() {
        return h(
          'div',
          {
            style: {
              fontWeight: 'bold',
            },
            { default: () => "纬度" }
          );
        },
        key: "name",
        resizable: true,
        width: 244,
          },
          { default: () => '纬度' },
        )
      },
      {
        title() {
          return h(
            "div",
            {
              style: {
                fontWeight: "bold",
              },
      key: 'name',
      resizable: true,
      width: 244,
    },
    {
      title() {
        return h(
          'div',
          {
            style: {
              fontWeight: 'bold',
            },
            { default: () => "权重" }
          );
        },
        width: 180,
        key: "value",
        render: (row) => {
          return (
            <n-input-number
              v-model:value={row.value}
              width={148}
              min="0"
              max="10"
              precision={0}
              show-button={false}
              placeholder="请输入1-10"
              input-props={{ onKeydown: handleInputNumberKeyDown }}
            />
          );
        },
          },
          { default: () => '权重' },
        )
      },
    ]);
      width: 180,
      key: 'value',
      render: (row) => {
        return (
          <n-input-number
            v-model:value={row.value}
            width={148}
            min="0"
            max="10"
            precision={0}
            show-button={false}
            placeholder="请输入1-10"
            input-props={{ onKeydown: handleInputNumberKeyDown }}
          />
        )
      },
    },
  ])
const columns1 =
  computed <
  DataTableColumns <
  any >>
    (() => [
      {
        title() {
          return h(
            "div",
            {
              style: {
                fontWeight: "bold",
              },
const columns1
  = computed <
    DataTableColumns <
      any
    >
  >
  (() => [
    {
      title() {
        return h(
          'div',
          {
            style: {
              fontWeight: 'bold',
            },
            { default: () => "纬度" }
          );
        },
        width: 244,
        resizable: true,
        key: "name",
          },
          { default: () => '纬度' },
        )
      },
      {
        title() {
          return h(
            "div",
            {
              style: {
                fontWeight: "bold",
              },
      width: 244,
      resizable: true,
      key: 'name',
    },
    {
      title() {
        return h(
          'div',
          {
            style: {
              fontWeight: 'bold',
            },
            { default: () => "权重" }
          );
        },
        width: 180,
        key: "value",
        render: (row) => {
          return (
            <n-input-number
              v-model:value={row.value}
              width={148}
              min="0"
              max="10"
              precision={0}
              show-button={false}
              placeholder="请输入1-10"
              input-props={{ onKeydown: handleInputNumberKeyDown }}
            />
          );
        },
          },
          { default: () => '权重' },
        )
      },
    ]);
      width: 180,
      key: 'value',
      render: (row) => {
        return (
          <n-input-number
            v-model:value={row.value}
            width={148}
            min="0"
            max="10"
            precision={0}
            show-button={false}
            placeholder="请输入1-10"
            input-props={{ onKeydown: handleInputNumberKeyDown }}
          />
        )
      },
    },
  ])
const data = ref([
  {
    name: "订单价值",
    key: "tendencyOrderValue",
    name: '订单价值',
    key: 'tendencyOrderValue',
    value: null,
  },
  {
    name: "接驾距离短",
    key: "tendencyDistance",
    name: '接驾距离短',
    key: 'tendencyDistance',
    value: null,
  },
  {
    name: "接驾时间短",
    key: "tendencyTime",
    name: '接驾时间短',
    key: 'tendencyTime',
    value: null,
  },
  {
    name: "车辆电量充足",
    key: "tendencyElectricity",
    name: '车辆电量充足',
    key: 'tendencyElectricity',
    value: null,
  },
]);
])
const data1 = ref([
  {
    name: "时间差",
    key: "weightTimeDifference",
    name: '时间差',
    key: 'weightTimeDifference',
    value: null,
  },
  {
    name: "距离差",
    key: "weightDistanceDifference",
    name: '距离差',
    key: 'weightDistanceDifference',
    value: null,
  },
  {
    name: "接驾距离短",
    key: "weightDistance",
    name: '接驾距离短',
    key: 'weightDistance',
    value: null,
  },
  {
    name: "接驾时间短",
    key: "weightTime",
    name: '接驾时间短',
    key: 'weightTime',
    value: null,
  },
  {
    name: "车辆电量充足",
    key: "weightElectricity",
    name: '车辆电量充足',
    key: 'weightElectricity',
    value: null,
  },
]);
])
function handleCancel() {
  tabStore.closeTab(route.fullPath);
  router.back();
  tabStore.closeTab(route.fullPath)
  router.back()
}
async function handleSubmit() {
  try {
    await formRef.value?.validate();
    await formRef.value?.validate()
    if (!model.value.cancleCount) {
      message.error("请输入每日取消订单数");
      return;
      message.error('请输入每日取消订单数')
      return
    }
    if (
      !model.value.onePushDistance ||
      !model.value.onePushTime ||
      !model.value.twoPushDistance ||
      !model.value.twoPushTime ||
      !model.value.threePushDistance ||
      !model.value.threePushTime ||
      !model.value.fourPushDistance ||
      !model.value.fourPushTime ||
      !model.value.fivePushDistance ||
      !model.value.fivePushTime
      !model.value.onePushDistance
      || !model.value.onePushTime
      || !model.value.twoPushDistance
      || !model.value.twoPushTime
      || !model.value.threePushDistance
      || !model.value.threePushTime
      || !model.value.fourPushDistance
      || !model.value.fourPushTime
      || !model.value.fivePushDistance
      || !model.value.fivePushTime
    ) {
      message.error("请输入播单策略");
      return;
      message.error('请输入播单策略')
      return
    }
    if (!model.value.ruleType) {
      message.error("请选择举手规则");
      return;
      message.error('请选择举手规则')
      return
    }
    if (!model.value.simultaneouslyOrderCount) {
      message.error("请输入同时抢单数");
      return;
      message.error('请输入同时抢单数')
      return
    }
    // 校验分单倾向配置是否有空数据
    if (data.value.some((item) => item.value === null)) {
      message.error("请配置分单倾向");
      return;
    if (data.value.some(item => item.value === null)) {
      message.error('请配置分单倾向')
      return
    }
    // 校验权重配置是否有空数据
    if (data1.value.some((item) => item.value === null)) {
      message.error("请配置订单价值权重");
      return;
    if (data1.value.some(item => item.value === null)) {
      message.error('请配置订单价值权重')
      return
    }
    // 重组分单倾向配置
    const obj = data.value.reduce((prev: any, cur) => {
      prev[cur.key] = cur.value;
      return prev;
    }, {});
      prev[cur.key] = cur.value
      return prev
    }, {})
    // 重组权重配置
    const obj1 = data1.value.reduce((prev: any, cur) => {
      prev[cur.key] = cur.value;
      return prev;
    }, {});
      prev[cur.key] = cur.value
      return prev
    }, {})
    // 合并参数
    const params = {
      ...model.value,
      ...obj,
      ...obj1,
    };
    startLoading();
    }
    startLoading()
    editTradingStrategy(params)
      .then((res) => {
        if (res.code === 200) {
          window.$message.success("保存成功");
          getDetail();
          window.$message.success('保存成功')
          getDetail()
        }
      })
      .finally(() => {
        endLoading();
      });
  } catch (error) {
    endLoading();
    console.log("验证失败", error);
        endLoading()
      })
  }
  catch (error) {
    endLoading()
    console.log('验证失败', error)
  }
}
const getDetail = () => {
function getDetail() {
  getTradingStrategyDetail().then((res) => {
    if (res.code === 200) {
      model.value = { ...res.data };
      model.value = { ...res.data }
      data.value.forEach((item) => {
        if (item.key in model.value) {
          item.value = model.value[item.key];
          item.value = model.value[item.key]
        }
      });
      })
      data1.value.forEach((item) => {
        if (item.key in model.value) {
          item.value = model.value[item.key];
          item.value = model.value[item.key]
        }
      });
      })
    }
  });
};
  })
}
onMounted(() => {
  getDetail();
});
  getDetail()
})
</script>
<template>
  <div class="w-full h-full relative content">
    <div class="p-12px">
      <div class="box py-16px! title mb-12px">交易策略配置</div>
    <div class="p-12px main">
      <div class="box py-16px! title mb-12px">
        交易策略配置
      </div>
      <n-form
        ref="formRef"
        :model="model"
@@ -353,7 +360,9 @@
        <n-spin :show="loading">
          <!-- 发单策略 -->
          <div class="box mb-12px">
            <div class="head">发单策略</div>
            <div class="head">
              发单策略
            </div>
            <n-form-item label="用户每日取消订单数" path="cancleCount" required>
              <n-input-number
                v-model:value="model.cancleCount"
@@ -372,9 +381,13 @@
            </n-form-item>
          </div>
          <!-- 发单拦截策略(1.0做, mvp版本不做) -->
          <div class="box mb-12px" v-if="false">
            <div class="head">发单拦截策略</div>
            <div class="mb-12px text-14px">小额豁免配置</div>
          <div v-if="false" class="box mb-12px">
            <div class="head">
              发单拦截策略
            </div>
            <div class="mb-12px text-14px">
              小额豁免配置
            </div>
            <NSpace :size="[24, 16]" style="color: rgba(23, 31, 38, 0.8)">
              <n-form-item
                label="金额上限"
@@ -403,8 +416,8 @@
                label-style="color: rgba(23, 31, 38, 0.8);"
              >
                <n-date-picker
                  format="yyyy/MM/dd"
                  v-model:value="model.exemptionTime"
                  format="yyyy/MM/dd"
                  type="daterange"
                  clearable
                  class="mr-2 w-[320px]"
@@ -434,12 +447,14 @@
                      :class="{ 'arrow-icon--open': isRoleSelectOpen }"
                      style="width: 16px; height: 16px"
                      alt="arrow"
                    />
                    >
                  </template>
                </n-select>
              </n-form-item>
            </NSpace>
            <div class="mb-12px text-14px mt-24px">分级预付配置</div>
            <div class="mb-12px text-14px mt-24px">
              分级预付配置
            </div>
            <NSpace :size="[24, 16]" style="color: rgba(23, 31, 38, 0.8)">
              <n-form-item
                label="小额免密授权"
@@ -475,7 +490,9 @@
          </div>
          <!-- 播单策略 -->
          <div class="box mb-12px">
            <div class="head">播单策略</div>
            <div class="head">
              播单策略
            </div>
            <NSpace :size="[24, 16]" style="color: rgba(23, 31, 38, 0.8)">
              <n-form-item
                label="第一轮推单:"
@@ -601,7 +618,9 @@
          </div>
          <!-- 分单策略 -->
          <div class="box">
            <div class="head">分单策略</div>
            <div class="head">
              分单策略
            </div>
            <NSpace
              vertical
              :size="16"
@@ -623,11 +642,11 @@
                </n-radio-group>
              </n-form-item>
              <n-form-item
                v-if="model.ruleType === 2"
                label="最多"
                path="simultaneouslyOrderCount"
                required
                label-style="color: rgba(23, 31, 38, 0.8);"
                v-if="model.ruleType === 2"
              >
                <n-input-number
                  v-model:value="model.simultaneouslyOrderCount"
@@ -645,8 +664,7 @@
                  label="分单倾向配置"
                  path="splitOrderPreference"
                  required
                >
                </n-form-item>
                />
                <div class="w-[424px]">
                  <n-data-table
                    :columns="columns"
@@ -659,7 +677,7 @@
                          src="/src/assets/element-img/no-data.png"
                          style="width: 123px; height: 125px"
                          @error="(e: any) => { e.target.src = 'https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/images/ab6c7ff4-403a-4a2c-9ebf-310c023dc20f.png' }"
                        />
                        >
                      </div>
                    </template>
                  </n-data-table>
@@ -670,8 +688,7 @@
                  label="订单价值权重配置"
                  path="orderValueWeight"
                  required
                >
                </n-form-item>
                />
                <div class="w-[424px]">
                  <n-data-table
                    :columns="columns1"
@@ -684,7 +701,7 @@
                          src="/src/assets/element-img/no-data.png"
                          style="width: 123px; height: 125px"
                          @error="(e: any) => { e.target.src = 'https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/images/ab6c7ff4-403a-4a2c-9ebf-310c023dc20f.png' }"
                        />
                        >
                      </div>
                    </template>
                  </n-data-table>
@@ -697,12 +714,14 @@
    </div>
    <div class="footer">
      <NSpace justify="end" :size="8">
        <NButton @click="handleCancel" class="w-84px"> 取消 </NButton>
        <NButton class="w-84px" @click="handleCancel">
          取消
        </NButton>
        <NButton
          v-permission="6051"
          type="primary"
          @click="handleSubmit"
          class="w-84px"
          @click="handleSubmit"
        >
          保存
        </NButton>
@@ -723,6 +742,11 @@
  }
}
.main {
  min-height: calc(100% - 64px);
  box-sizing: border-box;
}
.box {
  padding: 24px;
  background-color: #fff;