Handy_Cao 1 éve
szülő
commit
24ac8b7fdc

+ 1 - 1
oem/tss/config/appconfig.json

@@ -3,7 +3,7 @@
   "appName": "TCE",
   "version": "1.0.27",
   "versionCode": "100027",
-  "apiUrl": "http://192.168.31.209:8080/cfg?key=test_209",
+  "apiUrl": "http://192.168.31.210:8080/cfg?key=test_210",
   "tradeChannel": "ws",
   "showLoginAlert": true,
   "modules": [

+ 8 - 41
src/packages/tss/views/home/main/index.vue

@@ -47,28 +47,26 @@
           </template>
         </CellGroup>
       </app-block>
-      <ProductList :data-list="goodsList" />
+      <ProductList :data-list="collections" />
     </PullRefresh>
   </app-view>
 </template>
 
 <script lang="ts" setup>
-import { shallowRef, onMounted, onActivated } from 'vue'
+import { shallowRef, onMounted } from 'vue'
 import { Cell, CellGroup, PullRefresh, Search, Icon } from 'vant'
 import { getFileUrl } from '@/filters'
 import { queryImageConfigs } from '@/services/api/common'
 import { queryNewTitles } from '@/services/api/news'
-import { queryTouristGoods, queryTouristQuoteDay } from '@/services/api/goods'
-import { useLoginStore, useNoticeStore, useFuturesStore } from '@/stores'
+import { useNoticeStore, useFuturesStore } from '@/stores'
 import ProductList from '../../product/list/components/waterfall-list/index.vue'
 
 const noticeStore = useNoticeStore()
-const loginStore = useLoginStore()
 const futuresStore = useFuturesStore()
 
 const refreshing = shallowRef(false) // 是否处于加载中状态
 const topBanners = shallowRef(''); // 背景图片
-const goodsList = shallowRef<Model.GoodsQuote[]>([])
+const collections = shallowRef<Model.TCEGoodsCollectionRsp[]>([])
 const newsList = shallowRef<Model.NewTitlesRsp[]>([]) // 资讯列表
 
 // 下拉刷新
@@ -87,43 +85,13 @@ const onRefresh = () => {
   }
 }
 
