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

+ 3 - 0
oem/tss/locales/extras/zh-CN.json

@@ -59,6 +59,9 @@
             "title1": "回购详情"
         }
     },
+    "delivery": {
+        
+    },
     "order": {
         "feeTotal": "服务费:",
         "goodsorder": {

+ 1 - 1
src/packages/tss/views/mine/Index.vue

@@ -55,7 +55,7 @@
                     </Iconfont>
                 </li>
                 <li @click="routerTo('order-list')">
-                    <Iconfont label-direction="bottom" icon="g-icon-order--line">{{ $t('mine.myorder') }}</Iconfont>
+                    <Iconfont label-direction="bottom" icon="g-icon-order--line">历史订单</Iconfont>
                 </li>
                 <li @click="routerTo('order-delivery')">
                     <Iconfont label-direction="bottom" icon="g-icon-case--line">{{ $t('mine.delivery') }}</Iconfont>

+ 21 - 27
src/packages/tss/views/order/delivery/Index.vue

@@ -1,13 +1,7 @@
 <template>
     <app-view>
         <template #header>
-            <app-navbar :title="$t('delivery.title')">
-                <template #right v-if="selectedComponent.history">
-                    <div class="button-more" @click="openComponent(selectedComponent.name)">
-                        <span>{{ $t('common.more') }}</span>
-                    </div>
-                </template>
-            </app-navbar>
+            <app-navbar :title="$t('delivery.title')" />
         </template>
         <Tabs class="van-tabs--list" v-model:active="active" :swipe-threshold="4">
             <template v-for="(item, index) in components" :key="index">
@@ -16,39 +10,39 @@
                 </Tab>
             </template>
         </Tabs>
-        <component ref="componentRef" :is="selectedComponent.history" @closed="closeComponent"
-            v-if="componentId && selectedComponent.history" />
     </app-view>
 </template>
 
 <script lang="ts" setup>
-import { shallowRef, defineAsyncComponent, computed } from 'vue'
+import { shallowRef, defineAsyncComponent } from 'vue'
 import { Tab, Tabs } from 'vant'
-import { useComponent } from '@/hooks/component'
 import { i18n } from '@/stores'
 
 const { global: { t } } = i18n
 
 const components = [
-    // {
-    //     name: 'goodsorder',
-    //     title: t('delivery.online.title'),
-    //     component: defineAsyncComponent(() => import('@mobile/views/order/delivery/components/online/list/Index.vue')),
-    //     history: defineAsyncComponent(() => import('@mobile/views/order/delivery/components/online/history/Index.vue')),
-    // },
     {
-        name: 'goodstrade',
-        title: t('delivery.offline.title'),
-        component: defineAsyncComponent(() => import('@mobile/views/order/delivery/components/offline/list/Index.vue'))
+        name: 'offline',
+        title: "全款提货",
+        component: defineAsyncComponent(() => import('./components/offline/Index.vue'))
     },
-    // {
-    //     name: 'listingorder',
-    //     title: t('delivery.spot.title'),
-    //     component: defineAsyncComponent(() => import('@mobile/views/order/delivery/components/spot/list/Index.vue')),
-    // }
+    {
+        name: 'online',
+        title: "预付款提货",
+        component: defineAsyncComponent(() => import('./components/online/Index.vue')),
+    },
+    {
+        name: 'spot',
+        title: "预付款交货",
+        component: defineAsyncComponent(() => import('./components/spot/Index.vue')),
+    },
+    {
+        name: 'spot',
+        title: "退换货",
+        component: defineAsyncComponent(() => import('./components/spot/Index.vue')),
+    }
 ]
 
 const active = shallowRef(0)
-const selectedComponent = computed(() => components[active.value])
-const { componentRef, componentId, openComponent, closeComponent } = useComponent()
+
 </script>

+ 106 - 0
src/packages/tss/views/order/delivery/components/offline/Index.vue

@@ -0,0 +1,106 @@
+<!-- 交收提货-线下交收单 -->
+<template>
+    <app-pull-refresh ref="pullRefreshRef" v-model:loading="loading" v-model:error="error" v-model:pageIndex="pageIndex"
+        :page-count="pageCount" @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.goodsnamedisplay }}</h4>
+                    </div>
+                    <div class="right">
+                        <span>{{ item.orderstatusdisplay }}</span>
+                    </div>
+                </div>
+                <div class="g-order-list__content">
+                    <ul>
+                        <li>
+                            <span>{{ $t('delivery.offline.buyorselldisplay') }}</span>
+                            <span>{{ item.buyorselldisplay }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('delivery.offline.deliveryqty') }}</span>
+                            <span>{{ item.deliveryqty }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('delivery.offline.deliveryprice') }}</span>
+                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryprice }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('delivery.offline.deliveryamount') }}</span>
+                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryamount }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('delivery.offline.deliveryinfo') }}</span>
+                            <span>{{ item.deliveryinfo }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('delivery.offline.applydate') }}</span>
+                            <span>{{ formatDate(item.reqtime, 'YYYY-MM-DD') }}</span>
+                        </li>
+                    </ul>
+                </div>
+                <div class="g-order-list__btnbar">
+                    <Button size="small" @click="onCancel(item)" v-if="item.orderstatus === 1" round>{{ $t('operation.cancel2') }}</Button>
+                </div>
+            </div>
+        </div>
+    </app-pull-refresh>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef } from 'vue'
+import { Button } from 'vant'
+import { fullloading, dialog } from '@/utils/vant'
+import { formatDate, handleRequestBigNumber } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryMineTradeGoodsDeliveryOfflines } from '@/services/api/transfer'
+import { offlineDeliveryApplyCancelOrder } from '@/services/api/trade'
+import { i18n } from '@/stores'
+import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
+
+const dataList = shallowRef<Model.MineTradeGoodsDeliveryOfflinesRsp[]>([])
+const error = shallowRef(false)
+const pullRefreshRef = shallowRef()
+const { t } = i18n.global
+
+const { loading, pageIndex, pageCount, run } = useRequest(queryMineTradeGoodsDeliveryOfflines, {
+    params: {
+        pagesize: 20,
+        marketids: '53201'
+    },
+    onSuccess: (res) => {
+        if (pageIndex.value === 1) {
+            dataList.value = []
+        }
+        dataList.value.push(...res.data)
+    },
+    onError: () => {
+        error.value = true
+    }
+})
+
+const onCancel = (row: Model.MineTradeGoodsDeliveryOfflinesRsp) => {
+    dialog({
+        message: t('order.listingorder.tips1'),
+        showCancelButton: true,
+    }).then(() => {
+        fullloading((hideLoading) => {
+            offlineDeliveryApplyCancelOrder({
+                data: {
+                    Header: {
+                        MarketID: row.marketid,
+                        GoodsID: row.goodsid
+                    },
+                    DeliveryOrderID: handleRequestBigNumber(row.deliveryorderid)
+                }
+            }).then(() => {
+                hideLoading(t('order.listingorder.tips2'), 'success')
+                pullRefreshRef.value?.refresh()
+            }).catch((err) => {
+                hideLoading(err, 'fail')
+            })
+        })
+    })
+}
+</script>

