li.shaoyi 3 år sedan
förälder
incheckning
f56889b379
37 ändrade filer med 432 tillägg och 228 borttagningar
  1. 1 34
      src/business/goods/index.ts
  2. 61 0
      src/business/market/index.ts
  3. 2 2
      src/business/order/index.ts
  4. 2 2
      src/business/trade/index.ts
  5. 1 1
      src/constants/order.ts
  6. 13 0
      src/hooks/echarts/line/index.ts
  7. 5 3
      src/hooks/navigation/index.ts
  8. 0 0
      src/packages/mobile/assets/iconfont/iconfont.js
  9. 24 24
      src/packages/mobile/assets/themes/default/default.less
  10. 1 1
      src/packages/mobile/components/base/pull-refresh/index.less
  11. 7 2
      src/packages/mobile/components/base/qrcode/index.vue
  12. 13 13
      src/packages/mobile/components/layouts/page/index.less
  13. 15 8
      src/packages/mobile/components/layouts/scroll-view/index.vue
  14. 5 2
      src/packages/mobile/components/modules/echarts-line/index.vue
  15. 11 0
      src/packages/mobile/router/index.ts
  16. 8 1
      src/packages/mobile/views/credit/signin/index.vue
  17. 4 4
      src/packages/mobile/views/home/components/main/index.vue
  18. 1 5
      src/packages/mobile/views/home/index.less
  19. 31 0
      src/packages/mobile/views/market/list/components/spot/index.vue
  20. 16 0
      src/packages/mobile/views/market/list/index.less
  21. 21 0
      src/packages/mobile/views/market/list/index.vue
  22. 5 4
      src/packages/mobile/views/mine/order/detail/purchasetrade/index.vue
  23. 28 17
      src/packages/mobile/views/mine/order/detail/transfer/index.vue
  24. 4 3
      src/packages/mobile/views/mine/order/detail/wrorder/index.vue
  25. 4 3
      src/packages/mobile/views/mine/order/detail/wrtrade/index.vue
  26. 14 10
      src/packages/mobile/views/mine/order/his/transfer/index.vue
  27. 19 9
      src/packages/mobile/views/mine/order/list/components/transferbuy/index.vue
  28. 14 10
      src/packages/mobile/views/mine/order/list/components/transfersell/index.vue
  29. 17 17
      src/packages/mobile/views/mine/order/list/index.less
  30. 5 1
      src/packages/mobile/views/mine/wareorder/wroutinapplydetail/index.vue
  31. 9 10
      src/packages/mobile/views/news/details/index.vue
  32. 2 2
      src/packages/mobile/views/supply-demand/detail/index.vue
  33. 0 7
      src/services/api/goods/index.ts
  34. 16 0
      src/services/api/market/index.ts
  35. 1 1
      src/stores/modules/enum.ts
  36. 17 0
      src/types/model/market.d.ts
  37. 35 32
      src/types/model/order.d.ts

+ 1 - 34
src/business/goods/index.ts

@@ -2,7 +2,7 @@ import { shallowRef, reactive } from 'vue'
 import { useDataTable } from '@/hooks/datatable'
 import { EchartsDataset } from '@/hooks/echarts/line/interface'
 import { BuyOrSell } from '@/constants/order'
-import { queryTHJWrstandard, queryOrderQuote, queryOrderQuoteDetail, queryWrMarketTradeConfig, queryTHJWrstandardDetail, addUserFavoriteGoods, removeUserFavoriteGoods, queryTHJProduct, queryMarketRun, queryTHJTradeData, querySpotGoodsPrice } from '@/services/api/goods'
+import { queryTHJWrstandard, queryOrderQuote, queryOrderQuoteDetail, queryWrMarketTradeConfig, queryTHJWrstandardDetail, addUserFavoriteGoods, removeUserFavoriteGoods, queryTHJProduct, queryMarketRun, queryTHJTradeData } from '@/services/api/goods'
 import { useLoginStore } from '@/stores'
 
 // 采购列表
@@ -185,38 +185,7 @@ export function useQueryTHJProductLists() {
     }
 }
 
