zjk
2026-02-25 a2fe9efd3edd1add10cd577f06ec20eb2e675c6a
feat: 定价接口对接完成
5个文件已修改
528 ■■■■■ 已修改文件
.env 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/service/api/transaction.ts 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/transaction/pricingManagement/components/TableModal.vue 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/transaction/pricingManagement/detail.vue 471 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/transaction/pricingManagement/index.vue 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env
@@ -11,7 +11,7 @@
VITE_ROUTE_LOAD_MODE = static
# 设置登陆后跳转地址
VITE_HOME_PATH = /
VITE_HOME_PATH = /dashboard
# 本地存储前缀
VITE_STORAGE_PREFIX =
src/service/api/transaction.ts
@@ -94,6 +94,11 @@
  return request.Post<Service.ResponseResult<any>>('/operation/api/v1/pricing/add', params)
}
/** 编辑定价 */
export function editPricing(params: any) {
  return request.Post<Service.ResponseResult<any>>('/operation/api/v1/pricing/edit', params)
}
/** 设置价格 */
export function setPricing(params: any) {
  return request.Post<Service.ResponseResult<any>>('/operation/api/v1/pricing/setPrice', params)
src/views/transaction/pricingManagement/components/TableModal.vue
@@ -1,6 +1,6 @@
<script setup lang="ts">
import { useBoolean } from '@/hooks'
import { getCityList, addPricing, getPricingDetail } from '@/service/api/transaction'
import { getCityList, addPricing, getPricingDetail, editPricing } from '@/service/api/transaction'
import type { FormItemRule } from 'naive-ui'
interface Props {
@@ -8,6 +8,7 @@
}
const dialog = useDialog()
const router = useRouter()
const {
  modalName = '',
@@ -29,6 +30,7 @@
  remark: '',
  pricingType: 1,
  channel: '小鹏小程序',
  id: '',
}
const formModel = ref({ ...formDefault })
let data: any = {}
@@ -84,6 +86,8 @@
})
const formRef = ref()
const id = ref('')
async function submitModal() {
  const handlers = {
    async add() {
@@ -91,6 +95,7 @@
        addPricing(formModel.value).then((res) => {
          if (res.code === 200) {
            window.$message.success('新增成功')
            id.value = res.data || ''
            resolve(true)
          } else {
            resolve(false)
@@ -99,7 +104,16 @@
      })
    },
    async edit() {
      return true
      return new Promise((resolve) => {
        editPricing(formModel.value).then((res) => {
          if (res.code === 200) {
            window.$message.success('编辑成功')
            resolve(true)
          } else {
            resolve(false)
          }
        })
      })
    },
    async view() {
      return true
@@ -118,7 +132,7 @@
        negativeText: '稍后',
        draggable: true,
        onPositiveClick: () => {
          router.push({ name: 'setPrice', query: { id: id.value, type: 'add', category: formModel.value.pricingType } })
        },
        onNegativeClick: () => {
          emit('refresh')
@@ -126,8 +140,25 @@
        }
      })
    } else {
      emit('refresh')
      closeModal()
      if (data.pricingType !== formModel.value.pricingType) {
        dialog.create({
          title: '编辑成功,是否去设置价格?',
          content: '',
          positiveText: '设置价格',
          negativeText: '稍后',
          draggable: true,
          onPositiveClick: () => {
            router.push({ name: 'setPrice', query: { id: data.id, type: 'add', category: formModel.value.pricingType } })
          },
          onNegativeClick: () => {
            emit('refresh')
            closeModal()
          }
        })
      } else {
        emit('refresh')
        closeModal()
      }
    }
  }
}
@@ -144,11 +175,10 @@
    trigger: 'blur',
  },
  cityId: {
    type: 'number',
    required: true,
    message: '请选择适用城市',
    trigger: 'change',
  } as FormItemRule,
  },
  pricingType: {
    type: 'number',
    required: true,
@@ -177,7 +207,7 @@
      cityList.value = res.data || []
      cityList.value.forEach((item) => {
        item.label = item.name
        item.value = Number(item.id)
        item.value = item.id
      })
    }
  } finally {
src/views/transaction/pricingManagement/detail.vue
@@ -3,6 +3,19 @@
import { useTabStore } from '@/store'
import { NButton, NSpace } from 'naive-ui'
import { useRoute, useRouter } from 'vue-router'
import { getPricingDetail, setPricing } from '@/service/api/transaction'
// 检查对象中是否存在值为null的键
const hasNullValue = (obj: Record<string, any>) => {
  for (const key in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, key)) {
      if (obj[key] === null) {
        return true
      }
    }
  }
  return false
}
const { bool: loading, setTrue: startLoading, setFalse: endLoading } = useBoolean(false)
@@ -13,37 +26,138 @@
const category = computed(() => route.query.category)
const type = computed(() => route.query.type)
const id = computed(() => route.query.id)
const detail = ref<any>(null)
const formRef = ref()
const initialModel: any = {
  condition_1: null,
  condition_2: false,
  condition_3: [
    {
      id: 1,
      condition_1: null,
    }
  ],
  isDynamicPrice: 0,
  // 基础定价-一口价
  basicPricingJson2: {
    num1: null,
    num2: null,
    num3: null,
    num4: null,
    num5: null,
  },
  // 基础定价-动态计费
  basicPricingJson1: {
    num4: null,
    num5: null,
    num6: null,
    num7: null,
    num8: null,
    num9: null,
    num10: null,
    num11: null,
    num12: null,
    num13: null,
    num14: null,
    num15: null,
    num16: null,
    num17: null,
    num18: null,
    num19: null,
    num20: null,
    num21: null,
    num22: null,
    num23: null,
    num24: null,
    num25: null,
    num26: null,
    num27: null,
    num28: null,
    num29: null,
    num30: null,
    num31: null,
    num32: null,
    num33: null,
    num34: null,
  },
  // 动态定价
  dynamicPricingJson: {
    num1: null,
    num2: null,
    num3: null,
    num4: null,
    num5: null,
    num6: null,
    num7: null,
    num8: null,
    num9: null,
  },
  // 起步价-动态计费
  startingFareJson: []
}
const model = ref({ ...initialModel })
const addTimePeriod = () => {
  model.value.condition_3.push({
    condition_1: null,
    id: model.value.condition_3.length + 1,
  model.value.startingFareJson.push({
    num1: null,
    num2: null,
    num3: null,
    num4: null,
    num5: null,
    num6: null,
    num7: null,
    id: model.value.startingFareJson.length + 1,
  })
}
const removeTimePeriod = (item: any) => {
  model.value.condition_3 = model.value.condition_3.filter((i: any) => i.id !== item.id)
  model.value.startingFareJson = model.value.startingFareJson.filter((i: any) => i.id !== item.id)
}
const handleSubmit = async () => {
  await formRef.value?.validate()
  startLoading()
  handleCancel()
  if (type.value === 'add') {
    if (category.value === '2' && hasNullValue(model.value.basicPricingJson2)) {
      window.$message.error('请配置基础定价')
      return
    }
    if (category.value === '1') {
      if (hasNullValue(model.value.basicPricingJson1)) {
        window.$message.error('请配置基础定价')
        return
      }
      if (model.value.startingFareJson.length === 0) {
        window.$message.error('请配置起步价')
        return
      }
      model.value.startingFareJson.forEach((item: any) => {
        if (hasNullValue(item)) {
          window.$message.error('请配置起步价')
          return
        }
      })
    }
    if (hasNullValue(model.value.dynamicPricingJson)) {
      window.$message.error('请配置动态定价')
      return
    }
    startLoading()
    if (category.value === '2') {
    } else {
    }
    const params = {
      basicPricingJson: category.value === '1' ? JSON.stringify(model.value.basicPricingJson1) : JSON.stringify(model.value.basicPricingJson2),
      dynamicPricingJson: JSON.stringify(model.value.dynamicPricingJson),
      startingFareJson: category.value === '1' ? JSON.stringify(model.value.startingFareJson) : '',
      id: id.value,
      isDynamicPrice: model.value.isDynamicPrice,
    }
    setPricing(params).then((res) => {
      if (res.code === 200) {
        window.$message.success('设置成功')
        handleCancel()
      }
    }).finally(() => {
      endLoading()
    })
  } else {
    handleCancel()
  }
}
const handleCancel = () => {
@@ -51,7 +165,27 @@
  router.back()
}
const getPricingDetailData = async (id: string) => {
  const res = await getPricingDetail(id)
  if (res.code === 200) {
    detail.value = res.data
    if (category.value === '1') {
      const parsedBasicPricing = JSON.parse(detail.value.basicPricingJson)
      model.value.basicPricingJson1 = parsedBasicPricing || { ...initialModel.basicPricingJson1 }
      const parsedStartingFare = JSON.parse(detail.value.startingFareJson)
      model.value.startingFareJson = parsedStartingFare || []
    } else {
      const parsedBasicPricing = JSON.parse(detail.value.basicPricingJson)
      model.value.basicPricingJson2 = parsedBasicPricing || { ...initialModel.basicPricingJson2 }
    }
    const parsedDynamicPricing = JSON.parse(detail.value.dynamicPricingJson)
    model.value.dynamicPricingJson = parsedDynamicPricing || { ...initialModel.dynamicPricingJson }
    model.value.isDynamicPrice = detail.value.isDynamicPrice || 0
  }
}
onMounted(() => {
  getPricingDetailData(id.value as string)
})
</script>
@@ -66,46 +200,46 @@
            <!-- <n-card> -->
            <n-grid :cols="3" :x-gap="18">
              <n-form-item-grid-item label="适用城市:" path="condition_1">
                成都市金牛区
                {{ detail?.cityName || '-' }}
              </n-form-item-grid-item>
              <n-form-item-grid-item label="车型:" path="condition_1">
                RoboTaxi
                {{ detail?.vehicleModel || '-' }}
              </n-form-item-grid-item>
              <n-form-item-grid-item label="渠道:" path="condition_1">
                小鹏小程序
                {{ detail?.channel || '-' }}
              </n-form-item-grid-item>
            </n-grid>
            <!-- </n-card> -->
            <!-- 一口价 -->
            <!-- 基础定价 -->
            <NSpace vertical v-if="category === '1'" :size="16">
            <NSpace vertical v-if="category === '2'" :size="16">
              <div class="text-base font-bold">基础定价</div>
              <div class="pl-4">
                <n-form-item label="起步价设置" path="condition_1" required>
                <n-form-item label="起步价设置" path="num1" required>
                  起步价为
                  <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                  <n-input-number v-model:value="model.basicPricingJson2.num1" min="0" max="999" :precision="0"
                    :show-button="false" placeholder="最多3位数" class="mx-3" />
                  元,起步价包含
                  <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                  <n-input-number v-model:value="model.basicPricingJson2.num2" min="0" max="999" :precision="0"
                    :show-button="false" placeholder="最多3位数" class="mx-3" />
                  公里,
                  <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                  <n-input-number v-model:value="model.basicPricingJson2.num3" min="0" max="999" :precision="0"
                    :show-button="false" placeholder="最多3位数" class="mr-3" />
                  分钟
                </n-form-item>
              </div>
              <div class="pl-4">
                <n-form-item label="里程费设置" path="condition_1" required>
                <n-form-item label="里程费设置" path="num4" required>
                  超过起步里程后每公里
                  <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                  <n-input-number v-model:value="model.basicPricingJson2.num4" min="0" max="999" :precision="0"
                    :show-button="false" placeholder="最多3位数" class="mx-3" />
                  元
                </n-form-item>
              </div>
              <div class="pl-4">
                <n-form-item label="时长费设置" path="condition_1" required>
                <n-form-item label="时长费设置" path="num5" required>
                  超过起步时长后每分钟
                  <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                  <n-input-number v-model:value="model.basicPricingJson2.num5" min="0" max="999" :precision="0"
                    :show-button="false" placeholder="最多3位数" class="mx-3" />
                  元
                </n-form-item>
@@ -116,89 +250,91 @@
              <NButton type='primary' text @click="addTimePeriod">
                添加时段
              </NButton>
              <div class="pl-4" v-for="item in model.condition_3">
              <div class="pl-4" v-for="item in model.startingFareJson">
                <NSpace vertical :size="16">
                  <n-form-item label="时段" path="condition_1" required label-width="92px">
                    <n-time-picker v-model:value="model.condition_1" clearable class="mr-3" />至
                    <n-time-picker v-model:value="model.condition_1" clearable class="mx-3" />
                  <n-form-item label="时段" path="num1" required label-width="92px">
                    <n-time-picker v-model:formatted-value="item.num1" format="HH:mm" value-format="HH:mm" clearable
                      class="mr-3" />至
                    <n-time-picker v-model:formatted-value="item.num2" format="HH:mm" value-format="HH:mm" clearable
                      class="mx-3" />
                    <icon-park-outline-delete @click="removeTimePeriod(item)" />
                  </n-form-item>
                  <div class="pl-20">
                    <n-form-item label="起步价设置" path="condition_1" required>
                    <n-form-item label="起步价设置" path="num3" required>
                      起步价为
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mx-3" />
                      <n-input-number v-model:value="item.num3" min="0" max="999" :precision="0" :show-button="false"
                        placeholder="最多3位数" class="mx-3" />
                      元,起步价包含
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mx-3" />
                      <n-input-number v-model:value="item.num4" min="0" max="999" :precision="0" :show-button="false"
                        placeholder="最多3位数" class="mx-3" />
                      公里,
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      <n-input-number v-model:value="item.num5" min="0" max="999" :precision="0" :show-button="false"
                        placeholder="最多3位数" class="mr-3" />
                      分钟
                    </n-form-item>
                  </div>
                  <div class="pl-20">
                    <n-form-item label="里程费设置" path="condition_1" required>
                    <n-form-item label="里程费设置" path="num6" required>
                      超过起步里程后每公里
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mx-3" />
                      <n-input-number v-model:value="item.num6" min="0" max="999" :precision="0" :show-button="false"
                        placeholder="最多3位数" class="mx-3" />
                      元
                    </n-form-item>
                  </div>
                  <div class="pl-20">
                    <n-form-item label="时长费设置" path="condition_1" required>
                    <n-form-item label="时长费设置" path="num7" required>
                      超过起步时长后每分钟
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mx-3" />
                      <n-input-number v-model:value="item.num7" min="0" max="999" :precision="0" :show-button="false"
                        placeholder="最多3位数" class="mx-3" />
                      元
                    </n-form-item>
                  </div>
                </NSpace>
              </div>
              <div class="pl-4">
                <n-form-item label="等待费设置" path="condition_1" required>
                <n-form-item label="等待费设置" path="basicPricingJson1" required>
                  司机到达预约地点
                  <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                  <n-input-number v-model:value="model.basicPricingJson1.num4" min="0" max="999" :precision="0"
                    :show-button="false" placeholder="最多3位数" class="mx-3" />
                  分钟后开始收取等待费,为
                  <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                  <n-input-number v-model:value="model.basicPricingJson1.num5" min="0" max="999" :precision="0"
                    :show-button="false" placeholder="最多3位数" class="mx-3" />
                  元/分,不足一分钟按一分钟计算
                </n-form-item>
              </div>
              <div class="pl-4">
                <n-form-item label="远途费设置" path="condition_1" required>
                <n-form-item label="远途费设置" path="num6" required>
                  <NSpace vertical :size="16">
                    <NSpace align="center">
                      总里程超过
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num6" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      公里,不足
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num7" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      公里,超出部分每公里加收
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num8" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      元
                    </NSpace>
                    <NSpace align="center">
                      超过
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num9" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      不足
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num10" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      公里时,超出部分每公里加收
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num11" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      元
                    </NSpace>
                    <NSpace align="center">
                      超过
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num12" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      公里以后,超出部分每公里加收
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num13" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      元
                    </NSpace>
@@ -206,31 +342,32 @@
                </n-form-item>
              </div>
              <div class="pl-4">
                <n-form-item label="夜间行驶费用设置" path="condition_1" required>
                <n-form-item label="夜间行驶费用设置" path="num14" required>
                  <NSpace vertical :size="16">
                    <NSpace align="center">
                      <n-time-picker v-model:value="model.condition_1" clearable />
                      <n-time-picker v-model:formatted-value="model.basicPricingJson1.num14" format="HH:mm"
                        value-format="HH:mm" clearable />
                      点为夜间行车时间,起步价变为
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num15" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      元
                    </NSpace>
                    <NSpace align="center">
                      里程费为每公里
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num16" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      元,时长费为每
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num17" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      元
                    </NSpace>
                    <NSpace align="center">
                      远途费为每公里加收
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num18" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num19" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num20" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      元
                    </NSpace>
@@ -238,33 +375,35 @@
                </n-form-item>
              </div>
              <div class="pl-4">
                <n-form-item label="高峰期费用设置" path="condition_1" required>
                <n-form-item label="高峰期费用设置" path="num21" required>
                  <NSpace vertical :size="16">
                    <NSpace align="center">
                      <n-time-picker v-model:value="model.condition_1" clearable />
                      <n-time-picker v-model:formatted-value="model.basicPricingJson1.num21" format="HH:mm"
                        value-format="HH:mm" clearable />
                      和
                      <n-time-picker v-model:value="model.condition_1" clearable />
                      <n-time-picker v-model:formatted-value="model.basicPricingJson1.num22" format="HH:mm"
                        value-format="HH:mm" clearable />
                      为高峰期行车时间,起步价变为
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num23" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      元
                    </NSpace>
                    <NSpace align="center">
                      里程费为每公里
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num24" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      元,时长费为每
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num25" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      元
                    </NSpace>
                    <NSpace align="center">
                      远途费为每公里加收
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num26" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num27" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num28" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      元
                    </NSpace>
@@ -272,31 +411,31 @@
                </n-form-item>
              </div>
              <div class="pl-4">
                <n-form-item label="节假日额外收费" path="condition_1" required>
                <n-form-item label="节假日额外收费" path="num29" required>
                  <NSpace vertical :size="16">
                    <NSpace align="center">
                      节假日起步价变为
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num29" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      元
                    </NSpace>
                    <NSpace align="center">
                      里程费为每公里
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                      <n-input-number v-model:value="model.basicPricingJson1.num30" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      元,时长费为每
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数"  class="mr-3"/>
                      <n-input-number v-model:value="model.basicPricingJson1.num31" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      元
                    </NSpace>
                    <NSpace align="center">
                      远途费为每公里加收
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数"  class="mr-3"/>
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数"  class="mr-3"/>
                      <n-input-number v-model:value="model.condition_1" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数"  class="mr-3"/>
                      <n-input-number v-model:value="model.basicPricingJson1.num32" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      <n-input-number v-model:value="model.basicPricingJson1.num33" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      <n-input-number v-model:value="model.basicPricingJson1.num34" min="0" max="999" :precision="0"
                        :show-button="false" placeholder="最多3位数" class="mr-3" />
                      元
                    </NSpace>
                  </NSpace>
@@ -307,13 +446,13 @@
            <NSpace vertical :size="16">
              <div class="text-base font-bold">动态定价</div>
              <div class="pl-4">
                <n-form-item label="是否开启动态调价" path="condition_2" required>
                  <n-radio-group v-model:value="model.condition_2" name="radiogroup">
                <n-form-item label="是否开启动态调价" path="isDynamicPrice" required>
                  <n-radio-group v-model:value="model.isDynamicPrice" name="radiogroup">
                    <n-space>
                      <n-radio :value="true">
                      <n-radio :value="1">
                        是
                      </n-radio>
                      <n-radio :value="false">
                      <n-radio :value="0">
                        否
                      </n-radio>
                    </n-space>
@@ -321,55 +460,62 @@
                </n-form-item>
              </div>
              <div class="pl-4">
                <n-form-item label="供需关系调价规则" path="condition_1" required>
                <n-form-item label="供需关系调价规则" path="num1" required>
                </n-form-item>
              </div>
              <div class="pl-20">
                <n-grid :cols="3" :x-gap="18">
                  <n-form-item-grid-item label="供需计算周期:" path="condition_1">
                    <n-input-number v-model:value="model.condition_1" min="0" :precision="0" :show-button="false"  class="mr-3"/>分钟
                  <n-form-item-grid-item label="供需计算周期:" path="num1">
                    <n-input-number v-model:value="model.dynamicPricingJson.num1" min="0" :precision="0"
                      :show-button="false" class="mr-3" />分钟
                  </n-form-item-grid-item>
                  <n-form-item-grid-item label="订单需求阈值:" path="condition_1">
                    <n-input-number v-model:value="model.condition_1" min="0" :precision="0"
                      :show-button="false"  class="mr-3"/>单以上开始上浮
                  <n-form-item-grid-item label="订单需求阈值:" path="num2">
                    <n-input-number v-model:value="model.dynamicPricingJson.num2" min="0" :precision="0"
                      :show-button="false" class="mr-3" />单以上开始上浮
                  </n-form-item-grid-item>
                  <n-form-item-grid-item label="车辆供给阈值:" path="condition_1">
                    <n-input-number v-model:value="model.condition_1" min="0" :precision="0"
                      :show-button="false"  class="mr-3"/>辆以下开始触发上浮
                  <n-form-item-grid-item label="车辆供给阈值:" path="num3">
                    <n-input-number v-model:value="model.dynamicPricingJson.num3" min="0" :precision="0"
                      :show-button="false" class="mr-3" />辆以下开始触发上浮
                  </n-form-item-grid-item>
                </n-grid>
              </div>
              <div class="pl-20">
                <n-form-item label="供需价格系数:" path="condition_1">
                  每增加
                  <n-input-number v-model:value="model.condition_1" min="0" :precision="0" :show-button="false"  class="mx-3"/>
                  <n-input-number v-model:value="model.dynamicPricingJson.num4" min="0" :precision="0"
                    :show-button="false" class="mx-3" />
                  单,价格上浮
                  <n-input-number v-model:value="model.condition_1" min="0" :precision="0" :show-button="false"  class="mx-3"/>%
                  <n-input-number v-model:value="model.dynamicPricingJson.num5" min="0" :precision="0"
                    :show-button="false" class="mx-3" />%
                </n-form-item>
              </div>
              <div class="pl-20">
                <n-form-item label="供需冷却时间:" path="condition_1">
                <n-form-item label="供需冷却时间:" path="num6">
                  调价后
                  <n-input-number v-model:value="model.condition_1" min="0" :precision="0" :show-button="false"  class="mx-3"/>
                  <n-input-number v-model:value="model.dynamicPricingJson.num6" min="0" :precision="0"
                    :show-button="false" class="mx-3" />
                  分钟内不再重复调整
                </n-form-item>
              </div>
              <div class="pl-4">
                <n-form-item label="区域拥堵调价规则(根据实时路况自动调整价格)" path="condition_1" required>
                <n-form-item label="区域拥堵调价规则(根据实时路况自动调整价格)" path="num7" required>
                </n-form-item>
              </div>
              <div class="pl-20">
                <n-form-item label="拥堵判断阈值:" path="condition_1">
                <n-form-item label="拥堵判断阈值:" path="num7">
                  道路速度
                  < <n-input-number v-model:value="model.condition_1" min="0" :precision="0" :show-button="false"  class="mx-3"/>
                  < <n-input-number v-model:value="model.dynamicPricingJson.num7" min="0" :precision="0"
                    :show-button="false" class="mx-3" />
                  km/h视为拥堵,拥堵价格上浮比例:
                  <n-input-number v-model:value="model.condition_1" min="0" :precision="0" :show-button="false"  class="mx-3"/>%
                  <n-input-number v-model:value="model.dynamicPricingJson.num8" min="0" :precision="0"
                    :show-button="false" class="mx-3" />%
                </n-form-item>
              </div>
              <div class="pl-20">
                <n-form-item label="拥堵影响半径:" path="condition_1">
                <n-form-item label="拥堵影响半径:" path="num9">
                  以订单起点为中心
                  <n-input-number v-model:value="model.condition_1" min="0" :precision="0" :show-button="false"  class="mx-3"/>
                  <n-input-number v-model:value="model.dynamicPricingJson.num9" min="0" :precision="0"
                    :show-button="false" class="mx-3" />
                  m范围内
                </n-form-item>
              </div>
@@ -392,39 +538,40 @@
        <n-spin :show="loading">
          <NSpace vertical>
            <n-grid :cols="3" :x-gap="18">
              <n-form-item-grid-item label="适用城市:" path="condition_1">
                成都市金牛区
              <n-form-item-grid-item label="适用城市:" path="cityName">
                {{ detail?.cityName || '-' }}
              </n-form-item-grid-item>
              <n-form-item-grid-item label="车型:" path="condition_1">
                RoboTaxi
              <n-form-item-grid-item label="车型:" path="vehicleModel">
                {{ detail?.vehicleModel || '-' }}
              </n-form-item-grid-item>
              <n-form-item-grid-item label="渠道:" path="condition_1">
                小鹏小程序
              <n-form-item-grid-item label="渠道:" path="channel">
                {{ detail?.channel || '-' }}
              </n-form-item-grid-item>
              <n-form-item-grid-item label="计费规则:" path="condition_1">
                动态计费
              <n-form-item-grid-item label="计费规则:" path="pricingType">
                {{ detail?.pricingType === 1 ? '动态计费' : '一口价' }}
              </n-form-item-grid-item>
              <n-form-item-grid-item label="说明:" path="condition_1">
                -
              <n-form-item-grid-item label="说明:" path="remark">
                {{ detail?.remark || '-' }}
              </n-form-item-grid-item>
            </n-grid>
            <!-- 一口价 -->
            <!-- 基础定价 -->
            <NSpace vertical v-if="category === '1'">
            <NSpace vertical v-if="category === '2'">
              <div class="text-base font-bold">基础定价</div>
              <div class="pl-4">
                <n-form-item label="起步价设置" path="condition_1">
                  起步价为 5 元,起步包含 1 公里,最多 3 分钟
                <n-form-item label="起步价设置" path="num1">
                  起步价为 {{ model.basicPricingJson2.num1 }} 元,起步包含 {{ model.basicPricingJson2.num2 }} 公里,最多
                  {{ model.basicPricingJson2.num3 }} 分钟
                </n-form-item>
              </div>
              <div class="pl-4">
                <n-form-item label="里程费设置" path="condition_1">
                  超过起步里程后每公里 2.8 元
                <n-form-item label="里程费设置" path="num4">
                  超过起步里程后每公里 {{ model.basicPricingJson2.num4 }} 元
                </n-form-item>
              </div>
              <div class="pl-4">
                <n-form-item label="时长费设置" path="condition_1">
                  超过起步时长后每分钟 2.8 元
                <n-form-item label="时长费设置" path="num5">
                  超过起步时长后每分钟 {{ model.basicPricingJson2.num5 }} 元
                </n-form-item>
              </div>
            </NSpace>
@@ -433,89 +580,89 @@
              <NButton type='primary' text @click="addTimePeriod">
                添加时段
              </NButton>
              <div class="pl-4" v-for="item in model.condition_3">
              <div class="pl-4" v-for="item in model.startingFareJson">
                <NSpace vertical>
                  <n-form-item label="时段" path="condition_1" required label-width="92px">
                    00:00:00至08:30:00
                  <n-form-item label="时段" path="num1" label-width="92px">
                    {{ item.num1 }} 至 {{ item.num2 }}
                  </n-form-item>
                  <div class="pl-20">
                    <n-form-item label="起步价设置" path="condition_1">
                      起步价为 5 元,起步包含 1 公里,最多 3 分钟
                    <n-form-item label="起步价设置" path="num3">
                      起步价为 {{ item.num3 }} 元,起步包含 {{ item.num4 }} 公里,最多 {{ item.num5 }} 分钟
                    </n-form-item>
                  </div>
                  <div class="pl-20">
                    <n-form-item label="里程费设置" path="condition_1">
                      超过起步里程后每公里 2.8 元
                    <n-form-item label="里程费设置" path="num6">
                      超过起步里程后每公里 {{ item.num6 }} 元
                    </n-form-item>
                  </div>
                  <div class="pl-20">
                    <n-form-item label="时长费设置" path="condition_1">
                      超过起步时长后每分钟 2.8 元
                    <n-form-item label="时长费设置" path="num7">
                      超过起步时长后每分钟 {{ item.num7 }} 元
                    </n-form-item>
                  </div>
                </NSpace>
              </div>
              <div class="pl-4">
                <n-form-item label="等待费设置" path="condition_1">
                  司机到达预约地点 3 分钟开始收取等待费,为 2 元/分,不足一分钟按一分钟计算
                <n-form-item label="等待费设置" path="basicPricingJson1">
                  司机到达预约地点 {{ model.basicPricingJson1.num4 }} 分钟开始收取等待费,为 {{ model.basicPricingJson1.num5 }} 元/分,不足一分钟按一分钟计算
                </n-form-item>
              </div>
              <div class="pl-4">
                <n-form-item label="远途费设置" path="condition_1">
                <n-form-item label="远途费设置" path="basicPricingJson1">
                  <NSpace vertical>
                    <NSpace align="center">
                      总里程超过 50 公里不足 150 公里,超出部分每公里加收 1 元
                      总里程超过 {{ model.basicPricingJson1.num6 }} 公里不足 {{ model.basicPricingJson1.num7 }} 公里,超出部分每公里加收 {{ model.basicPricingJson1.num8 }} 元
                    </NSpace>
                    <NSpace align="center">
                      超过 150 公里不足 250 公里,超出部分每公里加收 1.2 元
                      超过 {{ model.basicPricingJson1.num9 }} 公里不足 {{ model.basicPricingJson1.num10 }} 公里,超出部分每公里加收 {{ model.basicPricingJson1.num11 }} 元
                    </NSpace>
                    <NSpace align="center">
                      超过 150 公里以后,超出部分每公里加收 1.3 元
                      超过 {{ model.basicPricingJson1.num12 }} 公里以后,超出部分每公里加收 {{ model.basicPricingJson1.num13 }} 元
                    </NSpace>
                  </NSpace>
                </n-form-item>
              </div>
              <div class="pl-4">
                <n-form-item label="夜间行驶费用设置" path="condition_1" required>
                <n-form-item label="夜间行驶费用设置" path="basicPricingJson1">
                  <NSpace vertical>
                    <NSpace align="center">
                      20:00 点为夜间行车时间,起步价变为 5 元
                      {{ model.basicPricingJson1.num14 }} 点为夜间行车时间,起步价变为 {{ model.basicPricingJson1.num15 }} 元
                    </NSpace>
                    <NSpace align="center">
                      里程费为每公里 3 元, 时长费为每分钟 1 元
                      里程费为每公里 {{ model.basicPricingJson1.num16 }} 元, 时长费为每分钟 {{ model.basicPricingJson1.num17 }} 元
                    </NSpace>
                    <NSpace align="center">
                      远途费为每公里加收 0.2、0.5、0.7 元
                      远途费为每公里加收 {{ model.basicPricingJson1.num18 }}、{{ model.basicPricingJson1.num19 }}、{{ model.basicPricingJson1.num20 }} 元
                    </NSpace>
                  </NSpace>
                </n-form-item>
              </div>
              <div class="pl-4">
                <n-form-item label="高峰期费用设置" path="condition_1" required>
                <n-form-item label="高峰期费用设置" path="basicPricingJson1">
                  <NSpace vertical>
                    <NSpace align="center">
                      08:30-09:3 和 018:00 -20:00 为高峰期行车时间,起步价变为 5 元
                      {{ model.basicPricingJson1.num21 }}-{{ model.basicPricingJson1.num22 }} 为高峰期行车时间,起步价变为 {{ model.basicPricingJson1.num23 }} 元
                    </NSpace>
                    <NSpace align="center">
                      里程费为每公里 3 元, 时长费为每分钟 1 元
                      里程费为每公里 {{ model.basicPricingJson1.num24 }} 元, 时长费为每分钟 {{ model.basicPricingJson1.num25 }} 元
                    </NSpace>
                    <NSpace align="center">
                      远途费为每公里加收 0.2、0.5、0.7 元
                      远途费为每公里加收 {{ model.basicPricingJson1.num26 }}、{{ model.basicPricingJson1.num27 }}、{{ model.basicPricingJson1.num28 }} 元
                    </NSpace>
                  </NSpace>
                </n-form-item>
              </div>
              <div class="pl-4">
                <n-form-item label="节假日额外收费" path="condition_1" required>
                <n-form-item label="节假日额外收费" path="basicPricingJson1">
                  <NSpace vertical>
                    <NSpace align="center">
                      08:30-09:3 和 018:00 -20:00 为高峰期行车时间,起步价变为 5 元
                      节假日起步价变为 {{ model.basicPricingJson1.num29 }} 元
                    </NSpace>
                    <NSpace align="center">
                      里程费为每公里 3 元, 时长费为每分钟 1 元
                      里程费为每公里 {{ model.basicPricingJson1.num30 }} 元, 时长费为每分钟 {{ model.basicPricingJson1.num31 }} 元
                    </NSpace>
                    <NSpace align="center">
                      远途费为每公里加收 0.2、0.5、0.7 元
                      远途费为每公里加收 {{ model.basicPricingJson1.num32 }}、{{ model.basicPricingJson1.num33 }}、{{ model.basicPricingJson1.num34 }} 元
                    </NSpace>
                  </NSpace>
                </n-form-item>
@@ -525,41 +672,41 @@
            <NSpace vertical>
              <div class="text-base font-bold">动态定价</div>
              <div class="pl-4">
                <n-form-item label="是否开启动态调价" path="condition_2" required>
                  是
                <n-form-item label="是否开启动态调价" path="isDynamicPrice">
                  {{ model.isDynamicPrice === 1 ? '是' : '否' }}
                </n-form-item>
              </div>
              <div class="pl-4">
                <n-form-item label="供需关系调价规则" path="condition_1" required>
                <n-form-item label="供需关系调价规则" path="num1">
                </n-form-item>
              </div>
              <div class="pl-20">
                供需计算周期 15 分钟, 订单需求阈值为 15 单 以上开始触发上浮, 车辆供给阈值 10 辆以下开始触发上浮
                供需计算周期 {{ model.dynamicPricingJson.num1 }} 分钟, 订单需求阈值为 {{ model.dynamicPricingJson.num2 }} 单以上开始触发上浮, 车辆供给阈值 {{ model.dynamicPricingJson.num3 }} 辆以下开始触发上浮
              </div>
              <div class="pl-20">
                供需价格系数每增加 2 单,价格上浮 2 %
                供需价格系数每增加 {{ model.dynamicPricingJson.num4 }} 单,价格上浮 {{ model.dynamicPricingJson.num5 }} %
              </div>
              <div class="pl-20">
                供需冷却时间 调价后 20 分钟内不再重复调整
                供需冷却时间 调价后 {{ model.dynamicPricingJson.num6 }} 分钟内不再重复调整
              </div>
              <div class="pl-4">
                <n-form-item label="区域拥堵调价规则(根据实时路况自动调整价格)" path="condition_1" required>
                <n-form-item label="区域拥堵调价规则(根据实时路况自动调整价格)" path="num7">
                </n-form-item>
              </div>
              <div class="pl-20">
                <n-form-item label="拥堵判断阈值:" path="condition_1">
                  道路速度 < 25 km/h视为拥堵,拥堵价格上浮比例:10 % </n-form-item>
                <n-form-item label="拥堵判断阈值:" path="num7">
                  道路速度 < {{ model.dynamicPricingJson.num7 }} km/h视为拥堵,拥堵价格上浮比例:{{ model.dynamicPricingJson.num8 }} % </n-form-item>
              </div>
              <div class="pl-20">
                <n-form-item label="拥堵影响半径:" path="condition_1">
                  以订单起点为中心 500 m 范围内
                <n-form-item label="拥堵影响半径:" path="num9">
                  以订单起点为中心 {{ model.dynamicPricingJson.num9 }} m 范围内的车辆均受影响
                </n-form-item>
              </div>
            </NSpace>
            <!-- 计费规则说明 -->
            <NSpace vertical>
              <div class="text-base font-bold">计费规则说明</div>
              <div class="pl-4" v-html="123"></div>
              <div class="pl-4" v-html="detail?.priceRule"></div>
            </NSpace>
          </NSpace>
        </n-spin>
src/views/transaction/pricingManagement/index.vue
@@ -98,14 +98,14 @@
          <NButton
            text
            type='primary'
            onClick={() => router.push({name: 'pricingDetail', query: {id: row.id, type: 'add', category: row.pricingRules }})}
            onClick={() => router.push({name: 'setPrice', query: {id: row.id, type: 'add', category: row.pricingType }})}
          >
            设置价格
          </NButton>
          <NButton
            text
            type='primary'
            onClick={() => router.push({name: 'pricingDetail', query: {id: row.id, type: 'view', category: row.pricingRules }})}
            onClick={() => router.push({name: 'pricingDetail', query: {id: row.id, type: 'view', category: row.pricingType }})}
          >
            查看
          </NButton>