li.shaoyi před 3 roky
rodič
revize
bcd0037c5a
40 změnil soubory, kde provedl 537 přidání a 321 odebrání
  1. 1 1
      src/business/contract/index.ts
  2. 26 22
      src/business/order/index.ts
  3. 7 7
      src/business/trade/index.ts
  4. 18 1
      src/constants/order.ts
  5. 8 3
      src/filters/index.ts
  6. 0 0
      src/packages/mobile/assets/iconfont/iconfont.js
  7. binární
      src/packages/mobile/assets/logo.png
  8. 0 0
      src/packages/mobile/assets/logo.svg
  9. 3 1
      src/packages/mobile/components/base/qrcode/index.vue
  10. 2 1
      src/packages/mobile/components/base/tabbar/index.vue
  11. 6 0
      src/packages/mobile/components/layouts/navback/index.vue
  12. 1 1
      src/packages/mobile/components/layouts/navbar/index.less
  13. 1 1
      src/packages/mobile/components/layouts/view/index.vue
  14. 1 1
      src/packages/mobile/views/bank/hisstatement/index.vue
  15. 1 1
      src/packages/mobile/views/bank/statement/index.vue
  16. 7 1
      src/packages/mobile/views/contract/list/index.vue
  17. 2 2
      src/packages/mobile/views/credit/signin/index.vue
  18. 1 1
      src/packages/mobile/views/home/components/main/index.vue
  19. 7 1
      src/packages/mobile/views/home/components/purchase/index.vue
  20. 1 8
      src/packages/mobile/views/home/components/supply-demand/index.vue
  21. 4 0
      src/packages/mobile/views/home/index.less
  22. 2 5
      src/packages/mobile/views/home/index.vue
  23. 9 9
      src/packages/mobile/views/mine/generalize/index.less
  24. 3 3
      src/packages/mobile/views/mine/generalize/index.vue
  25. 60 52
      src/packages/mobile/views/mine/order/detail/purchasetrade/index.vue
  26. 35 47
      src/packages/mobile/views/mine/order/detail/transfer/index.vue
  27. 37 39
      src/packages/mobile/views/mine/order/list/components/purchasetrade/index.vue
  28. 39 17
      src/packages/mobile/views/mine/order/list/components/transferbuy/index.vue
  29. 39 16
      src/packages/mobile/views/mine/order/list/components/transfersell/index.vue
  30. 37 27
      src/packages/mobile/views/mine/order/list/components/wrorder/index.vue
  31. 37 26
      src/packages/mobile/views/mine/order/list/components/wrtrade/index.vue
  32. 69 4
      src/packages/mobile/views/mine/order/list/index.less
  33. 10 9
      src/packages/mobile/views/mine/order/list/index.vue
  34. 20 2
      src/packages/mobile/views/news/details/index.less
  35. 27 4
      src/packages/mobile/views/news/details/index.vue
  36. 1 1
      src/packages/mobile/views/news/list/index.vue
  37. 1 1
      src/packages/mobile/views/user/logoff/index.vue
  38. 1 1
      src/packages/mobile/views/user/password/index.vue
  39. 1 1
      src/stores/modules/enum.ts
  40. 12 4
      src/types/model/order.d.ts

+ 1 - 1
src/business/contract/index.ts

