Handy_Cao před 2 roky
rodič
revize
0355fb0743

+ 22 - 0
src/packages/mobile/views/goods/list/Index.vue

@@ -7,4 +7,26 @@
 </template>
 
 <script lang="ts" setup>
+
+import { v4 } from 'uuid'
+import { queryQuoteGoodsList } from '@/services/api/swap'
+import { useFuturesStore, useUserStore } from '@/stores'
+import { useRequest } from '@/hooks/request'
+import quoteSocket from '@/services/websocket/quote'
+
+const userStore = useUserStore()
+const subscribeId = v4()
+
+const { dataList } = useRequest(queryQuoteGoodsList, {
+    params: {
+        usertype: userStore.userType ?? 0,
+        marketids: userStore.getMarketId('TRADEMODE_TJMD').toString()
+    },
+    onSuccess: (res) => {
+        const goodsCodes = res.data.map((e) => e.refgoodscode)
+        const subscribe = quoteSocket.addSubscribe(goodsCodes,  subscribeId)
+        subscribe.start()
+    }
+})
+
 </script>

+ 1 - 0
src/packages/mobile/views/order/list/components/swaporder/detail/Index.vue

@@ -58,6 +58,7 @@ const onCancelSumit = () => {
         fullloading((hideLoading) => {
             cancelSubmit().then(() => {
                 hideLoading('撤销成功')
+                closed(true)
             }).catch((err) => {
                 hideLoading(err, 'fail')
             })

+ 26 - 4
src/packages/mobile/views/order/position/components/swap/close/Index.vue

@@ -5,6 +5,10 @@
             <template #header>
                 <app-navbar title="掉期持仓-平仓" @back="closed" />
             </template>
+            <div>
+                <span>商品:{{ selectedRow.goodsname }}/{{ selectedRow.goodscode }}</span>
+                <span>{{ lastPrice }}</span>
+            </div>
             <app-pull-refresh ref="pullRefreshRef" v-model:loading="loading" v-model:error="error" v-model:pageIndex="pageIndex"
         :page-count="pageCount" @refresh="run">
                 <div class="g-order-list">
@@ -56,7 +60,7 @@
 </template>
 
 <script lang="ts" setup>
-import { shallowRef, PropType } from 'vue'
+import { shallowRef, PropType, computed } from 'vue'
 import { useRequest } from '@/hooks/request'
 import { queryTradeHolderDetail } from '@/services/api/order';
 import { ETradeMode } from '@/constants/client';
@@ -65,14 +69,20 @@ import { getBuyOrSellName } from '@/constants/order'
 import { formatDate, formatDecimal } from '@/filters'
 import { useHolderClose } from '@/business/trade'
 import { dialog, fullloading } from '@/utils/vant'
+import { v4 } from 'uuid'
+import { useFuturesStore } from '@/stores'
 
+import quoteSocket from '@/services/websocket/quote'
 import AppModal from '@/components/base/modal/index.vue'
 import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
 
+const futuresStore = useFuturesStore()
 const dataList = shallowRef<Model.TradeHolderDetailRsp[]>([])
 const showModal = shallowRef(true)
-const refresh = shallowRef(false) // 是否刷新父组件数据
+/// 是否刷新父组件数据
+const refresh = shallowRef(false) 
 const error = shallowRef(false)
+const subscribeId = v4()
 
 const { holderCloseSubmit, formData } = useHolderClose()
 
@@ -83,6 +93,12 @@ const props = defineProps({
     }
 })
 
+const subscribe = () => {
+    const { refgoodscode } = props.selectedRow
+    const subscribe = quoteSocket.addSubscribe([refgoodscode], subscribeId)
+    subscribe.start()
+}
+
 const { loading, pageIndex, pageCount, run } = useRequest(queryTradeHolderDetail, {
     params: {
         pagesize: 20,
@@ -100,20 +116,26 @@ const { loading, pageIndex, pageCount, run } = useRequest(queryTradeHolderDetail
             dataList.value = []
         }
         dataList.value.push(...res.data)
+        /// 订阅行情
+        subscribe()
     },
     onError: () => {
         error.value = true
     }
 })
 
+const lastPrice = computed(() => {
+    const quote = futuresStore.getQuoteInfo(props.selectedRow.refgoodscode)
+    const { last } = quote.value ?? {}
+    return last
+})
+
 const onCloseSubmit = (row: Model.TradeHolderDetailRsp) => {
     dialog({
         message: '确认要平仓吗?',
         showCancelButton: true,
     }).then(() => {
-        // TradeID: tradeid,
         const { marketid, goodsid, buyorsell, tradeid } = row
-        /// 市场ID
         formData.Header = { MarketID: marketid }
         formData.GoodsID = goodsid
         formData.BuyOrSell = buyorsell

+ 5 - 2
src/packages/mobile/views/swap/detail/Index.vue

@@ -8,6 +8,10 @@
                     </div>
                 </template>
             </app-navbar>
+            <div>
+                <span>{{ item.goodsgroupname }}/{{ item.goodscode }}</span>
+                <span>--</span>
+            </div>
         </template>
         <Tabs v-model:active="tabIndex" @click="onTabChange">
             <Tab title="买大厅" />
@@ -18,8 +22,7 @@
             <div class="trade-section sell" v-if="dataList.length">
                 <app-list :columns="columns" :data-list="dataList">
                     <template #username="{ row }">
-                        <span >{{ row.userid }}</span>
-                        <span >{{ row.username }}</span>
+                        <span >{{ row.userid }}/{{ row.username }}</span>
                     </template>
                     <template #operate="{ row }">
                         <Button size="small" type="primary" round @click="onDelisting(row)">{{ tabIndex === 0 ? '卖出' : '买入' }}</Button>

+ 4 - 7
src/packages/mobile/views/swap/detail/components/delisting/Index.vue

@@ -14,8 +14,8 @@
             <Field label="价格类型">
                 <template #input>
                     <RadioGroup v-model="priceMove" direction='horizontal'>
-                        <Radio :name="2">固定价</Radio>
-                        <Radio :name="3">浮动价</Radio>
+                        <Radio :name="2" v-if="selectedRow.pricemode === 2">固定价</Radio>
+                        <Radio :name="3" v-if="selectedRow.pricemode === 3">浮动价</Radio>
                     </RadioGroup>
                 </template>
             </Field>
@@ -36,10 +36,10 @@
             </Field>
             <Field name="OrderQty" :rules="formRules.OrderQty" label="挂牌数量">
                 <template #input>
-                    <Stepper v-model="formData.OrderQty" theme="round" button-size="22" :min="0" :max="selectedRow.orderqty" :auto-fixed="false" :step = 1 integer />
+                    <Stepper v-model="formData.OrderQty" theme="round" button-size="22" :min="0" :step="0.01" :max="selectedRow.orderqty" :auto-fixed="false" />
                 </template>
             </Field>
-            <Field name="OrderPrice" v-if="priceMove === 2" :rules="formRules.OrderPrice" label="挂牌金额">
+            <Field name="OrderPrice" v-if="priceMove === 2" :rules="formRules.OrderPrice" label="摘牌价格">
                 <template #input>
                     <Stepper v-model="formData.OrderPrice" theme="round" button-size="22" :min="0" :auto-fixed="false" />
                 </template>
@@ -60,9 +60,6 @@
                 </template>
             </Field>
         </Form>
-        <div v-else>
-            <Empty />
-        </div>
         <template #footer>
             <Button type="primary" block round @click="formRef?.submit">{{ tabIndex === 0 ? '卖出' : '买入' }}</Button>
         </template>

+ 7 - 5
src/packages/mobile/views/swap/detail/components/listing/Index.vue

@@ -14,18 +14,18 @@
                 <template #input>
                     <RadioGroup v-model="priceMove" direction='horizontal'>
                         <Radio :name="2">固定价</Radio>
-                        <Radio :name="3">浮动价</Radio>
+                        <Radio :name="3" v-if="userStore.userType != 5">浮动价</Radio>
                     </RadioGroup>
                 </template>
             </Field>
             <Field name="OrderPrice" :rules="formRules.OrderPrice" label="挂牌价格" v-if="priceMove === 2">
                 <template #input>
-                    <Stepper v-model="formData.OrderPrice" theme="round" button-size="22" :auto-fixed="false" integer />
+                    <Stepper v-model="formData.OrderPrice" theme="round" button-size="22" :auto-fixed="false" :step="0.01" />
                 </template>
             </Field>
-            <Field name="OrderPrice" :rules="formRules.MarketMaxSub" label="点差" v-if="priceMove === 3">
+            <Field name="MarketMaxSub" :rules="formRules.MarketMaxSub" label="点差" v-if="priceMove === 3">
                 <template #input>
-                    <Stepper v-model="formData.OrderQty" theme="round" button-size="22" :auto-fixed="false" integer />
+                    <Stepper v-model="formData.MarketMaxSub" theme="round" button-size="22" :auto-fixed="false" :step="0.01" />
                 </template>
             </Field>
             <Field label="估算价格" v-if="priceMove === 3">
@@ -75,12 +75,14 @@ import { shallowRef, PropType } from 'vue'
 import { Form, FormInstance, Button, FieldRule, Field, Tab, Tabs, Stepper, Radio, RadioGroup } from 'vant'
 import { useOrder } from '@/business/trade'
 import { fullloading, dialog } from '@/utils/vant'
-import { useAccountStore, useFuturesStore } from '@/stores'
+import { useAccountStore, useFuturesStore, useUserStore } from '@/stores'
 import { EPriceMode, EListingSelectType, EDelistingType, EBuildType, EValidType, EOrderOperateType } from '@/constants/client'
 
 import AppPopup from '@mobile/components/base/popup/index.vue'
 
 const accountStore = useAccountStore()
+const userStore = useUserStore()
+
 const formRef = shallowRef<FormInstance>()
 const showModal = shallowRef(true)
 const refresh = shallowRef(true) // 是否刷新父组件数据

+ 1 - 1
src/packages/mobile/views/swap/list/Index.vue

@@ -51,7 +51,7 @@ const subscribeId = v4()
 
 const { dataList } = useRequest(queryQuoteGoodsList, {
     params: {
-        usertype: 0,
+        usertype: userStore.userType ?? 0,
         marketids: userStore.getMarketId('TRADEMODE_TJMD').toString()
     },
     onSuccess: (res) => {