+ 107 - 0
src/packages/tss/views/order/delivery/components/online/Index.vue

@@ -0,0 +1,107 @@
+<!-- 交收提货-线下交收单 -->
+<template>
+    <app-pull-refresh ref="pullRefreshRef" v-model:loading="loading" v-model:error="error" v-model:pageIndex="pageIndex"
+        :page-count="pageCount" @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.goodsnamedisplay }}</h4>
+                    </div>
+                    <div class="right">
+                        <span>{{ item.orderstatusdisplay }}</span>
+                    </div>
+                </div>
+                <div class="g-order-list__content">
+                    <ul>
+                        <li>
+                            <span>{{ $t('delivery.offline.buyorselldisplay') }}</span>
+                            <span>{{ item.buyorselldisplay }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('delivery.offline.deliveryqty') }}</span>
+                            <span>{{ item.deliveryqty }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('delivery.offline.deliveryprice') }}</span>
+                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryprice }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('delivery.offline.deliveryamount') }}</span>
+                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryamount }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('delivery.offline.deliveryinfo') }}</span>
+                            <span>{{ item.deliveryinfo }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('delivery.offline.applydate') }}</span>
+                            <span>{{ formatDate(item.reqtime, 'YYYY-MM-DD') }}</span>
+                        </li>
+                    </ul>
+                </div>
+                <div class="g-order-list__btnbar">
+                    <Button size="small" @click="onCancel(item)" v-if="item.orderstatus === 1" round>{{ $t('operation.cancel2') }}</Button>
+                </div>
+            </div>
+        </div>
+    </app-pull-refresh>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef } from 'vue'
+import { Button } from 'vant'
+import { fullloading, dialog } from '@/utils/vant'
+import { formatDate, handleRequestBigNumber } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryMineTradeGoodsDeliveryOfflines } from '@/services/api/transfer'
+import { offlineDeliveryApplyCancelOrder } from '@/services/api/trade'
+import { i18n } from '@/stores'
+import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
+
+const dataList = shallowRef<Model.MineTradeGoodsDeliveryOfflinesRsp[]>([])
+const error = shallowRef(false)
+const pullRefreshRef = shallowRef()
+const { t } = i18n.global
+
+const { loading, pageIndex, pageCount, run } = useRequest(queryMineTradeGoodsDeliveryOfflines, {
+    params: {
+        pagesize: 20,
+        marketids: '10101',
+        buyorsell: 0
+    },
+    onSuccess: (res) => {
+        if (pageIndex.value === 1) {
+            dataList.value = []
+        }
+        dataList.value.push(...res.data)
+    },
+    onError: () => {
+        error.value = true
+    }
+})
+
+const onCancel = (row: Model.MineTradeGoodsDeliveryOfflinesRsp) => {
+    dialog({
+        message: t('order.listingorder.tips1'),
+        showCancelButton: true,
+    }).then(() => {
+        fullloading((hideLoading) => {
+            offlineDeliveryApplyCancelOrder({
+                data: {
+                    Header: {
+                        MarketID: row.marketid,
+                        GoodsID: row.goodsid
+                    },
+                    DeliveryOrderID: handleRequestBigNumber(row.deliveryorderid)
+                }
+            }).then(() => {
+                hideLoading(t('order.listingorder.tips2'), 'success')
+                pullRefreshRef.value?.refresh()
+            }).catch((err) => {
+                hideLoading(err, 'fail')
+            })
+        })
+    })
+}
+</script>