-// 获取现货行情
-export function useQuerySpotGoodsPriceLists() {
-    const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.SpotGoodsPriceRsp>()
-    const loading = shallowRef(false)
 
-    const getQuerySpotGoodsPriceLists = () => {
-        loading.value = true
-        return querySpotGoodsPrice({
-            data: {
-                page: pageIndex.value,
-                pagesize: pageSize.value,
-            },
-            success: (res) => {
-                total.value = res.total
-                dataList.value = res.data
-            },
-            complete: () => {
-                loading.value = false
-            }
-        })
-    }
-
-    return {
-        loading,
-        dataList,
-        total,
-        pageIndex,
-        pageSize,
-        pageCount,
-        getQuerySpotGoodsPriceLists,
-    }
-}
 
 // 查询市场运行信息
 export function useQueryMarketRunLists() {
@@ -327,8 +296,6 @@ export function useOrderQuoteDetail(wrfactortypeid?: string) {
             loading.value = true
             await queryOrderQuoteDetail({
                 data: {
-                    page: pageIndex.value,
-                    pagesize: pageSize.value,
                     wrpricetype: 1,
                     haswr: 1,
                     wrfactortypeid,

+ 61 - 0
src/business/market/index.ts

@@ -0,0 +1,61 @@
+import { shallowRef } from 'vue'
+import { useDataTable } from '@/hooks/datatable'
+import { querySpotGoodsPrice, querySpotgoodsPrice } from '@/services/api/market'
+
+// 现货行情
+export function useSpotGoodsPrice() {
+    const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.SpotGoodsPriceRsp>()
+    const loading = shallowRef(false)
+
+    const getSpotGoodsPrice = () => {
+        loading.value = true
+        return querySpotGoodsPrice({
+            data: {
+                page: pageIndex.value,
+                pagesize: pageSize.value,
+            },
+            success: (res) => {
+                total.value = res.total
+                dataList.value = res.data
+            },
+            complete: () => {
+                loading.value = false
+            }
+        })
+    }
+
+    return {
+        loading,
+        dataList,
+        total,
+        pageIndex,
+        pageSize,
+        pageCount,
+        getSpotGoodsPrice,
+    }
+}
+
+// 现货行情列表
+export function useSpotGoodsPriceList() {
+    const { dataList, pageCount } = useDataTable<Model.SpotgoodsPriceRsp>()
+    const loading = shallowRef(false)
+
+    const getSpotGoodsPriceList = () => {
+        loading.value = true
+        return querySpotgoodsPrice({
+            success: (res) => {
+                dataList.value = res.data
+            },
+            complete: () => {
+                loading.value = false
+            }
+        })
+    }
+
+    return {
+        loading,
+        dataList,
+        pageCount,
+        getSpotGoodsPriceList,
+    }
+}

+ 2 - 2
src/business/order/index.ts

@@ -320,7 +320,7 @@ export function useQueryTHJPurchaseTransferOrder() {
 }
 
 // 查询我的订单-转让/受让订单详情
-export function useQueryTTHJPurchaseTransferOrderDetail(wrtradedetailid: string) {
+export function useQueryTTHJPurchaseTransferOrderDetail(transferid: string) {
     const details = shallowRef<Model.THJPurchaseTransferOrderDetailRsp>()
     const loading = shallowRef(false)
 
@@ -328,7 +328,7 @@ export function useQueryTTHJPurchaseTransferOrderDetail(wrtradedetailid: string)
         loading.value = true
         queryTHJPurchaseTransferOrderDetail({
             data: {
-                wrtradedetailid,
+                transferid,
             },
             success: (res) => {
                 if (res.data.length) {

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

@@ -170,11 +170,11 @@ export function useSpotPresaleTransferListing() {
 }
 
 // 铁合金现货预售转让撤销接口请求
-export function useSpotPresaleTransferCancel(wrtradedetailid?: string) {
+export function useSpotPresaleTransferCancel() {
     const loading = shallowRef(false)
     const { getUserId } = useLoginStore()
 
-    const transferCancelSubmit = () => {
+    const transferCancelSubmit = (wrtradedetailid?: string) => {
         loading.value = true
         return spotPresaleTransferCancel({
             data: {

+ 1 - 1
src/constants/order.ts

@@ -34,7 +34,7 @@ export function getBuyOrSellName(value: number) {
  * @returns 
  */
 export function getTHJDeliveryModeList() {
-    return getEnumTypeList('thjDeliveryMode')
+    return getEnumTypeList('THJDeliveryMode')
 }
 
 /**

+ 13 - 0
src/hooks/echarts/line/index.ts

@@ -1,3 +1,4 @@
+import { ref, computed } from 'vue'
 import { useDataset } from './dataset'
 import { useOptions } from './options'
 import { EchartsDataset } from './interface'
@@ -5,17 +6,29 @@ import { EchartsDataset } from './interface'
 export function useLineChart() {
     const { dataset, clearData } = useDataset()
     const { options, initOptions } = useOptions(dataset)
+    const dataIndex = ref(-1); // 当前数据索引值
+
+    // 当前选中的数据项
+    const selectedItem = computed(() => {
+        const { price } = dataset.line.source;
+        return {
+            price: price[dataIndex.value] ?? '--',
+        }
+    })
 
     /**
      * 初始化数据
      */
     const initData = (data: EchartsDataset['line']['source']) => {
         clearData()
+        dataIndex.value = -1;
         dataset.line.source = data
     }
 
     return {
         options,
+        dataIndex,
+        selectedItem,
         initData,
         initOptions,
     }

+ 5 - 3
src/hooks/navigation/index.ts

@@ -37,16 +37,18 @@ export function useNavigation() {
     }
 
     // 返回指定页面
-    const backTo = <T extends object>(to: string, params?: T) => {
+    const backTo = <T extends object>(name: string, params?: T) => {
         const { state } = animateRouter
         const total = state.history.length - 1
-        const index = state.history.findIndex(((e) => e.name === to))
+        const index = state.history.findIndex(((e) => e.name === name))
 
         if (index > -1) {
+            setGlobalUrlParams(params ?? {})
             const delta = total - index
             if (delta > 0) {
-                setGlobalUrlParams(params ?? {})
                 router.go(-delta)
+            } else {
+                router.replace({ name })
             }
         }
     }

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
src/packages/mobile/assets/iconfont/iconfont.js


+ 24 - 24
src/packages/mobile/assets/themes/default/default.less

@@ -1,36 +1,36 @@
 :root {
     /* 字体大小规范 */
     --font-x-large: 18px;
-    --font-large  : 16px;
-    --font-medium : 14px;
-    --font-small  : 12px;
+    --font-large: 16px;
+    --font-medium: 14px;
+    --font-small: 12px;
     --font-x-small: 10px;
 
     /* 颜色规范 */
-    --color-default  : #384048;
-    --color-primary  : #409EFF;
+    --color-default: #384048;
+    --color-primary: #409EFF;
     --color-secondary: #04c786;
-    --color-info     : #999;
-    --color-border   : #eee;
-    --color-up       : #ff2b2b;
-    --color-down     : #04c786;
+    --color-info: #999;
+    --color-border: #eee;
+    --color-up: #ff2b2b;
+    --color-down: #04c786;
 
     /* 导航栏 */
-    --navbar-height          : .88rem;
-    --navbar-color           : #fff;
-    --navbar-background      : #2481dd;
+    --navbar-height: .88rem;
+    --navbar-color: #fff;
+    --navbar-background: #2481dd;
     --navbar-backbutton-color: #fff;
 
     /* 标签栏 */
-    --tabbar-background : #fff;
-    --tabbar-icon       : #777;
-    --tabbar-icon-active: #00577c;
+    --tabbar-background: #fff;
+    --tabbar-icon: #777;
+    --tabbar-icon-active: #c30d23;
 
     /* 内容边距 */
     --content-inset: .24rem;
 
     /* Vant-Button */
-    --van-button-border-width            : 0;
+    --van-button-border-width: 0;
     --van-button-primary-background-color: #00577C;
 
     /* Vant-Checkbox */
@@ -41,21 +41,21 @@
             flex-wrap: wrap;
 
             &-item {
-                display         : flex;
-                justify-content : center;
-                align-items     : center;
-                color           : #626675;
-                cursor          : pointer;
-                border-radius   : 4px;
+                display: flex;
+                justify-content: center;
+                align-items: center;
+                color: #626675;
+                cursor: pointer;
+                border-radius: 4px;
                 background-color: #f0f0f1;
-                padding         : 8px 16px;
+                padding: 8px 16px;
 
                 &:not(:first-child) {
                     margin-left: 10px;
                 }
 
                 &.is-active {
-                    color      : #222;
+                    color: #222;
                     font-weight: bold;
                 }
             }

+ 1 - 1
src/packages/mobile/components/base/pull-refresh/index.less

@@ -1,4 +1,4 @@
 .app-pull-refresh {
-    height    : 100%;
+    height: 100%;
     overflow-y: auto;
 }

+ 7 - 2
src/packages/mobile/components/base/qrcode/index.vue

@@ -1,6 +1,6 @@
 <template>
-    <van-dialog class="app-qrcode" v-model:show="showDialog" confirm-button-text="保存" show-cancel-button
-        @confirm="onConfirm">
+    <van-dialog class="app-qrcode" v-model:show="showDialog" :show-confirm-button="showConfirmButton"
+        confirm-button-text="保存" show-cancel-button @confirm="onConfirm">
         <vue-qr ref="qrRef" :size="400" :logoSrc="require('@mobile/assets/logo.svg')" :text="content" />
     </van-dialog>
 </template>
@@ -22,6 +22,7 @@ const props = defineProps({
 
 const VanDialog = Dialog.Component
 const emit = defineEmits(['update:show'])
+const showConfirmButton = shallowRef(false)
 const qrRef = shallowRef()
 
 const showDialog = computed({
@@ -33,6 +34,10 @@ const showDialog = computed({
 const onConfirm = () => {
     plus.saveImage(qrRef.value.imgUrl, 'thj_' + (props.fileName ?? new Date().getTime()))
 }
+
+plus.onPlusReady(() => {
+    showConfirmButton.value = true
+})
 </script>
 
 <style lang="less">

+ 13 - 13
src/packages/mobile/components/layouts/page/index.less

@@ -1,10 +1,10 @@
 .route-in-enter-from {
-    z-index  : 1;
+    z-index: 1;
     transform: translate3d(100%, 0, 0);
 }
 
 .route-out-enter-from {
-    z-index  : 1;
+    z-index: 1;
     transform: translate3d(-100%, 0, 0);
 }
 
@@ -12,26 +12,26 @@
 .route-in-leave-active,
 .route-out-enter-active,
 .route-out-leave-active {
-    pointer-events  : none;
-    position        : absolute;
-    will-change     : transform;
-    transition      : transform 200ms;
+    pointer-events: none;
+    position: absolute;
+    will-change: transform;
+    transition: transform 200ms;
     background-color: #fff;
 }
 
 .route-out-leave-active {
-    transition-delay: 35ms;
-    transform       : translate3d(100%, 0, 0);
+    //transition-delay: 35ms;
+    transform: translate3d(100%, 0, 0);
 }
 
 .route-in-leave-active {
-    transition-delay: 35ms;
-    transform       : translate3d(-100%, 0, 0);
+    //transition-delay: 35ms;
+    transform: translate3d(-100%, 0, 0);
 }
 
 .app-page {
-    width           : 100%;
-    height          : 100%;
-    overflow-y      : auto;
+    width: 100%;
+    height: 100%;
+    overflow-y: auto;
     background-color: #f6f6f6;
 }

+ 15 - 8
src/packages/mobile/components/layouts/scroll-view/index.vue

@@ -92,17 +92,24 @@ onMounted(() => {
       scrollEl.style.setProperty('padding-top', beforeHeaderEl.clientHeight + 'px')
     }
   }, 0)
-})
 
-onActivated(() => {
-  setScrollTop((el) => {
-    el?.addEventListener('scroll', onScroll) // 监听滚动条事件
+  const addScrollListener = (el: HTMLDivElement) => {
+    el.addEventListener('scroll', onScroll) // 监听滚动条事件
+  }
+
+  // 组件挂载后调用
+  setScrollTop(addScrollListener)
+
+  // 缓存组件时调用
+  onActivated(() => {
+    setScrollTop(addScrollListener)
   })
-})
 
-onDeactivated(() => {
-  const el = scrollRef.value
-  el?.removeEventListener('scroll', onScroll) // 移除滚动条事件
+  // 缓存组件被移除时调用
+  onDeactivated(() => {
+    const el = scrollRef.value
+    el?.removeEventListener('scroll', onScroll) // 移除滚动条事件
+  })
 })
 
 watch(() => props.scrollName, () => setScrollTop())

+ 5 - 2
src/packages/mobile/components/modules/echarts-line/index.vue

@@ -7,7 +7,10 @@
             <div class="app-echats-line__tip">暂无数据</div>
         </template>
         <template v-else>
-            <app-echarts :option="options.line" @ready="initOptions" />
+            <!-- <ul class="legend">
+                <li class="legend-item">收盘: {{ selectedItem.price }}</li>
+            </ul> -->
+            <app-echarts :option="options.line" v-model:dataIndex="dataIndex" @ready="initOptions" />
         </template>
     </div>
 </template>
@@ -29,7 +32,7 @@ const props = defineProps({
     },
 })
 
-const { options, initData, initOptions } = useLineChart()
+const { options, dataIndex, selectedItem, initData, initOptions } = useLineChart()
 const isEmpty = shallowRef(false)
 
 watch(() => props.loading, (status) => {

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

@@ -102,6 +102,17 @@ const routes: Array<RouteRecordRaw> = [
     ]
   },
   {
+    path: '/market',
+    component: Page,
+    children: [
+      {
+        path: '',
+        name: 'Market',
+        component: () => import('../views/market/list/index.vue'),
+      }
+    ]
+  },
+  {
     path: '/product',
     component: Page,
     children: [

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

@@ -72,7 +72,7 @@
                         <app-iconfont class="icon-score" icon="icon-jifenyue">+{{ getScoreConfig(6) }}</app-iconfont>
                     </div>
                     <div class="list-item__button">
-                        <Button type="primary" round>去完成</Button>
+                        <Button type="primary" round @click="toSupplyDemand">去完成</Button>
                     </div>
                 </dd>
             </dl>
@@ -115,6 +115,13 @@ const toPurchase = () => {
     })
 }
 
+// 跳转到供求
+const toSupplyDemand = () => {
+    backTo('Home', {
+        tabName: 'supplyDemand'
+    })
+}
+
 const userSignin = () => {
     fullloading(() => {
         signin({

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

@@ -16,7 +16,7 @@
           <li @click="routerTo('product')">
             <app-iconfont icon="icon-chanpinjieshao" label-direction="bottom">产品介绍</app-iconfont>
           </li>
-          <li>
+          <li @click="routerTo('Market')">
             <app-iconfont icon="icon-maoyirongzi" label-direction="bottom">产品价格</app-iconfont>
           </li>
           <li @click="routerTo('rules-ptgz')">
@@ -86,12 +86,12 @@ import { getImageUrl, formatDate, parsePercent, handleNumberValue } from '@/filt
 import { useNavigation } from '@/hooks/navigation'
 import { queryImageConfigs } from '@/services/api/common'
 import { querySiteColumnDetail } from '@/services/api/news'
-import { useQuerySpotGoodsPriceLists } from '@/business/goods'
+import { useSpotGoodsPrice } from '@/business/market'
 import { queryMarketRun } from '@/services/api/goods'
 import AppIconfont from '@mobile/components/base/iconfont/index.vue'
 
 const { routerTo } = useNavigation()
-const { dataList, getQuerySpotGoodsPriceLists } = useQuerySpotGoodsPriceLists()
+const { dataList, getSpotGoodsPrice } = useSpotGoodsPrice()
 const refreshing = shallowRef(false) // 是否处于加载中状态
 const topBanners = shallowRef<Model.ImageConfigsRsp[]>([])   // 轮播图列表
 const bodyBanners = shallowRef<Model.ImageConfigsRsp[]>([])  // 轮播图列表
@@ -110,7 +110,7 @@ const groupList = computed(() => {
 // 下拉刷新
 const onRefresh = () => {
   // 合金指数
-  getQuerySpotGoodsPriceLists()
+  getSpotGoodsPrice()
   // 市场信息
   queryMarketRun({
     success: (res) => {

+ 1 - 5
src/packages/mobile/views/home/index.less

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

+ 31 - 0
src/packages/mobile/views/market/list/components/spot/index.vue

@@ -0,0 +1,31 @@
+<template>
+    <PullRefresh v-model="refreshing" @refresh="onRefresh" style="height:100%">
+        <app-list :columns="columns" :data-list="dataList" v-if="dataList.length" />
+        <Empty v-else />
+    </PullRefresh>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef } from 'vue'
+import { PullRefresh, Empty } from 'vant'
+import { useSpotGoodsPriceList } from '@/business/market'
+import AppList from '@mobile/components/base/list/index.vue'
+
+const { dataList, getSpotGoodsPriceList } = useSpotGoodsPriceList()
+const refreshing = shallowRef(false) // 是否处于加载中状态
+
+const columns: Model.TableColumn[] = [
+    { prop: 'wrstandardname', label: '名称' },
+    { prop: 'spotgoodsprice', label: '最新价' },
+    { prop: 'tradedate', label: '日期' },
+]
+
+// 下拉刷新
+const onRefresh = () => {
+    getSpotGoodsPriceList().finally(() => {
+        refreshing.value = false
+    })
+}
+
+onRefresh()
+</script>

+ 16 - 0
src/packages/mobile/views/market/list/index.less

@@ -0,0 +1,16 @@
+.market {
+    .van-tabs {
+        display: flex;
+        flex-direction: column;
+        height: 100%;
+
+        &__content {
+            flex: 1;
+            overflow-y: auto;
+        }
+
+        .van-tab__panel {
+            height: 100%;
+        }
+    }
+}

+ 21 - 0
src/packages/mobile/views/market/list/index.vue

@@ -0,0 +1,21 @@
+<template>
+    <app-view class="market">
+        <template #header>
+            <app-navbar title="行情" />
+        </template>
+        <Tabs>
+            <Tab title="现货">
+                <app-spot />
+            </Tab>
+        </Tabs>
+    </app-view>
+</template>
+
+<script lang="ts" setup>
+import { Tab, Tabs } from 'vant'
+import AppSpot from './components/spot/index.vue'
+</script>
+
+<style lang="less">
+@import './index.less';
+</style>

+ 5 - 4
src/packages/mobile/views/mine/order/detail/purchasetrade/index.vue

@@ -1,7 +1,7 @@
 <template>
     <app-view class="order-detail g-form">
         <template #header>
-            <app-navbar title="采购详情" />
+            <app-navbar title="订单详情" />
         </template>
         <div v-if="detail" class="order-detail__container g-form__container">
             <CellGroup title="采购信息">
@@ -36,7 +36,8 @@
         </div>
         <template #footer>
             <div class="g-form__footer" v-if="detail">
-                <Button block round type="primary" v-if="detail.thjdeliverymode === 1 && detail.orderstatus === 1"
+                <Button block round type="primary"
+                    v-if="detail.thjdeliverymode === 1 && detail.presalestatus === 2 && detail.orderstatus === 1"
                     @click="showDialog">合同转让</Button>
                 <Button block round type="primary" v-if="detail.orderstatus === 9"
                     @click="spotCancelSubmit">撤销转让</Button>
@@ -78,7 +79,7 @@ if (item) {
 const { confirmSubmit } = useSpotPresaleDeliveryConfirm()
 const { applySubmit } = useSpotPresaleBreachOfContractApply()
 const { playmentSubmit } = useSpotPresalePlayment()
-const { transferCancelSubmit } = useSpotPresaleTransferCancel(detail.value?.wrtradedetailid)
+const { transferCancelSubmit } = useSpotPresaleTransferCancel()
 const { listingSubmit, formData } = useSpotPresaleTransferListing()
 
 // 打开pdf文件
@@ -174,7 +175,7 @@ const spotCancelSubmit = () => {
         showCancelButton: true
     }).then(() => {
         fullloading((hideLoading) => {
-            transferCancelSubmit().then(() => {
+            transferCancelSubmit(detail.value?.wrtradedetailid).then(() => {
                 hideLoading()
                 dialog('撤销转让提交成功。').then(() => {
                     router.back()

+ 28 - 17
src/packages/mobile/views/mine/order/detail/transfer/index.vue

@@ -1,22 +1,33 @@
 <template>
     <app-view class="transfer-detail g-form">
         <template #header>
-            <app-navbar title="转让订单详情" />
+            <app-navbar title="订单详情" />
         </template>
         <div v-if="details" class="transfer-detail__container g-form__container">
             <CellGroup title="转让信息">
-                <Cell title="商品" :value="handleNoneValue(details.wrstandardname)" />
-                <Cell title="仓库" :value="handleNoneValue(details.warehousename)" />
+                <Cell title="商品" :value="details.wrstandardname" />
+                <Cell title="参考价" :value="details.tradeprice.toFixed(2)" />
                 <Cell title="转让价格" :value="details.transferprice.toFixed(2)" />
-                <Cell title="转让数量" :value="details.transferqty" />
+                <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)" />
+                <Cell title="预付款(含定金)" :value="handleNumberValue(details.payeddeposit.toFixed(2))" />
+                <Cell title="定金比例" :value="parsePercent(details.depositrate)" />
+                <Cell title="状态" :value="getTHJTransferStatusName(details.transferstatus)" />
+                <Cell title="转让时间" :value="formatDate(details.createtime)" />
+                <Cell title="到期日期" :value="details.enddate" />
+            </CellGroup>
+            <CellGroup title="交收信息">
+                <Cell title="交收方式" :value="getTHJDeliveryModeName(details.thjdeliverymode)" />
+                <Cell title="联系人" :value="details.contactname" v-if="details.contactname" />
+                <Cell title="联系方式" :value="details.contactinfo" v-if="details.contactinfo" />
+                <Cell title="目的地地址" :value="details.desaddress" v-if="details.desaddress" />
+                <Cell title="发票信息" title-style="flex:none" v-if="details.receiptinfo">
+                    <template #value>
+                        <div style="white-space: pre-line">{{ details.receiptinfo }}</div>
+                    </template>
+                </Cell>
+                <Cell title="合同单号" :value="details.transferid" :is-link="!!details.contractaddr"
+                    @click="openPDF(details?.contractaddr)" />
             </CellGroup>
         </div>
         <div v-else>
@@ -38,14 +49,14 @@ import { CellGroup, Cell, Empty, Button, Toast } from 'vant'
 import { getUrl } from '@/filters'
 import { useSpotPresaleTransferCancel } from "@/business/trade"
 import { useQueryTTHJPurchaseTransferOrderDetail } from "@/business/order"
-import { handleNoneValue } from '@/filters'
-import { getTHJTransferStatusName } from "@/constants/order"
+import { handleNumberValue, parsePercent, formatDate } from '@/filters'
+import { getTHJTransferStatusName, getTHJDeliveryModeName } from "@/constants/order"
 
 const { router, getQueryString } = useNavigation()
-const wrtradedetailid = getQueryString('id')
+const transferid = getQueryString('id')
 
-const { getTHJPurchaseTransferOrderDetail, details } = useQueryTTHJPurchaseTransferOrderDetail(wrtradedetailid)
-const { transferCancelSubmit } = useSpotPresaleTransferCancel(wrtradedetailid)
+const { getTHJPurchaseTransferOrderDetail, details } = useQueryTTHJPurchaseTransferOrderDetail(transferid)
+const { transferCancelSubmit } = useSpotPresaleTransferCancel()
 
 // 打开pdf文件
 const openPDF = (file?: string) => {
@@ -60,7 +71,7 @@ const spotCancelSubmit = () => {
         showCancelButton: true
     }).then(() => {
         fullloading((hideLoading) => {
-            transferCancelSubmit().then(() => {
+            transferCancelSubmit(details.value?.wrtradedetailid).then(() => {
                 hideLoading()
                 dialog('转让撤销提交成功。').then(() => {
                     router.back()

+ 4 - 3
src/packages/mobile/views/mine/order/detail/wrorder/index.vue

@@ -1,14 +1,14 @@
 <template>
     <app-view class="order-detail g-form">
         <template #header>
-            <app-navbar title="供求委托详情" />
+            <app-navbar title="订单详情" />
         </template>
         <div v-if="detail" class="order-detail__container g-form__container">
             <CellGroup title="委托信息">
                 <Cell title="商品" :value="detail.wrstandardname" />
                 <Cell title="仓库" :value="detail.warehousename" />
                 <Cell title="类型" :value="detail.wrtradetype === 1 ? '挂牌' : '摘牌'" />
-                <Cell title="方向" :value="detail.tradeqty" />
+                <Cell title="方向" :value="getBuyOrSellName(detail.buyorsell)" />
                 <Cell title="委托价格" :value="detail.fixedprice.toFixed(2)" />
                 <Cell title="挂牌数量" :value="detail.orderqty" />
                 <Cell title="撤销数量" :value="detail.cancelqty" />
@@ -35,7 +35,8 @@ import { useNavigation } from '@/hooks/navigation'
 import { fullloading, dialog } from '@/utils/vant'
 import { CellGroup, Cell, Empty, Button, Toast } from 'vant'
 import { getWRTradeOrderStatusName } from '@/constants/order'
-import { formatDate } from "@/filters";
+import { formatDate } from '@/filters'
+import { getBuyOrSellName } from '@/constants/order'
 import { useWrListingCancelOrder } from "@/business/trade"
 
 const { router } = useNavigation()

+ 4 - 3
src/packages/mobile/views/mine/order/detail/wrtrade/index.vue

@@ -1,14 +1,14 @@
 <template>
     <app-view class="order-detail g-form">
         <template #header>
-            <app-navbar title="采购详情" />
+            <app-navbar title="订单详情" />
         </template>
         <div v-if="detail" class="order-detail__container g-form__container">
             <CellGroup title="成交信息">
                 <Cell title="商品" :value="detail.wrstandardname" />
                 <Cell title="仓库" :value="detail.warehousename" />
                 <Cell title="类型" :value="detail.wrtradetype === 1 ? '挂牌' : '摘牌'" />
-                <Cell title="方向" :value="detail.buyorsell === 0 ? '买入' : '卖出'" />
+                <Cell title="方向" :value="getBuyOrSellName(detail.buyorsell)" />
                 <Cell title="成交价格" :value="detail.tradeprice.toFixed(2)" />
                 <Cell title="成交数量" :value="detail.tradeqty" />
                 <Cell title="成交金额" :value="(detail.tradeprice * detail.tradeqty).toFixed(2)" />
@@ -27,7 +27,8 @@
 import { shallowRef } from 'vue'
 import { useNavigation } from '@/hooks/navigation'
 import { CellGroup, Cell, Empty } from 'vant'
-import { formatDate } from "@/filters";
+import { formatDate } from '@/filters'
+import { getBuyOrSellName } from '@/constants/order'
 
 const { route } = useNavigation()
 const item = route.params.item

+ 14 - 10
src/packages/mobile/views/mine/order/his/transfer/index.vue

@@ -11,23 +11,27 @@
                         <div class="left">
                             <span>{{ item.wrstandardname }}</span>
                         </div>
+                        <div class="right">
+                            <span>{{ item.transferid }}</span>
+                        </div>
                     </div>
                     <div class="section-item__content">
                         <table cellspacing="0" cellpadding="0">
                             <tr>
+                                <th>交收月份</th>
+                                <td>{{ item.enddatemonth }}</td>
+                                <th>交易日</th>
+                                <td>{{ item.enddate }}</td>
+                            </tr>
+                            <tr>
+                                <th>转让价格</th>
+                                <td>{{ handleNumberValue(item.transferprice) }}</td>
                                 <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>
+                                <th>委托时间</th>
+                                <td colspan="3">{{ item.createtime }}</td>
                             </tr>
                         </table>
                     </div>
@@ -56,7 +60,7 @@ const dataList = shallowRef<Model.THJPurchaseTransferOrderRsp[]>([])
 const error = shallowRef(false)
 
 const onClick = (item: Model.THJPurchaseTransferOrderRsp) => {
-    router.push({ name: 'transfer-detail', query: { id: item.wrtradedetailid } })
+    router.push({ name: 'transfer-detail', query: { id: item.transferid } })
 }
 
 const onRefresh = (finish: () => void) => {

+ 19 - 9
src/packages/mobile/views/mine/order/list/components/transferbuy/index.vue

@@ -9,23 +9,33 @@
                         <div class="left">
                             <span>{{ item.wrstandardname }}</span>
                         </div>
+                        <div class="right">
+                            <span>{{ item.wrtradedetailid }}</span>
+                        </div>
                     </div>
                     <div class="section-item__content">
                         <table cellspacing="0" cellpadding="0">
                             <tr>
+                                <th>交收月份</th>
+                                <td>{{ item.enddatemonth }}</td>
+                                <th>交易日</th>
+                                <td>{{ item.transfertradedate }}</td>
+                            </tr>
+                            <tr>
+                                <th>转让价格</th>
+                                <td>{{ handleNumberValue(item.transferprice) }}</td>
                                 <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>
+                                <th>转让金额</th>
+                                <td>{{ handleNumberValue(item.transferamount) }}</td>
+                                <th>预付款</th>
                                 <td>{{ handleNumberValue(item.tradeprice) }}</td>
-                                <th>已付定金</th>
-                                <td>{{ handleNumberValue(item.payeddeposit) }}</td>
+                            </tr>
+                            <tr>
+                                <th>成交时间</th>
+                                <td>{{ item.transfertradetime }}</td>
                             </tr>
                         </table>
                     </div>
@@ -53,7 +63,7 @@ const dataList = shallowRef<Model.THJPurchaseTransferOrderRsp[]>([])
 const error = shallowRef(false)
 
 const onClick = (item: Model.THJPurchaseTransferOrderRsp) => {
-    router.push({ name: 'transfer-detail', query: { id: item.wrtradedetailid } })
+    router.push({ name: 'transfer-detail', query: { id: item.transferid } })
 }
 
 const onRefresh = (finish: () => void) => {

+ 14 - 10
src/packages/mobile/views/mine/order/list/components/transfersell/index.vue

@@ -9,23 +9,27 @@
                         <div class="left">
                             <span>{{ item.wrstandardname }}</span>
                         </div>
+                        <div class="right">
+                            <span>{{ item.transferid }}</span>
+                        </div>
                     </div>
                     <div class="section-item__content">
                         <table cellspacing="0" cellpadding="0">
                             <tr>
+                                <th>交收月份</th>
+                                <td>{{ item.enddatemonth }}</td>
+                                <th>交易日</th>
+                                <td>{{ item.enddate }}</td>
+                            </tr>
+                            <tr>
+                                <th>转让价格</th>
+                                <td>{{ handleNumberValue(item.transferprice) }}</td>
                                 <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>
+                                <th>委托时间</th>
+                                <td colspan="3">{{ item.createtime }}</td>
                             </tr>
                         </table>
                     </div>
@@ -54,7 +58,7 @@ const dataList = shallowRef<Model.THJPurchaseTransferOrderRsp[]>([])
 const error = shallowRef(false)
 
 const onClick = (item: Model.THJPurchaseTransferOrderRsp) => {
-    router.push({ name: 'transfer-detail', query: { id: item.wrtradedetailid } })
+    router.push({ name: 'transfer-detail', query: { id: item.transferid } })
 }
 
 const onRefresh = (finish: () => void) => {

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

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

+ 5 - 1
src/packages/mobile/views/mine/wareorder/wroutinapplydetail/index.vue

@@ -12,7 +12,11 @@
                 <Cell title="联系人" :value="detail.contactname" />
                 <Cell title="联系方式" :value="detail.contactnum" />
                 <Cell title="目的地地址" :value="detail.address" v-if="detail.applytype === 3" />
-                <Cell title="发票信息" :value="detail.appointmentremark" />
+                <Cell title="发票信息" title-style="flex:none" v-if="detail.appointmentremark">
+                    <template #value>
+                        <div style="white-space: pre-line">{{ detail.appointmentremark }}</div>
+                    </template>
+                </Cell>
                 <Cell title="提货状态" :value="getApplyStatusName(detail.applystatus)" />
             </CellGroup>
         </div>

+ 9 - 10
src/packages/mobile/views/news/details/index.vue

@@ -11,16 +11,15 @@
             </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>
+        <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', query: { t: new Date().getTime() }, params: { item: JSON.stringify(item), columnid } }"
+                    replace />
+            </template>
+        </CellGroup>
     </app-view>
 </template>
 

+ 2 - 2
src/packages/mobile/views/supply-demand/detail/index.vue

@@ -52,7 +52,7 @@
             </div>
             <div class="trade">
                 <div class="trade-section sell">
-                    <Cell title="卖价" value="更多" />
+                    <Cell title="卖价" />
                     <app-list :columns="columns" :data-list="sellList">
                         <template #operate="{ row }">
                             <Button size="small" round @click="delistingListing(row, BuyOrSell.Buy)">买入</Button>
@@ -60,7 +60,7 @@
                     </app-list>
                 </div>
                 <div class="trade-section buy">
-                    <Cell title="买价" value="更多" />
+                    <Cell title="买价" />
                     <app-list :columns="columns" :data-list="buyList">
                         <template #operate="{ row }">
                             <Button size="small" round @click="delistingListing(row, BuyOrSell.Sell)">卖出</Button>

+ 0 - 7
src/services/api/goods/index.ts

@@ -72,13 +72,6 @@ export function queryTHJProduct(params: HttpParams<{ req: Model.THJProductReq, r
 }
 
 /**
- * 获取现货行情
- */
-export function querySpotGoodsPrice(params: HttpParams<{ req: Model.SpotGoodsPriceReq, rsp: Model.SpotGoodsPriceRsp[] }>) {
-    return httpRequest('/Ferroalloy/GetSpotGoodsPrice', 'get', params);
-}
-
-/**
  * 查询市场运行信息
  */
 export function queryMarketRun(params: HttpParams<{ req: Model.MarketRunReq, rsp: Model.MarketRunRsp[] }>) {

+ 16 - 0
src/services/api/market/index.ts

@@ -0,0 +1,16 @@
+import { httpRequest } from '@/services/http'
+import { HttpParams } from '@/services/http/interface'
+
+/**
+ * 获取现货行情
+ */
+export function querySpotGoodsPrice(params: HttpParams<{ req: Model.SpotGoodsPriceReq, rsp: Model.SpotGoodsPriceRsp[] }>) {
+    return httpRequest('/Ferroalloy/GetSpotGoodsPrice', 'get', params);
+}
+
+/**
+ * 查询行情-现货列表
+ */
+export function querySpotgoodsPrice(params: HttpParams<{ req: Model.SpotgoodsPriceReq, rsp: Model.SpotgoodsPriceRsp[] }>) {
+    return httpRequest('/Ferroalloy/QuerySpotgoodsPrice', 'get', params);
+}

+ 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', 'THJTransferStatus', 'WRTradeOrderStatus'] as const
+const enumKeys = ['clientType', 'scoreConfigType', 'accountBusinessCode', 'certificatetype', 'signstatus', 'thjOrderStatus', 'THJDeliveryMode', 'goodsunit', 'WROutInApplyStatus2', 'THJTransferStatus', 'WRTradeOrderStatus'] as const
 
 /**
  * 枚举存储类

+ 17 - 0
src/types/model/market.d.ts

@@ -0,0 +1,17 @@
+declare namespace Model {
+    /** 查询行情-现货列表 请求 */
+    interface SpotgoodsPriceReq {
+        page: number; // 页码
+        pagesize: number; // 每页条数
+    }
+
+    /** 查询行情-现货列表 响应 */
+    interface SpotgoodsPriceRsp {
+        prespotgoodsprice: number; // 上日价格
+        spotgoodsprice: number; // 当前价格
+        tradedate: string; // 交易日(yyyyMMdd)
+        wrstandardcode: string; // 现货商品代码
+        wrstandardid: number; // 现货商品ID(通用则为0)
+        wrstandardname: string; // 现货商品名称
+    }
+}

+ 35 - 32
src/types/model/order.d.ts

@@ -289,6 +289,7 @@ declare namespace Model {
         payedtradedate: string
         /// 预售申请ID(184+Unix秒时间戳(10位)+xxxxxx)
         presaleapplyid: string
+        presalestatus: number; // 预留状态 1:未开始 2:进行中 3:已结束 4:已关闭 5:处理中 6::处理失败 7:已完成
         /// 发票信息
         receiptinfo: string
         /// 剩余货款 = 到期总货款 - 已付定金 - 优惠金额
@@ -579,6 +580,10 @@ declare namespace Model {
 
     /* 查询我的订单-转让/受让订单 响应*/
     interface THJPurchaseTransferOrderRsp {
+        createtime: string; // 转让挂牌时间
+        enddate: string; // 交收日期
+        enddatemonth: string; // 交收月份
+        transfertradetime: string; // 转让成交时间
         /// 买方账号ID
         buyaccountid: number
         /// 买方用户ID
@@ -639,41 +644,39 @@ declare namespace Model {
 
     /* 查询我的订单-转让/受让订单-详情 请求*/
     interface THJPurchaseTransferOrderDetailReq {
-        /// 采购成交单ID
-        wrtradedetailid: string
+        /// 转让单号
+        transferid: string
     }
 
     /* 查询我的订单-转让/受让订单-详情 响应*/
     interface THJPurchaseTransferOrderDetailRsp {
-        /// 受让人
-        buyusername: string
-        /// 贸易合同地址(买家)
-        contractaddrbuy: string
-        /// 贸易合同地址(卖家)
-        contractaddrsell: string
-        /// 买方已付定金
-        payeddeposit: number
-        /// 转让人
-        sellusername: string
-        /// 预售价格
-        tradeprice: number
-        /// 转让金额
-        transferamount: number
-        /// 转让单号
-        transferid: string
-        /// 转让价格
-        transferprice: number
-        // 转让数量
-        transferqty: number;
-        /// 转让状态 - 1:挂牌中 2:已撤销 3:处理中 4:已转让
-        transferstatus: number
-        /// 仓库名称
-        warehousename: string
-        /// 现货商品代码
-        wrstandardcode: string
-        /// 现货商品ID
-        wrstandardid: number
-        /// 现货商品名称
-        wrstandardname: string
+        buyusername: string; // 受让人
+        contactinfo: string; // 联系方式
+        contactname: string; // 联系人姓名
+        contractaddr: string; // 协议转让合同地址
+        contractaddrbuy: string; // 贸易合同地址(买家)
+        contractaddrsell: string; // 贸易合同地址(卖家)
+        createtime: string; // 转让委托时间
+        depositrate: number; // 定金比例
+        desaddress: string; // 目的地地址
+        enddate: string; // 到期日期(交收日期)
+        enddatemonth: string; // 到期月份
+        lastprice: number; // [实际价]到期价格
+        payeddeposit: number; // 买方已付定金(预付款(含定金))
+        receiptinfo: string; // 发票信息
+        sellusername: string; // 转让人
+        thjdeliverymode: number; // 交割方式 - 1:平台仓储 2:自提 3:代办运输 (枚举:THJDeliveryMode)
+        tradeprice: number; // 预售价格
+        transferamount: number; // 转让金额
+        transferid: string; // 转让单号
+        transferprice: number; // 转让价格
+        transferqty: number; // 转让数量
+        transferstatus: number; // 转让状态 - 1:挂牌中 2:已撤销 3:处理中 4:已转让
+        transfertradetime: string; // 转让成交时间
+        warehousename: string; // 仓库名称
+        wrstandardcode: string; // 现货商品代码
+        wrstandardid: string; // 现货商品ID
+        wrstandardname: string; // 现货商品名称
+        wrtradedetailid: string; // 采购成交单ID(321+Unix秒时间戳(10位)+xxxxxx)
     }
 }

Vissa filer visades inte eftersom för många filer har ändrats