Handy_Cao 3 年之前
父节点
当前提交
400068236c

+ 166 - 1
src/business/order/index.ts

@@ -1,7 +1,16 @@
 import { shallowRef } from 'vue'
 import { useDataTable } from '@/hooks/datatable'
-import { queryWrOrderDetail, queryWrTradeDetail, queryTHJPurchaseTradeDetail, queryHoldLB, queryWrOutInApply } from '@/services/api/order'
+import { queryWrOrderDetail, 
+         queryWrTradeDetail, 
+         queryTHJPurchaseTradeDetail, 
+         queryHoldLB, queryWrOutInApply, 
+         queryTHJPromotionIncome, 
+         queryTHJPromotionIncomeDetail,
+         queryTHJPurchaseTransferOrder, 
+         queryTHJPurchaseTransferOrderDetail } from '@/services/api/order'
 import { useLoginStore } from '@/stores'
+import { formatDate } from '@/filters'
+import { useNavigation } from '@/hooks/navigation'
 
 // 查询仓单持有记录
 export function useQueryHoldLB() {
@@ -199,4 +208,160 @@ export function useTHJPurchaseTradeDetail() {
         pageCount,
         getTHJPurchaseTradeDetail,
     }
+}
+
+// 查询我的推广-推广收益
+export function useQueryTHJPromotionIncome() {
+    const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.THJPromotionIncomeRsp>()
+    const loading = shallowRef(false)
+    const { getUserId } = useLoginStore()
+    
+    const getTHJPromotionIncome = async (status?: number) => {
+        loading.value = true
+        await queryTHJPromotionIncome({
+            data: {
+                userid: getUserId(),
+                profitstatus: status,
+                page: pageIndex.value,
+                pagesize: pageSize.value,
+            },
+            success: (res) => {
+                total.value = res.total
+                dataList.value = res.data
+            },
+            complete: () => {
+                loading.value = false
+            }
+        })
+        return dataList.value
+    }
+
+    return {
+        loading,
+        dataList,
+        total,
+        pageIndex,
+        pageSize,
+        pageCount,
+        getTHJPromotionIncome,
+    }
+}
+
+// 查询我的推广-推广收益-明细
+export function useQueryTHJPromotionIncomeDetail() {
+    const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.THJPromotionIncomeDetailRsp>()
+    const loading = shallowRef(false)
+    const { getUserId } = useLoginStore()
+    
+    const getTHJPromotionIncomeDetail = async () => {
+        loading.value = true
+        await queryTHJPromotionIncomeDetail({
+            data: {
+                userid: getUserId(),
+                mouth: formatDate(new Date().toDateString(), 'YYYYMM'),
+                page: pageIndex.value,
+                pagesize: pageSize.value,
+            },
+            success: (res) => {
+                total.value = res.total
+                dataList.value = res.data
+            },
+            complete: () => {
+                loading.value = false
+            }
+        })
+        return dataList.value
+    }
+
+    return {
+        loading,
+        dataList,
+        total,
+        pageIndex,
+        pageSize,
+        pageCount,
+        getTHJPromotionIncomeDetail,
+    }
+}
+
+// 查询我的订单-转让/受让订单
+export function useQueryTHJPurchaseTransferOrder() {
+    const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.THJPurchaseTransferOrderRsp>()
+    const loading = shallowRef(false)
+    const { getUserId } = useLoginStore()
+    
+    const getTHJPurchaseTransferOrder = async (ordertype: number) => {
+        loading.value = true
+        await queryTHJPurchaseTransferOrder({
+            data: {
+                userid: getUserId(),
+                page: pageIndex.value,
+                pagesize: pageSize.value,
+                ordertype: ordertype
+            },
+            success: (res) => {
+                total.value = res.total
+                dataList.value = res.data
+            },
+            complete: () => {
+                loading.value = false
+            }
+        })
+        return dataList.value
+    }
+
+    return {
+        loading,
+        dataList,
+        total,
+        pageIndex,
+        pageSize,
+        pageCount,
+        getTHJPurchaseTransferOrder,
+    }
+}
+
+// 查询我的订单-转让/受让订单详情
+export function useQueryTTHJPurchaseTransferOrderDetail() {
+    const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.THJPurchaseTransferOrderDetailRsp>()
+    const loading = shallowRef(false)
+    
+    const { route } = useNavigation()
+    const item = route.params.item
+    const order = shallowRef<Model.THJPurchaseTransferOrderRsp>()
+
+    if (item) {
+        order.value = JSON.parse(item.toString())
+    }
+
+    const getTHJPurchaseTransferOrderDetail = async () => {
+        const param = order.value
+        if (param) {
+            loading.value = true
+            await queryTHJPurchaseTransferOrderDetail({
+                data: {
+                    wrtradedetailid: param.wrtradedetailid
+                },
+                success: (res) => {
+                    total.value = res.total
+                    dataList.value = res.data
+                },
+                complete: () => {
+                    loading.value = false
+                }
+            })
+            return dataList.value
+        }
+        return Promise.reject('查询失败')
+    }
+
+    return {
+        loading,
+        dataList,
+        total,
+        pageIndex,
+        pageSize,
+        pageCount,
+        getTHJPurchaseTransferOrderDetail,
+    }
 }