+ 116 - 0
src/packages/tss/views/order/delivery/components/spot/Index.vue

@@ -0,0 +1,116 @@
+<!-- 交收提货-线下交收单 -->
+<template>
+    <app-pull-refresh ref="pullRefreshRef" v-model:loading="loading" v-model:error="error" v-model:pageIndex="pageIndex"
+        :page-count="pageCount" @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.goodsnamedisplay }}</h4>
+                    </div>
+                    <div class="right">
+                        <span>{{ item.orderstatusdisplay }}</span>
+                    </div>
+                </div>
+                <div class="g-order-list__content">
+                    <ul>
+                        <li class="left">
+                            <Image width="100" height="100" radius="4" :src="getImageUrl(item.thumurls)" />
+                        </li>
+                        <li>
+                            <span>{{ $t('delivery.offline.buyorselldisplay') }}</span>
+                            <span>{{ item.buyorselldisplay }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('delivery.offline.deliveryqty') }}</span>
+                            <span>{{ item.deliveryqty }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('delivery.offline.deliveryprice') }}</span>
+                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryprice }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('delivery.offline.deliveryamount') }}</span>
+                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryamount }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('delivery.offline.deliveryinfo') }}</span>
+                            <span>{{ item.deliveryinfo }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('delivery.offline.applydate') }}</span>
+                            <span>{{ formatDate(item.reqtime, 'YYYY-MM-DD') }}</span>
+                        </li>
+                    </ul>
+                </div>
+                <div class="g-order-list__btnbar">
+                    <Button size="small" @click="onCancel(item)" v-if="item.orderstatus === 1" round>{{ $t('operation.cancel2') }}</Button>
+                </div>
+            </div>
+        </div>
+    </app-pull-refresh>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef } from 'vue'
+import { Button } from 'vant'
+import { getFileUrl } from '@/filters'
+import { fullloading, dialog } from '@/utils/vant'
+import { formatDate, handleRequestBigNumber } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryMineTradeGoodsDeliveryOfflines } from '@/services/api/transfer'
+import { offlineDeliveryApplyCancelOrder } from '@/services/api/trade'
+import { i18n } from '@/stores'
+import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
+
+const dataList = shallowRef<Model.MineTradeGoodsDeliveryOfflinesRsp[]>([])
+const error = shallowRef(false)
+const pullRefreshRef = shallowRef()
+const { t } = i18n.global
+
+const { loading, pageIndex, pageCount, run } = useRequest(queryMineTradeGoodsDeliveryOfflines, {
+    params: {
+        pagesize: 20,
+        marketids: '10101',
+        buyorsell: 1
+    },
+    onSuccess: (res) => {
+        if (pageIndex.value === 1) {
+            dataList.value = []
+        }
+        dataList.value.push(...res.data)
+    },
+    onError: () => {
+        error.value = true
+    }
+})
+
+const onCancel = (row: Model.MineTradeGoodsDeliveryOfflinesRsp) => {
+    dialog({
+        message: t('order.listingorder.tips1'),
+        showCancelButton: true,
+    }).then(() => {
+        fullloading((hideLoading) => {
+            offlineDeliveryApplyCancelOrder({
+                data: {
+                    Header: {
+                        MarketID: row.marketid,
+                        GoodsID: row.goodsid
+                    },
+                    DeliveryOrderID: handleRequestBigNumber(row.deliveryorderid)
+                }
+            }).then(() => {
+                hideLoading(t('order.listingorder.tips2'), 'success')
+                pullRefreshRef.value?.refresh()
+            }).catch((err) => {
+                hideLoading(err, 'fail')
+            })
+        })
+    })
+}
+
+const getImageUrl = (url: string) => {
+    const [firstImg] = url.split(',')
+    return firstImg ? getFileUrl(firstImg) : ''
+}
+</script>

+ 10 - 38
src/packages/tss/views/order/list/Index.vue

@@ -1,13 +1,7 @@
 <template>
     <app-view>
         <template #header>
-            <app-navbar :title="$t('order.title')">
-                <template #right v-if="selectedComponent.history">
-                    <div class="button-more" @click="openComponent(selectedComponent.name)">
-                        <span>{{ $t('common.more') }}</span>
-                    </div>
-                </template>
-            </app-navbar>
+            <app-navbar title="历史订单" />
         </template>
         <Tabs class="van-tabs--list" v-model:active="active" :swipe-threshold="4">
             <template v-for="(item, index) in components" :key="index">
@@ -16,51 +10,29 @@
                 </Tab>
             </template>
         </Tabs>
-        <component ref="componentRef" :is="selectedComponent.history" @closed="closeComponent"
-            v-if="componentId && selectedComponent.history" />
     </app-view>
 </template>
 
 <script lang="ts" setup>
-import { shallowRef, defineAsyncComponent, computed } from 'vue'
+import { shallowRef, defineAsyncComponent } from 'vue'
 import { Tab, Tabs } from 'vant'
-import { useComponent } from '@/hooks/component'
 import { i18n } from '@/stores'
 
 const { global: { t } } = i18n
 
 const components = [
     {
-        name: 'pricingorder',
-        title: t('order.pricingorder.title'),
-        component: defineAsyncComponent(() => import('@mobile/views/order/list/components/pricingorder/list/Index.vue')),
+        name: 'fullpayment',
+        title: "全款订单",
+        component: defineAsyncComponent(() => import('./fullpayment/Index.vue')),
     },
     {
-        name: 'pricingtrade',
-        title: t('order.pricingtrade.title'),
-        component: defineAsyncComponent(() => import('@mobile/views/order/list/components/pricingtrade/list/Index.vue')),
-    },
-    // {
-    //     name: 'presale',
-    //     title: t('order.presale.title'),
-    //     component: defineAsyncComponent(() => import('@mobile/views/order/list/components/presale/list/Index.vue')),
-    //     history: defineAsyncComponent(() => import('@mobile/views/order/list/components/presale/history/index.vue')),
-    // },
-    // {
-    //     name: 'transferorder',
-    //     title: t('order.transferorder.title'),
-    //     component: defineAsyncComponent(() => import('@mobile/views/order/list/components/transferorder/list/Index.vue')),
-    //     history: defineAsyncComponent(() => import('@mobile/views/order/list/components/transferorder/history/index.vue')),
-    // },
-    // {
-    //     name: 'transfertrade',
-    //     title: t('order.transfertrade.title'),
-    //     component: defineAsyncComponent(() => import('@mobile/views/order/list/components/transfertrade/list/Index.vue')),
-    //     history: defineAsyncComponent(() => import('@mobile/views/order/list/components/transfertrade/history/index.vue')),
-    // },
+        name: 'prepayment',
+        title: "预付款订单",
+        component: defineAsyncComponent(() => import('./prepayment/Index.vue')),
+    }
 ]
 
 const active = shallowRef(0)