-const getGoodsList = () => {
-  futuresStore.onDataCompleted(() => {
-    const list = futuresStore.quotationList.filter((e) => e.marketid === 53201)
-    goodsList.value = list.map((e) => ({ ...e }))
-  })
-}
-
 onMounted(() => {
   onRefresh()
 
-  if (!loginStore.userId) {
-    // 获取游客商品列表
-    queryTouristGoods({
-      data: {
-        trademodes: '53',
-        marketids: '53201'
-      }
-    }).then((res) => {
-      if (res.data.length) {
-        futuresStore.goodsList = res.data
-        const goodsCodes = res.data.map((e) => e.goodscode)
-
-        // 获取游客商品盘面
-        queryTouristQuoteDay({
-          data: {
-            goodsCodes: goodsCodes.join(',')
-          }
-        }).then((res) => {
-          goodsCodes.forEach((goodscode) => {
-            const item = res.data.find((e) => e.goodscode === goodscode)
-            futuresStore.updateQuotation(item ?? { goodscode })
-          })
-          getGoodsList()
-        })
-      }
-    })
-  }
+  // 显示商品集合信息
+  futuresStore.onDataCompleted(() => {
+    collections.value = futuresStore.collections.filter(e => e.collectionstatus === 1)
+  })
 
   // 市场资讯
   queryNewTitles({
@@ -138,7 +106,6 @@ onMounted(() => {
   })
 })
 
-onActivated(() => getGoodsList())
 </script>
 
 <style lang="less">

+ 43 - 8
src/packages/tss/views/product/list/components/waterfall-list/index.vue

@@ -7,10 +7,11 @@
                     <Image width="100%" height="160px" v-else />
                 </div>
                 <div class="goods-info">
-                    <div class="goods-info__title">{{ item.goodscode }}</div>
+                    <div class="goods-info__title">{{ goodsName(item) }}</div>
                     <div class="goods-info__price">
-                        <span class="integer">{{ handleNumberValue(formatDecimal(item.ask, item.decimalplace)) }}</span>
+                        <span class="integer">{{ price(item) }}</span>
                     </div>
+                    <div>{{ collectionDesc(item) }}</div>
                 </div>
             </div>
         </template>
@@ -22,25 +23,59 @@ import { PropType } from 'vue'
 import { Image } from 'vant'
 import { formatDecimal, getFileUrl, handleNumberValue } from '@/filters'
 import { useNavigation } from '@mobile/router/navigation'
-import { BuyOrSell, BuildType } from '@/constants/order'
+import { BuyOrSell, BuildType, getCurrencyName } from '@/constants/order'
 import Waterfall from '@mobile/components/base/waterfall/index.vue'
+import { i18n, useFuturesStore } from '@/stores'
 
 defineProps({
     dataList: {
-        type: Array as PropType<Model.GoodsQuote[]>,
+        type: Array as PropType<Model.TCEGoodsCollectionRsp[]>,
         required: true
     }
 })
 
 const { router } = useNavigation()
+const futureStore = useFuturesStore()
 
-const rowClick = (row: Model.GoodsQuote) => {
-    console.log(row)
+// 商品名称
+const goodsName = (item: Model.TCEGoodsCollectionRsp) => {
+    switch (i18n.global.locale) {
+        case 'zh-CN':
+            return item.collectionname
+        case 'en-US':
+        return item.collectionnameen
+        case 'zh-TW':
+        return item.collectionnametw
+        default:
+        return item.collectiondescth
+    }
+}
+
+// 商品价格
+const price = (item: Model.TCEGoodsCollectionRsp) => {
+    const { ask = 0, decimalplace = 2, currencyid = 1 } = futureStore.getGoodsQuote(item.defaultgoodsid).value ?? {}
+    return getCurrencyName(currencyid) + handleNumberValue(formatDecimal(ask, decimalplace))
+}
+
+// 商品描述信息
+const collectionDesc = (item: Model.TCEGoodsCollectionRsp) => {
+    switch (i18n.global.locale) {
+        case 'zh-CN':
+            return item.collectiondesc
+        case 'en-US':
+        return item.collectiondescen
+        case 'zh-TW':
+        return item.collectiondesctw
+        default:
+        return item.collectiondescth
+    }
+}
+
+const rowClick = (row: Model. TCEGoodsCollectionRsp) => {
     router.push({
         name: 'pricing-trade',
         query: {
-            goodsid: row.goodsid,
-            goodscode: row.goodscode,
+            collectionid: row.collectionid,
             buyOrSell: BuyOrSell.Buy,
             buildType: BuildType.Open
         }

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

@@ -187,4 +187,14 @@ export function queryDeliveryRelation(config: RequestConfig<Model.DeliveryRelati
         url: '/Delivery/QueryDeliveryRelation',
         params: config.data,
     })
+}
+
+/**
+ * 获取TCE商品集合表
+ */
+export function getTCEGoodsCollections(config: RequestConfig = {}) {
+    return http.commonRequest<Model.TCEGoodsCollectionRsp[]>({
+        url: '/Goods/GetTCEGoodsCollections',
+        params: config.data,
+    })
 }

+ 7 - 2
src/stores/modules/futures.ts

@@ -4,7 +4,7 @@ import { timerTask } from '@/utils/timer'
 import { handlePriceColor } from '@/filters'
 import { queryMemberGoodsLimitConfig } from '@/services/api/common'
 import { getTodayAccountConfigInfo } from '@/services/api/account'
-import { queryErmcpGoods, queryQuoteDay } from '@/services/api/goods'
+import { queryErmcpGoods, queryQuoteDay, getTCEGoodsCollections } from '@/services/api/goods'
 import { wordArrayToUint8Array } from '@/services/websocket/package/crypto'
 import { decodeProto } from '@/services/websocket/package/package50/proto'
 import { defineStore } from '../store'
@@ -33,7 +33,8 @@ export const useFuturesStore = defineStore(() => {
         goodsList: <(Model.GoodsRsp & Partial<Model.MemberGoodsLimitConfigRsp>)[]>[], // 商品列表
         quotationList: <Model.GoodsQuote[]>[], // 行情列表
         selectedGoodsId: <number | undefined>undefined, // 当前选中的商品ID
-        buyOrSell: <number>0
+        buyOrSell: <number>0,
+        collections: <Model.TCEGoodsCollectionRsp[]>[], // 商品集合信息
     })
 
     // 指定市场ID的商品列表
@@ -74,6 +75,7 @@ export const useFuturesStore = defineStore(() => {
         state.loading = true
         state.goodsList = []
         state.quotationList = []
+        state.collections = []
         timerTask.clearTimeout('quoteDay')
 
         const accountStore = useAccountStore()
@@ -86,6 +88,7 @@ export const useFuturesStore = defineStore(() => {
             }
         })
         const { data: goodsList } = await queryErmcpGoods()
+        const { data: collections } = await getTCEGoodsCollections()
 
         for (let i = 0; i < goodsList.length; i++) {
             const item = goodsList[i]
@@ -137,6 +140,8 @@ export const useFuturesStore = defineStore(() => {
             })
         }
 
+        state.collections = collections
+
         // 待优化
         getQuoteDay().then(() => {
             dataCompletedCallback.forEach((callback) => callback())

+ 53 - 0
src/types/model/goods.d.ts

@@ -585,4 +585,57 @@ declare namespace Model {
         wrstandardid: number; // 仓单标准ID
         xdeliveryratio: number; // 交易合约系数(m)
     }
+
+    /** 获取TCE商品集合表 响应 */
+    interface TCEGoodsCollectionRsp {
+        // Banner图(多张)(2:1)(逗号分隔)
+        bannerurls: string[];
+        // 商品集合描述(富文本)(简体) 
+        collectiondesc: string;	
+        // 商品集合描述(富文本)(英文)
+        collectiondescen: string;	
+        // 商品集合描述(富文本)(泰文)
+        collectiondescth: string;	
+        // 商品集合描述(富文本)(繁体)
+        collectiondesctw: string;	
+        // 商品集合ID(SEQ_TCE_GOODSCOLLECTION)
+        collectionid: number;	
+        // 商品集合名称(简体)
+        collectionname: string;	
+        // 商品集合名称(英文)
+        collectionnameen: string;	
+        // 商品集合名称(泰文)
+        collectionnameth: string;	
+        // 商品集合名称(繁体)
+        collectionnametw: string;	
+        // 状态 - 1:正常 2:注销(枚举:status)
+        collectionstatus: number;	
+        // 商品集合商品列表
+        configs: {
+            // 商品集合ID(SEQ_TCE_GOODSCOLLECTION)
+            collectionid: number;
+            // 商品配置ID(SEQ_TCE_GCGoodsConfig)
+            configid: number;
+            // 创建时间
+            createtime: string;	
+            //  商品ID
+            goodsid: number;
+        }[];
+        // 创建时间
+        createtime: string;	
+        // 建仓人
+        creatorid: number;	
+        // 默认商品ID
+        defaultgoodsid: number;	
+        // 修改人
+        modifierid: number;	
+        // 修改时间
+        modifytime: string;	
+        // 显示顺序
+        orderindex: number;	
+        // 详情图(1张)
+        pictureurl: string;	
+        // 缩略图片(1:1)(1张)
+        thumurls: string;  
+    }
 }