| | |
| | | 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) |
| | | |
| | |
| | | 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 = () => { |
| | |
| | | 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> |
| | |
| | | <!-- <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> |
| | |
| | | <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> |
| | |
| | | </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> |
| | |
| | | </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> |
| | |
| | | </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> |
| | |
| | | <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> |
| | |
| | | </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> |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | <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> |