-const selectedComponent = computed(() => components[active.value])
-const { componentRef, componentId, openComponent, closeComponent } = useComponent()
+
 </script>

+ 106 - 0
src/packages/tss/views/order/list/fullpayment/Index.vue

@@ -0,0 +1,106 @@
+<!-- 历史订单 - 全款订单 -->
+<template>
+    <app-pull-refresh ref="pullRefreshRef" v-model:loading="loading" v-model:error="error" v-model:pageIndex="pageIndex"
+        :page-count="pageCount" @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.goodsnamedisplay }}</h4>
+                    </div>
+                    <div class="right">
+                        <span>{{ item.orderstatusdisplay }}</span>
+                    </div>
+                </div>
+                <div class="g-order-list__content">
+                    <ul>
+                        <li>
+                            <span>{{ $t('delivery.offline.buyorselldisplay') }}</span>
+                            <span>{{ item.buyorselldisplay }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('delivery.offline.deliveryqty') }}</span>
+                            <span>{{ item.deliveryqty }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('delivery.offline.deliveryprice') }}</span>
+                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryprice }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('delivery.offline.deliveryamount') }}</span>
+                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryamount }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('delivery.offline.deliveryinfo') }}</span>
+                            <span>{{ item.deliveryinfo }}</span>
+                        </li>
+                        <li>
+                            <span>{{ $t('delivery.offline.applydate') }}</span>
+                            <span>{{ formatDate(item.reqtime, 'YYYY-MM-DD') }}</span>
+                        </li>
+                    </ul>
+                </div>
+                <div class="g-order-list__btnbar">
+                    <Button size="small" @click="onCancel(item)" v-if="item.orderstatus === 1" round>{{ $t('operation.cancel2') }}</Button>
+                </div>
+            </div>
+        </div>
+    </app-pull-refresh>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef } from 'vue'
+import { Button } from 'vant'
+import { fullloading, dialog } from '@/utils/vant'
+import { formatDate, handleRequestBigNumber } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryMineTradeGoodsDeliveryOfflines } from '@/services/api/transfer'
+import { offlineDeliveryApplyCancelOrder } from '@/services/api/trade'
+import { i18n } from '@/stores'
+import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
+
+const dataList = shallowRef<Model.MineTradeGoodsDeliveryOfflinesRsp[]>([])
+const error = shallowRef(false)
+const pullRefreshRef = shallowRef()
+const { t } = i18n.global
+
+const { loading, pageIndex, pageCount, run } = useRequest(queryMineTradeGoodsDeliveryOfflines, {
+    params: {
+        pagesize: 20,
+        marketids: '53201'
+    },
+    onSuccess: (res) => {
+        if (pageIndex.value === 1) {
+            dataList.value = []
+        }
+        dataList.value.push(...res.data)
+    },
+    onError: () => {
+        error.value = true
+    }
+})
+
+const onCancel = (row: Model.MineTradeGoodsDeliveryOfflinesRsp) => {
+    dialog({
+        message: t('order.listingorder.tips1'),
+        showCancelButton: true,
+    }).then(() => {
+        fullloading((hideLoading) => {
+            offlineDeliveryApplyCancelOrder({
+                data: {
+                    Header: {
+                        MarketID: row.marketid,
+                        GoodsID: row.goodsid
+                    },
+                    DeliveryOrderID: handleRequestBigNumber(row.deliveryorderid)
+                }
+            }).then(() => {
+                hideLoading(t('order.listingorder.tips2'), 'success')
+                pullRefreshRef.value?.refresh()
+            }).catch((err) => {
+                hideLoading(err, 'fail')
+            })
+        })
+    })
+}
+</script>

