Преглед на файлове

手机支持订单明细功能

Handy_Cao преди 1 година
родител
ревизия
315f78d9ea

+ 1 - 1
src/packages/mobile/views/order/position/components/pricing/detail/Index.vue

@@ -1,4 +1,4 @@
-<!-- 我的持仓-订单明细 -->
+<!-- 我的持仓-持仓明细 -->
 <template>
     <app-modal direction="right-top" height="100%" width="100%" v-model:show="showModal">
         <app-view class="g-form">

+ 132 - 0
src/packages/mobile/views/order/position/components/pricing/detail2/Index.vue

@@ -0,0 +1,132 @@
+<!-- 我的持仓-订单明细 -->
+<template>
+    <app-modal direction="right-top" height="100%" width="100%" v-model:show="showModal">
+        <app-view class="g-form">
+            <template #header>
+                <app-navbar :title="$t('position.goods.holddetail.title')" @back="closed" />
+            </template>
+            <app-pull-refresh ref="pullRefreshRef" v-model:loading="loading" v-model:error="error" @refresh="getSBYJMyOrders">
+                <div class="g-order-list">
+                    <div class="g-order-list__box" v-for="(item, index) in orderComputedList" :key="index">
+                        <div class="g-order-list__titlebar">
+                            <div class="left">
+                                <h4>{{ item.goodsCode }}/{{ item.goodsName }}</h4>
+                            </div>
+                            <div class="right">
+                                <span>{{ item.tHDetailEx.tradeID  }}</span>
+                            </div>
+                        </div>
+                        <div class="g-order-list__content">
+                            <ul>
+                                <li>
+                                    <span>{{ $t('position.goods.holddetail.tradetime') }}</span>
+                                    <span>{{ formatDate(item.tHDetailEx.tradeTime, "MM/DD HH:mm:ss") }}</span>
+                                </li>
+                                <li>
+                                    <span>{{ $t('position.goods.holddetail.buyorsell') }}</span>
+                                    <span :class="!item.tHDetailEx.buyOrSell ? 'g-price-up' : 'g-price-down'">
+                                        {{ getBuyOrSellName(item.tHDetailEx.buyOrSell) }}
+                                    </span>
+                                </li>
+                                <li>
+                                    <span>{{ $t('position.goods.holddetail.holderqty') }}</span>
+                                    <span>{{ enableqty(item) + getGoodsUnitName(item.goodsUnitID) }}</span>
+                                </li>
+                                <li>
+                                    <span>{{ $t('position.goods.holddetail.freezeqty') }}</span>
+                                    <span>{{ item.tHDetailEx.freezeQty }}</span>
+                                </li>
+                                <li>
+                                    <span>{{ $t('position.goods.holddetail.holderprice') }}</span>
+                                    <span>{{ formatDecimal(item.tHDetailEx.holderPrice, item.decimalPlace) }}</span>
+                                </li>
+                                <li>
+                                    <span>{{ $t('position.goods.holddetail.holderamount') }}</span>
+                                    <span>{{ formatDecimal(item.tHDetailEx.holderAmount, item.decimalPlace) }}</span>
+                                </li>
+                                <li>
+                                    <span>{{ $t('position.goods.holddetail.usedMargin') }}</span>
+                                    <span>{{ formatDecimal(item.tHDetailEx.payedDeposit+item.tHDetailEx.restockDeposit, item.decimalPlace) }}</span>
+                                </li>
+                                <li>
+                                    <span>{{ $t('position.goods.holddetail.profitLoss') }}</span>
+                                    <span :class="handlePriceColor(item.tHDetailEx.floatPL)">
+                                        {{ formatDecimal(item.tHDetailEx.floatPL) }}
+                                    </span>
+                                </li>
+                                <li>
+                                    <span>{{ $t('position.goods.holddetail.riskRate') }}</span>
+                                    <span :class="item.tHDetailEx.depositRate <= item.tHDetailEx.promptDepositRate ? 'g-price-up' : ''">
+                                        {{ parsePercent(item.tHDetailEx.riskRate) }}
+                                    </span>
+                                </li>
+                            </ul>
+                        </div>
+                        <div class="g-order-list__btnbar" v-if="item.tHDetailEx.holderQty">
+                            <Button size="small" @click="showComponent('close', item)" round>{{ $t('operation.close') }}</Button>
+                        </div>
+                    </div>
+                </div>
+            </app-pull-refresh>
+            <component ref="componentRef" v-bind="{ selectedRow }" :is="componentMap.get(componentId)"
+                @closed="closeComponent" v-if="componentId" />
+        </app-view>
+    </app-modal>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef, defineAsyncComponent, onUnmounted } from 'vue'
+import { Button } from 'vant'
+import { useComponent } from '@/hooks/component'
+import { getBuyOrSellName } from '@/constants/order'
+import { formatDecimal, formatDate, parsePercent, handlePriceColor } from '@/filters'
+import { getGoodsUnitName } from '@/constants/unit'
+import { useSBYJOrderStore } from '@/stores'
+import AppModal from '@/components/base/modal/index.vue'
+import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
+import eventBus from '@/services/bus'
+
+const showModal = shallowRef(true)
+const refresh = shallowRef(false) // 是否刷新父组件数据
+
+const { getSBYJMyOrders, $toRefs } = useSBYJOrderStore()
+const { orderComputedList, loading, error } = $toRefs()
+
+const componentMap = new Map<string, unknown>([
+    ['close', defineAsyncComponent(() => import('./components/transfer/Index.vue'))],
+])
+
+const selectedRow = shallowRef<Model.SBYJMyOrderRsp>()
+const pullRefreshRef = shallowRef()
+
+const { componentRef, componentId, openComponent, closeComponent } = useComponent(() => {
+    pullRefreshRef.value?.refresh()
+})
+
+const showComponent = (componentName: string, row: Model.SBYJMyOrderRsp) => {
+    selectedRow.value = row
+    openComponent(componentName)
+}
+
+// 可用重量
+const enableqty = (item: Model.SBYJMyOrderRsp) => {
+    const { tHDetailEx, agreeUnit } = item
+    return (tHDetailEx.holderQty - tHDetailEx.freezeQty) * agreeUnit
+}
+
+// 关闭弹窗
+const closed = (isRefresh = false) => {
+    refresh.value = isRefresh
+    showModal.value = false
+}
+
+// 接收头寸变化通知通知
+const posChangedNtf = eventBus.$on('PosChangedNtf', () => getSBYJMyOrders())
+
+// 暴露组件属性给父组件调用
+defineExpose({
+    closed,
+})
+
+onUnmounted(() => posChangedNtf.cancel())
+</script>

+ 215 - 0
src/packages/mobile/views/order/position/components/pricing/detail2/components/transfer/Index.vue

@@ -0,0 +1,215 @@
+<!-- 挂牌点价- 订单明细 - 平仓 -->
+<template>
+    <app-modal direction="right-top" height="100%" width="100%" v-model:show="showModal" :refresh="refresh">
+        <app-view class="g-form">
+            <template #header>
+                <app-navbar :title="$t('operation.close')" @back="closed" />
+            </template>
+            <Form ref="formRef" class="g-form__container" @submit="onCloseSumit">
+                <CellGroup :title="$t('position.goods.subtitle')" inset>
+                    <Cell :title="$t('position.goods.goodsname')" :value="`${selectedRow.goodsCode}/${selectedRow.goodsName}`" />
+                    <Cell :title="$t('position.goods.buyorsell')" :value="getBuyOrSellName(selectedRow.tHDetailEx.buyOrSell)" />
+                    <Cell :title="$t('position.goods.holderprice')" :value="formatDecimal(selectedRow.tHDetailEx.holderPrice, selectedRow.decimalPlace)" />
+                    <Cell :title="$t('position.goods.curholderamount')" :value="formatDecimal(selectedRow.tHDetailEx.holderAmount)" />
+                    <Cell :title="$t('position.goods.curpositionqty')" :value="selectedRow.tHDetailEx.holderQty" />
+                    <Cell :title="$t('position.goods.freezeqty')" :value="selectedRow.tHDetailEx.freezeQty" />
+                    <Cell :title="$t('position.goods.enableqty')" :value="maxQty" />
+                    <Cell :title="$t('position.goods.closepl')">
+                        <template #value>
+                            <span :class="handlePriceColor(closepl)">
+                                {{ formatDecimal(closepl, selectedRow.decimalPlace) }}
+                            </span>
+                        </template>
+                    </Cell>
+                    <Cell :title="$t('position.goods.tradetime')" :value="selectedRow.tHDetailEx.tradeTime" />
+                </CellGroup>
+                <CellGroup :title="$t('position.goods.subtitle3')" inset>
+                    <Field :label="$t('position.goods.last')">
+                        <template #input>
+                            <span :class="quote?.lastColor">{{ handleNumberValue(quote?.last) }}</span>
+                        </template>
+                    </Field>
+                    <Field :label="$t('quote.pricing.pricemode')">
+                        <template #input>
+                            <RadioGroup v-model="formData.PriceMode" direction="horizontal" @click="onPriceModeChanged">
+                                <Radio v-for="(item, index) in getPricemode2List()" :key="index" :name="item.value">{{
+                                    item.label
+                                }}</Radio>
+                            </RadioGroup>
+                        </template>
+                    </Field> 
+                    <Field name="MarketMaxSub" :rules="formRules.MarketMaxSub" :label="$t('quote.pricing.marketmaxsub1')" v-if="formData.PriceMode === PriceMode.Market">
+                        <template #input>
+                            <Stepper v-model="formData.MarketMaxSub" theme="round" button-size="22" :min="0" :max="999" :auto-fixed="false" />
+                        </template>
+                    </Field>
+                    <Field name="OrderPrice" :rules="formRules.OrderPrice" :label="$t('position.goods.transferprice')" v-if="formData.PriceMode === PriceMode.Limit">
+                        <template #input>
+                            <Stepper v-model="formData.OrderPrice" theme="round" button-size="22" :min="0"
+                                :decimal-length="quote?.decimalplace" :step="quote?.decimalvalue" :auto-fixed="false" />
+                        </template>
+                    </Field>
+                    <Field name="OrderQty" :rules="formRules.OrderQty" :label="$t('position.goods.orderqty')">
+                        <template #input>
+                            <Stepper v-model="formData.OrderQty" theme="round" button-size="22" :min="0" :max="maxQty"
+                                :auto-fixed="false" integer />
+                        </template>
+                    </Field>
+                </CellGroup>
+            </Form>
+            <template #footer>
+                <Button block square type="danger" @click="formRef?.submit">{{ $t('operation.close') }}</Button>
+            </template>
+        </app-view>
+    </app-modal>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef, PropType, onMounted, computed } from 'vue'
+import AppModal from '@/components/base/modal/index.vue'
+import { CellGroup, Cell, Button, FieldRule, Form, Field, Stepper, FormInstance, RadioGroup, Radio } from 'vant'
+import { getBuyOrSellName, BuyOrSell, PriceMode, getPricemode2List } from '@/constants/order'
+import { formatDecimal, handleNumberValue, handleRequestBigNumber, handlePriceColor } from '@/filters'
+import { useOrder } from '@/business/trade'
+import { dialog, fullloading } from '@/utils/vant'
+import { useFuturesStore, usePositionStore, i18n, useAccountStore, useUserStore } from '@/stores'
+import { EBuildType, EDelistingType, EListingSelectType, EPriceMode, EValidType } from '@/constants/client'
+
+const props = defineProps({
+    selectedRow: {
+        type: Object as PropType<Model.SBYJMyOrderRsp>,
+        required: true,
+    }
+})
+
+const futuresStore = useFuturesStore()
+const positionStore = usePositionStore()
+const userStore = useUserStore()
+const accountStore = useAccountStore()
+const quote = futuresStore.getGoodsQuote(props.selectedRow.goodsCode)
+const { global: { t } } = i18n
+
+const formRef = shallowRef<FormInstance>()
+const showModal = shallowRef(true)
+// 是否刷新父组件数据
+const refresh = shallowRef(false)
+const { formSubmit, formData } = useOrder()
+
+// 可用数量
+const maxQty = computed(() => {
+    const record = positionStore.positionList.find((e) => e.goodsid === props.selectedRow.tHDetailEx.goodsID && e.buyorsell === props.selectedRow.tHDetailEx.buyOrSell)
+    const qty = props.selectedRow.tHDetailEx.holderQty - props.selectedRow.tHDetailEx.freezeQty
+    return Math.min(record?.enableqty ?? 0, qty)
+})
+
+// 损益
+const closepl = computed(() => {
+    const { presettle = 0, last = 0 } = quote.value ?? {}
+    const { agreeUnit } = props.selectedRow
+    const { holderQty, holderAmount, buyOrSell } = props.selectedRow.tHDetailEx
+    const goods = futuresStore.getGoods(props.selectedRow.goodsCode)
+    const { currencyid } = goods ?? {}
+    const { currencyid: tacurrencyid } = accountStore.currentAccount
+    const price = last || presettle // 没有最新价取昨结价
+    
+    // 查找汇率
+    let exchangerate = 1
+    if (currencyid !== tacurrencyid) {
+        const currency = userStore.userData.exchangeRateConfigs.find((e) => e.descurrencyid === tacurrencyid && e.oricurrencyid === currencyid)
+        exchangerate = currency?.exchangerate ?? 0
+    }
+    
+    // 计算市值 = 现价 * 数量 * 合约单位
+    const marketValue = price ? price * holderQty * agreeUnit * exchangerate : 0
+    return price ? (marketValue - holderAmount) * (buyOrSell === BuyOrSell.Buy ? 1 : -1) : 0
+})
+
+const onPriceModeChanged = () => {
+    if (formData.PriceMode === PriceMode.Limit) {
+        const { ask = 0, bid = 0 } = quote.value ?? {}
+        formData.OrderPrice = formData.BuyOrSell === BuyOrSell.Buy ? ask : bid
+    }
+}
+
+// 表单验证规则
+const formRules: { [key: string]: FieldRule[] } = {
+    MarketMaxSub: [{
+        message: t('position.pricing.tips3'),
+        validator: () => {
+            return !!formData.MarketMaxSub
+        }
+    }],
+    OrderPrice: [{
+        message: t('position.transfer.tips3'),
+        validator: () => {
+            return !!formData.OrderPrice
+        }
+    }],
+    OrderQty: [{
+        message: t('position.transfer.tips4'),
+        validator: () => {
+            return !!formData.OrderQty
+        }
+    }],
+}
+
+const onCloseSumit = () => {
+    dialog({
+        message: t('position.goods.tips3'),
+        showCancelButton: true,
+    }).then(() => {
+
+        const { marketID, goodsID, buyOrSell, tradeID } = props.selectedRow.tHDetailEx
+        /// 市场ID
+        formData.Header = { GoodsID: goodsID }
+        formData.MarketID = marketID
+        formData.PriceMode = EPriceMode.PRICEMODE_LIMIT
+        formData.BuyOrSell = buyOrSell === BuyOrSell.Buy ? BuyOrSell.Sell : BuyOrSell.Buy
+        formData.GoodsID = goodsID
+        formData.ListingSelectType = EListingSelectType.LISTINGSELECTTYPE_DELISTINGTHENLISTING
+        formData.DelistingType = EDelistingType.DELISTINGTYPE_PRICE
+        formData.BuildType = EBuildType.BUILDTYPE_CLOSE
+        formData.TimevalidType = EValidType.VALIDTYPE_DR
+        formData.OperateType = 24
+        formData.RelatedID = handleRequestBigNumber(tradeID)
+
+        /// loding....
+        fullloading((hideLoading) => {
+            formSubmit().then(() => {
+                hideLoading(t('position.goods.tips4'), 'success')
+                closed(true)
+            }).catch((err) => {
+                hideLoading(err, 'fail')
+            })
+        })
+    })
+}
+
+// 关闭弹窗
+const closed = (isRefresh = false) => {
+    refresh.value = isRefresh
+    showModal.value = false
+}
+
+onMounted(() => {
+    const { bid, ask, presettle = 0 } = quote.value ?? {}
+    switch (props.selectedRow.tHDetailEx.buyOrSell) {
+        case BuyOrSell.Buy:
+            formData.OrderPrice = ask || presettle
+            break
+        case BuyOrSell.Sell:
+            formData.OrderPrice = bid || presettle
+            break
+        default:
+            formData.OrderPrice = presettle
+    }
+    formData.OrderQty = maxQty.value
+    formData.PriceMode = PriceMode.Market
+    formData.MarketMaxSub = 100.0
+})
+
+// 暴露组件属性给父组件调用
+defineExpose({
+    closed,
+})
+</script>