+ 55 - 53
src/business/trade/index.ts

@@ -2,7 +2,14 @@ import { ref, shallowRef } from 'vue'
 import { v4 } from 'uuid'
 import { ClientType, OrderSrc } from '@/constants/client'
 import { useLoginStore } from '@/stores'
-import { spotPresaleDestingOrder, spotPresaleTransferCancel, spotPresaleTransferDesting, spotPresaleTransferListing, spotPresalePlayment, wrListingCancelOrder, spotPresaleDeliveryConfirm, spotPresaleBreachOfContractConfirm, spotPresaleBreachOfContractApply } from '@/services/api/trade'
+import { spotPresaleDestingOrder, 
+         spotPresaleTransferCancel, 
+         spotPresaleTransferDesting, 
+         spotPresaleTransferListing, 
+         spotPresalePlayment, 
+         wrListingCancelOrder, 
+         spotPresaleDeliveryConfirm, 
+         spotPresaleBreachOfContractApply } from '@/services/api/trade'
 import { formatDate } from "@/filters";
 import { useNavigation } from '@/hooks/navigation'
 import Long from 'long'
@@ -57,15 +64,14 @@ export function useSpotPresaleDeliveryConfirm() {
 
         if (param) {
             loading.value = true
-            const data: Partial<Proto.SpotPresaleDeliveryConfirmReq>={
-                UserID: getUserId(),
+            return spotPresaleDeliveryConfirm({
+                data: {
+                    UserID: getUserId(),
                 Remark: '',
                 WRTradeDetailID: Long.fromNumber(param.wrtradedetailid),
                 ClientSerialNo: v4(), // 客户端流水号
                 ClientType: ClientType.Web // 终端类型
-            }
-            return spotPresaleDeliveryConfirm({
-                data,
+                },
                 complete: () => {
                     loading.value = false
                 }
@@ -99,14 +105,13 @@ export function useSpotPresaleBreachOfContractApply() {
 
         if (param) {
             loading.value = true
-            const data: Partial<Proto.SpotPresaleBreachOfContractApplyReq>={
-                UserID: getUserId(),
+            return spotPresaleBreachOfContractApply({
+                data: {
+                    UserID: getUserId(),
                 WRTradeDetailID: Long.fromNumber(param.wrtradedetailid),
                 ClientSerialNo: v4(), // 客户端流水号
                 ClientType: ClientType.Web // 终端类型
-            }
-            return spotPresaleBreachOfContractApply({
-                data,
+                },
                 complete: () => {
                     loading.value = false
                 }
@@ -146,12 +151,11 @@ export function useSpotPresalePlayment() {
         
         if (param) {
             loading.value = true
-            const data: Partial<Proto.SpotPresaleTransferListingReq>={
-                ...formData,
-                WRTradeDetailID: Long.fromNumber(param.wrtradedetailid),
-            }
             return spotPresalePlayment({
-                data,
+                data: {
+                    ...formData,
+                    WRTradeDetailID: Long.fromNumber(param.wrtradedetailid),
+                },
                 complete: () => {
                     loading.value = false
                 }
@@ -188,15 +192,19 @@ export function useSpotPresaleTransferListing() {
 
     const listingSubmit = () => {
         const param = detail.value
+
+        /// 转让价格不能为0
+        if (!formData.value.TransferPrice) {
+            return Promise.reject('转让价格不能为0')
+        }
+
         if (param) {
             loading.value = true
-            const data:Partial<Proto.SpotPresaleTransferListingReq>={
-                ...formData,
-                WRTradeDetailID: Long.fromNumber(param.wrtradedetailid),
-            }
-
             return spotPresaleTransferListing({
-                data,
+                data: {
+                    ...formData,
+                    WRTradeDetailID: Long.fromNumber(param.wrtradedetailid),
+                },
                 complete: () => {
                     loading.value = false
                 }
@@ -230,21 +238,19 @@ export function useSpotPresaleTransferCancel() {
         const param = detail.value
         if (param) {
             loading.value = true
-            const data: Partial<Proto.SpotPresaleTransferCancelReq>={
-                UserID: getUserId(),
-                WRTradeDetailID: Long.fromNumber(param.wrtradedetailid),
-                ClientSerialNo: v4(), // 客户端流水号
-                ClientType: ClientType.Web // 终端类型
-            }
-
             return spotPresaleTransferCancel({
-                data,
+                data: {
+                    UserID: getUserId(),
+                    WRTradeDetailID: Long.fromNumber(param.wrtradedetailid),
+                    ClientSerialNo: v4(), // 客户端流水号
+                    ClientType: ClientType.Web // 终端类型
+                },
                 complete: () => {
                     loading.value = false
                 }
             })
         }
-        Promise.reject('转让撤销失败')
+        return Promise.reject('转让撤销失败')
     }
 
     return {
@@ -271,16 +277,14 @@ export function useSpotPresaleTransferDesting() {
         const param = detail.value
         if (param) {
             loading.value = true
-            const data: Partial<Proto.SpotPresaleTransferDestingReq>={
-                UserID: getUserId(),
-                AccountID: getFirstAccountId(),
-                TransferID: Long.fromNumber(param.wrtradedetailid),
-                ClientSerialNo: v4(), // 客户端流水号
-                ClientType: ClientType.Web // 终端类型
-            }
-
             return spotPresaleTransferDesting({
-                data,
+                data: {
+                    UserID: getUserId(),
+                    AccountID: getFirstAccountId(),
+                    TransferID: Long.fromNumber(param.wrtradedetailid),
+                    ClientSerialNo: v4(), // 客户端流水号
+                    ClientType: ClientType.Web // 终端类型
+                },
                 complete: () => {
                     loading.value = false
                 }
@@ -314,20 +318,18 @@ export function useWrListingCancelOrder() {
         const param = detail.value
         if (param) {
             loading.value = true
-            const data:Partial<Proto.WRListingCancelOrderReq>={
-                UserID: getUserId(),
-                AccountID: getFirstAccountId(),
-                OperatorID: getLoginId(),
-                OrderSrc: OrderSrc.ORDERSRC_CLIENT,
-                OldWRTradeOrderID: Long.fromString(param.wrtradeorderid),
-                ClientOrderTime: formatDate(new Date().toString(), 'YYYY-MM-DD HH:mm:ss'),
-                ClientSerialNo: v4(), // 客户端流水号
-                ClientType: ClientType.Web, // 终端类型
-                BuyOrSell: param.buyorsell,
-            }
-
             return wrListingCancelOrder({
-                data,
+                data: {
+                    UserID: getUserId(),
+                    AccountID: getFirstAccountId(),
+                    OperatorID: getLoginId(),
+                    OrderSrc: OrderSrc.ORDERSRC_CLIENT,
+                    OldWRTradeOrderID: Long.fromString(param.wrtradeorderid),
+                    ClientOrderTime: formatDate(new Date().toString(), 'YYYY-MM-DD HH:mm:ss'),
+                    ClientSerialNo: v4(), // 客户端流水号
+                    ClientType: ClientType.Web, // 终端类型
+                    BuyOrSell: param.buyorsell,
+                },
                 complete: () => {
                     loading.value = false
                 }

+ 10 - 0
src/packages/mobile/router/index.ts

@@ -222,6 +222,11 @@ const routes: Array<RouteRecordRaw> = [
         path: 'wrorderdetail',
         name: 'wrorder-detail',
         component: () => import('../views/mine/order/detail/wrorder/index.vue'),
+      },
+      {
+        path: 'transferdetail',
+        name: 'transfer-detail',
+        component: () => import('../views/mine/order/detail/transfer/index.vue'),
       }
     ]
   },
@@ -332,6 +337,11 @@ const routes: Array<RouteRecordRaw> = [
         component: () => import('../views/mine/generalize/index.vue'),
       },
       {
+        path: 'promotion',
+        name: 'promotion-detail',
+        component: () => import('../views/mine/generalize/detail/index.vue'),
+      },
+      {
         path: 'service',
         name: 'mine-service',
         component: () => import('../views/mine/service/index.vue'),

+ 92 - 0
src/packages/mobile/views/mine/generalize/components/promotion/index.vue

@@ -0,0 +1,92 @@
+<template>
+    <app-view class="promotion" flex>
+        <app-pull-refresh class="promotion__container" v-model:error="error" v-model:pageIndex="pageIndex"
+            :page-count="pageCount" @refresh="onRefresh">
+            <app-list :columns="columns" :data-list="dataList" v-if="dataList.length" @click="onClick">
+                <!-- 日期 -->
+                <template #profitmonth="{ value }">
+                    {{ formatDate(value, 'YYYY-MM') }}
+                </template>
+            </app-list>
+            <Empty v-if="!dataList.length"></Empty>
+        </app-pull-refresh>
+    </app-view>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useQueryTHJPromotionIncome } from '@/business/order'
+import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
+import AppList from '@mobile/components/base/list/index.vue'
+import { Empty } from 'vant'
+import { useNavigation } from '@/hooks/navigation'
+
+const { router } = useNavigation()
+const { pageIndex, pageCount, getTHJPromotionIncome } = useQueryTHJPromotionIncome()
+const dataList = shallowRef<Model.THJPromotionIncomeRsp[]>([])
+const error = shallowRef(false)
+
+const columns: Model.TableColumn[] = [
+    { prop: 'profitmonth', label: '时间' },
+    { prop: 'sumamount', label: '金额' },
+]
+
+const onClick = (item: Model.THJPromotionIncomeRsp) => {
+    router.push({ name: 'promotion-detail', params: { item: JSON.stringify(item) } })
+}
+
+const onRefresh = (finish: () => void) => {
+    /// 查询数据
+    getTHJPromotionIncome(0).then((res) => {
+        if (pageIndex.value === 1) {
+            dataList.value = []
+        }
+        dataList.value.push(...res)
+    }).catch(() => {
+        error.value = true
+    }).finally(() => {
+        finish()
+    })
+}
+</script>
+
+<style lang="less">
+.promotion {
+    &__container {
+        height: 100%;
+        overflow-y: auto;
+
+        .list {
+            display: flex;
+            align-items: center;
+
+            &-row {
+                font-size: .32rem;
+                border-bottom: 1px solid #eee;
+                padding: .12rem .32rem;
+            }
+
+            &-column {
+                flex: 1;
+                display: flex;
+                flex-direction: column;
+                text-align: center;
+
+                &:first-child {
+                    text-align: left;
+                }
+
+                &:last-child {
+                    text-align: right;
+                }
+
+                span:last-child {
+                    color: #999;
+                    font-size: .24rem;
+                }
+            }
+        }
+    }
+}
+</style>

+ 99 - 0
src/packages/mobile/views/mine/generalize/components/tradedata/index.vue

@@ -0,0 +1,99 @@
+<template>
+    <app-view class="tradedata" flex>
+        <app-pull-refresh class="tradedata__container" v-model:error="error" v-model:pageIndex="pageIndex"
+            :page-count="pageCount" @refresh="onRefresh">
+            <app-list :columns="columns" :data-list="dataList" v-if="dataList.length">
+                <!-- 日期 -->
+                <template #reckondate="{ value }">
+                    {{ formatDate(value, 'YYYY-MM-DD') }}
+                </template>
+                <!-- 市场 -->
+                <template #marketid="{ value }">
+                    {{ value == Market.THJ ? '采购' : '供求' }}
+                </template>
+                <!-- 吨数 -->
+                <template #tradeqty="{ row }">
+                    {{ row.marketid === Market.THJ ? row.buytradeqty : row.selltradeqty }}
+                </template>
+            </app-list>
+            <Empty v-if="!dataList.length"></Empty>
+        </app-pull-refresh>
+    </app-view>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useQueryTHJTradeDataList } from '@/business/goods'
+import { Market } from '@/constants/market'
+import { Empty } from 'vant'
+import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
+import AppList from '@mobile/components/base/list/index.vue'
+
+const { pageIndex, pageCount, getQueryTHJTradeDataList } = useQueryTHJTradeDataList()
+const dataList = shallowRef<Model.THJTradeDataRsp[]>([])
+const error = shallowRef(false)
+
+const columns: Model.TableColumn[] = [
+    { prop: 'reckondate', label: '日期' },
+    { prop: 'marketid', label: '市场' },
+    { prop: 'wrstandardname', label: '商品' },
+    { prop: 'accountname', label: '被推荐人' },
+    { prop: 'tradeqty', label: '吨数' },
+    { prop: 'selltradelot', label: '笔数' },
+]
+
+const onRefresh = (finish: () => void) => {
+    /// 查询数据
+    getQueryTHJTradeDataList(Market.THJ).then((res) => {
+        if (pageIndex.value === 1) {
+            dataList.value = []
+        }
+        dataList.value.push(...res)
+    }).catch(() => {
+        error.value = true
+    }).finally(() => {
+        finish()
+    })
+}
+</script>
+
+<style lang="less">
+.tradedata {
+    &__container {
+        height: 100%;
+        overflow-y: auto;
+
+        .list {
+            display: flex;
+            align-items: center;
+
+            &-row {
+                font-size: .32rem;
+                border-bottom: 1px solid #eee;
+                padding: .12rem .32rem;
+            }
+
+            &-column {
+                flex: 1;
+                display: flex;
+                flex-direction: column;
+                text-align: center;
+
+                &:first-child {
+                    text-align: left;
+                }
+
+                &:last-child {
+                    text-align: right;
+                }
+
+                span:last-child {
+                    color: #999;
+                    font-size: .24rem;
+                }
+            }
+        }
+    }
+}
+</style>

+ 94 - 0
src/packages/mobile/views/mine/generalize/detail/index.vue

@@ -0,0 +1,94 @@
+<template>
+    <app-view class="promotion-detail" flex>
+        <template #header>
+            <app-navbar title="推广收益明细" />
+        </template>
+        <app-pull-refresh class="promotion-detail__container" v-model:error="error" v-model:pageIndex="pageIndex"
+            :page-count="pageCount" @refresh="onRefresh">
+            <app-list :columns="columns" :data-list="dataList" v-if="dataList.length">
+                <!-- 时间 -->
+                <template #profitmonth="{ value }">
+                    <li>{{ formatDate(value, 'YYYY-MM-DD') }}</li>
+                    <li>{{ formatDate(value, 'HH:mm:ss') }}</li>
+                </template>
+            </app-list>
+            <Empty v-if="!dataList.length"></Empty>
+        </app-pull-refresh>
+    </app-view>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useQueryTHJPromotionIncomeDetail } from '@/business/order'
+import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
+import AppList from '@mobile/components/base/list/index.vue'
+import { Empty } from 'vant'
+
+const { pageIndex, pageCount, getTHJPromotionIncomeDetail } = useQueryTHJPromotionIncomeDetail()
+const dataList = shallowRef<Model.THJPromotionIncomeDetailRsp[]>([])
+const error = shallowRef(false)
+
+const columns: Model.TableColumn[] = [
+    { prop: 'tradetime', label: '时间' },
+    { prop: 'wrstandardname', label: '商品' },
+    { prop: 'market', label: '市场' },
+    { prop: 'buyorsell', label: '方向' },
+    { prop: 'profitroletype', label: '级别' },
+    { prop: 'profitamount', label: '金额' },
+]
+
+const onRefresh = (finish: () => void) => {
+    /// 查询数据
+    getTHJPromotionIncomeDetail().then((res) => {
+        if (pageIndex.value === 1) {
+            dataList.value = []
+        }
+        dataList.value.push(...res)
+    }).catch(() => {
+        error.value = true
+    }).finally(() => {
+        finish()
+    })
+}
+</script>
+
+<style lang="less">
+.promotion-detail {
+    &__container {
+        height: 100%;
+        overflow-y: auto;
+
+        .list {
+            display: flex;
+            align-items: center;
+
+            &-row {
+                font-size: .32rem;
+                border-bottom: 1px solid #eee;
+                padding: .12rem .32rem;
+            }
+
+            &-column {
+                flex: 1;
+                display: flex;
+                flex-direction: column;
+                text-align: center;
+
+                &:first-child {
+                    text-align: left;
+                }
+
+                &:last-child {
+                    text-align: right;
+                }
+
+                span:last-child {
+                    color: #999;
+                    font-size: .24rem;
+                }
+            }
+        }
+    }
+}
+</style>

+ 7 - 59
src/packages/mobile/views/mine/generalize/index.vue

@@ -3,9 +3,7 @@
         <template #header>
             <app-navbar title="我的推广" />
         </template>
-        <app-pull-refresh class="mine-generalize__container" v-model:error="error" v-model:pageIndex="pageIndex"
-            :page-count="pageCount" @refresh="onRefresh">
-            <div class="mine-generalize__header">
+        <div class="mine-generalize__header">
                 <div class="info">
                     <span>{{ userAccount.refercount }}</span>
                     <h4>推广人数</h4>
@@ -21,49 +19,26 @@
                     </div>
                 </div>
             </div>
-            <Tabs class="mine-generalize__tabs" @change="onClickTab">
+            <Tabs class="mine-generalize__tabs">
                 <Tab title="交易数据">
-                    <Empty v-if="dataList.length === 0" />
+                    <trade-data></trade-data>
                 </Tab>
                 <Tab title="推广收益">
-                    <Empty />
+                    <promotion></promotion>
                 </Tab>
             </Tabs>
-            <app-list :columns="columns" :data-list="dataList" v-if="dataList.length">
-                <!-- 日期 -->
-                <template #reckondate="{ value }">
-                    {{ formatDate(value, 'YYYY-MM-DD') }}
-                </template>
-                <!-- 市场 -->
-                <template #marketid="{ value }">
-                    {{ value == Market.THJ ? '采购' : '供求' }}
-                </template>
-                <!-- 吨数 -->
-                <template #tradeqty="{ row }">
-                    {{ row.marketid === Market.THJ ? row.buytradeqty : row.selltradeqty }}
-                </template>
-            </app-list>
-        </app-pull-refresh>
         <app-qrcode v-model:show="showQRCode" :content="userAccount.refernum" />
     </app-view>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
-import { Tab, Tabs, Empty } from 'vant'
-import { formatDate } from '@/filters'
+import { Tab, Tabs } from 'vant'
 import { useLoginStore } from '@/stores'
 import { queryUserAccount } from '@/services/api/account'
-import { useQueryTHJTradeDataList } from '@/business/goods'
-import { Market } from '@/constants/market'
 import AppQrcode from '@mobile/components/base/qrcode/index.vue'
-import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
-import AppList from '@mobile/components/base/list/index.vue'
-
-const { pageIndex, pageCount, getQueryTHJTradeDataList } = useQueryTHJTradeDataList()
-const pullRefreshRef = shallowRef()
-const dataList = shallowRef<Model.THJTradeDataRsp[]>([])
-const error = shallowRef(false)
+import TradeData from './components/tradedata/index.vue'
+import Promotion from './components/promotion/index.vue'
 
 const { getUserId } = useLoginStore()
 const showQRCode = shallowRef(false)
@@ -72,15 +47,6 @@ const userAccount = shallowRef<Partial<Model.UserAccount>>({
     refercount: 0,
 })
 
-const columns: Model.TableColumn[] = [
-    { prop: 'reckondate', label: '日期' },
-    { prop: 'marketid', label: '市场' },
-    { prop: 'wrstandardname', label: '商品' },
-    { prop: 'accountname', label: '被推荐人' },
-    { prop: 'tradeqty', label: '吨数' },
-    { prop: 'selltradelot', label: '笔数' },
-]
-
 queryUserAccount({
     data: {
         userID: getUserId()
@@ -90,24 +56,6 @@ queryUserAccount({
     }
 })
 
-// Tab触发
-const onClickTab = () => {
-    pullRefreshRef.value?.refresh()
-}
-
-const onRefresh = (finish: () => void) => {
-    /// 查询数据
-    getQueryTHJTradeDataList(Market.THJ).then((res) => {
-        if (pageIndex.value === 1) {
-            dataList.value = []
-        }
-        dataList.value.push(...res)
-    }).catch(() => {
-        error.value = true
-    }).finally(() => {
-        finish()
-    })
-}
 </script>
 
 <style lang="less">

+ 7 - 11
src/packages/mobile/views/mine/order/detail/purchasetrade/index.vue

@@ -131,18 +131,14 @@ const spotPlaymentSubmit = () => {
 
 ///合同转让申请
 const spotListingSubmit = () => {
-    dialog('确认要转让撤销吗?', {
-        showCancelButton: true
-    }).then(() => {
-        fullloading((hideLoading) => {
-            listingSubmit().then(() => {
-                hideLoading()
-                dialog('合同转让提交成功,请耐心等待审核。').then(() => {
-                    router.back()
-                })
-            }).catch((err) => {
-                Toast.fail(err)
+    fullloading((hideLoading) => {
+        listingSubmit().then(() => {
+            hideLoading()
+            dialog('合同转让提交成功,请耐心等待审核。').then(() => {
+                router.back()
             })
+        }).catch((err) => {
+            Toast.fail(err)
         })
     })
 }

+ 0 - 0
src/packages/mobile/views/mine/order/detail/transfer/index.less


+ 15 - 0
src/packages/mobile/views/mine/order/detail/transfer/index.vue

@@ -0,0 +1,15 @@
+<template>
+    <app-view class="transfer-detail g-form">
+        <template #header>
+            <app-navbar title="转让订单详情" />
+        </template>
+    </app-view>
+</template>
+
+<script lang="ts" setup>
+
+</script>
+
+<style lang="less">
+@import './index.less';
+</style>

+ 50 - 0
src/packages/mobile/views/mine/order/list/components/transferbuy/index.vue

@@ -0,0 +1,50 @@
+<template>
+    <app-view class="order-list-purchase">
+        <app-pull-refresh v-model:error="error" v-model:pageIndex="pageIndex" :page-count="pageCount"
+            @refresh="onRefresh">
+            <app-list :columns="columns" :data-list="dataList" @click="onClick" />
+            <!-- <Button>更多</Button> -->
+        </app-pull-refresh>
+    </app-view>
+</template>
+
+<script lang="ts" setup>
+
+import { shallowRef } from 'vue'
+import { useNavigation } from '@/hooks/navigation'
+import { useQueryTHJPurchaseTransferOrder } from '@/business/order'
+import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
+import AppList from '@mobile/components/base/list/index.vue'
+
+const { router } = useNavigation()
+const { pageIndex, pageCount, getTHJPurchaseTransferOrder } = useQueryTHJPurchaseTransferOrder()
+const dataList = shallowRef<Model.THJPurchaseTransferOrderRsp[]>([])
+const error = shallowRef(false)
+
+const columns: Model.TableColumn[] = [
+    { prop: 'wrstandardname', label: '商品' },
+    { prop: 'transferqty', label: '数量' },
+    { prop: 'transferprice', label: '转让价' },
+    { prop: 'transferamount', label: '金额' },
+    { prop: 'tradeprice', label: '预售价格' },
+    { prop: 'payeddeposit', label: '已付定金' },
+]
+
+const onClick = (item: Model.THJPurchaseTradeDetailRsp) => {
+    router.push({ name: 'transfer-detail', params: { item: JSON.stringify(item) } })
+}
+
+const onRefresh = (finish: () => void) => {
+    /// 查询未完成
+    getTHJPurchaseTransferOrder(2).then((res) => {
+        if (pageIndex.value === 1) {
+            dataList.value = []
+        }
+        dataList.value.push(...res)
+    }).catch(() => {
+        error.value = true
+    }).finally(() => {
+        finish()
+    })
+}
+</script>

+ 50 - 0
src/packages/mobile/views/mine/order/list/components/transfersell/index.vue

@@ -0,0 +1,50 @@
+<template>
+    <app-view class="order-list-purchase">
+        <app-pull-refresh v-model:error="error" v-model:pageIndex="pageIndex" :page-count="pageCount"
+            @refresh="onRefresh">
+            <app-list :columns="columns" :data-list="dataList" @click="onClick" />
+            <!-- <Button>更多</Button> -->
+        </app-pull-refresh>
+    </app-view>
+</template>
+
+<script lang="ts" setup>
+
+import { shallowRef } from 'vue'
+import { useNavigation } from '@/hooks/navigation'
+import { useQueryTHJPurchaseTransferOrder } from '@/business/order'
+import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
+import AppList from '@mobile/components/base/list/index.vue'
+
+const { router } = useNavigation()
+const { pageIndex, pageCount, getTHJPurchaseTransferOrder } = useQueryTHJPurchaseTransferOrder()
+const dataList = shallowRef<Model.THJPurchaseTransferOrderRsp[]>([])
+const error = shallowRef(false)
+
+const columns: Model.TableColumn[] = [
+    { prop: 'wrstandardname', label: '商品' },
+    { prop: 'transferqty', label: '数量' },
+    { prop: 'transferprice', label: '转让价' },
+    { prop: 'transferamount', label: '金额' },
+    { prop: 'tradeprice', label: '预售价格' },
+    { prop: 'payeddeposit', label: '已付定金' },
+]
+
+const onClick = (item: Model.THJPurchaseTradeDetailRsp) => {
+    router.push({ name: 'transfer-detail', params: { item: JSON.stringify(item) } })
+}
+
+const onRefresh = (finish: () => void) => {
+    /// 查询未完成
+    getTHJPurchaseTransferOrder(1).then((res) => {
+        if (pageIndex.value === 1) {
+            dataList.value = []
+        }
+        dataList.value.push(...res)
+    }).catch(() => {
+        error.value = true
+    }).finally(() => {
+        finish()
+    })
+}
+</script>

+ 23 - 15
src/packages/mobile/views/mine/order/list/index.vue

@@ -11,6 +11,12 @@
             <Tab title="采购订单">
                 <purchase-trade />
             </Tab>
+            <Tab title="转让订单">
+                <transfer-sell />
+            </Tab>
+            <Tab title="受让订单">
+                <transfer-buy />
+            </Tab>
             <Tab title="供求委托">
                 <wr-order />
             </Tab>
@@ -23,29 +29,31 @@
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
-import { Tab, Tabs, Button } from 'vant'
+import { Tab, Tabs } from 'vant'
 // import { useNavigation } from '@/hooks/navigation'
 import PurchaseTrade from './components/purchasetrade/index.vue'
 import WrOrder from './components/wrorder/index.vue'
 import WrTrade from './components/wrtrade/index.vue'
+import TransferBuy from './components/transferbuy/index.vue'
+import TransferSell from './components/transfersell/index.vue'
 
 // const { routerTo } = useNavigation()
 const activeTab = shallowRef(0)
 
-const onMoreClick = () => {
-    switch (activeTab.value) {
-        case 0: {
-            break
-        }
-        case 1: {
-            break
-        }
-        case 2: {
-            // routerTo('bank-hisstatement')
-            break
-        }
-    }
-}
+// const onMoreClick = () => {
+//     switch (activeTab.value) {
+//         case 0: {
+//             break
+//         }
+//         case 1: {
+//             break
+//         }
+//         case 2: {
+//             // routerTo('bank-hisstatement')
+//             break
+//         }
+//     }
+// }
 </script>
 
 <style lang="less">

+ 28 - 0
src/services/api/order/index.ts

@@ -34,4 +34,32 @@ import { HttpParams } from '@/services/http/interface'
  */
  export function queryWrOutInApply(params: HttpParams<{ req: Model.WrOutInApplyReq, rsp: Model.WrOutInApplyRsp[] }>) {
     return httpRequest('/WrTrade2/QueryWrOutInApply', 'get', params);
+}
+
+/**
+ * 查询我的推广-推广收益
+ */
+ export function queryTHJPromotionIncome(params: HttpParams<{ req: Model.THJPromotionIncomeReq, rsp: Model.THJPromotionIncomeRsp[] }>) {
+    return httpRequest('/Ferroalloy/QueryTHJPromotionIncome', 'get', params);
+}
+
+/**
+ * 查询我的推广-推广收益-明细
+ */
+ export function queryTHJPromotionIncomeDetail(params: HttpParams<{ req: Model.THJPromotionIncomeDetailReq, rsp: Model.THJPromotionIncomeDetailRsp[] }>) {
+    return httpRequest('/Ferroalloy/QueryTHJPromotionIncomeDetail', 'get', params);
+}
+
+/**
+ * 查询我的订单-转让/受让订单
+ */
+ export function queryTHJPurchaseTransferOrder(params: HttpParams<{ req: Model.THJPurchaseTransferOrderReq, rsp: Model.THJPurchaseTransferOrderRsp[] }>) {
+    return httpRequest('/Ferroalloy/QueryTHJPurchaseTransferOrder', 'get', params);
+}
+
+/**
+ * 查询我的订单-转让/受让订单-详情
+ */
+ export function queryTHJPurchaseTransferOrderDetail(params: HttpParams<{ req: Model.THJPurchaseTransferOrderDetailReq, rsp: Model.THJPurchaseTransferOrderDetailRsp[] }>) {
+    return httpRequest('/Ferroalloy/QueryTHJPurchaseTransferOrderDetail', 'get', params);
 }

+ 1 - 0
src/services/http/index.ts

@@ -101,6 +101,7 @@ const httpService = new (class {
 
     httpRequest = async <T extends Payload>(url: string, method: Method, params: HttpParams<T>) => {
         const { data, success, fail, complete } = params
+        console.log('queryParam', params)
         await this.request(url, method, data).then((res) => {
             const data = res.data as HttpResponse<T['rsp']>
             switch (data.code) {

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

@@ -1,4 +1,3 @@
-
 declare namespace Model {
     /** 查询仓单委托单 请求 */
     interface WrOrderDetailReq {
@@ -484,4 +483,171 @@ declare namespace Model {
         wrtypename: string
     }
 
+    /* 查询我的推广-推广收益 请求*/
+    interface THJPromotionIncomeReq {
+        /// 页码
+        page?: number
+        /// 每页条数
+        pagesize?: number
+        /// 用户id
+        userid: number
+        /// 状态 - 0:全部 1:已支付 2:未支付
+        profitstatus?: number
+    }
+
+    /* 查询我的推广-推广收益 响应*/
+    interface THJPromotionIncomeRsp {
+        /// 时间
+        profitmonth: string
+        /// 状态 - 1:已支付 2:未支付
+        profitstatus: number
+        /// 金额
+        sumamount: number
+        /// 现货商品代码
+        wrstandardcode: string
+        /// 现货商品ID
+        wrstandardid: number
+        /// 现货商品名称
+        wrstandardname: string
+    }
+
+    /* 查询我的推广-推广收益-明细 请求*/
+    interface THJPromotionIncomeDetailReq {
+        /// 页码
+        page?: number
+        /// 每页条数
+        pagesize?: number
+        /// 用户id
+        userid: number
+        /// 月份,格式:yyyymm
+        mouth: string
+    }
+
+    /* 查询我的推广-推广收益-明细 响应*/
+    interface THJPromotionIncomeDetailRsp {
+        /// 方向
+        buyorsell: string
+        /// 市场
+        market: string
+        /// 金额
+        profitamount: number
+        /// 级别
+        profitroletype: string
+        /// 时间
+        tradetime: string
+        /// 现货商品代码
+        wrstandardcode: string
+        /// 现货商品ID(自增 SEQ_GOODS 确保不重复)
+        wrstandardid: number
+        /// 现货商品名称
+        wrstandardname: string
+    }
+
+    /* 查询我的订单-转让/受让订单 请求*/
+    interface THJPurchaseTransferOrderReq {
+        /// 页码
+        page?: number
+        /// 每页条数
+        pagesize?: number
+        /// 用户id
+        userid: number
+        /// 类型 - 1:转让 2:受让
+        ordertype: number
+    }
+
+    /* 查询我的订单-转让/受让订单 响应*/
+    interface THJPurchaseTransferOrderRsp {
+        /// 买方账号ID
+        buyaccountid: number
+        /// 买方用户ID
+        buyuserid: number
+        /// 协议转让合同地址
+        contractaddr: string
+        /// 现货品种ID
+        deliverygoodsid: number
+        /// 处理状态
+        handlestatus: number
+        /// 市场ID(固定为(64202)
+        marketid: number
+        /// 预售申请ID(184+Unix秒时间戳(10位)+xxxxxx)
+        presaleapplyid: number
+        /// 备注
+        remark: string
+        /// 卖方账号ID
+        sellaccountid: number
+        /// 卖方手续费值
+        sellcharge: number
+        /// 卖方手续费收取方式 1:比率 2:固定
+        sellchargealgorithm: number
+        /// 手续费设置值(交易所部分)
+        sellchargealgorithmvalue: number
+        /// 卖方用户ID
+        selluserid: number
+        /// 交易日(yyyyMMdd)
+        tradedate: string
+        /// 转让金额
+        transferamount: number
+        /// 协议转让ID(332+Unix秒时间戳(10位)+xxxxxx)
+        transferid: number
+        /// 转让价格
+        transferprice: number
+        /// 数量
+        transferqty: number
+        /// 转让状态 - 1:挂牌中 2:已撤销 3:处理中 4:已转让
+        transferstatus: number
+        /// 转让交易日
+        transfertradedate: string
+        /// 仓库ID
+        warehouseid: number
+        /// 仓单要素类型ID
+        wrfactortypeid: number
+        /// 现货商品ID
+        wrstandardid: number
+        /// 采购成交单ID(321+Unix秒时间戳(10位)+xxxxxx)
+        wrtradedetailid: number
+        /// 现货商品名称
+        wrstandardname: string
+        /// 预售价格
+        tradeprice: number
+        /// 买方已付定金
+        payeddeposit: number
+    }
+
+    /* 查询我的订单-转让/受让订单-详情 请求*/
+    interface THJPurchaseTransferOrderDetailReq {
+        /// 采购成交单ID
+        wrtradedetailid: number
+    }
+
+    /* 查询我的订单-转让/受让订单-详情 响应*/
+    interface THJPurchaseTransferOrderDetailRsp {
+        /// 受让人
+        buyusername: string
+        /// 贸易合同地址(买家)
+        contractaddrbuy: string
+        /// 贸易合同地址(卖家)
+        contractaddrsell: string
+        /// 买方已付定金
+        payeddeposit: number
+        /// 转让人
+        sellusername: string
+        /// 预售价格
+        tradeprice: number
+        /// 转让金额
+        transferamount: number
+        /// 转让单号
+        transferid: number
+        /// 转让价格
+        transferprice: number
+        /// 转让状态 - 1:挂牌中 2:已撤销 3:处理中 4:已转让
+        transferstatus: number
+        /// 仓库名称
+        warehousename: string
+        /// 现货商品代码
+        wrstandardcode: string
+        /// 现货商品ID
+        wrstandardid: number
+        /// 现货商品名称
+        wrstandardname: string
+    }
 }