li.shaoyi 2 tahun lalu
induk
melakukan
b10a7f3a72
25 mengubah file dengan 115 tambahan dan 135 penghapusan
  1. 7 10
      src/packages/gstj/views/mine/Index.vue
  2. 6 22
      src/packages/mobile/views/account/certification/Index.vue
  3. 1 6
      src/packages/mobile/views/bank/sign/Index.vue
  4. 4 4
      src/packages/mobile/views/bank/wallet/components/deposit/Index.vue
  5. 3 3
      src/packages/mobile/views/bank/wallet/components/withdraw/Index.vue
  6. 7 10
      src/packages/mobile/views/mine/Index.vue
  7. 3 1
      src/packages/mobile/views/order/position/components/goods/close/Index.vue
  8. 3 1
      src/packages/mobile/views/order/position/components/goods/delivery50/index.vue
  9. 4 2
      src/packages/mobile/views/order/position/components/goods/detail/components/transfer/Index.vue
  10. 1 1
      src/packages/mobile/views/order/position/components/goods/list/Index.vue
  11. 1 1
      src/packages/mobile/views/order/position/components/swap/list/Index.vue
  12. 8 10
      src/packages/pc/views/footer/capital/summary/index.vue
  13. 1 1
      src/packages/pc/views/footer/goods/detail/components/transfer/index.vue
  14. 3 1
      src/packages/pc/views/footer/goods/position/components/delivery50/index.vue
  15. 4 2
      src/packages/pc/views/footer/goods/position/components/transfer/index.vue
  16. 1 1
      src/packages/pc/views/footer/goods/position/index.vue
  17. 2 2
      src/packages/pc/views/footer/swap/position/index.vue
  18. 7 10
      src/packages/qdhs/views/mine/Index.vue
  19. 7 10
      src/packages/qxst/views/mine/Index.vue
  20. 6 9
      src/packages/sbyj/views/mine/index.vue
  21. 7 10
      src/packages/tc/views/mine/Index.vue
  22. 7 10
      src/packages/zrwyt/views/mine/Index.vue
  23. 11 1
      src/services/websocket/message.ts
  24. 7 3
      src/stores/modules/user.ts
  25. 4 4
      src/types/model/account.d.ts

+ 7 - 10
src/packages/gstj/views/mine/Index.vue

@@ -117,25 +117,25 @@
 </template>
 
 <script lang="ts" setup>
-import { shallowRef, onMounted, onActivated } from 'vue'
+import { shallowRef, onMounted, onActivated, computed } from 'vue'
 import { Cell, CellGroup, Button, Icon } from 'vant'
 import { fullloading, dialog } from '@/utils/vant'
 import { useNavigation } from '@mobile/router/navigation'
 import { AuthStatus } from '@/constants/account'
 import { queryBankAccountSign } from '@/services/api/bank'
-import { queryUserAccount } from '@/services/api/account'
-import { useLoginStore, useAccountStore, useUserStore } from '@/stores'
+import { useLoginStore, useAccountStore, useUserStore, usePositionStore } from '@/stores'
 import eventBus from '@/services/bus'
 import Iconfont from '@/components/base/iconfont/index.vue'
 
 const { router, routerTo } = useNavigation()
 const loginStore = useLoginStore()
 const userStore = useUserStore()
+const positionStore = usePositionStore()
 const accountStore = useAccountStore()
 const { currentAccount } = accountStore.$toRefs()
 
 const headerRef = shallowRef<HTMLDivElement>()
-const authStatus = shallowRef(AuthStatus.Uncertified) // 实名认证状态
+const authStatus = computed(() => userStore.userAccount.hasauth) // 实名认证状态
 
 const onReady = (el: HTMLDivElement) => {
     // 设置背景图位置
@@ -181,7 +181,6 @@ const userLogout = () => {
         message: '是否退出当前账号?',
         showCancelButton: true
     }).then(() => {
-        authStatus.value = AuthStatus.Uncertified
         loginStore.clearAutoLoginData()
         eventBus.$emit('LogoutNotify')
     })