+ 11 - 3
src/packages/mobile/views/order/position/components/pricing/list/Index.vue

@@ -44,8 +44,9 @@
                     </ul>
                 </div>
                 <div class="g-order-list__btnbar">
-                    <Button size="small" @click="onClosed(item)" v-if="!fromTrade" round>{{ $t('operation.close') }}</Button>
-                    <Button size="small" @click="callBack(item)" v-if="fromTrade" round>{{ $t('operation.close') }}</Button>
+                    <Button size="small" @click="onClosed(item)" type="danger" v-if="!fromTrade && item.riskcontrolmode != 1" round>{{ $t('operation.close') }}</Button>
+                    <Button size="small" @click="callBack(item)" type="danger" v-if="fromTrade && item.riskcontrolmode != 1" round>{{ $t('operation.close') }}</Button>
+                    <Button size="small" type="primary" v-if="showDelivery(item)" round>{{ $t('operation.delivery') }}</Button>
                 </div>
             </div>
         </div>
@@ -60,12 +61,19 @@ import { getBuyOrSellName } from '@/constants/order'
 import { formatDecimal } from '@/filters'
 import { useNavigation } from '@mobile/router/navigation'
 import { BuyOrSell, BuildType } from '@/constants/order'
-import { usePositionStore } from '@/stores'
+import { usePositionStore, useFuturesStore } from '@/stores'
 
 const { router } = useNavigation()
 const positionStore = usePositionStore()
+const futuresStore = useFuturesStore()
 const pullRefreshRef = shallowRef()
 
+const showDelivery = (row: Model.TradePositionRsp) => {
+    // 是否供应商
+    const goods = futuresStore.getGoods(row.goodsid)
+    return goods?.deliveryflag === 1 && row.riskcontrolmode != 1
+}
+
 const positionList = computed(() => {
     const list = positionStore.getPositionListByTradeMode(10)
     /// 数据过滤

+ 5 - 0
src/packages/mobile/views/pricing/trade/Index.vue

@@ -215,6 +215,11 @@ const components = [
         name: 'holdlb',
         title: t('quote.pricing.holdlb'),
         component: defineAsyncComponent(() => import('../trade/holdlb/Index.vue')),
+    },
+    {
+        name: 'holdlb2',
+        title: t('pcroute.bottom.bottom_pricing_detail2'),
+        component: defineAsyncComponent(() => import('../trade/holdlb2/Index.vue')),
     }
 ]
 

+ 117 - 0
src/packages/mobile/views/pricing/trade/holdlb2/Index.vue

@@ -0,0 +1,117 @@
+<!-- 我的持仓-明细 -->
+<template>
+    <app-pull-refresh ref="pullRefreshRef" v-model:loading="loading" v-model:error="error" @refresh="run">
+        <div class="g-order-list">
+            <div class="g-order-list__box" v-for="(item, index) in dataList" :key="index">
+                <div class="g-order-list__titlebar">
+                    <div class="left">
+                        <h4>{{ item.goodsCode }}/{{ item.goodsName }}</h4>
+                    </div>
+                    <div class="right">
+                        <span>{{ item.tHDetailEx.tradeID  }}</span>
+                    </div>
+                </div>
+                <div class="g-order-list__content">
+                    <ul>
+                        <li>
+                            <span>{{ $t('position.goods.holddetail.tradetime') }}</span>
+                            <span>{{ formatDate(item.tHDetailEx.tradeTime, "MM/DD HH:mm:ss") }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('position.goods.holddetail.buyorsell') }}</span>
+                            <span :class="!item.tHDetailEx.buyOrSell ? 'g-price-up' : 'g-price-down'">
+                                {{ getBuyOrSellName(item.tHDetailEx.buyOrSell) }}
+                            </span>
+                        </li>
+                        <li>
+                            <span>{{ $t('position.goods.holddetail.holderqty') }}</span>
+                            <span>{{ enableqty(item) + getGoodsUnitName(item.goodsUnitID) }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('position.goods.holddetail.freezeqty') }}</span>
+                            <span>{{ item.tHDetailEx.freezeQty }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('position.goods.holddetail.holderprice') }}</span>
+                            <span>{{ formatDecimal(item.tHDetailEx.holderPrice, item.decimalPlace) }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('position.goods.holddetail.holderamount') }}</span>
+                            <span>{{ formatDecimal(item.tHDetailEx.holderAmount, item.decimalPlace) }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('position.goods.holddetail.usedMargin') }}</span>
+                            <span>{{ formatDecimal(item.tHDetailEx.payedDeposit+item.tHDetailEx.restockDeposit, item.decimalPlace) }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('position.goods.holddetail.profitLoss') }}</span>
+                            <span :class="handlePriceColor(item.tHDetailEx.floatPL)">
+                                {{ formatDecimal(item.tHDetailEx.floatPL) }}
+                            </span>
+                        </li>
+                        <li>
+                            <span>{{ $t('position.goods.holddetail.riskRate') }}</span>
+                            <span :class="item.tHDetailEx.depositRate <= item.tHDetailEx.promptDepositRate ? 'g-price-up' : ''">
+                                {{ parsePercent(item.tHDetailEx.riskRate) }}
+                            </span>
+                        </li>
+                    </ul>
+                </div>
+                <div class="g-order-list__btnbar" v-if="enableqty(item) != 0">
+                    <Button size="small" @click="callBack(item)" round>{{ $t('operation.close') }}</Button>
+                </div>
+            </div>
+        </div>
+    </app-pull-refresh>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef, computed } from 'vue'
+import { Button } from 'vant'
+import { getBuyOrSellName } from '@/constants/order'
+import { formatDecimal, formatDate, parsePercent, handlePriceColor } from '@/filters'
+import { getGoodsUnitName } from '@/constants/unit'
+import { useSBYJOrderStore } from '@/stores'
+import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
+
+const showModal = shallowRef(true)
+const refresh = shallowRef(false) // 是否刷新父组件数据
+
+const props = defineProps({
+    goodsid: {
+        type: Number,
+        required: true
+    }
+})
+
+const { $toRefs } = useSBYJOrderStore()
+const { orderComputedList, loading, error } = $toRefs()
+
+const dataList = computed(() => {
+    return orderComputedList.value.filter(e => e.tHDetailEx.goodsID === props.goodsid)
+})
+
+const pullRefreshRef = shallowRef()
+
+const emit = defineEmits(['callBack'])
+const callBack = (item: Model.SBYJMyOrderRsp) => {
+    emit('callBack', 2, item.tHDetailEx.buyOrSell, item.tHDetailEx.tradeID)
+}
+
+// 可用重量
+const enableqty = (item: Model.SBYJMyOrderRsp) => {
+    const { tHDetailEx, agreeUnit } = item
+    return (tHDetailEx.holderQty - tHDetailEx.freezeQty) * agreeUnit
+}
+
+// 关闭弹窗
+const closed = (isRefresh = false) => {
+    refresh.value = isRefresh
+    showModal.value = false
+}
+
+// 暴露组件属性给父组件调用
+defineExpose({
+    closed,
+})
+</script>

+ 1 - 1
src/packages/pc/views/footer/pricing/detail2/index.vue

@@ -23,7 +23,7 @@
         </template>
         <!-- 持仓金额 -->
         <template #holderamount="{ row }">
-            {{ formatDecimal(row.tHDetailEx.holderPrice, row.decimalPlace) }}
+            {{ formatDecimal(row.tHDetailEx.holderAmount, row.decimalPlace) }}
         </template>
          <!-- 占用 -->
          <template #usedMargin="{ row }">

+ 1 - 1
src/packages/tss/views/order/position/Index.vue

@@ -34,7 +34,7 @@ const components = [
         name: 'pricing',
         title: t('position.pricing.title'),
         component: defineAsyncComponent(() => import('@mobile/views/order/position/components/pricing/list/Index.vue')),
-        detail: defineAsyncComponent(() => import('@mobile/views/order/position/components/pricing/detail/Index.vue')),
+        detail: defineAsyncComponent(() => import('@mobile/views/order/position/components/pricing/detail2/Index.vue')),
     },
     {
         name: 'spot',