+ 118 - 0
src/packages/tss/views/order/list/prepayment/Index.vue

@@ -0,0 +1,118 @@
+<template>
+    <app-view>
+        <app-pull-refresh ref="pullRefreshRef" v-model:loading="loading" v-model:error="error"
+            v-model:pageIndex="pageIndex" :page-count="pageCount" @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 :class="item.buyorsell === BuyOrSell.Buy ? 'g-price-up' : 'g-price-down'">
+                                {{ item.buyorsell === BuyOrSell.Buy ? '买料:' : '卖料:' }}
+                                {{ item.goodscode + '/' + item.goodsname }}
+                                {{ formatDecimal(item.openprice, item.decimalplace) }}
+                            </h4>
+                        </div>
+                    </div>
+                    <div class="g-order-list__content">
+                        <ul>
+                            <li class="left">
+                                <Image width="100" height="100" radius="4" :src="getImageUrl(item.thumurls)" />
+                            </li>
+                            <li>
+                                <span>订单重量</span>
+                                <span>
+                                    {{ item.openqty * item.agreeunit }}
+                                    {{ getGoodsUnitName(item.goodunitid) }}
+                                </span>
+                            </li>
+                            <li>
+                                <span>交收重量</span>
+                                <span>{{ (item.deliveryqty * item.agreeunit) + getGoodsUnitName(item.goodunitid)
+                                    }}</span>
+                            </li>
+                            <li>
+                                <span>可用重量</span>
+                                <span>
+                                    {{ enableqty(item) + getGoodsUnitName(item.goodunitid) }}
+                                </span>
+                            </li>
+                            <!-- <li>
+                                <span>订单金额</span>
+                                <span>{{ item.tradeamount }}</span>
+                            </li> -->
+                            <li>
+                                <span>订单价格</span>
+                                <span>{{ formatDecimal(item.openprice, item.decimalplace) }}</span>
+                            </li>
+                            <li>
+                                <span>已付定金</span>
+                                <span>{{ item.payeddeposit }}</span>
+                            </li>
+                            <li>
+                                <span>终止结余</span>
+                                <span :class="handlePriceColor(item.closepl)">{{ item.closepl }}</span>
+                            </li>
+                            <li v-if="riskType === 1">
+                                <span>已补定金</span>
+                                <span>{{ item.restockdeposit }}</span>
+                            </li>
+                            <li>
+                                <span>订单天数</span>
+                                <span>{{ item.holddays + 1 }}天</span>
+                            </li>
+                            <li>
+                                <span>滞纳金</span>
+                                <span>{{ item.callatefee }}</span>
+                            </li>
+                        </ul>
+                    </div>
+                </div>
+            </div>
+        </app-pull-refresh>
+    </app-view>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef } from 'vue'
+import { formatDecimal, handlePriceColor } from '@/filters'
+import { BuyOrSell } from '@/constants/order'
+import { getFileUrl } from '@/filters'
+import { getGoodsUnitName } from '@/constants/unit'
+import { useRequest } from '@/hooks/request'
+import { queryTradeHolderDetailEx } from '@/services/api/order'
+import { useGlobalStore } from '@/stores'
+import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
+
+const globalStore = useGlobalStore()
+const riskType = globalStore.getSystemInfo('riskType') // 风控类型
+
+const error = shallowRef(false)
+const dataList = shallowRef<Model.TradeHolderDetailExRsp[]>([])
+
+const { loading, pageIndex, pageCount, run } = useRequest(queryTradeHolderDetailEx, {
+    params: {
+        pagesize: 20,
+        marketids: '10101'
+    },
+    onSuccess: (res) => {
+        if (pageIndex.value === 1) {
+            dataList.value = []
+        }
+        dataList.value.filter(e => e.holderqty === 0).push(...res.data)
+    },
+    onError: () => {
+        error.value = true
+    }
+})
+
+// 可用重量
+const enableqty = (item: Model.TradeHolderDetailExRsp) => {
+    return (item.holderqty - item.freezeqty) * item.agreeunit
+}
+
+const getImageUrl = (url: string) => {
+    const [firstImg] = url.split(',')
+    return firstImg ? getFileUrl(firstImg) : ''
+}
+
+</script>

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

