| | |
| | | <script setup lang="tsx"> |
| | | import { useBoolean } from '@/hooks' |
| | | 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 validateTimeRanges = () => { |
| | | // 验证起步价时段 |
| | | if (model.value.startingFareJson && model.value.startingFareJson.length > 0) { |
| | | // 检查每个时段的开始时间不能大于等于结束时间 |
| | | for (const item of model.value.startingFareJson) { |
| | | if (item.num1 && item.num2) { |
| | | // 将时间字符串转换为分钟数进行比较 |
| | | const [startHour, startMinute] = item.num1.split(':').map(Number); |
| | | const [endHour, endMinute] = item.num2.split(':').map(Number); |
| | | |
| | | const startMinutes = startHour * 60 + startMinute; |
| | | const endMinutes = endHour * 60 + endMinute; |
| | | |
| | | if (startMinutes >= endMinutes) { |
| | | window.$message.error('起步价时段中,结束时间必须大于开始时间'); |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 检查时段之间不能重叠 |
| | | for (let i = 0; i < model.value.startingFareJson.length; i++) { |
| | | for (let j = i + 1; j < model.value.startingFareJson.length; j++) { |
| | | const item1 = model.value.startingFareJson[i]; |
| | | const item2 = model.value.startingFareJson[j]; |
| | | |
| | | if (item1.num1 && item1.num2 && item2.num1 && item2.num2) { |
| | | const [startHour1, startMinute1] = item1.num1.split(':').map(Number); |
| | | const [endHour1, endMinute1] = item1.num2.split(':').map(Number); |
| | | const [startHour2, startMinute2] = item2.num1.split(':').map(Number); |
| | | const [endHour2, endMinute2] = item2.num2.split(':').map(Number); |
| | | |
| | | const start1 = startHour1 * 60 + startMinute1; |
| | | const end1 = endHour1 * 60 + endMinute1; |
| | | const start2 = startHour2 * 60 + startMinute2; |
| | | const end2 = endHour2 * 60 + endMinute2; |
| | | |
| | | // 检查两个时间段是否重叠 |
| | | if (start1 < end2 && start2 < end1) { |
| | | window.$message.error('起步价时段不能重叠'); |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 验证夜间行驶费用时段 |
| | | if (model.value.basicPricingJson1.num14 && model.value.basicPricingJson1.num141) { |
| | | const [startHour, startMinute] = model.value.basicPricingJson1.num14.split(':').map(Number); |
| | | const [endHour, endMinute] = model.value.basicPricingJson1.num141.split(':').map(Number); |
| | | |
| | | const startMinutes = startHour * 60 + startMinute; |
| | | const endMinutes = endHour * 60 + endMinute; |
| | | |
| | | if (startMinutes >= endMinutes) { |
| | | window.$message.error('夜间行驶费用时段中,结束时间必须大于开始时间'); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | // 验证第一个高峰期时段 |
| | | if (model.value.basicPricingJson1.num21 && model.value.basicPricingJson1.num211) { |
| | | const [startHour, startMinute] = model.value.basicPricingJson1.num21.split(':').map(Number); |
| | | const [endHour, endMinute] = model.value.basicPricingJson1.num211.split(':').map(Number); |
| | | |
| | | const startMinutes = startHour * 60 + startMinute; |
| | | const endMinutes = endHour * 60 + endMinute; |
| | | |
| | | if (startMinutes >= endMinutes) { |
| | | window.$message.error('高峰期费用时段中,结束时间必须大于开始时间'); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | // 验证第二个高峰期时段 |
| | | if (model.value.basicPricingJson1.num22 && model.value.basicPricingJson1.num221) { |
| | | const [startHour, startMinute] = model.value.basicPricingJson1.num22.split(':').map(Number); |
| | | const [endHour, endMinute] = model.value.basicPricingJson1.num221.split(':').map(Number); |
| | | |
| | | const startMinutes = startHour * 60 + startMinute; |
| | | const endMinutes = endHour * 60 + endMinute; |
| | | |
| | | if (startMinutes >= endMinutes) { |
| | | window.$message.error('高峰期费用时段中,结束时间必须大于开始时间'); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | // 检查高峰期时段之间不能重叠 |
| | | if (model.value.basicPricingJson1.num21 && model.value.basicPricingJson1.num211 && |
| | | model.value.basicPricingJson1.num22 && model.value.basicPricingJson1.num221) { |
| | | const [startHour1, startMinute1] = model.value.basicPricingJson1.num21.split(':').map(Number); |
| | | const [endHour1, endMinute1] = model.value.basicPricingJson1.num211.split(':').map(Number); |
| | | const [startHour2, startMinute2] = model.value.basicPricingJson1.num22.split(':').map(Number); |
| | | const [endHour2, endMinute2] = model.value.basicPricingJson1.num221.split(':').map(Number); |
| | | |
| | | const start1 = startHour1 * 60 + startMinute1; |
| | | const end1 = endHour1 * 60 + endMinute1; |
| | | const start2 = startHour2 * 60 + startMinute2; |
| | | const end2 = endHour2 * 60 + endMinute2; |
| | | |
| | | // 检查两个高峰期时段是否重叠 |
| | | if (start1 < end2 && start2 < end1) { |
| | | window.$message.error('高峰期费用时段不能重叠'); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | return true; |
| | | }; |
| | | |
| | | const { bool: loading, setTrue: startLoading, setFalse: endLoading } = useBoolean(false) |
| | | |
| | |
| | | num9: null, |
| | | }, |
| | | // 起步价-动态计费 |
| | | startingFareJson: [] |
| | | startingFareJson: [], |
| | | } |
| | | |
| | | const model = ref({ ...initialModel }) |
| | | |
| | | const addTimePeriod = () => { |
| | | function addTimePeriod() { |
| | | model.value.startingFareJson.push({ |
| | | num1: null, |
| | | num2: null, |
| | |
| | | }) |
| | | } |
| | | |
| | | const removeTimePeriod = (item: any) => { |
| | | function removeTimePeriod(item: any) { |
| | | model.value.startingFareJson = model.value.startingFareJson.filter((i: any) => i.id !== item.id) |
| | | } |
| | | |
| | | const handleSubmit = async () => { |
| | | async function handleSubmit() { |
| | | if (!validateTimeRanges()) { |
| | | return; |
| | | return |
| | | } |
| | | await formRef.value?.validate() |
| | | if (type.value === 'add') { |
| | |
| | | return |
| | | } |
| | | if (category.value === '1') { |
| | | console.log(model.value.basicPricingJson1) |
| | | if (hasNullValue(model.value.basicPricingJson1)) { |
| | | window.$message.error('请配置基础定价') |
| | | return |
| | |
| | | model.value.startingFareJson.forEach((item: any) => { |
| | | if (hasNullValue(item)) { |
| | | window.$message.error('请配置起步价') |
| | | return |
| | | } |
| | | }) |
| | | } |
| | |
| | | startLoading() |
| | | |
| | | // 创建一个副本用于提交,避免修改原始数据 |
| | | let submitBasicPricingJson1 = { ...model.value.basicPricingJson1 }; |
| | | const submitBasicPricingJson1 = { ...model.value.basicPricingJson1 } |
| | | if (category.value === '1' && !hasNullValue(model.value.basicPricingJson1)) { |
| | | // 在副本上进行时间范围合并 |
| | | if (submitBasicPricingJson1.num14 && submitBasicPricingJson1.num141) { |
| | | submitBasicPricingJson1.num14 = submitBasicPricingJson1.num14 + ' - ' + submitBasicPricingJson1.num141; |
| | | delete submitBasicPricingJson1.num141; |
| | | submitBasicPricingJson1.num14 = `${submitBasicPricingJson1.num14} - ${submitBasicPricingJson1.num141}` |
| | | delete submitBasicPricingJson1.num141 |
| | | } |
| | | if (submitBasicPricingJson1.num21 && submitBasicPricingJson1.num211) { |
| | | submitBasicPricingJson1.num21 = submitBasicPricingJson1.num21 + ' - ' + submitBasicPricingJson1.num211; |
| | | delete submitBasicPricingJson1.num211; |
| | | submitBasicPricingJson1.num21 = `${submitBasicPricingJson1.num21} - ${submitBasicPricingJson1.num211}` |
| | | delete submitBasicPricingJson1.num211 |
| | | } |
| | | if (submitBasicPricingJson1.num22 && submitBasicPricingJson1.num221) { |
| | | submitBasicPricingJson1.num22 = submitBasicPricingJson1.num22 + ' - ' + submitBasicPricingJson1.num221; |
| | | delete submitBasicPricingJson1.num221; |
| | | submitBasicPricingJson1.num22 = `${submitBasicPricingJson1.num22} - ${submitBasicPricingJson1.num221}` |
| | | delete submitBasicPricingJson1.num221 |
| | | } |
| | | } |
| | | |
| | |
| | | }).finally(() => { |
| | | endLoading() |
| | | }) |
| | | } else { |
| | | } |
| | | else { |
| | | handleCancel() |
| | | } |
| | | } |
| | | |
| | | const handleCancel = () => { |
| | | function handleCancel() { |
| | | tabStore.closeTab(route.fullPath) |
| | | router.back() |
| | | } |
| | | |
| | | const getPricingDetailData = async (id: string) => { |
| | | async function getPricingDetailData(id: string) { |
| | | const res = await getPricingDetail(id) |
| | | if (res.code === 200) { |
| | | detail.value = res.data |
| | |
| | | model.value.basicPricingJson1 = Object.keys(parsedBasicPricing).length === 0 ? { ...initialModel.basicPricingJson1 } : parsedBasicPricing |
| | | const parsedStartingFare = JSON.parse(detail.value.startingFareJson) |
| | | model.value.startingFareJson = parsedStartingFare || [] |
| | | } else { |
| | | } |
| | | else { |
| | | const parsedBasicPricing = JSON.parse(detail.value.basicPricingJson) |
| | | model.value.basicPricingJson2 = Object.keys(parsedBasicPricing).length === 0 ? { ...initialModel.basicPricingJson2 } : parsedBasicPricing |
| | | } |
| | |
| | | } |
| | | }) |
| | | |
| | | // 检查对象中是否存在值为null的键 |
| | | function 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 |
| | | } |
| | | |
| | | function validateTimeRanges() { |
| | | // 验证起步价时段 |
| | | if (model.value.startingFareJson && model.value.startingFareJson.length > 0) { |
| | | // 检查每个时段的开始时间不能大于等于结束时间 |
| | | for (const item of model.value.startingFareJson) { |
| | | if (item.num1 && item.num2) { |
| | | // 将时间字符串转换为分钟数进行比较 |
| | | const [startHour, startMinute] = item.num1.split(':').map(Number) |
| | | const [endHour, endMinute] = item.num2.split(':').map(Number) |
| | | |
| | | const startMinutes = startHour * 60 + startMinute |
| | | const endMinutes = endHour * 60 + endMinute |
| | | |
| | | if (startMinutes >= endMinutes) { |
| | | window.$message.error('起步价时段中,结束时间必须大于开始时间') |
| | | return false |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 检查时段之间不能重叠 |
| | | for (let i = 0; i < model.value.startingFareJson.length; i++) { |
| | | for (let j = i + 1; j < model.value.startingFareJson.length; j++) { |
| | | const item1 = model.value.startingFareJson[i] |
| | | const item2 = model.value.startingFareJson[j] |
| | | |
| | | if (item1.num1 && item1.num2 && item2.num1 && item2.num2) { |
| | | const [startHour1, startMinute1] = item1.num1.split(':').map(Number) |
| | | const [endHour1, endMinute1] = item1.num2.split(':').map(Number) |
| | | const [startHour2, startMinute2] = item2.num1.split(':').map(Number) |
| | | const [endHour2, endMinute2] = item2.num2.split(':').map(Number) |
| | | |
| | | const start1 = startHour1 * 60 + startMinute1 |
| | | const end1 = endHour1 * 60 + endMinute1 |
| | | const start2 = startHour2 * 60 + startMinute2 |
| | | const end2 = endHour2 * 60 + endMinute2 |
| | | |
| | | // 检查两个时间段是否重叠 |
| | | if (start1 < end2 && start2 < end1) { |
| | | window.$message.error('起步价时段不能重叠') |
| | | return false |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 验证夜间行驶费用时段 |
| | | if (model.value.basicPricingJson1.num14 && model.value.basicPricingJson1.num141) { |
| | | const [startHour, startMinute] = model.value.basicPricingJson1.num14.split(':').map(Number) |
| | | const [endHour, endMinute] = model.value.basicPricingJson1.num141.split(':').map(Number) |
| | | |
| | | const startMinutes = startHour * 60 + startMinute |
| | | const endMinutes = endHour * 60 + endMinute |
| | | |
| | | if (startMinutes >= endMinutes) { |
| | | window.$message.error('夜间行驶费用时段中,结束时间必须大于开始时间') |
| | | return false |
| | | } |
| | | } |
| | | |
| | | // 验证第一个高峰期时段 |
| | | if (model.value.basicPricingJson1.num21 && model.value.basicPricingJson1.num211) { |
| | | const [startHour, startMinute] = model.value.basicPricingJson1.num21.split(':').map(Number) |
| | | const [endHour, endMinute] = model.value.basicPricingJson1.num211.split(':').map(Number) |
| | | |
| | | const startMinutes = startHour * 60 + startMinute |
| | | const endMinutes = endHour * 60 + endMinute |
| | | |
| | | if (startMinutes >= endMinutes) { |
| | | window.$message.error('高峰期费用时段中,结束时间必须大于开始时间') |
| | | return false |
| | | } |
| | | } |
| | | |
| | | // 验证第二个高峰期时段 |
| | | if (model.value.basicPricingJson1.num22 && model.value.basicPricingJson1.num221) { |
| | | const [startHour, startMinute] = model.value.basicPricingJson1.num22.split(':').map(Number) |
| | | const [endHour, endMinute] = model.value.basicPricingJson1.num221.split(':').map(Number) |
| | | |
| | | const startMinutes = startHour * 60 + startMinute |
| | | const endMinutes = endHour * 60 + endMinute |
| | | |
| | | if (startMinutes >= endMinutes) { |
| | | window.$message.error('高峰期费用时段中,结束时间必须大于开始时间') |
| | | return false |
| | | } |
| | | } |
| | | |
| | | // 检查高峰期时段之间不能重叠 |
| | | if (model.value.basicPricingJson1.num21 && model.value.basicPricingJson1.num211 |
| | | && model.value.basicPricingJson1.num22 && model.value.basicPricingJson1.num221) { |
| | | const [startHour1, startMinute1] = model.value.basicPricingJson1.num21.split(':').map(Number) |
| | | const [endHour1, endMinute1] = model.value.basicPricingJson1.num211.split(':').map(Number) |
| | | const [startHour2, startMinute2] = model.value.basicPricingJson1.num22.split(':').map(Number) |
| | | const [endHour2, endMinute2] = model.value.basicPricingJson1.num221.split(':').map(Number) |
| | | |
| | | const start1 = startHour1 * 60 + startMinute1 |
| | | const end1 = endHour1 * 60 + endMinute1 |
| | | const start2 = startHour2 * 60 + startMinute2 |
| | | const end2 = endHour2 * 60 + endMinute2 |
| | | |
| | | // 检查两个高峰期时段是否重叠 |
| | | if (start1 < end2 && start2 < end1) { |
| | | window.$message.error('高峰期费用时段不能重叠') |
| | | return false |
| | | } |
| | | } |
| | | |
| | | return true |
| | | } |
| | | |
| | | onMounted(() => { |
| | | getPricingDetailData(id.value as string) |
| | | }) |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <n-flex class="w-full h-full"> |
| | | <n-card title="设置价格" v-if="type === 'add'"> |
| | | <n-form ref="formRef" :model="model" label-placement="left" inline :show-feedback="false" |
| | | require-mark-placement="left"> |
| | | <n-card v-if="type === 'add'" title="设置价格"> |
| | | <n-form |
| | | ref="formRef" :model="model" label-placement="left" inline :show-feedback="false" |
| | | require-mark-placement="left" |
| | | > |
| | | <n-spin :show="loading"> |
| | | <NSpace vertical> |
| | | <!-- <n-card> --> |
| | |
| | | <!-- </n-card> --> |
| | | <!-- 一口价 --> |
| | | <!-- 基础定价 --> |
| | | <NSpace vertical v-if="category === '2'" :size="16"> |
| | | <div class="text-base font-bold">基础定价</div> |
| | | <NSpace v-if="category === '2'" vertical :size="16"> |
| | | <div class="text-base font-bold"> |
| | | 基础定价 |
| | | </div> |
| | | <div class="pl-4"> |
| | | <n-form-item label="起步价设置" path="num1" required> |
| | | 起步价为 |
| | | <n-input-number v-model:value="model.basicPricingJson2.num1" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mx-3" /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson2.num1" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mx-3" |
| | | /> |
| | | 元,起步价包含 |
| | | <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.basicPricingJson2.num2" min="0" max="999" :precision="0" |
| | | :show-button="false" placeholder="最多3位数" class="mx-3" |
| | | /> |
| | | 公里, |
| | | <n-input-number v-model:value="model.basicPricingJson2.num3" min="0" max="999" :precision="0" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <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="num4" required> |
| | | 超过起步里程后每公里 |
| | | <n-input-number v-model:value="model.basicPricingJson2.num4" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mx-3" /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson2.num4" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mx-3" |
| | | /> |
| | | 元 |
| | | </n-form-item> |
| | | </div> |
| | | <div class="pl-4"> |
| | | <n-form-item label="时长费设置" path="num5" required> |
| | | 超过起步时长后每分钟 |
| | | <n-input-number v-model:value="model.basicPricingJson2.num5" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mx-3" /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson2.num5" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mx-3" |
| | | /> |
| | | 元 |
| | | </n-form-item> |
| | | </div> |
| | | </NSpace> |
| | | <NSpace vertical v-else :size="16"> |
| | | <div class="text-base font-bold">基础定价</div> |
| | | <NButton type='primary' text @click="addTimePeriod"> |
| | | <NSpace v-else vertical :size="16"> |
| | | <div class="text-base font-bold"> |
| | | 基础定价 |
| | | </div> |
| | | <NButton type="primary" text @click="addTimePeriod"> |
| | | 添加时段 |
| | | </NButton> |
| | | <div class="pl-4" v-for="item in model.startingFareJson"> |
| | | <div v-for="(item, index) in model.startingFareJson" :key="index" class="pl-4"> |
| | | <NSpace vertical :size="16"> |
| | | <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" /> |
| | | <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="num3" required> |
| | | 起步价为 |
| | | <n-input-number v-model:value="item.num3" min="0" max="999" :precision="2" :show-button="false" |
| | | placeholder="最多3位数" class="mx-3" /> |
| | | <n-input-number |
| | | v-model:value="item.num3" min="0" max="999" :precision="2" :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="item.num4" min="0" max="999" :precision="0" :show-button="false" |
| | | placeholder="最多3位数" class="mx-3" |
| | | /> |
| | | 公里, |
| | | <n-input-number v-model:value="item.num5" 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="num6" required> |
| | | 超过起步里程后每公里 |
| | | <n-input-number v-model:value="item.num6" min="0" max="999" :precision="2" :show-button="false" |
| | | placeholder="最多3位数" class="mx-3" /> |
| | | <n-input-number |
| | | v-model:value="item.num6" min="0" max="999" :precision="2" :show-button="false" |
| | | placeholder="最多3位数" class="mx-3" |
| | | /> |
| | | 元 |
| | | </n-form-item> |
| | | </div> |
| | | <div class="pl-20"> |
| | | <n-form-item label="时长费设置" path="num7" required> |
| | | 超过起步时长后每分钟 |
| | | <n-input-number v-model:value="item.num7" min="0" max="999" :precision="2" :show-button="false" |
| | | placeholder="最多3位数" class="mx-3" /> |
| | | <n-input-number |
| | | v-model:value="item.num7" min="0" max="999" :precision="2" :show-button="false" |
| | | placeholder="最多3位数" class="mx-3" |
| | | /> |
| | | 元 |
| | | </n-form-item> |
| | | </div> |
| | |
| | | <div class="pl-4"> |
| | | <n-form-item label="等待费设置" path="basicPricingJson1" required> |
| | | 司机到达预约地点 |
| | | <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.basicPricingJson1.num4" min="0" max="999" :precision="0" |
| | | :show-button="false" placeholder="最多3位数" class="mx-3" |
| | | /> |
| | | 分钟后开始收取等待费,为 |
| | | <n-input-number v-model:value="model.basicPricingJson1.num5" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mx-3" /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num5" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mx-3" |
| | | /> |
| | | 元/分,不足一分钟按一分钟计算 |
| | | </n-form-item> |
| | | </div> |
| | |
| | | <n-form-item label="远途费设置" path="num6" required> |
| | | <NSpace vertical :size="16"> |
| | | <NSpace align="center"> |
| | | <!-- 总里程超过 |
| | | <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.basicPricingJson1.num7" min="0" max="999" :precision="0" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <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.basicPricingJson1.num8" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num8" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | 元 |
| | | </NSpace> |
| | | <NSpace align="center"> |
| | | 超过 |
| | | <!-- 公里数为num9,但是直接取num7 --> |
| | | <n-input-number v-model:value="model.basicPricingJson1.num7" min="0" max="999" :precision="0" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" disabled /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num9" min="0" max="999" :precision="0" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" disabled |
| | | /> |
| | | 不足 |
| | | <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.basicPricingJson1.num10" min="0" max="999" :precision="0" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | 公里时,超出部分每公里加收 |
| | | <n-input-number v-model:value="model.basicPricingJson1.num11" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num11" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | 元 |
| | | </NSpace> |
| | | <NSpace align="center"> |
| | | 超过 |
| | | <!-- 公里数为num12,但是直接取num10 --> |
| | | <n-input-number v-model:value="model.basicPricingJson1.num10" min="0" max="999" :precision="0" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" disabled/> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num12" min="0" max="999" :precision="0" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" disabled |
| | | /> |
| | | 公里以后,超出部分每公里加收 |
| | | <n-input-number v-model:value="model.basicPricingJson1.num13" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num13" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | 元 |
| | | </NSpace> |
| | | </NSpace> |
| | |
| | | <n-form-item label="夜间行驶费用设置" path="num14" required> |
| | | <NSpace vertical :size="16"> |
| | | <NSpace align="center"> |
| | | <n-time-picker v-model:formatted-value="model.basicPricingJson1.num14" format="HH:mm" |
| | | value-format="HH:mm" clearable class="w-80px" />- |
| | | <n-time-picker v-model:formatted-value="model.basicPricingJson1.num141" format="HH:mm" |
| | | value-format="HH:mm" clearable class="w-80px" /> |
| | | <n-time-picker |
| | | v-model:formatted-value="model.basicPricingJson1.num14" format="HH:mm" |
| | | value-format="HH:mm" clearable class="w-80px" |
| | | />- |
| | | <n-time-picker |
| | | v-model:formatted-value="model.basicPricingJson1.num141" format="HH:mm" |
| | | value-format="HH:mm" clearable class="w-80px" |
| | | /> |
| | | 点为夜间行车时间,起步价变为 |
| | | <n-input-number v-model:value="model.basicPricingJson1.num15" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num15" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | 元 |
| | | </NSpace> |
| | | <NSpace align="center"> |
| | | 里程费为每公里 |
| | | <n-input-number v-model:value="model.basicPricingJson1.num16" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num16" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | 元,时长费为每 |
| | | <n-input-number v-model:value="model.basicPricingJson1.num17" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num17" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | 元 |
| | | </NSpace> |
| | | <NSpace align="center"> |
| | | 远途费为每公里加收 |
| | | <n-input-number v-model:value="model.basicPricingJson1.num18" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <n-input-number v-model:value="model.basicPricingJson1.num19" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <n-input-number v-model:value="model.basicPricingJson1.num20" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num18" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num19" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num20" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | 元 |
| | | </NSpace> |
| | | </NSpace> |
| | |
| | | <n-form-item label="高峰期费用设置" path="num21" required> |
| | | <NSpace vertical :size="16"> |
| | | <NSpace align="center"> |
| | | <n-time-picker v-model:formatted-value="model.basicPricingJson1.num21" format="HH:mm" |
| | | value-format="HH:mm" clearable class="w-80px" />- |
| | | <n-time-picker v-model:formatted-value="model.basicPricingJson1.num211" format="HH:mm" |
| | | value-format="HH:mm" clearable class="w-80px" /> |
| | | <n-time-picker |
| | | v-model:formatted-value="model.basicPricingJson1.num21" format="HH:mm" |
| | | value-format="HH:mm" clearable class="w-80px" |
| | | />- |
| | | <n-time-picker |
| | | v-model:formatted-value="model.basicPricingJson1.num211" format="HH:mm" |
| | | value-format="HH:mm" clearable class="w-80px" |
| | | /> |
| | | 和 |
| | | <n-time-picker v-model:formatted-value="model.basicPricingJson1.num22" format="HH:mm" |
| | | value-format="HH:mm" clearable class="w-80px" />- |
| | | <n-time-picker v-model:formatted-value="model.basicPricingJson1.num221" format="HH:mm" |
| | | value-format="HH:mm" clearable class="w-80px" /> |
| | | <n-time-picker |
| | | v-model:formatted-value="model.basicPricingJson1.num22" format="HH:mm" |
| | | value-format="HH:mm" clearable class="w-80px" |
| | | />- |
| | | <n-time-picker |
| | | v-model:formatted-value="model.basicPricingJson1.num221" format="HH:mm" |
| | | value-format="HH:mm" clearable class="w-80px" |
| | | /> |
| | | 为高峰期行车时间,起步价变为 |
| | | <n-input-number v-model:value="model.basicPricingJson1.num23" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num23" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | 元 |
| | | </NSpace> |
| | | <NSpace align="center"> |
| | | 里程费为每公里 |
| | | <n-input-number v-model:value="model.basicPricingJson1.num24" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num24" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | 元,时长费为每 |
| | | <n-input-number v-model:value="model.basicPricingJson1.num25" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num25" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | 元 |
| | | </NSpace> |
| | | <NSpace align="center"> |
| | | 远途费为每公里加收 |
| | | <n-input-number v-model:value="model.basicPricingJson1.num26" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <n-input-number v-model:value="model.basicPricingJson1.num27" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <n-input-number v-model:value="model.basicPricingJson1.num28" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num26" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num27" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num28" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | 元 |
| | | </NSpace> |
| | | </NSpace> |
| | |
| | | <NSpace vertical :size="16"> |
| | | <NSpace align="center"> |
| | | 节假日起步价变为 |
| | | <n-input-number v-model:value="model.basicPricingJson1.num29" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num29" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | 元 |
| | | </NSpace> |
| | | <NSpace align="center"> |
| | | 里程费为每公里 |
| | | <n-input-number v-model:value="model.basicPricingJson1.num30" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num30" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | 元,时长费为每 |
| | | <n-input-number v-model:value="model.basicPricingJson1.num31" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num31" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | 元 |
| | | </NSpace> |
| | | <NSpace align="center"> |
| | | 远途费为每公里加收 |
| | | <n-input-number v-model:value="model.basicPricingJson1.num32" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <n-input-number v-model:value="model.basicPricingJson1.num33" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <n-input-number v-model:value="model.basicPricingJson1.num34" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num32" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num33" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | <n-input-number |
| | | v-model:value="model.basicPricingJson1.num34" min="0" max="999" :precision="2" |
| | | :show-button="false" placeholder="最多3位数" class="mr-3" |
| | | /> |
| | | 元 |
| | | </NSpace> |
| | | </NSpace> |
| | |
| | | </NSpace> |
| | | <!-- 动态定价 --> |
| | | <NSpace vertical :size="16"> |
| | | <div class="text-base font-bold">动态定价</div> |
| | | <div class="text-base font-bold"> |
| | | 动态定价 |
| | | </div> |
| | | <div class="pl-4"> |
| | | <n-form-item label="是否开启动态调价" path="isDynamicPrice" required> |
| | | <n-radio-group v-model:value="model.isDynamicPrice" name="radiogroup"> |
| | | <n-space> |
| | | <NSpace> |
| | | <n-radio :value="1"> |
| | | 是 |
| | | </n-radio> |
| | | <n-radio :value="0"> |
| | | 否 |
| | | </n-radio> |
| | | </n-space> |
| | | </NSpace> |
| | | </n-radio-group> |
| | | </n-form-item> |
| | | </div> |
| | | <div class="pl-4"> |
| | | <n-form-item label="供需关系调价规则" path="num1" required> |
| | | </n-form-item> |
| | | <n-form-item label="供需关系调价规则" path="num1" required /> |
| | | </div> |
| | | <div class="pl-20"> |
| | | <n-grid :cols="3" :x-gap="18"> |
| | | <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-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="num2"> |
| | | <n-input-number v-model:value="model.dynamicPricingJson.num2" min="0" :precision="0" |
| | | :show-button="false" class="mr-3" />单以上开始上浮 |
| | | <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="num3"> |
| | | <n-input-number v-model:value="model.dynamicPricingJson.num3" min="0" :precision="0" |
| | | :show-button="false" class="mr-3" />辆以下开始触发上浮 |
| | | <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.dynamicPricingJson.num4" 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.dynamicPricingJson.num5" min="0" :precision="0" |
| | | :show-button="false" class="mx-3" max="100"/>% |
| | | <n-input-number |
| | | v-model:value="model.dynamicPricingJson.num5" min="0" :precision="0" |
| | | :show-button="false" class="mx-3" max="100" |
| | | />% |
| | | </n-form-item> |
| | | </div> |
| | | <div class="pl-20"> |
| | | <n-form-item label="供需冷却时间:" path="num6"> |
| | | 调价后 |
| | | <n-input-number v-model:value="model.dynamicPricingJson.num6" 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="num7" required> |
| | | </n-form-item> |
| | | <n-form-item label="区域拥堵调价规则(根据实时路况自动调整价格)" path="num7" required /> |
| | | </div> |
| | | <div class="pl-20"> |
| | | <n-form-item label="拥堵判断阈值:" path="num7"> |
| | | 道路速度 |
| | | < <n-input-number v-model:value="model.dynamicPricingJson.num7" 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.dynamicPricingJson.num8" min="0" :precision="0" |
| | | :show-button="false" class="mx-3" max="100" />% |
| | | <n-input-number |
| | | v-model:value="model.dynamicPricingJson.num8" min="0" :precision="0" |
| | | :show-button="false" class="mx-3" max="100" |
| | | />% |
| | | </n-form-item> |
| | | </div> |
| | | <div class="pl-20"> |
| | | <n-form-item label="拥堵影响半径:" path="num9"> |
| | | 以订单起点为中心 |
| | | <n-input-number v-model:value="model.dynamicPricingJson.num9" 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> |
| | | </n-form> |
| | | <NSpace justify="center" class="w-[50%] mt-12"> |
| | | <NButton type='primary' @click="handleSubmit"> |
| | | <NButton type="primary" @click="handleSubmit"> |
| | | 保存 |
| | | </NButton> |
| | | <NButton type='primary' @click="handleCancel"> |
| | | <NButton type="primary" @click="handleCancel"> |
| | | 取消 |
| | | </NButton> |
| | | </NSpace> |
| | | </n-card> |
| | | <n-card title="定价详情" v-else> |
| | | <n-form ref="formRef" :model="model" label-placement="left" inline :show-feedback="false" |
| | | require-mark-placement="left"> |
| | | <n-card v-else title="定价详情"> |
| | | <n-form |
| | | ref="formRef" :model="model" label-placement="left" inline :show-feedback="false" |
| | | require-mark-placement="left" |
| | | > |
| | | <n-spin :show="loading"> |
| | | <NSpace vertical> |
| | | <n-grid :cols="3" :x-gap="18"> |
| | |
| | | </n-grid> |
| | | <!-- 一口价 --> |
| | | <!-- 基础定价 --> |
| | | <NSpace vertical v-if="category === '2'"> |
| | | <div class="text-base font-bold">基础定价</div> |
| | | <NSpace v-if="category === '2'" vertical> |
| | | <div class="text-base font-bold"> |
| | | 基础定价 |
| | | </div> |
| | | <div class="pl-4"> |
| | | <n-form-item label="起步价设置" path="num1"> |
| | | 起步价为 {{ model.basicPricingJson2.num1 }} 元,起步包含 {{ model.basicPricingJson2.num2 }} 公里,最多 |
| | |
| | | </n-form-item> |
| | | </div> |
| | | </NSpace> |
| | | <NSpace vertical v-else> |
| | | <div class="text-base font-bold">基础定价</div> |
| | | <NButton type='primary' text @click="addTimePeriod"> |
| | | <NSpace v-else vertical> |
| | | <div class="text-base font-bold"> |
| | | 基础定价 |
| | | </div> |
| | | <NButton type="primary" text @click="addTimePeriod"> |
| | | 添加时段 |
| | | </NButton> |
| | | <div class="pl-4" v-for="item in model.startingFareJson"> |
| | | <div v-for="(item, index) in model.startingFareJson" :key="index" class="pl-4"> |
| | | <NSpace vertical> |
| | | <n-form-item label="时段" path="num1" label-width="92px"> |
| | | {{ item.num1 }} 至 {{ item.num2 }} |
| | |
| | | <n-form-item label="远途费设置" path="basicPricingJson1"> |
| | | <NSpace vertical> |
| | | <NSpace align="center"> |
| | | <!-- 总里程超过 {{ model.basicPricingJson1.num6 }} 公里不足 {{ model.basicPricingJson1.num7 }} 公里,超出部分每公里加收 {{ |
| | | model.basicPricingJson1.num8 }} 元 --> |
| | | 总里程超过起步包含公里数时,公里不足 {{ model.basicPricingJson1.num7 }} 公里,超出部分每公里加收 {{ |
| | | model.basicPricingJson1.num8 }} 元 |
| | | </NSpace> |
| | |
| | | </div> |
| | | </NSpace> |
| | | <!-- 动态定价 --> |
| | | <NSpace vertical v-if="model.isDynamicPrice === 1"> |
| | | <div class="text-base font-bold">动态定价</div> |
| | | <NSpace v-if="model.isDynamicPrice === 1" vertical> |
| | | <div class="text-base font-bold"> |
| | | 动态定价 |
| | | </div> |
| | | <div class="pl-4"> |
| | | <n-form-item label="是否开启动态调价" path="isDynamicPrice"> |
| | | {{ model.isDynamicPrice === 1 ? '是' : '否' }} |
| | | </n-form-item> |
| | | </div> |
| | | <div class="pl-4"> |
| | | <n-form-item label="供需关系调价规则" path="num1"> |
| | | </n-form-item> |
| | | <n-form-item label="供需关系调价规则" path="num1" /> |
| | | </div> |
| | | <div class="pl-20"> |
| | | 供需计算周期 {{ model.dynamicPricingJson.num1 }} 分钟, 订单需求阈值为 {{ model.dynamicPricingJson.num2 }} 单以上开始触发上浮, |
| | |
| | | 供需冷却时间 调价后 {{ model.dynamicPricingJson.num6 }} 分钟内不再重复调整 |
| | | </div> |
| | | <div class="pl-4"> |
| | | <n-form-item label="区域拥堵调价规则(根据实时路况自动调整价格)" path="num7"> |
| | | </n-form-item> |
| | | <n-form-item label="区域拥堵调价规则(根据实时路况自动调整价格)" path="num7" /> |
| | | </div> |
| | | <div class="pl-20"> |
| | | <n-form-item label="拥堵判断阈值:" path="num7"> |
| | | 道路速度 < {{ model.dynamicPricingJson.num7 }} km/h视为拥堵,拥堵价格上浮比例:{{ model.dynamicPricingJson.num8 }} % |
| | | </n-form-item> |
| | | 道路速度 < {{ model.dynamicPricingJson.num7 }} km/h视为拥堵,拥堵价格上浮比例:{{ model.dynamicPricingJson.num8 }} % |
| | | </n-form-item> |
| | | </div> |
| | | <div class="pl-20"> |
| | | <n-form-item label="拥堵影响半径:" path="num9"> |
| | |
| | | </NSpace> |
| | | <!-- 计费规则说明 --> |
| | | <NSpace vertical> |
| | | <div class="text-base font-bold">计费规则说明</div> |
| | | <div class="pl-4" v-html="detail?.priceRule"></div> |
| | | <div class="text-base font-bold"> |
| | | 计费规则说明 |
| | | </div> |
| | | <div class="pl-4" v-html="detail?.priceRule" /> |
| | | </NSpace> |
| | | </NSpace> |
| | | </n-spin> |
| | | </n-form> |
| | | <NSpace justify="center" class="w-[50%] mt-12"> |
| | | <NButton type='primary' @click="handleCancel"> |
| | | <NButton type="primary" @click="handleCancel"> |
| | | 返回 |
| | | </NButton> |
| | | </NSpace> |