@@ -189,16 +188,14 @@ const userLogout = () => {
 
 onActivated(() => {
     if (authStatus.value !== AuthStatus.Certified) {
-        // 获取用户账号信息
-        queryUserAccount().then((res) => {
-            authStatus.value = res.data.hasauth
-        })
+        userStore.getUserData()
     }
+    accountStore.getAccountList()
 })
 
 onMounted(() => {
     // 请求持仓列表,待优化---可用资金计算可能需要订阅行情
-    eventBus.$emit('PosChangedNtf')
+    positionStore.getTradePosition()
 })
 </script>
 

+ 6 - 22
src/packages/mobile/views/account/certification/Index.vue

@@ -68,37 +68,21 @@ const h_afterRead = (filePath: string) => {
 
 // 表单验证规则
 const formRules: { [key in keyof Model.AddAuthReq]?: FieldRule[] } = {
-    username: [{
-        required: true,
-        message: '请输入用户姓名',
-    }],
-    cardnum: [{
-        required: true,
-        message: '请输入证件号码',
 
-    }],
-    cardbackphotourl: [{
-        required: true,
-        message: '请上传证件背面照片',
-    }],
-    cardfrontphotourl: [{
-        required: true,
-        message: '请上传证件正面照片',
-    }],
 }
 
 const onSubmit = () => {
     fullloading((hideLoading) => {
         formSubmit().then((res) => {
             /// 失败
-            if (res.code != '0') {
+            if (res.code.toString() != '0') {
                 showFailToast(res.message)
-                return
+            } else {
+                hideLoading()
+                dialog('实名认证提交请求成功').then(() => {
+                    router.back()
+                })
             }
-            hideLoading()
-            dialog('实名认证提交请求成功').then(() => {
-                router.back()
-            })
         }).catch((err) => {
             showFailToast(err)
         })

+ 1 - 6
src/packages/mobile/views/bank/sign/Index.vue

@@ -44,14 +44,12 @@ import { useDoCancelBankSign } from '@/business/bank'
 import { useNavigation } from '@mobile/router/navigation'
 import { useRequest } from '@/hooks/request'
 import { queryCusBankSignBank } from '@/services/api/bank'
-import { useUserStore } from '@/stores'
 import { shallowRef } from 'vue'
 
 const componentMap = new Map<string, unknown>([
     ['edit', defineAsyncComponent(() => import('./components/edit/Index.vue'))],
 ])
 
-const useStore = useUserStore()
 const cusBank = shallowRef<Model.CusBankSignBankRsp>()
 const { componentRef, componentId, openComponent, closeComponent } = useComponent(() => formRefresh())
 const { cancelSubmit, formRefresh, bankInfo } = useDoCancelBankSign()
@@ -102,10 +100,7 @@ const beforeShowComponent = () => {
     }
 }
 
-onActivated(() => {
-    useStore.getUserData()
-    formRefresh()
-})
+formRefresh()
 </script>
 
 <style lang="less">

+ 4 - 4
src/packages/mobile/views/bank/wallet/components/deposit/Index.vue

@@ -15,14 +15,14 @@
                         :placeholder="`请输入${item.fieldname}`" />
                 </template>
             </CellGroup>
-            <div class="g-form__time" >
+            <div class="g-form__time">
                 <label>入金时间:{{ start }} - {{ end }}</label>
             </div>
         </Form>
         <div class="g-form__bank" v-if="cusBank.caninamount === 0">
             <span style="color: #666; font-size: 0.25rem;" v-html="msg" />
         </div>
-        <div class="g-form__time" style="padding: 0.15rem 0.3rem;"  v-if="cusBank.caninamount === 1" >
+        <div class="g-form__time" style="padding: 0.15rem 0.3rem;" v-if="cusBank.caninamount === 1">
             <span style="color: #666; font-size: 0.25rem;" v-html="msg" />
         </div>
         <div class="g-form__bank" v-if="false">
@@ -94,7 +94,7 @@ const certificate_photo_url = ref('')
 const userStore = useUserStore()
 
 // 表单验证规则
-const formRules: { [key in keyof Proto.t2bBankDepositReq | 'filePath']?: FieldRule[] } = {
+const formRules: { [key: string]: FieldRule[] } = {
     Amount: [{
         required: true,
         message: '请填写入金金额',
@@ -124,7 +124,7 @@ const doDepositWarning = () => {
     if (cusBank.value.cusbankid === 'jdjs') {
         const now = moment(new Date().toISOString()).format('HH:mm')
         if (now > start && now < end.value) {
-            dialog({ message: '是否已在银行端进行入金转账?', showCancelButton: true, confirmButtonText: '确认', cancelButtonText: '取消',}).then(() => {
+            dialog({ message: '是否已在银行端进行入金转账?', showCancelButton: true, confirmButtonText: '确认', cancelButtonText: '取消', }).then(() => {
                 /// 提交
                 formSubmit()
             }).catch(() => {

+ 3 - 3
src/packages/mobile/views/bank/wallet/components/withdraw/Index.vue

@@ -66,7 +66,7 @@ const limitMsg = getSystemParamValue('1002') ?? '系统错误'
 const userStore = useUserStore()
 
 // 表单验证规则
-const formRules: { [key in keyof Proto.t2bBankWithdrawReq]?: FieldRule[] } = {
+const formRules: { [key: string]: FieldRule[] } = {
     Amount: [{
         required: true,
         message: '请输入出金金额',
@@ -75,9 +75,9 @@ const formRules: { [key in keyof Proto.t2bBankWithdrawReq]?: FieldRule[] } = {
                 return true
             } else if (fund.value.AvailableOutMoney === 0.0) {
                 return '可出金额为0'
-            } else{
+            } else {
                 return '超过可出金额'
-            } 
+            }
         }
     }]
 }

+ 7 - 10
src/packages/mobile/views/mine/Index.vue

@@ -117,25 +117,25 @@
 </template>
 
 <script lang="ts" setup>
-import { shallowRef, onMounted, onActivated } from 'vue'
+import { shallowRef, onMounted, onActivated, computed } from 'vue'
 import { Cell, CellGroup, Button, Icon } from 'vant'
 import { fullloading, dialog } from '@/utils/vant'
 import { useNavigation } from '@mobile/router/navigation'
 import { AuthStatus } from '@/constants/account'
 import { queryBankAccountSign } from '@/services/api/bank'
-import { queryUserAccount } from '@/services/api/account'
-import { useLoginStore, useAccountStore, useUserStore } from '@/stores'
+import { useLoginStore, useAccountStore, useUserStore, usePositionStore } from '@/stores'
 import eventBus from '@/services/bus'
 import Iconfont from '@/components/base/iconfont/index.vue'
 
 const { router, routerTo } = useNavigation()
 const loginStore = useLoginStore()
 const userStore = useUserStore()
+const positionStore = usePositionStore()
 const accountStore = useAccountStore()
 const { currentAccount } = accountStore.$toRefs()
 
 const headerRef = shallowRef<HTMLDivElement>()
-const authStatus = shallowRef(AuthStatus.Uncertified) // 实名认证状态
+const authStatus = computed(() => userStore.userAccount.hasauth) // 实名认证状态
 
 const onReady = (el: HTMLDivElement) => {
     // 设置背景图位置
@@ -181,7 +181,6 @@ const userLogout = () => {
         message: '是否退出当前账号?',
         showCancelButton: true
     }).then(() => {
-        authStatus.value = AuthStatus.Uncertified
         loginStore.clearAutoLoginData()
         eventBus.$emit('LogoutNotify')
     })
@@ -189,16 +188,14 @@ const userLogout = () => {
 
 onActivated(() => {
     if (authStatus.value !== AuthStatus.Certified) {
-        // 获取用户账号信息
-        queryUserAccount().then((res) => {
-            authStatus.value = res.data.hasauth
-        })
+        userStore.getUserData()
     }
+    accountStore.getAccountList()
 })
 
 onMounted(() => {
     // 请求持仓列表,待优化---可用资金计算可能需要订阅行情
-    eventBus.$emit('PosChangedNtf')
+    positionStore.getTradePosition()
 })
 </script>
 

+ 3 - 1
src/packages/mobile/views/order/position/components/goods/close/Index.vue

@@ -16,7 +16,9 @@
                     <Cell title="持仓均价" :value="selectedRow.averageprice" />
                     <Cell title="参考损益">
                         <template #value>
-                            <span :class="selectedRow.closeplColor">{{ formatDecimal(selectedRow.closepl) }}</span>
+                            <span :class="selectedRow.closeplColor">
+                                {{ formatDecimal(selectedRow.closepl, selectedRow.decimalplace) }}
+                            </span>
                         </template>
                     </Cell>
                 </CellGroup>

+ 3 - 1
src/packages/mobile/views/order/position/components/goods/delivery50/index.vue

@@ -17,7 +17,9 @@
                     <Cell title="持仓均价" :value="formatDecimal(selectedRow.averageprice)" />
                     <Cell title="参考损益">
                         <template #value>
-                            <span :class="selectedRow.closeplColor">{{ formatDecimal(selectedRow.closepl) }}</span>
+                            <span :class="selectedRow.closeplColor">
+                                {{ formatDecimal(selectedRow.closepl, selectedRow.decimalplace) }}
+                            </span>
                         </template>
                     </Cell>
                 </CellGroup>

+ 4 - 2
src/packages/mobile/views/order/position/components/goods/detail/components/transfer/Index.vue

@@ -16,7 +16,9 @@
                     <Cell title="可用数量" :value="maxQty" />
                     <Cell title="参考损益">
                         <template #value>
-                            <span :class="handlePriceColor(closepl)">{{ formatDecimal(closepl) }}</span>
+                            <span :class="handlePriceColor(closepl)">
+                                {{ formatDecimal(closepl, selectedRow.decimalplace) }}
+                            </span>
                         </template>
                     </Cell>
                     <Cell title="交易时间" :value="selectedRow.tradetime" />
@@ -132,7 +134,7 @@ const onCloseSumit = () => {
         formData.DelistingType = EDelistingType.DELISTINGTYPE_PRICE
         formData.BuildType = EBuildType.BUILDTYPE_CLOSE
         formData.TimevalidType = EValidType.VALIDTYPE_DR
-        formData.OperateType = EOrderOperateType.ORDEROPERATETYPE_NORMAL
+        formData.OperateType = 24
         formData.RelatedID = handleRequestBigNumber(tradeid)
 
         /// loding....

+ 1 - 1
src/packages/mobile/views/order/position/components/goods/list/Index.vue

@@ -38,7 +38,7 @@
                         <li>
                             <span>参考损益</span>
                             <span :class="item.closeplColor">
-                                {{ formatDecimal(item.closepl) }}
+                                {{ formatDecimal(item.closepl, item.decimalplace) }}
                             </span>
                         </li>
                     </ul>

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

@@ -39,7 +39,7 @@
                         <li>
                             <span>参考损益:</span>
                             <span :class="handlePriceColor(item.closepl, 0)">
-                                {{ formatDecimal(item.closepl) }}
+                                {{ formatDecimal(item.closepl, item.decimalplace) }}
                             </span>
                         </li>
                     </ul>

+ 8 - 10
src/packages/pc/views/footer/capital/summary/index.vue

@@ -29,28 +29,29 @@
 </template>
 
 <script lang="ts" setup>
-import { shallowRef, defineAsyncComponent, onMounted } from 'vue'
+import { shallowRef, defineAsyncComponent, onMounted,computed } from 'vue'
+import { ElMessage } from 'element-plus'
 import { formatDecimal, handlePriceColor } from '@/filters'
-import { useAccountStore } from '@/stores'
+import { useAccountStore, useUserStore } from '@/stores'
 import { useComponent } from '@/hooks/component'
 import { useComposeTable } from '@pc/components/base/table'
 import { getTradeStatusName } from '@/constants/order'
 import { AuthStatus } from '@/constants/account'
 import { queryBankAccountSign } from '@/services/api/bank'
-import { queryUserAccount } from '@/services/api/account'
 import AppTable from '@pc/components/base/table/index.vue'
-import { ElMessage } from 'element-plus'
 
 const componentMap = new Map<string, unknown>([
     ['deposit', defineAsyncComponent(() => import('./deposit/index.vue'))], // 入金
     ['withdraw', defineAsyncComponent(() => import('./withdraw/index.vue'))], // 出金
 ])
 
+const userStore = useUserStore()
 const accountStore = useAccountStore()
-const authStatus = shallowRef(AuthStatus.Uncertified) // 实名认证状态
 const { selectedRow, rowKey, expandKeys, rowClick } = useComposeTable<Model.TaAccountsRsp>({ rowKey: 'accountid' })
 const { componentRef, componentId, openComponent, closeComponent } = useComponent()
 
+const authStatus = computed(() => userStore.userAccount.hasauth) // 实名认证状态
+
 const tableColumns = shallowRef<Model.TableColumn[]>([
     { prop: 'accountid', label: '资金账号', width: 160 },
     { prop: 'balance', label: '期初余额', decimal: 2 },
@@ -85,12 +86,9 @@ const doInOutMoney = (code: string) => {
 }
 
 onMounted(() => {
-    accountStore.getAccountList()
     if (authStatus.value !== AuthStatus.Certified) {
-        // 获取用户账号信息
-        queryUserAccount().then((res) => {
-            authStatus.value = res.data.hasauth
-        })
+        userStore.getUserData()
     }
+    accountStore.getAccountList()
 })
 </script>

+ 1 - 1
src/packages/pc/views/footer/goods/detail/components/transfer/index.vue

@@ -21,7 +21,7 @@
                 <span>{{ selectedRow.freezeqty }}</span>
             </el-form-item>
             <el-form-item label="参考损益">
-                <span :class="handlePriceColor(closepl)">{{ formatDecimal(closepl) }}</span>
+                <span :class="handlePriceColor(closepl)">{{ formatDecimal(closepl, selectedRow.decimalplace) }}</span>
             </el-form-item>
             <el-form-item label="可用数量">
                 <span>{{ maxQty }}</span>

+ 3 - 1
src/packages/pc/views/footer/goods/position/components/delivery50/index.vue

@@ -30,7 +30,9 @@
                 <span>{{ selectedRow.matchname }}</span>
             </el-form-item>
             <el-form-item label="参考损益">
-                <span :class="selectedRow.closeplColor">{{ formatDecimal(selectedRow.closepl) }}</span>
+                <span :class="selectedRow.closeplColor">
+                    {{ formatDecimal(selectedRow.closepl, selectedRow.decimalplace) }}
+                </span>
             </el-form-item>
             <el-form-item prop="DeliveryLot" label="交收数量">
                 <el-input-number placeholder="请输入数量" v-model="formData.DeliveryLot" :precision="0"

+ 4 - 2
src/packages/pc/views/footer/goods/position/components/transfer/index.vue

@@ -24,7 +24,9 @@
                 <span>{{ formatDecimal(selectedRow.averageprice, selectedRow.decimalplace) }}</span>
             </el-form-item>
             <el-form-item label="参考损益">
-                <span :class="selectedRow.closeplColor">{{ formatDecimal(selectedRow.closepl) }}</span>
+                <span :class="selectedRow.closeplColor">
+                    {{ formatDecimal(selectedRow.closepl, selectedRow.decimalplace) }}
+                </span>
             </el-form-item>
             <el-form-item prop="OrderQty" label="转让数量">
                 <div class="g-qty-group">
@@ -51,7 +53,7 @@
 </template>
 
 <script lang="ts" setup>
-import { ref, PropType, onMounted,computed } from 'vue'
+import { ref, PropType, onMounted, computed } from 'vue'
 import { ElMessage, FormInstance, FormRules } from 'element-plus'
 import { useOrder } from '@/business/trade'
 import { formatDecimal, parsePercent } from '@/filters'

+ 1 - 1
src/packages/pc/views/footer/goods/position/index.vue

@@ -17,7 +17,7 @@
         </template>
         <!-- 浮动盈亏-->
         <template #closepl="{ row }">
-            <span :class="row.closeplColor">{{ formatDecimal(row.closepl) }}</span>
+            <span :class="row.closeplColor">{{ formatDecimal(row.closepl, row.decimalplace) }}</span>
         </template>
         <!-- 操作 -->
         <template #operate="{ row }">

+ 2 - 2
src/packages/pc/views/footer/swap/position/index.vue

@@ -18,11 +18,11 @@
         </template>
         <!-- 持仓均价 -->
         <template #averageprice="{ value }">
-            {{ handleNumberValue(formatDecimal(value))  }}
+            {{ handleNumberValue(formatDecimal(value)) }}
         </template>
         <!-- 浮动盈亏-->
         <template #closepl="{ row }">
-            <span :class="row.closeplColor">{{ formatDecimal(row.closepl) }}</span>
+            <span :class="row.closeplColor">{{ formatDecimal(row.closepl, row.decimalplace) }}</span>
         </template>
         <!-- 展开行 -->
         <template #expand="{ row }">

+ 7 - 10
src/packages/qdhs/views/mine/Index.vue

@@ -114,25 +114,25 @@
 </template>
 
 <script lang="ts" setup>
-import { shallowRef, onMounted, onActivated } from 'vue'
+import { shallowRef, onMounted, onActivated, computed } from 'vue'
 import { Cell, CellGroup, Button, Icon } from 'vant'
 import { fullloading, dialog } from '@/utils/vant'
 import { useNavigation } from '@mobile/router/navigation'
 import { AuthStatus } from '@/constants/account'
 import { queryBankAccountSign } from '@/services/api/bank'
-import { queryUserAccount } from '@/services/api/account'
-import { useLoginStore, useAccountStore, useUserStore } from '@/stores'
+import { useLoginStore, useAccountStore, useUserStore, usePositionStore } from '@/stores'
 import eventBus from '@/services/bus'
 import Iconfont from '@/components/base/iconfont/index.vue'
 
 const { router, routerTo } = useNavigation()
 const loginStore = useLoginStore()
 const userStore = useUserStore()
+const positionStore = usePositionStore()
 const accountStore = useAccountStore()
 const { currentAccount } = accountStore.$toRefs()
 
 const headerRef = shallowRef<HTMLDivElement>()
-const authStatus = shallowRef(AuthStatus.Uncertified) // 实名认证状态
+const authStatus = computed(() => userStore.userAccount.hasauth) // 实名认证状态
 
 const onReady = (el: HTMLDivElement) => {
     // 设置背景图位置
@@ -178,7 +178,6 @@ const userLogout = () => {
         message: '是否退出当前账号?',
         showCancelButton: true
     }).then(() => {
-        authStatus.value = AuthStatus.Uncertified
         loginStore.clearAutoLoginData()
         eventBus.$emit('LogoutNotify')
     })
@@ -186,16 +185,14 @@ const userLogout = () => {
 
 onActivated(() => {
     if (authStatus.value !== AuthStatus.Certified) {
-        // 获取用户账号信息
-        queryUserAccount().then((res) => {
-            authStatus.value = res.data.hasauth
-        })
+        userStore.getUserData()
     }
+    accountStore.getAccountList()
 })
 
 onMounted(() => {
     // 请求持仓列表,待优化---可用资金计算可能需要订阅行情
-    eventBus.$emit('PosChangedNtf')
+    positionStore.getTradePosition()
 })
 </script>
 

+ 7 - 10
src/packages/qxst/views/mine/Index.vue

@@ -111,25 +111,25 @@
 </template>
 
 <script lang="ts" setup>
-import { shallowRef, onMounted, onActivated } from 'vue'
+import { shallowRef, onMounted, onActivated, computed } from 'vue'
 import { Cell, CellGroup, Button, Icon } from 'vant'
 import { fullloading, dialog } from '@/utils/vant'
 import { useNavigation } from '@mobile/router/navigation'
 import { AuthStatus } from '@/constants/account'
 import { queryBankAccountSign } from '@/services/api/bank'
-import { queryUserAccount } from '@/services/api/account'
-import { useLoginStore, useAccountStore, useUserStore } from '@/stores'
+import { useLoginStore, useAccountStore, useUserStore, usePositionStore } from '@/stores'
 import eventBus from '@/services/bus'
 import Iconfont from '@/components/base/iconfont/index.vue'
 
 const { router, routerTo } = useNavigation()
 const loginStore = useLoginStore()
 const userStore = useUserStore()
+const positionStore = usePositionStore()
 const accountStore = useAccountStore()
 const { currentAccount } = accountStore.$toRefs()
 
 const headerRef = shallowRef<HTMLDivElement>()
-const authStatus = shallowRef(AuthStatus.Uncertified) // 实名认证状态
+const authStatus = computed(() => userStore.userAccount.hasauth) // 实名认证状态
 
 const onReady = (el: HTMLDivElement) => {
     // 设置背景图位置
@@ -175,7 +175,6 @@ const userLogout = () => {
         message: '是否退出当前账号?',
         showCancelButton: true
     }).then(() => {
-        authStatus.value = AuthStatus.Uncertified
         loginStore.clearAutoLoginData()
         eventBus.$emit('LogoutNotify')
     })
@@ -183,16 +182,14 @@ const userLogout = () => {
 
 onActivated(() => {
     if (authStatus.value !== AuthStatus.Certified) {
-        // 获取用户账号信息
-        queryUserAccount().then((res) => {
-            authStatus.value = res.data.hasauth
-        })
+        userStore.getUserData()
     }
+    accountStore.getAccountList()
 })
 
 onMounted(() => {
     // 请求持仓列表,待优化---可用资金计算可能需要订阅行情
-    eventBus.$emit('PosChangedNtf')
+    positionStore.getTradePosition()
 })
 </script>
 

+ 6 - 9
src/packages/sbyj/views/mine/index.vue

@@ -111,25 +111,25 @@
 </template>
 
 <script lang="ts" setup>
-import { shallowRef, onActivated } from 'vue'
+import { shallowRef, onMounted, onActivated, computed } from 'vue'
 import { Cell, CellGroup, Button, Icon } from 'vant'
 import { fullloading, dialog } from '@/utils/vant'
 import { useNavigation } from '@mobile/router/navigation'
 import { AuthStatus } from '@/constants/account'
 import { queryBankAccountSign } from '@/services/api/bank'
-import { queryUserAccount } from '@/services/api/account'
-import { useLoginStore, useAccountStore, useUserStore } from '@/stores'
+import { useLoginStore, useAccountStore, useUserStore, usePositionStore } from '@/stores'
 import eventBus from '@/services/bus'
 import Iconfont from '@/components/base/iconfont/index.vue'
 
 const { router, routerTo } = useNavigation()
 const loginStore = useLoginStore()
 const userStore = useUserStore()
+const positionStore = usePositionStore()
 const accountStore = useAccountStore()
 const { currentAccount } = accountStore.$toRefs()
 
 const headerRef = shallowRef<HTMLDivElement>()
-const authStatus = shallowRef(AuthStatus.Uncertified) // 实名认证状态
+const authStatus = computed(() => userStore.userAccount.hasauth) // 实名认证状态
 
 const onReady = (el: HTMLDivElement) => {
     // 设置背景图位置
@@ -175,7 +175,6 @@ const userLogout = () => {
         message: '是否退出当前账号?',
         showCancelButton: true
     }).then(() => {
-        authStatus.value = AuthStatus.Uncertified
         loginStore.clearAutoLoginData()
         eventBus.$emit('LogoutNotify')
     })
@@ -183,11 +182,9 @@ const userLogout = () => {
 
 onActivated(() => {
     if (authStatus.value !== AuthStatus.Certified) {
-        // 获取用户账号信息
-        queryUserAccount().then((res) => {
-            authStatus.value = res.data.hasauth
-        })
+        userStore.getUserData()
     }
+    accountStore.getAccountList()
 })
 </script>
 

+ 7 - 10
src/packages/tc/views/mine/Index.vue

@@ -117,25 +117,25 @@
 </template>
 
 <script lang="ts" setup>
-import { shallowRef, onMounted, onActivated } from 'vue'
+import { shallowRef, onMounted, onActivated, computed } from 'vue'
 import { Cell, CellGroup, Button, Icon } from 'vant'
 import { fullloading, dialog } from '@/utils/vant'
 import { useNavigation } from '@mobile/router/navigation'
 import { AuthStatus } from '@/constants/account'
 import { queryBankAccountSign } from '@/services/api/bank'
-import { queryUserAccount } from '@/services/api/account'
-import { useLoginStore, useAccountStore, useUserStore } from '@/stores'
+import { useLoginStore, useAccountStore, useUserStore, usePositionStore } from '@/stores'
 import eventBus from '@/services/bus'
 import Iconfont from '@/components/base/iconfont/index.vue'
 
 const { router, routerTo } = useNavigation()
 const loginStore = useLoginStore()
 const userStore = useUserStore()
+const positionStore = usePositionStore()
 const accountStore = useAccountStore()
 const { currentAccount } = accountStore.$toRefs()
 
 const headerRef = shallowRef<HTMLDivElement>()
-const authStatus = shallowRef(AuthStatus.Uncertified) // 实名认证状态
+const authStatus = computed(() => userStore.userAccount.hasauth) // 实名认证状态
 
 const onReady = (el: HTMLDivElement) => {
     // 设置背景图位置
@@ -181,7 +181,6 @@ const userLogout = () => {
         message: '是否退出当前账号?',
         showCancelButton: true
     }).then(() => {
-        authStatus.value = AuthStatus.Uncertified
         loginStore.clearAutoLoginData()
         eventBus.$emit('LogoutNotify')
     })
@@ -189,16 +188,14 @@ const userLogout = () => {
 
 onActivated(() => {
     if (authStatus.value !== AuthStatus.Certified) {
-        // 获取用户账号信息
-        queryUserAccount().then((res) => {
-            authStatus.value = res.data.hasauth
-        })
+        userStore.getUserData()
     }
+    accountStore.getAccountList()
 })
 
 onMounted(() => {
     // 请求持仓列表,待优化---可用资金计算可能需要订阅行情
-    eventBus.$emit('PosChangedNtf')
+    positionStore.getTradePosition()
 })
 </script>
 

+ 7 - 10
src/packages/zrwyt/views/mine/Index.vue

@@ -117,25 +117,25 @@
 </template>
 
 <script lang="ts" setup>
-import { shallowRef, onMounted, onActivated } from 'vue'
+import { shallowRef, onMounted, onActivated, computed } from 'vue'
 import { Cell, CellGroup, Button, Icon } from 'vant'
 import { fullloading, dialog } from '@/utils/vant'
 import { useNavigation } from '@mobile/router/navigation'
 import { AuthStatus } from '@/constants/account'
 import { queryBankAccountSign } from '@/services/api/bank'
-import { queryUserAccount } from '@/services/api/account'
-import { useLoginStore, useAccountStore, useUserStore } from '@/stores'
+import { useLoginStore, useAccountStore, useUserStore, usePositionStore } from '@/stores'
 import eventBus from '@/services/bus'
 import Iconfont from '@/components/base/iconfont/index.vue'
 
 const { router, routerTo } = useNavigation()
 const loginStore = useLoginStore()
 const userStore = useUserStore()
+const positionStore = usePositionStore()
 const accountStore = useAccountStore()
 const { currentAccount } = accountStore.$toRefs()
 
 const headerRef = shallowRef<HTMLDivElement>()
-const authStatus = shallowRef(AuthStatus.Uncertified) // 实名认证状态
+const authStatus = computed(() => userStore.userAccount.hasauth) // 实名认证状态
 
 const onReady = (el: HTMLDivElement) => {
     // 设置背景图位置
@@ -181,7 +181,6 @@ const userLogout = () => {
         message: '是否退出当前账号?',
         showCancelButton: true
     }).then(() => {
-        authStatus.value = AuthStatus.Uncertified
         loginStore.clearAutoLoginData()
         eventBus.$emit('LogoutNotify')
     })
@@ -189,16 +188,14 @@ const userLogout = () => {
 
 onActivated(() => {
     if (authStatus.value !== AuthStatus.Certified) {
-        // 获取用户账号信息
-        queryUserAccount().then((res) => {
-            authStatus.value = res.data.hasauth
-        })
+        userStore.getUserData()
     }
+    accountStore.getAccountList()
 })
 
 onMounted(() => {
     // 请求持仓列表,待优化---可用资金计算可能需要订阅行情
-    eventBus.$emit('PosChangedNtf')
+    positionStore.getTradePosition()
 })
 </script>
 

+ 11 - 1
src/services/websocket/message.ts

@@ -1,5 +1,6 @@
 import { timerInterceptor } from '@/utils/timer'
 import { FunCode } from '@/constants/funcode'
+import { useErrorInfoStore } from '@/stores'
 import eventBus from '@/services/bus'
 import { Package50 } from './package'
 import { decodeProto } from './package/package50/proto'
@@ -10,14 +11,23 @@ import { decodeProto } from './package/package50/proto'
  * @param contentType 
  */
 export async function pushMessage50(pkg: Package50, contentType: 'encrypted' | 'unencrypted') {
+    const { getErrorInfoByCode } = useErrorInfoStore()
     const { funCode, content } = pkg
     const delay = 500 // 延迟推送消息,防止短时间内重复请求
 
     switch (funCode) {
         case FunCode.LogoutRsp: {
             //console.log('接收到用户登出通知', funCode)
+            let errcode = 0
+            if (contentType === 'encrypted') {
+                const res = await decodeProto<Proto.LogoutRsp>('LogoutRsp', content)
+                errcode = res.RetCode
+            } else {
+                const res = new TextDecoder().decode(content)
+                errcode = JSON.parse(res).RetCode
+            }
             // 用户登出通知
-            eventBus.$emit('LogoutNotify', '账号已登出')
+            eventBus.$emit('LogoutNotify', getErrorInfoByCode(errcode) || '账号已登出')
             break
         }
         case FunCode.MoneyChangedNotify: {

+ 7 - 3
src/stores/modules/user.ts

@@ -15,13 +15,17 @@ export const useUserStore = defineStore(() => {
 
     const state = reactive({
         loading: false,
-        userData: <Model.LoginQueryRsp>{
+        userData: <Model.LoginQueryRsp>Object.create({
             arearole: [],
             externalExchanges: [],
             goodsgroups: [],
+            loginAccount: {},
             markets: [],
-            systemParams: []
-        },
+            systemParams: [],
+            userAccount: {},
+            userInfo: {},
+            username: '',
+        }),
     })
 
     // 用户信息

+ 4 - 4
src/types/model/account.d.ts

@@ -27,12 +27,12 @@ declare global {
             arearole: AreaRole[]
             externalExchanges: ExternalExchange[],
             goodsgroups: GoodsGroup[],
-            loginAccount?: LoginAccount,
+            loginAccount: LoginAccount,
             markets: Market[],
             systemParams: SystemParam[],
-            userAccount?: UserAccount,
-            userInfo?: UserInfo,
-            username?: string,
+            userAccount: UserAccount,
+            userInfo: UserInfo,
+            username: string,
         }
 
         /** 所属角色信息 */