@@ -1,3 +1,4 @@
+<!-- 交收提货-我的持仓 -->
 <template>
     <app-view>
         <template #header>

+ 5 - 1
src/types/model/order.d.ts

@@ -1576,7 +1576,8 @@ declare namespace Model {
         quoteMinUnit: number;
         /// 单位名称
         goodsUnit: string;
-        thumurls: string; // 缩略图片(1:1)(逗号分隔)
+        // 缩略图片(1:1)(逗号分隔)
+        thumurls: string; 
     }
 
     /* 查询我的交收 请求*/
@@ -1770,6 +1771,7 @@ declare namespace Model {
         holderqty?: number; // 持仓数量
         page?: number; // 页码
         pagesize?: number; // 每页条数
+        marketids?: string
     }
 
     /** 查询我的订单 响应 */
@@ -1814,6 +1816,8 @@ declare namespace Model {
         tradeid: string; // 成交单号(101+Unix秒时间戳(10位)+2位(MarketServiceID)+xxxx)
         tradetime: string; // 交易时间
         userid: number; // 用户ID
+        // 缩略图片(1:1)(逗号分隔)
+        thumurls: string; 
     }
 
     /** 查询我的终止订单 请求 */

+ 7 - 3
src/types/model/transfer.d.ts

@@ -297,9 +297,11 @@ declare namespace Model {
 
     /** 交收提货-线下交收单 请求 */
     interface MineTradeGoodsDeliveryOfflinesReq {
-        userid?: number; // 用户id
-        page?: number; // 页码
-        pagesize?: number; // 每页条数
+        userid?: number;    // 用户id
+        page?: number;      // 页码
+        pagesize?: number;  // 每页条数
+        marketids?: string; // 市场
+        buyorsell?: number; // 买卖方向
     }
 
     /** 交收提货-线下交收单 响应 */
@@ -330,6 +332,8 @@ declare namespace Model {
         reqtradedate: string; // 申请交易日
         tradeid: string; // 成交单号(10-线下交收)
         userid: number; // 申请用户ID
+        // 缩略图片(1:1)(逗号分隔)
+        thumurls: string; 
     }
 
     /** 获取持仓过户申请表信息 - 我的转入 请求 */