@@ -60,7 +60,7 @@ export function useContractDetails(wrstandardid: number) {
 
                 res.data.history.forEach(({ c, ts }) => {
                     chartData.price.push(c)
-                    chartData.date.push(formatDate(ts))
+                    chartData.date.push(formatDate(ts, 'YYYY-MM-DD'))
                 })
             },
             complete: () => {

+ 26 - 22
src/business/order/index.ts

@@ -1,13 +1,15 @@
 import { shallowRef } from 'vue'
 import { useDataTable } from '@/hooks/datatable'
-import { queryWrOrderDetail, 
-         queryWrTradeDetail, 
-         queryTHJPurchaseTradeDetail, 
-         queryHoldLB, queryWrOutInApply, 
-         queryTHJPromotionIncome, 
-         queryTHJPromotionIncomeDetail,
-         queryTHJPurchaseTransferOrder, 
-         queryTHJPurchaseTransferOrderDetail } 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'
 
@@ -16,7 +18,7 @@ export function useQueryHoldLB() {
     const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.HoldLBRsp>()
     const loading = shallowRef(false)
     const { getFirstAccountId } = useLoginStore()
-    
+
     const getHoldLB = async (warehouseid?: number, deliverygoodsid?: number, wrstandardid?: number, wrfactortypeid?: number, dgitemname?: string) => {
         loading.value = true
         await queryHoldLB({
@@ -57,7 +59,7 @@ export function useQueryWrOutInApply() {
     const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.WrOutInApplyRsp>()
     const loading = shallowRef(false)
     const { getUserId } = useLoginStore()
-    
+
     const getWrOutInApply = async (begindate?: string, enddate?: string) => {
         loading.value = true
         await queryWrOutInApply({
@@ -95,7 +97,7 @@ export function useQueryWrOrderDetail() {
     const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.WrOrderDetailRsp>()
     const loading = shallowRef(false)
     const { getUserId } = useLoginStore()
-    
+
     const getWrOrderDetail = async (haswr: number, marketid?: number, bcancel?: number, wrtradetype?: number, begindate?: string, enddate?: string) => {
         loading.value = true
         await queryWrOrderDetail({
@@ -137,7 +139,7 @@ export function useQueryWrTradeDetail() {
     const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.WrTradeDetailRsp>()
     const loading = shallowRef(false)
     const { getUserId } = useLoginStore()
-    
+
     const getWrTradeDetail = async (haswr: number, marketid?: number, begindate?: string, enddate?: string) => {
         loading.value = true
         await queryWrTradeDetail({
@@ -177,7 +179,7 @@ export function useTHJPurchaseTradeDetail() {
     const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.THJPurchaseTradeDetailRsp>()
     const loading = shallowRef(false)
     const { getUserId } = useLoginStore()
-    
+
     const getTHJPurchaseTradeDetail = async (type?: number) => {
         loading.value = true
         await queryTHJPurchaseTradeDetail({
@@ -214,7 +216,7 @@ 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({
@@ -251,7 +253,7 @@ 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({
@@ -288,7 +290,7 @@ 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({
@@ -321,18 +323,20 @@ export function useQueryTHJPurchaseTransferOrder() {
 }
 
 // 查询我的订单-转让/受让订单详情
-export function useQueryTTHJPurchaseTransferOrderDetail() {
-    const details = shallowRef<Partial<Model.THJPurchaseTransferOrderDetailRsp[]>>()
+export function useQueryTTHJPurchaseTransferOrderDetail(wrtradedetailid: string) {
+    const details = shallowRef<Model.THJPurchaseTransferOrderDetailRsp>()
     const loading = shallowRef(false)
-    
-    const getTHJPurchaseTransferOrderDetail = (id?: string) => {
+
+    const getTHJPurchaseTransferOrderDetail = () => {
         loading.value = true
         queryTHJPurchaseTransferOrderDetail({
             data: {
-                wrtradedetailid: id ?? '0'
+                wrtradedetailid,
             },
             success: (res) => {
-                details.value = res.data
+                if (res.data.length) {
+                    details.value = res.data[0]
+                }
             },
             complete: () => {
                 loading.value = false

+ 7 - 7
src/business/trade/index.ts

@@ -168,16 +168,16 @@ export function useSpotPresaleTransferListing() {
 }
 
 // 铁合金现货预售转让撤销接口请求
-export function useSpotPresaleTransferCancel() {
+export function useSpotPresaleTransferCancel(wrtradedetailid?: string) {
     const loading = shallowRef(false)
     const { getUserId } = useLoginStore()
 
-    const transferCancelSubmit = (id: string) => {
+    const transferCancelSubmit = () => {
         loading.value = true
         return spotPresaleTransferCancel({
             data: {
                 UserID: getUserId(),
-                WRTradeDetailID: Long.fromString(id),
+                WRTradeDetailID: Long.fromString(wrtradedetailid ?? '0'),
                 ClientSerialNo: v4(), // 客户端流水号
                 ClientType: ClientType.Web // 终端类型
             },
@@ -306,7 +306,7 @@ export function useWrOutInApply(holdlb?: Model.HoldLBRsp) {
 export function useHdWROrder(holdlb?: Model.HoldLBRsp) {
     const loading = shallowRef(false)
     const { getUserId, getFirstAccountId, getLoginId } = useLoginStore()
-    
+
     const formData = reactive<Partial<Proto.HdWROrderReq>>({
         TradeDate: formatDate(new Date().toString(), "YYYYMMDD"),
         IsSpecified: 0,
@@ -331,9 +331,9 @@ export function useHdWROrder(holdlb?: Model.HoldLBRsp) {
     })
 
 
-    const amount = computed( () => {
-        const { OrderQty=0, FixedPrice=0 }=formData
-        return (OrderQty*FixedPrice).toFixed(2)
+    const amount = computed(() => {
+        const { OrderQty = 0, FixedPrice = 0 } = formData
+        return (OrderQty * FixedPrice).toFixed(2)
     })
 
     const listingSubmit = () => {

+ 18 - 1
src/constants/order.ts

@@ -67,7 +67,7 @@ export function getTHJOrderStatusName(value: number) {
  * 获取申请状态类型列表
  * @returns 
  */
- export function getApplyStatusList() {
+export function getApplyStatusList() {
     return getEnumTypeList('WROutInApplyStatus2')
 }
 
@@ -78,4 +78,21 @@ export function getTHJOrderStatusName(value: number) {
 export function getApplyStatusName(value: number) {
     const enums = getApplyStatusList()
     return getEnumTypeName(enums, value)
+}
+
+/**
+ * 获取转让状态列表
+ * @returns 
+ */
+export function getTHJTransferStatusList() {
+    return getEnumTypeList('THJTransferStatus')
+}
+
+/**
+ * 获取转让状态名称
+ * @returns 
+ */
+export function getTHJTransferStatusName(value: number) {
+    const enums = getTHJTransferStatusList()
+    return getEnumTypeName(enums, value)
 }

+ 8 - 3
src/filters/index.ts

@@ -71,11 +71,16 @@ export function handleNoneValue<T>(value: T, suffix = '') {
  * @param suffix 后缀名
  * @returns 
  */
-export function handleNumberValue(value: number, suffix = '') {
-    if (value === 0) {
+export function handleNumberValue(value: number | string, suffix = '') {
+    try {
+        if (Number(value) === 0) {
+            return '--'
+        }
+        return value + suffix
+    }
+    catch {
         return '--'
     }
-    return value + suffix
 }
 
 /**

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
src/packages/mobile/assets/iconfont/iconfont.js


binární
src/packages/mobile/assets/logo.png


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
src/packages/mobile/assets/logo.svg


+ 3 - 1
src/packages/mobile/components/base/qrcode/index.vue

@@ -1,6 +1,8 @@
 <template>
     <van-dialog class="app-qrcode" v-model:show="showDialog" confirm-button-text="取消">
-        <div class="app-qrcode__container" ref="qrcodeRef" />
+        <div class="app-qrcode__container" ref="qrcodeRef">
+            <img src="@mobile/assets/logo.png" />
+        </div>
     </van-dialog>
 </template>
 

+ 2 - 1
src/packages/mobile/components/base/tabbar/index.vue

@@ -2,7 +2,8 @@
   <div class="app-tabbar">
     <div class="app-tabbar__wrapper" :style="styles">
       <template v-for="(item, index) in dataList" :key="index">
-        <div :class="['app-tabbar__item', selectedIndex === index && 'is-active']" @click="onChange(index)">
+        <div :class="['app-tabbar__item', 'app-tabbar__item--' + item.name, selectedIndex === index && 'is-active']"
+          @click="onChange(index)">
           <slot :item="item" :index="index">
             <!--判断是否图片图标-->
             <template v-if="item.iconType === 'image'">

+ 6 - 0
src/packages/mobile/components/layouts/navback/index.vue

@@ -0,0 +1,6 @@
+<template>
+    <div></div>
+</template>
+
+<script lang="ts" setup>
+</script>

+ 1 - 1
src/packages/mobile/components/layouts/navbar/index.less

@@ -20,7 +20,7 @@
             justify-content: center;
             height         : var(--navbar-height);
             line-height    : 1;
-            font-size      : .42rem;
+            font-size      : .36rem;
             color          : var(--navbar-backbutton-color);
             cursor         : pointer;
             padding        : 0 .28rem;

+ 1 - 1
src/packages/mobile/components/layouts/view/index.vue

@@ -52,6 +52,6 @@ watch(() => props.animation, (status) => {
 })
 </script>
 
-<style lang="less" scoped>
+<style lang="less">
 @import './index.less';
 </style>

+ 1 - 1
src/packages/mobile/views/bank/hisstatement/index.vue

@@ -33,7 +33,7 @@ const error = shallowRef(false)
 const columns: Model.TableColumn[] = [
     { prop: 'createtime', label: '时间' },
     { prop: 'businesscode', label: '操作类型' },
-    { prop: 'amount', label: '积分' },
+    { prop: 'amount', label: '金额' },
 ]
 
 const onRefresh = (finish: () => void) => {

+ 1 - 1
src/packages/mobile/views/bank/statement/index.vue

@@ -3,7 +3,7 @@
         <template #header>
             <app-navbar title="资金流水">
                 <template #right>
-                    <Button round @click="routerTo('bank-hisstatement')">更多</Button>
+                    <Button @click="routerTo('bank-hisstatement')">更多</Button>
                 </template>
             </app-navbar>
         </template>

+ 7 - 1
src/packages/mobile/views/contract/list/index.vue

@@ -12,7 +12,7 @@
             <template v-for="(item, index) in dataList" :key="index">
                 <Cell @click="$router.push({ name: 'contract-details', query: { wrstandardid: item.wrstandardid } })">
                     <template #title>
-                        <img :src="getImageUrl(item.thumurls)" />
+                        <img :src="getFirstImage(item.thumurls)" />
                         <span>{{ item.wrstandardname }}</span>
                     </template>
                 </Cell>
@@ -32,6 +32,12 @@ const { pageIndex, pageCount, getWrstandardList } = useContractList()
 const dataList = shallowRef<Model.THJPurchaseTransferRsp[]>([])
 const error = shallowRef(false)
 
+// 获取产品首图
+const getFirstImage = (url: string) => {
+    const images = url.split(',').map((path) => getImageUrl(path))
+    return images[0] ?? ''
+}
+
 const onRefresh = (finish: () => void) => {
     getWrstandardList().then((res) => {
         if (pageIndex.value === 1) {

+ 2 - 2
src/packages/mobile/views/credit/signin/index.vue

@@ -87,7 +87,7 @@
 </template>
 
 <script lang="ts" setup>
-import { shallowRef } from 'vue'
+import { shallowRef, onActivated } from 'vue'
 import { Toast, Button } from 'vant'
 import { fullloading } from '@/utils/vant'
 import { useLoginStore } from '@/stores'
@@ -138,7 +138,7 @@ const getUserAccount = () => {
     })
 }
 
-getUserAccount()
+onActivated(() => getUserAccount())
 </script>
 
 <style lang="less">

+ 1 - 1
src/packages/mobile/views/home/components/main/index.vue

@@ -67,7 +67,7 @@
           <template v-for="(item, index) in newsList" :key="index">
             <Cell class="article-item" title-class="article-item__title" value-class="article-item__time"
               :title="item.title" :value="formatDate(item.creaedate, 'MM/DD')"
-              :to="{ name: 'news-details', params: { details: JSON.stringify(item) } }" />
+              :to="{ name: 'news-details', params: { item: JSON.stringify(item) } }" />
           </template>
         </CellGroup>
       </div>

+ 7 - 1
src/packages/mobile/views/home/components/purchase/index.vue

@@ -12,7 +12,7 @@
       <template v-for="(item, index) in dataList" :key="index">
         <Cell @click="$router.push({ name: 'goods-details', query: { wrstandardid: item.wrstandardid } })">
           <template #title>
-            <img :src="getImageUrl(item.thumurls)" />
+            <img :src="getFirstImage(item.thumurls)" />
             <span>{{ item.wrstandardname }}</span>
           </template>
         </Cell>
@@ -32,6 +32,12 @@ const { pageIndex, pageCount, getWrstandardList } = useWrstandardList()
 const dataList = shallowRef<Model.THJWrstandardRsp[]>([])
 const error = shallowRef(false)
 
+// 获取产品首图
+const getFirstImage = (url: string) => {
+  const images = url.split(',').map((path) => getImageUrl(path))
+  return images[0] ?? ''
+}
+
 const onRefresh = (finish: () => void) => {
   getWrstandardList().then((res) => {
     if (pageIndex.value === 1) {

+ 1 - 8
src/packages/mobile/views/home/components/supply-demand/index.vue

@@ -8,14 +8,7 @@
       </app-navbar>
     </template>
     <div class="home-purchase__container">
-      <CellGroup>
-        <Cell v-for="i in 4" :key="i">
-          <template #title>
-            <img src="http://103.40.249.123:8070/onlineopen/uploadFile/20221020/202210201817131130.jpg" />
-            <span>硅锰合金</span>
-          </template>
-        </Cell>
-      </CellGroup>
+
     </div>
   </app-view>
 </template>

+ 4 - 0
src/packages/mobile/views/home/index.less

@@ -15,6 +15,10 @@
                 }
             }
 
+            &--home.is-active {
+                color: var(--tabbar-icon);
+            }
+
             .app-iconfont {
                 &__icon {
                     font-size: .48rem;

+ 2 - 5
src/packages/mobile/views/home/index.vue

@@ -35,8 +35,7 @@ const tabList: Tabbar[] = [
   {
     name: 'home',
     label: '首页',
-    icon: 'icon-shouye-1',
-    activeIcon: 'icon-shouye'
+    icon: 'icon-thj-logo',
   },
   {
     name: 'purchase',
@@ -59,9 +58,7 @@ const tabList: Tabbar[] = [
 ]
 
 const onChange = (index: number) => {
-  if (![2].includes(index)) {
-    componentId.value = tabList[index].name
-  }
+  componentId.value = tabList[index].name
 }
 
 plus.onPlusReady(() => {

+ 9 - 9
src/packages/mobile/views/mine/generalize/index.less

@@ -50,26 +50,26 @@
     &__tabs {
         background-color: #fff;
     }
-    
+
     &__container {
-        height: 100%;
+        height    : 100%;
         overflow-y: auto;
 
         .list {
-            display: flex;
+            display    : flex;
             align-items: center;
 
             &-row {
-                font-size: .32rem;
+                font-size    : .32rem;
                 border-bottom: 1px solid #eee;
-                padding: .12rem .32rem;
+                padding      : .12rem .32rem;
             }
 
             &-column {
-                flex: 1;
-                display: flex;
+                flex          : 1;
+                display       : flex;
                 flex-direction: column;
-                text-align: center;
+                text-align    : center;
 
                 &:first-child {
                     text-align: left;
@@ -80,7 +80,7 @@
                 }
 
                 span:last-child {
-                    color: #999;
+                    color    : #999;
                     font-size: .24rem;
                 }
             }

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

@@ -14,8 +14,8 @@
                     <span>{{ userAccount.todayrefercount }}</span>
                 </div>
                 <div class="block-right">
-                    <h4>推广编号</h4>
-                    <span @click="showQRCode = true">{{ userAccount.refernum }}</span>
+                    <h4>推广二维码</h4>
+                    <Icon name="qr" size=".48rem" @click="showQRCode = true" />
                 </div>
             </div>
         </div>
@@ -33,7 +33,7 @@
 
 <script lang="ts" setup>
 import { shallowRef, computed } from 'vue'
-import { Tab, Tabs } from 'vant'
+import { Tab, Tabs, Icon } from 'vant'
 import { useLoginStore } from '@/stores'
 import { queryUserAccount } from '@/services/api/account'
 import AppQrcode from '@mobile/components/base/qrcode/index.vue'

+ 60 - 52
src/packages/mobile/views/mine/order/detail/purchasetrade/index.vue

@@ -6,23 +6,21 @@
         <div v-if="detail" class="order-detail__container g-form__container">
             <CellGroup title="采购信息">
                 <Cell title="商品" :value="detail.wrstandardname" />
-                <Cell title="预售价" :value="detail.tradeprice.toFixed(2)" />
+                <Cell title="参考价" :value="detail.tradeprice.toFixed(2)" />
+                <Cell title="数量" :value="detail.tradeqty" />
                 <Cell title="定金" :value="detail.payeddeposit.toFixed(2)" />
-                <Cell title="尾款" :value="detail.remainamount.toFixed(2)" />
+                <Cell title="定金比例" :value="`${(detail.depositrate * 100).toFixed(0)}%`" />
+                <Cell title="总预付款" :value="handleNumberValue(detail.tradeamount.toFixed(2))" />
+                <Cell title="采购价" :value="handleNumberValue(detail.transferprice.toFixed(2))" />
+                <Cell title="实际价" :value="handleNumberValue(detail.lastprice.toFixed(2))" />
+                <Cell title="尾款" :value="handleNumberValue(detail.remainamount.toFixed(2))" />
                 <Cell title="状态" :value="detail.thjorderstatusdisplay" />
-                <Cell title="提货方式" :value="detail.thjdeliverymodedisplay" />
-                <Cell title="联系人" :value="detail.contactname" v-if="detail.contactname" />
-                <Cell title="仓库" :value="detail.warehousename" />
-                <Cell title="数量" :value="detail.tradeqty" />
-                <Cell title="实际价" :value="detail.lastprice.toFixed(2)" />
-                <Cell title="优惠" :value="detail.discountamount.toFixed(2)" />
-                <Cell title="总货款" :value="detail.tradeamount.toFixed(2)" />
-                <Cell title="摘牌时间:" :value="formatDate(detail.tradetime, 'YYYY/MM/DD HH:mm:ss')" />
+                <Cell title="采购时间:" :value="formatDate(detail.tradetime)" />
                 <Cell title="到期日期" :value="detail.enddate" />
-                <Cell title="到期月份:" :value="detail.enddatemonth" />
             </CellGroup>
-            <CellGroup title="提货信息">
-                <Cell title="提货方式" :value="detail.thjdeliverymodedisplay" />
+            <CellGroup title="交割信息">
+                <Cell title="交割方式" :value="detail.thjdeliverymodedisplay" />
+                <Cell title="联系人" :value="detail.contactname" v-if="detail.contactname" />
                 <Cell title="联系方式" :value="detail.contactinfo" v-if="detail.contactinfo" />
                 <Cell title="目的地地址" :value="detail.desaddress" v-if="detail.desaddress" />
                 <Cell title="发票信息" :value="detail.receiptinfo" v-if="detail.receiptinfo" />
@@ -35,8 +33,10 @@
         </div>
         <template #footer>
             <div class="g-form__footer" v-if="detail">
-                <Button block round type="primary" v-if="detail.orderstatus === 1" @click="showDialog">合同转让</Button>
-                <Button block round type="primary" v-if="detail.orderstatus === 9" @click="spotCancelSubmit">转让撤销</Button>
+                <Button block round type="primary" v-if="detail.thjdeliverymode === 1 && detail.orderstatus === 1"
+                    @click="showDialog">合同转让</Button>
+                <Button block round type="primary" v-if="detail.orderstatus === 9"
+                    @click="spotCancelSubmit">撤销转让</Button>
                 <Button block round type="primary" v-if="detail.orderstatus === 5"
                     @click="spotConfirmSubmit">确认交收</Button>
                 <Button block round type="primary" v-if="detail.orderstatus === 3" @click="spotApplySubmit">违约</Button>
@@ -44,10 +44,10 @@
                     @click="spotPlaymentSubmit">支付</Button>
             </div>
         </template>
-
         <!-- 转让价格 -->
-        <van-dialog v-model:show="show" title="合同转让" show-cancel-button @confirm="spotListingSubmit" @cancel="cancelDialog">
-            <Field label="转让价格:" v-model="formData.TransferPrice" placeholder="请输入转让价格" type="digit"></Field>
+        <van-dialog class-name="order-detail__dialog" v-model:show="show" title="合同转让" show-cancel-button
+            @confirm="spotListingSubmit" @cancel="cancelDialog">
+            <input type="number" v-model="formData.TransferPrice" placeholder="请输入转让价格" />
         </van-dialog>
     </app-view>
 </template>
@@ -56,23 +56,15 @@
 import { shallowRef } from 'vue'
 import { useNavigation } from '@/hooks/navigation'
 import { fullloading, dialog } from '@/utils/vant'
-import { CellGroup, Cell, Empty, Button, Toast, Dialog, Field } from 'vant'
-import { formatDate, getUrl } from '@/filters'
+import { CellGroup, Cell, Empty, Button, Toast, Dialog } from 'vant'
+import { formatDate, getUrl, handleNumberValue } from '@/filters'
 import { useSpotPresaleDeliveryConfirm, useSpotPresaleBreachOfContractApply, useSpotPresaleTransferCancel, useSpotPresaleTransferListing, useSpotPresalePlayment } from "@/business/trade";
 
-const vanDialog=Dialog.Component
+const vanDialog = Dialog.Component
 
-const { router } = useNavigation()
+const { route, router } = useNavigation()
 /// 是否显示dialog
 const show = shallowRef(false)
-
-const { confirmSubmit } = useSpotPresaleDeliveryConfirm()
-const { applySubmit } = useSpotPresaleBreachOfContractApply()
-const { playmentSubmit } = useSpotPresalePlayment()
-const { transferCancelSubmit } = useSpotPresaleTransferCancel()
-const { listingSubmit, formData } = useSpotPresaleTransferListing()
-
-const { route } = useNavigation()
 const item = route.params.item
 const detail = shallowRef<Model.THJPurchaseTradeDetailRsp>()
 
@@ -80,6 +72,12 @@ if (item) {
     detail.value = JSON.parse(item.toString())
 }
 
+const { confirmSubmit } = useSpotPresaleDeliveryConfirm()
+const { applySubmit } = useSpotPresaleBreachOfContractApply()
+const { playmentSubmit } = useSpotPresalePlayment()
+const { transferCancelSubmit } = useSpotPresaleTransferCancel(detail.value?.wrtradedetailid)
+const { listingSubmit, formData } = useSpotPresaleTransferListing()
+
 // 打开pdf文件
 const openPDF = (file?: string) => {
     if (file) {
@@ -92,12 +90,12 @@ const spotConfirmSubmit = () => {
     const param = detail.value
     if (param) {
         dialog('确认要交收吗?', {
-        showCancelButton: true
-    }).then(() => {
-        fullloading((hideLoading) => {
+            showCancelButton: true
+        }).then(() => {
+            fullloading((hideLoading) => {
                 confirmSubmit(param.wrtradedetailid).then(() => {
                     hideLoading()
-                    dialog('确认交收提交成功,请耐心等待审核。').then(() => {
+                    dialog('确认交收提交成功。').then(() => {
                         router.back()
                     })
                 }).catch((err) => {
@@ -139,7 +137,7 @@ const spotPlaymentSubmit = () => {
             fullloading((hideLoading) => {
                 playmentSubmit(param.wrtradedetailid).then(() => {
                     hideLoading()
-                    dialog('付款提交成功,请耐心等待审核。').then(() => {
+                    dialog('付款提交成功。').then(() => {
                         router.back()
                     })
                 }).catch((err) => {
@@ -157,7 +155,7 @@ const spotListingSubmit = () => {
         fullloading((hideLoading) => {
             listingSubmit(param.wrtradedetailid).then(() => {
                 hideLoading()
-                dialog('合同转让提交成功,请耐心等待审核。').then(() => {
+                dialog('合同转让提交成功。').then(() => {
                     router.back()
                 })
             }).catch((err) => {
@@ -169,24 +167,20 @@ const spotListingSubmit = () => {
 
 /// 转让撤销申请
 const spotCancelSubmit = () => {
-    const param = detail.value
-    if (param) {
-        dialog('确认要转让撤销吗?', {
-            showCancelButton: true
-        }).then(() => {
-            fullloading((hideLoading) => {
-                transferCancelSubmit(param.wrtradedetailid).then(() => {
-                    hideLoading()
-                    dialog('转让撤销提交成功,请耐心等待审核。').then(() => {
-                        router.back()
-                    })
-                }).catch((err) => {
-                    Toast.fail(err)
+    dialog('确认要撤销转让吗?', {
+        showCancelButton: true
+    }).then(() => {
+        fullloading((hideLoading) => {
+            transferCancelSubmit().then(() => {
+                hideLoading()
+                dialog('撤销转让提交成功。').then(() => {
+                    router.back()
                 })
+            }).catch((err) => {
+                Toast.fail(err)
             })
         })
-    }
-    
+    })
 }
 
 /// 是否显示Dialog
@@ -200,5 +194,19 @@ const cancelDialog = () => {
 </script>
 
 <style lang="less">
-
+.order-detail {
+    &__dialog {
+        .van-dialog__content {
+            padding: .48rem;
+
+            input {
+                width: 100%;
+                font-size: .28rem;
+                border: 1px solid #ddd;
+                border-radius: .12rem;
+                padding: .2rem;
+            }
+        }
+    }
+}
 </style>

+ 35 - 47
src/packages/mobile/views/mine/order/detail/transfer/index.vue

@@ -5,18 +5,18 @@
         </template>
         <div v-if="details" class="transfer-detail__container g-form__container">
             <CellGroup title="转让信息">
-                <Cell title="商品" :value="handleNoneValue(details[0]?.wrstandardname)" />
-                <Cell title="仓库" :value="handleNoneValue(details[0]?.warehousename)" />
-                <Cell title="转让价格" :value="details[0]?.transferprice.toFixed(2)" />
-                <Cell title="转让数量" :value="obj?.transferqty" />
-                <Cell title="转让金额" :value="details[0]?.transferamount.toFixed(2)" />
-                <Cell title="预售价格" :value="details[0]?.tradeprice.toFixed(2)" />
-                <Cell title="已付定金" :value="details[0]?.payeddeposit" />
-                <Cell title="转让状态" :value="details[0]?.transferstatus" />
-                <Cell title="受让人" :value="handleNoneValue(details[0]?.buyusername)" />
-                <Cell title="转让单号" :value="handleNoneValue(details[0]?.transferid)" />
-                <Cell title="合同单号" :value="details[0]?.wrstandardid" v-if="details[0]?.transferstatus === 4" :is-link="!!details[0]?.contractaddrbuy"
-                    @click="openPDF(details[0]?.contractaddrbuy)" />
+                <Cell title="商品" :value="handleNoneValue(details.wrstandardname)" />
+                <Cell title="仓库" :value="handleNoneValue(details.warehousename)" />
+                <Cell title="转让价格" :value="details.transferprice.toFixed(2)" />
+                <Cell title="转让数量" :value="details.transferqty" />
+                <Cell title="转让金额" :value="details.transferamount.toFixed(2)" />
+                <Cell title="预售价格" :value="details.tradeprice.toFixed(2)" />
+                <Cell title="已付定金" :value="details.payeddeposit" />
+                <Cell title="转让状态" :value="getTHJTransferStatusName(details.transferstatus)" />
+                <Cell title="受让人" :value="handleNoneValue(details.buyusername)" />
+                <Cell title="转让单号" :value="handleNoneValue(details.transferid)" />
+                <Cell title="合同单号" :value="details.wrstandardid" v-if="details.transferstatus === 4"
+                    :is-link="!!details.contractaddrbuy" @click="openPDF(details?.contractaddrbuy)" />
             </CellGroup>
         </div>
         <div v-else>
@@ -24,32 +24,28 @@
         </div>
         <template #footer>
             <div class="g-form__footer" v-if="details">
-                <Button block round type="primary" v-if="details[0]?.transferstatus === 1" @click="spotCancelSubmit">撤销</Button>
+                <Button block round type="primary" v-if="details.transferstatus === 1"
+                    @click="spotCancelSubmit">撤销</Button>
             </div>
         </template>
     </app-view>
 </template>
 
 <script lang="ts" setup>
-import { shallowRef } from 'vue'
 import { useNavigation } from '@/hooks/navigation'
 import { fullloading, dialog } from '@/utils/vant'
 import { CellGroup, Cell, Empty, Button, Toast } from 'vant'
 import { getUrl } from '@/filters'
-import { useSpotPresaleTransferCancel } from "@/business/trade";
-import { useQueryTTHJPurchaseTransferOrderDetail } from "@/business/order";
+import { useSpotPresaleTransferCancel } from "@/business/trade"
+import { useQueryTTHJPurchaseTransferOrderDetail } from "@/business/order"
 import { handleNoneValue } from '@/filters'
+import { getTHJTransferStatusName } from "@/constants/order"
 
-const { router } = useNavigation()
-const { transferCancelSubmit } = useSpotPresaleTransferCancel()
-const { getTHJPurchaseTransferOrderDetail, details } = useQueryTTHJPurchaseTransferOrderDetail()
-const { route } = useNavigation()
-const item = route.params.item
-const obj = shallowRef<Model.THJPurchaseTransferOrderRsp>()
+const { router, getQueryString } = useNavigation()
+const wrtradedetailid = getQueryString('id')
 
-if (item) {
-    obj.value = JSON.parse(item.toString())
-}
+const { getTHJPurchaseTransferOrderDetail, details } = useQueryTTHJPurchaseTransferOrderDetail(wrtradedetailid)
+const { transferCancelSubmit } = useSpotPresaleTransferCancel(wrtradedetailid)
 
 // 打开pdf文件
 const openPDF = (file?: string) => {
@@ -58,32 +54,24 @@ const openPDF = (file?: string) => {
     }
 }
 
-/// 查询数据
-getTHJPurchaseTransferOrderDetail(obj.value?.wrtradedetailid)
-
 /// 转让撤销申请
 const spotCancelSubmit = () => {
-    const param = obj.value
-    if (param) {
-        dialog('确认要转让撤销吗?', {
-            showCancelButton: true
-        }).then(() => {
-            fullloading((hideLoading) => {
-                transferCancelSubmit(param.wrtradedetailid).then(() => {
-                    hideLoading()
-                    dialog('转让撤销提交成功,请耐心等待审核。').then(() => {
-                        router.back()
-                    })
-                }).catch((err) => {
-                    Toast.fail(err)
+    dialog('确认要转让撤销吗?', {
+        showCancelButton: true
+    }).then(() => {
+        fullloading((hideLoading) => {
+            transferCancelSubmit().then(() => {
+                hideLoading()
+                dialog('转让撤销提交成功,请耐心等待审核。').then(() => {
+                    router.back()
                 })
+            }).catch((err) => {
+                Toast.fail(err)
             })
         })
-    }
-    
+    })
 }
 
-</script>
-
-<style lang="less">
-</style>
+/// 查询数据
+getTHJPurchaseTransferOrderDetail()
+</script>

+ 37 - 39
src/packages/mobile/views/mine/order/list/components/purchasetrade/index.vue

@@ -1,70 +1,64 @@
+<!-- 我的订单-采购订单 -->
 <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" />
-            <!-- <ul>
-                <li v-for="(item, index) in dataList" :key="index">
-                    <div>
-                        <div>
-                            <span>{{ item.warehousename }}</span>
+        <app-pull-refresh ref="pullRefreshRef" class="order-list__wrapper" v-model:error="error"
+            v-model:pageIndex="pageIndex" :page-count="pageCount" @refresh="onRefresh">
+            <ul class="section">
+                <li class="section-item" v-for="(item, index) in dataList" :key="index">
+                    <div class="section-item__titlebar">
+                        <div class="left">
+                            <span>{{ item.wrstandardname }}</span>
                             <span>{{ item.enddatemonth }}</span>
-                            <span>{{ item.depositrate }}</span>
-                            <span>{{ item.tradeqty }}</span>
+                            <span>{{ (item.depositrate * 100).toFixed(0) }}%</span>
+                            <span>{{ item.tradeqty }}{{ getGoodsUnitName(item.unitid) }}</span>
                         </div>
-                        <div>
+                        <div class="right">
                             <span>{{ item.thjorderstatusdisplay }}</span>
                         </div>
                     </div>
-                    <div>
-                        <table>
+                    <div class="section-item__content">
+                        <table cellspacing="0" cellpadding="0">
                             <tr>
-                                <td>定金</td>
-                                <td>{{ item.payeddeposit }}</td>
-                                <td>参考价</td>
-                                <td>0</td>
-                                <td>到期日</td>
-                                <td>0</td>
+                                <th>定金</th>
+                                <td>{{ handleNumberValue(item.payeddeposit) }}</td>
+                                <th>参考价</th>
+                                <td>{{ handleNumberValue(item.tradeprice) }}</td>
+                                <th>到期日</th>
+                                <td>{{ item.enddate }}</td>
                             </tr>
                             <tr>
-                                <td>购买价</td>
-                                <td>0</td>
-                                <td>实际价</td>
-                                <td>0</td>
-                                <td>尾款</td>
-                                <td>0</td>
+                                <th>购买价</th>
+                                <td>{{ handleNumberValue(item.transferprice) }}</td>
+                                <th>实际价</th>
+                                <td>{{ handleNumberValue(item.lastprice) }}</td>
+                                <th>尾款</th>
+                                <td>{{ handleNumberValue(item.remainamount) }}</td>
                             </tr>
                         </table>
-                        <Button @click="onClick(item)">详情</Button>
+                    </div>
+                    <div class="section-item__btnbar">
+                        <Button size="small" @click="onClick(item)" round>详情</Button>
                     </div>
                 </li>
-            </ul> -->
+            </ul>
         </app-pull-refresh>
     </app-view>
 </template>
 
 <script lang="ts" setup>
-import { shallowRef } from 'vue'
+import { shallowRef, onActivated } from 'vue'
 import { Button } from 'vant'
 import { useNavigation } from '@/hooks/navigation'
+import { handleNumberValue } from '@/filters'
+import { getGoodsUnitName } from '@/constants/unit'
 import { useTHJPurchaseTradeDetail } 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, getTHJPurchaseTradeDetail } = useTHJPurchaseTradeDetail()
 const dataList = shallowRef<Model.THJPurchaseTradeDetailRsp[]>([])
 const error = shallowRef(false)
-
-const columns: Model.TableColumn[] = [
-    { prop: 'wrstandardname', label: '商品' },
-    { prop: 'tradeqty', label: '数量' },
-    { prop: 'tradeprice', label: '预售价' },
-    { prop: 'lastprice', label: '实际价' },
-    { prop: 'payeddeposit', label: '定金' },
-    { prop: 'remainamount', label: '尾款' },
-    { prop: 'thjorderstatusdisplay', label: '状态' },
-]
+const pullRefreshRef = shallowRef()
 
 const onClick = (item: Model.THJPurchaseTradeDetailRsp) => {
     router.push({ name: 'purchase-trade-detail', params: { item: JSON.stringify(item) } })
@@ -83,4 +77,8 @@ const onRefresh = (finish: () => void) => {
         finish()
     })
 }
+
+onActivated(() => {
+    pullRefreshRef.value?.refresh()
+})
 </script>

+ 39 - 17
src/packages/mobile/views/mine/order/list/components/transferbuy/index.vue

@@ -1,37 +1,59 @@
+<!-- 我的订单-转让成交 -->
 <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 class="order-list__wrapper" v-model:error="error" v-model:pageIndex="pageIndex"
+            :page-count="pageCount" @refresh="onRefresh">
+            <ul class="section">
+                <li class="section-item" v-for="(item, index) in dataList" :key="index">
+                    <div class="section-item__titlebar">
+                        <div class="left">
+                            <span>{{ item.wrstandardname }}</span>
+                        </div>
+                    </div>
+                    <div class="section-item__content">
+                        <table cellspacing="0" cellpadding="0">
+                            <tr>
+                                <th>数量</th>
+                                <td>{{ item.transferqty.toString() + getGoodsUnitName(item.unitid) }}</td>
+                                <th>转让价</th>
+                                <td>{{ handleNumberValue(item.transferprice, '元/' + getGoodsUnitName(item.unitid)) }}
+                                </td>
+                                <th>金额</th>
+                                <td>{{ handleNumberValue(item.transferamount) }}元</td>
+                            </tr>
+                            <tr>
+                                <th>预售价格</th>
+                                <td>{{ handleNumberValue(item.tradeprice) }}</td>
+                                <th>已付定金</th>
+                                <td>{{ handleNumberValue(item.payeddeposit) }}</td>
+                            </tr>
+                        </table>
+                    </div>
+                    <div class="section-item__btnbar">
+                        <Button size="small" @click="onClick(item)" round>详情</Button>
+                    </div>
+                </li>
+            </ul>
         </app-pull-refresh>
     </app-view>
 </template>
 
 <script lang="ts" setup>
-
 import { shallowRef } from 'vue'
+import { Button } from 'vant'
 import { useNavigation } from '@/hooks/navigation'
+import { getGoodsUnitName } from '@/constants/unit'
+import { handleNumberValue } from '@/filters'
 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 onClick = (item: Model.THJPurchaseTransferOrderRsp) => {
+    router.push({ name: 'transfer-detail', query: { id: item.wrtradedetailid } })
 }
 
 const onRefresh = (finish: () => void) => {

+ 39 - 16
src/packages/mobile/views/mine/order/list/components/transfersell/index.vue

@@ -1,9 +1,39 @@
+<!-- 我的订单-转让委托 -->
 <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 class="order-list__wrapper" v-model:error="error" v-model:pageIndex="pageIndex"
+            :page-count="pageCount" @refresh="onRefresh">
+            <ul class="section">
+                <li class="section-item" v-for="(item, index) in dataList" :key="index">
+                    <div class="section-item__titlebar">
+                        <div class="left">
+                            <span>{{ item.wrstandardname }}</span>
+                        </div>
+                    </div>
+                    <div class="section-item__content">
+                        <table cellspacing="0" cellpadding="0">
+                            <tr>
+                                <th>数量</th>
+                                <td>{{ item.transferqty.toString() + getGoodsUnitName(item.unitid) }}</td>
+                                <th>转让价</th>
+                                <td>{{ handleNumberValue(item.transferprice, '元/' + getGoodsUnitName(item.unitid)) }}
+                                </td>
+                                <th>金额</th>
+                                <td>{{ handleNumberValue(item.transferamount) }}元</td>
+                            </tr>
+                            <tr>
+                                <th>预售价格</th>
+                                <td>{{ handleNumberValue(item.tradeprice) }}</td>
+                                <th>已付定金</th>
+                                <td>{{ handleNumberValue(item.payeddeposit) }}</td>
+                            </tr>
+                        </table>
+                    </div>
+                    <div class="section-item__btnbar">
+                        <Button size="small" @click="onClick(item)" round>详情</Button>
+                    </div>
+                </li>
+            </ul>
         </app-pull-refresh>
     </app-view>
 </template>
@@ -11,27 +41,20 @@
 <script lang="ts" setup>
 
 import { shallowRef } from 'vue'
+import { Button } from 'vant'
 import { useNavigation } from '@/hooks/navigation'
+import { getGoodsUnitName } from '@/constants/unit'
+import { handleNumberValue } from '@/filters'
 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 onClick = (item: Model.THJPurchaseTransferOrderRsp) => {
+    router.push({ name: 'transfer-detail', query: { id: item.wrtradedetailid } })
 }
 
 const onRefresh = (finish: () => void) => {

+ 37 - 27
src/packages/mobile/views/mine/order/list/components/wrorder/index.vue

@@ -1,30 +1,49 @@
+<!-- 我的订单-供求委托 -->
 <template>
     <app-view class="wrorderdetail">
-        <app-pull-refresh v-model:pageIndex="pageIndex" v-model:error="error" :page-count="pageCount"
-            @refresh="onRefresh">
-            <app-list :columns="columns" :data-list="dataList" @click="onClick">
-                <!-- 方向 -->
-                <template #buyorsell="{ value }">
-                    {{ getBuyOrSellName(value) }}
-                </template>
-                <!-- 状态 -->
-                <template #wrtradeorderstatus="{ value }">
-                    {{ getTHJOrderStatusName(value) }}
-                </template>
-            </app-list>
-            <!-- <Button>更多</Button> -->
+        <app-pull-refresh class="order-list__wrapper" v-model:pageIndex="pageIndex" v-model:error="error"
+            :page-count="pageCount" @refresh="onRefresh">
+            <ul class="section">
+                <li class="section-item" v-for="(item, index) in dataList" :key="index">
+                    <div class="section-item__titlebar">
+                        <div class="left">
+                            <span>{{ item.wrstandardname }}</span>
+                        </div>
+                        <div class="right">
+                            <span>{{ getTHJOrderStatusName(item.wrtradeorderstatus) }}</span>
+                        </div>
+                    </div>
+                    <div class="section-item__content">
+                        <table cellspacing="0" cellpadding="0">
+                            <tr>
+                                <th>挂牌数量</th>
+                                <td>{{ item.orderqty }}</td>
+                                <th>挂牌价格</th>
+                                <td>{{ item.fixedprice }}</td>
+                                <th>成交数量</th>
+                                <td>{{ item.tradeqty }}</td>
+                            </tr>
+                            <tr>
+                                <td>{{ handleNoneValue(item.warehousename) }}</td>
+                            </tr>
+                        </table>
+                    </div>
+                    <div class="section-item__btnbar">
+                        <Button size="small" @click="onClick(item)" round>详情</Button>
+                    </div>
+                </li>
+            </ul>
         </app-pull-refresh>
     </app-view>
 </template>
 
 <script lang="ts" setup>
-
 import { shallowRef } from 'vue'
-// import { Button } from 'vant'
-import { getTHJOrderStatusName, getBuyOrSellName } from '@/constants/order'
+import { Button } from 'vant'
+import { handleNoneValue } from '@/filters'
+import { getTHJOrderStatusName } from '@/constants/order'
 import { useQueryWrOrderDetail } from '@/business/order'
 import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
-import AppList from '@mobile/components/base/list/index.vue'
 import { useNavigation } from '@/hooks/navigation'
 
 const { router } = useNavigation()
@@ -32,16 +51,7 @@ const { pageIndex, pageCount, getWrOrderDetail } = useQueryWrOrderDetail()
 const dataList = shallowRef<Model.WrOrderDetailRsp[]>([])
 const error = shallowRef(false)
 
-const columns: Model.TableColumn[] = [
-    { prop: 'wrstandardname', label: '商品' },
-    { prop: 'buyorsell', label: '方向' },
-    { prop: 'fixedprice', label: '挂牌价格' },
-    { prop: 'orderqty', label: '挂牌数量' },
-    { prop: 'tradeqty', label: '成交数量' },
-    { prop: 'wrtradeorderstatus', label: '状态' },
-]
-
-const onClick = (item: Model.THJPurchaseTradeDetailRsp) => {
+const onClick = (item: Model.WrOrderDetailRsp) => {
     router.push({ name: 'wrorder-detail', params: { item: JSON.stringify(item) } })
 }
 

+ 37 - 26
src/packages/mobile/views/mine/order/list/components/wrtrade/index.vue

@@ -1,30 +1,50 @@
+<!-- 我的订单-供求成交 -->
 <template>
     <app-view class="wrtradedetail">
-        <app-pull-refresh v-model:pageIndex="pageIndex" :page-count="pageCount" v-model:error="error"
-            @refresh="onRefresh">
-            <app-list :columns="columns" :data-list="dataList" @click="onClick">
-                <!-- 方向 -->
-                <template #buyorsell="{ value }">
-                    {{ getBuyOrSellName(value) }}
-                </template>
-                <!-- 成交时间 -->
-                <template #tradetime="{ value }">
-                    <span>{{ formatDate(value, 'YYYY-MM-DD') }}</span>
-                    <span>{{ formatDate(value, 'HH:mm:ss') }}</span>
-                </template>
-            </app-list>
-            <!-- <Button @click="routerTo('')">更多</Button> -->
+        <app-pull-refresh class="order-list__wrapper" v-model:pageIndex="pageIndex" :page-count="pageCount"
+            v-model:error="error" @refresh="onRefresh">
+            <ul class="section">
+                <li class="section-item" v-for="(item, index) in dataList" :key="index">
+                    <div class="section-item__titlebar">
+                        <div class="left">
+                            <span>{{ item.wrstandardname }}</span>
+                            <span>{{ getBuyOrSellName(item.buyorsell) }}</span>
+                        </div>
+                        <div class="right">
+                            <span>{{ formatDate(item.tradetime) }}</span>
+                        </div>
+                    </div>
+                    <div class="section-item__content">
+                        <table cellspacing="0" cellpadding="0">
+                            <tr>
+                                <th>挂牌数量</th>
+                                <td>{{ item.tradeqty }}</td>
+                                <th>成交价格</th>
+                                <td>{{ item.tradeprice }}</td>
+                                <th>金额</th>
+                                <td>{{ item.tradeqty }}</td>
+                            </tr>
+                            <tr>
+                                <td>{{ handleNoneValue(item.warehousename) }}</td>
+                            </tr>
+                        </table>
+                    </div>
+                    <div class="section-item__btnbar">
+                        <Button size="small" @click="onClick(item)" round>详情</Button>
+                    </div>
+                </li>
+            </ul>
         </app-pull-refresh>
     </app-view>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
-import { formatDate } from '@/filters'
+import { Button } from 'vant'
+import { formatDate, handleNoneValue } from '@/filters'
 import { getBuyOrSellName } from '@/constants/order'
 import { useQueryWrTradeDetail } from '@/business/order'
 import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
-import AppList from '@mobile/components/base/list/index.vue'
 import { useNavigation } from '@/hooks/navigation'
 
 const { router } = useNavigation()
@@ -32,19 +52,10 @@ const { pageIndex, pageCount, getWrTradeDetail } = useQueryWrTradeDetail()
 const dataList = shallowRef<Model.WrTradeDetailRsp[]>([])
 const error = shallowRef(false)
 
-const onClick = (item: Model.THJPurchaseTradeDetailRsp) => {
+const onClick = (item: Model.WrTradeDetailRsp) => {
     router.push({ name: 'wrtrade-detail', params: { item: JSON.stringify(item) } })
 }
 
-const columns: Model.TableColumn[] = [
-    { prop: 'wrstandardname', label: '商品' },
-    { prop: 'buyorsell', label: '方向' },
-    { prop: 'tradeprice', label: '成交价格' },
-    { prop: 'orderqty', label: '成交数量' },
-    { prop: 'tradeqty', label: '成交金额' },
-    { prop: 'tradetime', label: '成交时间' },
-]
-
 const onRefresh = (finish: () => void) => {
     /// 查询未完成
     getWrTradeDetail(1).then((res) => {

+ 69 - 4
src/packages/mobile/views/mine/order/list/index.less

@@ -1,17 +1,82 @@
-.mine-order {
+.order-list {
     .van-tabs {
         display       : flex;
         flex-direction: column;
         height        : 100%;
 
         &__content {
-            flex       : 1;
-            overflow-y : auto;
-            padding-top: .2rem;
+            flex      : 1;
+            overflow-y: auto;
         }
 
         .van-tab__panel {
             height: 100%;
         }
     }
+
+    &__wrapper {
+        .section {
+            padding       : .2rem;
+            padding-bottom: 0;
+
+            &-item {
+                background-color: #fff;
+                border-radius   : .16rem;
+                padding         : .24rem;
+
+                &:not(:first-child) {
+                    margin-top: .2rem;
+                }
+
+                &__titlebar {
+                    display        : flex;
+                    justify-content: space-between;
+                    align-items    : center;
+                    margin-bottom  : .2rem;
+
+                    .left {
+                        span {
+                            &:first-child {
+                                margin-right: .2rem;
+                            }
+
+                            &:not(:first-child):not(:last-child) {
+                                &::after {
+                                    content: '/';
+                                    margin : 0 .1rem;
+                                }
+                            }
+                        }
+                    }
+
+                    .right {
+                        font-size: .24rem;
+                        color    : #999;
+                    }
+                }
+
+                &__content {
+                    table {
+                        width    : 100%;
+                        font-size: .24rem;
+
+                        th {
+                            font-weight: normal;
+                            color      : #999;
+                            padding    : .08rem 0;
+                        }
+                    }
+                }
+
+                &__btnbar {
+                    text-align: right;
+
+                    .van-button {
+                        width       : 1.6rem;
+                        border-width: 1px;
+                    }
+                }
+            }
+        }
+    }
 }

+ 10 - 9
src/packages/mobile/views/mine/order/list/index.vue

@@ -1,27 +1,28 @@
+<!-- 我的订单 -->
 <template>
-    <app-view class="mine-order">
+    <app-view class="order-list">
         <template #header>
             <app-navbar title="我的订单">
                 <template #right>
-                    <Button round @click="onMoreClick" v-if="activeTab != 2">更多</Button>
+                    <Button @click="onMoreClick" v-if="activeTab != 2">更多</Button>
                 </template>
             </app-navbar>
         </template>
         <Tabs v-model:active="activeTab">
             <Tab title="采购订单">
-                <purchase-trade />
+                <purchase-trade v-if="activeTab === 0" />
             </Tab>
             <Tab title="转让委托">
-                <transfer-sell />
+                <transfer-sell v-if="activeTab === 1" />
             </Tab>
-            <Tab title="让成交">
-                <transfer-buy />
+            <Tab title="让成交">
+                <transfer-buy v-if="activeTab === 2" />
             </Tab>
             <Tab title="供求委托">
-                <wr-order />
+                <wr-order v-if="activeTab === 3" />
             </Tab>
             <Tab title="供求成交">
-                <wr-trade />
+                <wr-trade v-if="activeTab === 4" />
             </Tab>
         </Tabs>
     </app-view>
@@ -29,7 +30,7 @@
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
-import { Tab, Tabs } from 'vant'
+import { Tab, Tabs, Button } from 'vant'
 import { useNavigation } from '@/hooks/navigation'
 import PurchaseTrade from './components/purchasetrade/index.vue'
 import WrOrder from './components/wrorder/index.vue'

+ 20 - 2
src/packages/mobile/views/news/details/index.less

@@ -1,7 +1,10 @@
+@import '@mobile/assets/themes/base/mixin.less';
+
 .new-details {
+    background-color: #fff;
+
     &__container {
-        background-color: #fff;
-        padding         : .32rem;
+        padding: .32rem;
 
         >h1 {
             font-size  : .35rem;
@@ -30,4 +33,19 @@
             }
         }
     }
+
+    &__list {
+        .article-item {
+            &__title {
+                span {
+                    .mixin-text-overflow()
+                }
+            }
+
+            &__time {
+                flex       : initial;
+                margin-left: .48rem;
+            }
+        }
+    }
 }

+ 27 - 4
src/packages/mobile/views/news/details/index.vue

@@ -11,23 +11,46 @@
             </h4>
             <p v-html="formatHtmlString(details.context)"></p>
         </section>
+        <template v-if="false">
+            <Divider>热门资讯</Divider>
+            <CellGroup class="new-details__list">
+                <template v-for="(item, index) in newsList" :key="index">
+                    <Cell class="article-item" title-class="article-item__title" value-class="article-item__time"
+                        :title="item.title" :value="formatDate(item.creaedate, 'MM/DD')"
+                        :to="{ name: 'news-details', params: { item: JSON.stringify(item), columnid } }" replace />
+                </template>
+            </CellGroup>
+        </template>
     </app-view>
 </template>
 
 <script lang="ts" setup>
-
 import { shallowRef } from 'vue'
+import { CellGroup, Cell, Divider } from 'vant'
+import { formatDate } from '@/filters'
 import { useNavigation } from '@/hooks/navigation'
 import { formatHtmlString } from '@/filters'
+import { querySiteColumnDetail } from '@/services/api/news'
 
 const { route } = useNavigation()
-const params = route.params.details
+const { item, columnid } = route.params
 const details = shallowRef<Model.SiteColumnDetailRsp>()
+const newsList = shallowRef<Model.SiteColumnDetailRsp[]>([])
 
-if (params) {
-    details.value = JSON.parse(params.toString())
+if (item) {
+    details.value = JSON.parse(item.toString())
 }
 
+querySiteColumnDetail({
+    data: {
+        columnid: columnid ? Number(columnid) : undefined,
+        page: 1,
+        pagesize: 10,
+    },
+    success: (res) => {
+        newsList.value = res.data.filter((e) => e.id !== details.value?.id)
+    }
+})
 </script>
 
 <style lang="less">

+ 1 - 1
src/packages/mobile/views/news/list/index.vue

@@ -14,7 +14,7 @@
       <template v-for="(item, index) in dataList" :key="index">
         <Cell class="article-item" title-class="article-item__title" value-class="article-item__time"
           :title="item.title" :value="formatDate(item.creaedate, 'MM/DD')"
-          :to="{ name: 'news-details', params: { details: JSON.stringify(item) } }" />
+          :to="{ name: 'news-details', params: { item: JSON.stringify(item), columnid: currentColumnId } }" />
       </template>
     </app-pull-refresh>
   </app-view>

+ 1 - 1
src/packages/mobile/views/user/logoff/index.vue

@@ -1,5 +1,5 @@
 <template>
-    <app-view class="g-form logoff">
+    <app-view class="g-form logoff" :loading="false">
         <template #header>
             <app-navbar title="注销服务" />
         </template>

+ 1 - 1
src/packages/mobile/views/user/password/index.vue

@@ -1,5 +1,5 @@
 <template>
-    <app-view class="g-form user-password">
+    <app-view class="g-form user-password" :loading="false">
         <template #header>
             <app-navbar title="修改密码" />
         </template>

+ 1 - 1
src/stores/modules/enum.ts

@@ -16,7 +16,7 @@ interface StoreState {
     loading: boolean;
     allEnums: ShallowRef<Model.EnumRsp[]>;
 }
-const enumKeys = ['clientType', 'scoreConfigType', 'accountBusinessCode', 'certificatetype', 'signstatus', 'thjOrderStatus', 'thjDeliveryMode', 'goodsunit', 'WROutInApplyStatus2'] as const
+const enumKeys = ['clientType', 'scoreConfigType', 'accountBusinessCode', 'certificatetype', 'signstatus', 'thjOrderStatus', 'thjDeliveryMode', 'goodsunit', 'WROutInApplyStatus2', 'THJTransferStatus'] as const
 
 /**
  * 枚举存储类

+ 12 - 4
src/types/model/order.d.ts

@@ -174,9 +174,9 @@ declare namespace Model {
         /// 品种名称
         deliverygoodsname: string
         /// 交收月
-        deliverymonth: string      
+        deliverymonth: string
         /// 结束交易日(yyyymmdd)
-        enddate: string       
+        enddate: string
         /// 单位名称
         enumdicname: string
         /// 是否有仓单-卖方 - 0:无仓单 1:有仓单
@@ -323,6 +323,10 @@ declare namespace Model {
         tradeqty: number
         /// 摘牌时间
         tradetime: string
+        // 转让价格 - 购买价
+        transferprice: number;
+        // 商品单位
+        unitid: number;
         /// 仓库ID
         warehouseid: number
         /// 仓库名称
@@ -354,7 +358,7 @@ declare namespace Model {
         /// 仓单要素id
         wrfactortypeid?: number
         /// 商品要素项名称模糊匹配, 逗号隔开, 如 产地1,品牌1,规格12mm
-        dgitemname?: string 
+        dgitemname?: string
     }
 
     /* 查询仓单持有记录 响应*/
@@ -613,6 +617,8 @@ declare namespace Model {
         transferstatus: number
         /// 转让交易日
         transfertradedate: string
+        // 现货商品单位ID
+        unitid: number;
         /// 仓库ID
         warehouseid: number
         /// 仓单要素类型ID
@@ -652,9 +658,11 @@ declare namespace Model {
         /// 转让金额
         transferamount: number
         /// 转让单号
-        transferid: number
+        transferid: string
         /// 转让价格
         transferprice: number
+        // 转让数量
+        transferqty: number;
         /// 转让状态 - 1:挂牌中 2:已撤销 3:处理中 4:已转让
         transferstatus: number
         /// 仓库名称

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů