li.shaoyi 1 jaar geleden
bovenliggende
commit
189610c9a3

+ 2 - 1
oem/sbyj/config/appconfig.json

@@ -12,5 +12,6 @@
   "quotationPropertys": [
     "holdvolume"
   ],
-  "forcedPasswordChange": true
+  "forcedPasswordChange": true,
+  "riskType": 1
 }

+ 3 - 2
oem/sdr/config/appconfig.json

@@ -3,7 +3,7 @@
   "appName": "斯达瑞",
   "version": "1.0.1",
   "versionCode": "100001",
-  "apiUrl": "http://112.74.50.223:8280/cfg?key=sdr_sp",
+  "apiUrl": "http://192.168.31.208:8080/cfg?key=test_208",
   "tradeChannel": "ws",
   "modules": [
     "register",
@@ -12,5 +12,6 @@
   "quotationPropertys": [
     "holdvolume"
   ],
-  "forcedPasswordChange": false
+  "forcedPasswordChange": false,
+  "riskType": 2
 }

+ 42 - 15
src/business/user/account.ts

@@ -1,16 +1,18 @@
-import { shallowRef, reactive } from 'vue'
+import { shallowRef, ref, reactive } from 'vue'
 import { useLoginStore, useAccountStore, useUserStore } from '@/stores'
-import { investorDel, modifyPassword, requestAddAuth, requestAddUser, requestBankCard4, requestCaptcaResend, requestCaptchaVerify, requestCreateContract, requestCreateContractAndAddSigner, requestCreateFlowByTemplateDirectly, requestSignCompleted, requestWillFace } from '@/services/api/account'
+import { investorDel, modifyPassword, requestAddAuth, requestAddUser, requestBankCard4, requestCaptcaResend, requestCaptchaVerify, requestCreateContract, requestCreateContractAndAddSigner, requestCreateFlowByTemplateDirectly, requestSignCompleted, requestWillFace, queryTencentUsereSignRecords } from '@/services/api/account'
 import cryptojs from 'crypto-js'
+import { decryptAES } from '@/services/websocket/package/crypto'
 
 const loginStore = useLoginStore()
+const userStore = useUserStore()
 const accountStore = useAccountStore()
 
 // 用户实名认证
 export function addAuthReq() {
     const loading = shallowRef(false)
     /// 审核备注
-    const modifyremark = useUserStore().userAccount.modifyremark ?? ''
+    const modifyremark = userStore.userAccount.modifyremark ?? ''
 
     const formData = reactive<Model.AddAuthReq>({
         userid: loginStore.userId,
@@ -205,20 +207,42 @@ export function useRequestWillFace() {
 /**
  * 通过合同名和模板 id 直接发起签署流程
  */
-export function useRequestCreateFlowByTemplateDirectly() {
-    const loading = shallowRef(false)
-
-    /// 合同编号
-    const templateFormData = reactive<Model.CreateFlowByTemplateDirectlyReq>({})
+export function useRequestCreateFlowByTemplateDirectly(memberId?: number) {
+    const { userInfo, memberUserId } = userStore
+    const signId = memberId || memberUserId // 签署机构
+    const loading = ref(false)
+    const dataList = ref<Model.TencentUsereSignRecordsRsq[]>([])
+
+    // 查询用户电子签记录表
+    const getTencentUsereSignRecords = async () => {
+        const res = await queryTencentUsereSignRecords({
+            data: {
+                memberUserId: signId
+            }
+        })
+        dataList.value = res.data
+    }
 
-    const createTemplate = async () => {
+    // 创建合同
+    const createTemplate = async (recordid: number) => {
         try {
             loading.value = true
-            return await requestCreateFlowByTemplateDirectly({
-                data: {
-                    ...templateFormData,
+            const data: Model.CreateFlowByTemplateDirectlyReq = {
+                userType: userInfo.userinfotype,
+                userESignRecordID: recordid
+            }
+            if (data.userType === 1) {
+                data.personInfo = {
+                    idCardNumber: decryptAES(userInfo.cardnum),
+                    mobile: userInfo.mobile2,
+                    name: userInfo.customername
                 }
-            })
+            } else {
+                data.organizationInfo = {
+                    name: userInfo.customername
+                }
+            }
+            return await requestCreateFlowByTemplateDirectly({ data })
         } finally {
             loading.value = false
         }
@@ -226,8 +250,11 @@ export function useRequestCreateFlowByTemplateDirectly() {
 
     return {
         loading,
-        createTemplate,
-        templateFormData
+        userInfo,
+        signId,
+        dataList,
+        getTencentUsereSignRecords,
+        createTemplate
     }
 }
 

+ 24 - 65
src/packages/nhgj/views/account/protocol/Index.vue

@@ -5,10 +5,10 @@
         </template>
         <div class="g-form__container">
             <CellGroup inset>
-                <Cell title="姓名" :value="customername" />
-                <Cell title="手机号码" :value="mobile2" />
-                <Cell title="证件号码" :value="decryptAES(cardnum)" />
-                <Cell title="签署机构" :value="memberUserId" />
+                <Cell title="姓名" :value="userInfo.customername" />
+                <Cell title="手机号码" :value="userInfo.mobile2" />
+                <Cell title="证件号码" :value="decryptAES(userInfo.cardnum)" />
+                <Cell title="签署机构" :value="signId" />
             </CellGroup>
             <CellGroup inset>
                 <template v-for="(item, index) in dataList" :key="index">
@@ -21,57 +21,19 @@
 </template>
 
 <script lang="ts" setup>
-import { shallowRef } from 'vue'
 import { CellGroup, Cell, showFailToast, showToast } from 'vant'
-import { fullloading } from '@/utils/vant';
+import { fullloading } from '@/utils/vant'
 import { useNavigation } from '@mobile/router/navigation'
-import { useRequest } from '@/hooks/request'
-import { queryTencentUsereSignRecords, requestInitTencentESS } from '@/services/api/account';
-import { useRequestCreateFlowByTemplateDirectly } from '@/business/user/account';
-import plus from '@/utils/h5plus'
-import { getUserId } from '@/services/methods/user'
-import { useUserStore } from '@/stores'
+import { requestInitTencentESS } from '@/services/api/account'
+import { useRequestCreateFlowByTemplateDirectly } from '@/business/user/account'
 import { decryptAES } from '@/services/websocket/package/crypto'
+import plus from '@/utils/h5plus'
 
 const { getQueryStringToNumber } = useNavigation()
 /// 所属机构
-const memberUserId = getQueryStringToNumber('memberUserId')
-/// userStore
-const userStore = useUserStore()
+const qs = getQueryStringToNumber('memberUserId')
 /// 创建电子签合同
-const { createTemplate, templateFormData } = useRequestCreateFlowByTemplateDirectly()
-/// 电子签合同信息
-const dataList = shallowRef<Model.TencentUsereSignRecordsRsq[]>([])
-/// 用户信息
-const { customername, cardnum, mobile2 } =  userStore.userInfo
-/// 查询
-const { run } = useRequest(queryTencentUsereSignRecords, {
-    params: {
-        userId: getUserId(),
-        memberUserId: memberUserId
-    },
-    onSuccess: (res) => {
-        if (res.data != null && res.data.length != 0) {
-            dataList.value = res.data
-        }  else {
-            /// 创建电子签合同
-            initTencentESS()
-        }
-    }
-})
-
-/// 创建电子签合同
-const { run: initTencentESS } = useRequest(requestInitTencentESS, {
-    manual: true,
-    params: {
-        userId: getUserId(),
-        memberUserId: memberUserId
-    },
-    onSuccess: () => {
-        /// 重新请求
-        run()
-    }
-})
+const { getTencentUsereSignRecords, createTemplate, userInfo, signId, dataList } = useRequestCreateFlowByTemplateDirectly(qs)
 
 const iconName = (type: number) => {
     switch (type) {
@@ -93,7 +55,7 @@ const openWebview = (url: string) => {
         plus.openWebview({
             url,
             titleText: '实名认证',
-            onClose: () => run()
+            onClose: () => getTencentUsereSignRecords()
         })
     }
 }
@@ -106,23 +68,8 @@ const signer = (item: Model.TencentUsereSignRecordsRsq) => {
         showFailToast('合同已签署,请前往腾讯电子签小程序查看!')
     } else {
         fullloading((hideLoading) => {
-            const userinfotype = useUserStore().userInfo.userinfotype
-            templateFormData.userESignRecordID = item.recordid
-            templateFormData.userType = userinfotype
-            /// 个人信息
-            if (userinfotype === 1) {
-                templateFormData.personInfo = {
-                    idCardNumber: decryptAES(cardnum),
-                    mobile: mobile2,
-                    name: customername
-                }
-            } else {
-                templateFormData.organizationInfo = {
-                    name: customername
-                }
-            }
             /// 创建合同
-            createTemplate().then((res) => {
+            createTemplate(item.recordid).then((res) => {
                 hideLoading()
                 openWebview(res.data.signUrl)
             }).catch((err) => {
@@ -132,4 +79,16 @@ const signer = (item: Model.TencentUsereSignRecordsRsq) => {
     }
 }
 
+getTencentUsereSignRecords().then(() => {
+    if (!dataList.value.length) {
+        // 创建电子签合同
+        requestInitTencentESS({
+            data: {
+                memberUserId: signId
+            }
+        }).then(() => {
+            getTencentUsereSignRecords()
+        })
+    }
+})
 </script>

+ 23 - 64
src/packages/sbyj/views/account/protocol/Index.vue

@@ -5,10 +5,10 @@
         </template>
         <div class="g-form__container">
             <CellGroup inset>
-                <Cell title="姓名" :value="customername" />
-                <Cell title="手机号码" :value="mobile2" />
-                <Cell title="证件号码" :value="decryptAES(cardnum)" />
-                <Cell title="签署机构" :value="memberUserId" />
+                <Cell title="姓名" :value="userInfo.customername" />
+                <Cell title="手机号码" :value="userInfo.mobile2" />
+                <Cell title="证件号码" :value="decryptAES(userInfo.cardnum)" />
+                <Cell title="签署机构" :value="signId" />
             </CellGroup>
             <CellGroup inset>
                 <template v-for="(item, index) in dataList" :key="index">
@@ -21,57 +21,19 @@
 </template>
 
 <script lang="ts" setup>
-import { shallowRef } from 'vue'
 import { CellGroup, Cell, showFailToast, showToast } from 'vant'
 import { fullloading } from '@/utils/vant';
 import { useNavigation } from '@mobile/router/navigation'
-import { useRequest } from '@/hooks/request'
-import { queryTencentUsereSignRecords, requestInitTencentESS } from '@/services/api/account';
-import { useRequestCreateFlowByTemplateDirectly } from '@/business/user/account';
-import plus from '@/utils/h5plus'
-import { getUserId } from '@/services/methods/user'
-import { useUserStore } from '@/stores'
+import { requestInitTencentESS } from '@/services/api/account'
+import { useRequestCreateFlowByTemplateDirectly } from '@/business/user/account'
 import { decryptAES } from '@/services/websocket/package/crypto'
+import plus from '@/utils/h5plus'
 
 const { getQueryStringToNumber } = useNavigation()
 /// 所属机构
-const memberUserId = getQueryStringToNumber('memberUserId')
-/// userStore
-const userStore = useUserStore()
+const qs = getQueryStringToNumber('memberUserId')
 /// 创建电子签合同
-const { createTemplate, templateFormData } = useRequestCreateFlowByTemplateDirectly()
-/// 电子签合同信息
-const dataList = shallowRef<Model.TencentUsereSignRecordsRsq[]>([])
-/// 用户信息
-const { customername, cardnum, mobile2 } =  userStore.userInfo
-/// 查询
-const { run } = useRequest(queryTencentUsereSignRecords, {
-    params: {
-        userId: getUserId(),
-        memberUserId: memberUserId
-    },
-    onSuccess: (res) => {
-        if (res.data != null && res.data.length != 0) {
-            dataList.value = res.data
-        }  else {
-            /// 创建电子签合同
-            initTencentESS()
-        }
-    }
-})
-
-/// 创建电子签合同
-const { run: initTencentESS } = useRequest(requestInitTencentESS, {
-    manual: true,
-    params: {
-        userId: getUserId(),
-        memberUserId: memberUserId
-    },
-    onSuccess: () => {
-        /// 重新请求
-        run()
-    }
-})
+const { getTencentUsereSignRecords, createTemplate, userInfo, signId, dataList } = useRequestCreateFlowByTemplateDirectly(qs)
 
 const iconName = (type: number) => {
     switch (type) {
@@ -93,7 +55,7 @@ const openWebview = (url: string) => {
         plus.openWebview({
             url,
             titleText: '实名认证',
-            onClose: () => run()
+            onClose: () => getTencentUsereSignRecords()
         })
     }
 }
@@ -106,23 +68,8 @@ const signer = (item: Model.TencentUsereSignRecordsRsq) => {
         showFailToast('合同已签署,请前往腾讯电子签小程序查看!')
     } else {
         fullloading((hideLoading) => {
-            const userinfotype = useUserStore().userInfo.userinfotype
-            templateFormData.userESignRecordID = item.recordid
-            templateFormData.userType = userinfotype
-            /// 个人信息
-            if (userinfotype === 1) {
-                templateFormData.personInfo = {
-                    idCardNumber: decryptAES(cardnum),
-                    mobile: mobile2,
-                    name: customername
-                }
-            } else {
-                templateFormData.organizationInfo = {
-                    name: customername
-                }
-            }
             /// 创建合同
-            createTemplate().then((res) => {
+            createTemplate(item.recordid).then((res) => {
                 hideLoading()
                 openWebview(res.data.signUrl)
             }).catch((err) => {
@@ -132,4 +79,16 @@ const signer = (item: Model.TencentUsereSignRecordsRsq) => {
     }
 }
 
+getTencentUsereSignRecords().then(() => {
+    if (!dataList.value.length) {
+        // 创建电子签合同
+        requestInitTencentESS({
+            data: {
+                memberUserId: signId
+            }
+        }).then(() => {
+            getTencentUsereSignRecords()
+        })
+    }
+})
 </script>

+ 30 - 16
src/packages/sbyj/views/market/detail/index.vue

@@ -7,11 +7,13 @@
             <div class="form-price">
                 <dl>
                     <dt>回购价</dt>
-                    <dd :class="quote.bidColor">{{ handleNumberValue(formatDecimal(quote.bid, quote.decimalplace)) }}</dd>
+                    <dd :class="quote.bidColor">{{ handleNumberValue(formatDecimal(quote.bid, quote.decimalplace)) }}
+                    </dd>
                 </dl>
                 <dl>
                     <dt>销售价</dt>
-                    <dd :class="quote.askColor">{{ handleNumberValue(formatDecimal(quote.ask, quote.decimalplace)) }}</dd>
+                    <dd :class="quote.askColor">{{ handleNumberValue(formatDecimal(quote.ask, quote.decimalplace)) }}
+                    </dd>
                 </dl>
             </div>
             <Form ref="formRef" @submit="onSubmit">
@@ -51,11 +53,17 @@
                     <td>
                         <span>{{ formatDecimal(item.tHDetailEx.holderPrice) }}</span>
                     </td>
-                    <td>
-                        <span :class="item.tHDetailEx.depositRate <= item.tHDetailEx.promptDepositRate ? 'g-price-up' : ''">
+                    <td v-if="riskType === 1">
+                        <span
+                            :class="item.tHDetailEx.depositRate <= item.tHDetailEx.promptDepositRate ? 'g-price-up' : ''">
                             {{ parsePercent(item.tHDetailEx.depositRate) }}
                         </span>
                     </td>
+                    <td v-if="riskType === 2">
+                        <span :class="handlePriceColor(item.tHDetailEx.floatPL)">
+                            {{ formatDecimal(item.tHDetailEx.floatPL) }}
+                        </span>
+                    </td>
                 </tr>
             </table>
         </div>
@@ -64,15 +72,16 @@
                 <div class="g-order-list__box">
                     <div class="g-order-list__titlebar">
                         <div class="left">
-                            <h4 :class="selectedRow.tHDetailEx.buyOrSell === BuyOrSell.Buy ? 'g-price-up' : 'g-price-down'">
+                            <h4
+                                :class="selectedRow.tHDetailEx.buyOrSell === BuyOrSell.Buy ? 'g-price-up' : 'g-price-down'">
                                 {{ selectedRow.tHDetailEx.buyOrSell === BuyOrSell.Buy ? '买料:' : '卖料:' }}
                                 {{ selectedRow.goodsCode + '/' + selectedRow.goodsName }}
                             </h4>
                         </div>
-                        <div class="right">
+                        <div class="right" v-if="riskType === 1">
                             <span
                                 :class="selectedRow.tHDetailEx.depositRate <= selectedRow.tHDetailEx.promptDepositRate ? 'g-price-up' : ''">{{
-                                    parsePercent(selectedRow.tHDetailEx.depositRate) }}</span>
+                parsePercent(selectedRow.tHDetailEx.depositRate) }}</span>
                         </div>
                     </div>
                     <div class="g-order-list__content">
@@ -104,7 +113,7 @@
                                     {{ formatDecimal(selectedRow.tHDetailEx.floatPL) }}
                                 </span>
                             </li>
-                            <li>
+                            <li v-if="riskType === 1">
                                 <span>已补定金</span>
                                 <span>{{ handleNumberValue(selectedRow.tHDetailEx.restockDeposit) }}</span>
                             </li>
@@ -126,7 +135,7 @@
                     </div>
                     <div class="g-order-list__btnbar">
                         <Button size="small" @click="showComponent('supplement')" round
-                            v-if="selectedRow.tHDetailEx.holderQty">补充</Button>
+                            v-if="riskType === 1 && selectedRow.tHDetailEx.holderQty">补充</Button>
                         <template v-if="enableqty(selectedRow)">
                             <Button size="small" @click="showComponent('delivery')" round>
                                 {{ selectedRow.tHDetailEx.buyOrSell === BuyOrSell.Buy ? '提料' : '交料' }}
@@ -138,8 +147,8 @@
                 </div>
             </div>
         </ActionSheet>
-        <component ref="componentRef" v-bind="{ selectedRow }" :is="componentMap.get(componentId)" @closed="closeComponent"
-            v-if="componentId" />
+        <component ref="componentRef" v-bind="{ selectedRow }" :is="componentMap.get(componentId)"
+            @closed="closeComponent" v-if="componentId" />
     </app-view>
 </template>
 
@@ -148,7 +157,7 @@ import { useOrder } from '@/business/trade'
 import { shallowRef, onMounted, onUnmounted, computed, onActivated, defineAsyncComponent } from 'vue'
 import { Form, Field, Stepper, Button, FieldRule, FormInstance, Radio, RadioGroup, showToast, ActionSheet } from 'vant'
 import { useNavigation } from '@mobile/router/navigation'
-import { useFuturesStore, useUserStore, useSBYJOrderStore } from '@/stores'
+import { useGlobalStore, useFuturesStore, useUserStore, useSBYJOrderStore } from '@/stores'
 import { getGoodsUnitName } from '@/constants/unit'
 import { formatDecimal, parsePercent, handleNumberValue, handlePriceColor } from '@/filters'
 import { useComponent } from '@/hooks/component'
@@ -162,8 +171,11 @@ import { getUserId } from '@/services/methods/user'
 const { getQueryString } = useNavigation()
 const { formData, formSubmit } = useOrder()
 const { getSBYJMyOrders, getOrderListByGoodsId } = useSBYJOrderStore()
+const globalStore = useGlobalStore()
 const futuresStore = useFuturesStore()
 const userStore = useUserStore()
+
+const riskType = globalStore.getSystemInfo('riskType') // 风控类型
 const formRef = shallowRef<FormInstance>()
 const goodscode = getQueryString('goodscode') ?? ''
 const quote = futuresStore.getGoodsQuote(goodscode)
@@ -197,11 +209,13 @@ const enableqty = (item: Model.SBYJMyOrderRsp) => {
 
 // 数量步长列表
 const qtyStepList = computed(() => {
+    // 任务 #6013
+    const param1009 = userStore.getSystemParamValue('1009') ?? 1
     return [
-        agreeunit.value * 100,
-        agreeunit.value * 500,
-        agreeunit.value * 1000,
-        agreeunit.value * 5000
+        agreeunit.value * 1 * (+param1009),
+        agreeunit.value * 5 * (+param1009),
+        agreeunit.value * 10 * (+param1009),
+        agreeunit.value * 50 * (+param1009)
     ]
 })
 

+ 1 - 9
src/packages/sbyj/views/mine/index.less

@@ -75,17 +75,9 @@
                 justify-content: center;
 
                 span {
-                    line-height: 20px;
-
                     &:first-child {
                         font-size: 12px;
-                        color: #46D63C;
-
-                        &::before {
-                            content: '资金账户';
-                            color: #A1B1C5;
-                            margin-right: 6px;
-                        }
+                        color: #A1B1C5;
                     }
 
                     &:last-child {

+ 24 - 53
src/packages/sbyj/views/mine/index.vue

@@ -20,10 +20,12 @@
                             <div class="bottom">{{ loginStore.loginId }}</div>
                         </div>
                     </div>
-                    <!-- <div class="profile-account">
-                        <span>正常</span>
-                        <span>{{ currentAccount.accountid ?? 0 }}</span>
-                    </div> -->
+                    <div class="profile-account" v-if="globalStore.getSystemInfo('riskType') === 2">
+                        <span>风险率</span>
+                        <span :class="currentAccount.hazardRatioColor">
+                            {{ parsePercent(currentAccount.hazardRatio) }}
+                        </span>
+                    </div>
                 </div>
                 <div class="bank">
                     <ul>
@@ -48,38 +50,6 @@
                             </span>
                         </li>
                     </ul>
-                    <!-- <ul>
-                        <li>
-                            <span>余额</span>
-                            <span>{{ currentAccount.currentbalance?.toFixed(2) }}</span>
-                        </li>
-                        <li>
-                            <span>净值</span>
-                            <span>{{ currentAccount.hazardValue?.toFixed(2) }}</span>
-                        </li>
-                    </ul>
-                    <ul>
-                        <li>
-                            <span>预扣</span>
-                            <span>{{ currentAccount.freezeMargin?.toFixed(2) }}</span>
-                        </li>
-                        <li>
-                            <span>占用</span>
-                            <span>{{ currentAccount.usedmargin?.toFixed(2) }}</span>
-                        </li>
-                    </ul>
-                    <ul>
-                        <li>
-                            <span>可用</span>
-                            <span>{{ currentAccount.avaiableMoney?.toFixed(2) }}</span>
-                        </li>
-                        <li>
-                            <span>风险率</span>
-                            <span :class="currentAccount.hazardRatioColor">
-                                {{ parsePercent(currentAccount.hazardRatio) }}
-                            </span>
-                        </li>
-                    </ul> -->
                 </div>
                 <div class="button">
                     <Button type="danger" size="small" round @click="doInOutMoney('0')">入金</Button>
@@ -120,8 +90,8 @@
                         <Iconfont icon="g-icon-sign">签约账户</Iconfont>
                     </template>
                 </Cell>
-                <Cell is-link :to="{ name: 'account-protocol', query: { memberUserId: getMemberUserId() } }"
-                    v-if="userStore.userType != 2 && authStatus === AuthStatus.Certified">
+                <Cell is-link :to="{ name: 'account-protocol' }"
+                    v-if="signRecords.length && userStore.userType != 2 && authStatus === AuthStatus.Certified">
                     <template #title>
                         <Iconfont icon="g-icon-order--line">合同签署</Iconfont>
                     </template>
@@ -168,17 +138,18 @@
 import { shallowRef, onActivated, computed } from 'vue'
 import { Cell, CellGroup, Button, Icon } from 'vant'
 import { fullloading, dialog } from '@/utils/vant'
-import { handlePriceColor } from '@/filters'
+import { handlePriceColor, parsePercent } from '@/filters'
 import { useNavigation } from '@mobile/router/navigation'
 import { AuthStatus } from '@/constants/account'
+import { useRequest } from '@/hooks/request'
 import { queryBankAccountSign } from '@/services/api/bank'
-import { useLoginStore, useAccountStore, useUserStore, useSBYJOrderStore } from '@/stores'
+import { useGlobalStore, useLoginStore, useAccountStore, useUserStore, useSBYJOrderStore } from '@/stores'
 import eventBus from '@/services/bus'
 import Iconfont from '@/components/base/iconfont/index.vue'
-import { getMemberUserId, getUserId } from '@/services/methods/user'
 import { queryTencentUsereSignRecords } from '@/services/api/account'
 
 const { router, routerTo } = useNavigation()
+const globalStore = useGlobalStore()
 const loginStore = useLoginStore()
 const userStore = useUserStore()
 const sbyjOrderStore = useSBYJOrderStore()
@@ -189,6 +160,15 @@ const canBankSign = shallowRef(false)
 const headerRef = shallowRef<HTMLDivElement>()
 const authStatus = computed(() => userStore.userAccount.hasauth) // 实名认证状态
 
+// 任务 #6013
+const { dataList: signRecords, run: getTencentUsereSignRecords } = useRequest(queryTencentUsereSignRecords, {
+    manual: true,
+    onSuccess: (res) => {
+        /// 判断是否能签约
+        canBankSign.value = res.data.length === 0 || res.data.some(e => e.recordstatus === 3)
+    }
+})
+
 // 浮动盈亏
 const profitLoss = computed(() => {
     // 水贝亿爵订单列表
@@ -212,7 +192,7 @@ const doInOutMoney = (tab: string) => {
                 showCancelButton: true,
                 confirmButtonText: '去签署合同'
             }).then(() => {
-                router.push({ name: 'account-protocol', query: { memberUserId: getMemberUserId() } })
+                router.push({ name: 'account-protocol' })
             })
             return
         }
@@ -222,7 +202,7 @@ const doInOutMoney = (tab: string) => {
                 hideLoading()
                 const { signstatus } = res.data[0] ?? {}
                 /// 只有已签约的情况下才可以进行出入金
-                if (signstatus && signstatus === 4) {
+                if (signstatus === 4) {
                     router.push({ name: 'bank-wallet', query: { tab } })
                 } else {
                     dialog({
@@ -270,16 +250,7 @@ onActivated(() => {
         return
     }
 
-    /// 查询数据
-    queryTencentUsereSignRecords({
-        data: {
-            userId: getUserId(),
-            memberUserId: getMemberUserId()
-        }
-    }).then((res) => {
-        /// 判断是否能签约
-        canBankSign.value = res.data.length === 0 || res.data.some(e => e.recordstatus === 3)
-    })
+    getTencentUsereSignRecords()
 })
 </script>
 

+ 6 - 3
src/packages/sbyj/views/order/detail/index.vue

@@ -23,10 +23,10 @@
                         </template>
                     </Cell>
                     <Cell title="已付定金" :value="detail.payedDeposit" />
-                    <Cell title="已补定金" :value="detail.restockDeposit" />
+                    <Cell title="已补定金" :value="detail.restockDeposit" v-if="riskType === 1" />
                     <Cell title="订单天数" :value="detail.holdDays" />
                     <Cell title="滞纳金" :value="detail.callAteFee" />
-                    <Cell title="定金率">
+                    <Cell title="定金率" v-if="riskType === 1">
                         <template #value>
                             <span :class="detail.depositRate <= detail.promptDepositRate ? 'g-price-up' : ''">
                                 {{ parsePercent(detail.depositRate) }}
@@ -49,8 +49,9 @@ import { shallowRef, PropType, computed } from 'vue'
 import { CellGroup, Cell } from 'vant'
 import { parsePercent, handlePriceColor, formatDecimal } from '@/filters'
 import { BuyOrSell } from '@/constants/order'
-import AppModal from '@/components/base/modal/index.vue'
 import { getGoodsUnitName } from '@/constants/unit'
+import { useGlobalStore } from '@/stores'
+import AppModal from '@/components/base/modal/index.vue'
 
 const props = defineProps({
     selectedRow: {
@@ -59,6 +60,8 @@ const props = defineProps({
     }
 })
 
+const globalStore = useGlobalStore()
+const riskType = globalStore.getSystemInfo('riskType') // 风控类型
 const showModal = shallowRef(true)
 const refresh = shallowRef(false) // 是否刷新父组件数据
 

+ 6 - 2
src/packages/sbyj/views/order/history/index.vue

@@ -51,7 +51,7 @@
                                 <span>终止结余</span>
                                 <span :class="handlePriceColor(item.closepl)">{{ item.closepl }}</span>
                             </li>
-                            <li>
+                            <li v-if="riskType === 1">
                                 <span>已补定金</span>
                                 <span>{{ item.restockdeposit }}</span>
                             </li>
@@ -79,18 +79,22 @@
 <script lang="ts" setup>
 import { shallowRef, defineAsyncComponent } from 'vue'
 import { Button } from 'vant'
-import { formatDecimal,  handlePriceColor } from '@/filters'
+import { formatDecimal, handlePriceColor } from '@/filters'
 import { BuyOrSell } from '@/constants/order'
 import { getGoodsUnitName } from '@/constants/unit'
 import { useComponent } from '@/hooks/component'
 import { useRequest } from '@/hooks/request'
 import { queryTradeHolderDetailEx } from '@/services/api/order'
+import { useGlobalStore } from '@/stores'
 import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
 
 const componentMap = new Map<string, unknown>([
     ['detail', defineAsyncComponent(() => import('./components/detail/index.vue'))], // 详情
 ])
 
+const globalStore = useGlobalStore()
+const riskType = globalStore.getSystemInfo('riskType') // 风控类型
+
 const error = shallowRef(false)
 const dataList = shallowRef<Model.TradeHolderDetailExRsp[]>([])
 const selectedRow = shallowRef<Model.TradeHolderDetailExRsp>()

+ 7 - 4
src/packages/sbyj/views/order/list/index.vue

@@ -20,7 +20,7 @@
                                 {{ item.goodsCode + '/' + item.goodsName }}
                             </h4>
                         </div>
-                        <div class="right">
+                        <div class="right" v-if="riskType === 1">
                             <span
                                 :class="item.tHDetailEx.depositRate <= item.tHDetailEx.promptDepositRate ? 'g-price-up' : ''">
                                 {{ parsePercent(item.tHDetailEx.depositRate) }}
@@ -56,7 +56,7 @@
                                     {{ formatDecimal(item.tHDetailEx.floatPL) }}
                                 </span>
                             </li>
-                            <li>
+                            <li v-if="riskType === 1">
                                 <span>已补定金</span>
                                 <span>{{ item.tHDetailEx.restockDeposit }}</span>
                             </li>
@@ -72,7 +72,7 @@
                     </div>
                     <div class="g-order-list__btnbar">
                         <Button size="small" @click="showComponent('supplement', item)" round
-                            v-if="item.tHDetailEx.holderQty">补充</Button>
+                            v-if="riskType === 1 && item.tHDetailEx.holderQty">补充</Button>
                         <template v-if="enableqty(item)">
                             <Button size="small" @click="showComponent('delivery', item)" round>{{
                         getTagName(item.tHDetailEx.buyOrSell) }}</Button>
@@ -95,7 +95,7 @@ import { formatDecimal, parsePercent, handlePriceColor } from '@/filters'
 import { getGoodsUnitName } from '@/constants/unit'
 import { useComponent } from '@/hooks/component'
 import { Button } from 'vant'
-import { useSBYJOrderStore } from '@/stores'
+import { useGlobalStore, useSBYJOrderStore } from '@/stores'
 import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
 
 const componentMap = new Map<string, unknown>([
@@ -105,6 +105,9 @@ const componentMap = new Map<string, unknown>([
     ['closeholder', defineAsyncComponent(() => import('./components/close-holder/index.vue'))], // 转让
 ])
 
+const globalStore = useGlobalStore()
+const riskType = globalStore.getSystemInfo('riskType') // 风控类型
+
 const { getSBYJMyOrders, $toRefs } = useSBYJOrderStore()
 const { orderComputedList, loading, error } = $toRefs()
 const selectedRow = shallowRef<Model.SBYJMyOrderRsp>()

+ 24 - 65
src/packages/thj/views/account/protocol/Index.vue

@@ -5,10 +5,10 @@
         </template>
         <div class="g-form__container">
             <CellGroup inset>
-                <Cell title="姓名" :value="customername" />
-                <Cell title="手机号码" :value="mobile2" />
-                <Cell title="证件号码" :value="decryptAES(cardnum)" />
-                <Cell title="签署机构" :value="memberUserId" />
+                <Cell title="姓名" :value="userInfo.customername" />
+                <Cell title="手机号码" :value="userInfo.mobile2" />
+                <Cell title="证件号码" :value="decryptAES(userInfo.cardnum)" />
+                <Cell title="签署机构" :value="signId" />
             </CellGroup>
             <CellGroup inset>
                 <template v-for="(item, index) in dataList" :key="index">
@@ -26,57 +26,19 @@
 </template>
 
 <script lang="ts" setup>
-import { shallowRef } from 'vue'
 import { CellGroup, Cell, showFailToast, showToast, Button } from 'vant'
-import { fullloading } from '@/utils/vant';
+import { fullloading } from '@/utils/vant'
 import { useNavigation } from '@mobile/router/navigation'
-import { useRequest } from '@/hooks/request'
-import { queryTencentUsereSignRecords, requestInitMdUserSwapProtocol } from '@/services/api/account';
-import { useRequestCreateFlowByTemplateDirectly } from '@/business/user/account';
-import plus from '@/utils/h5plus'
-import { getUserId } from '@/services/methods/user'
-import { useUserStore } from '@/stores'
+import { requestInitMdUserSwapProtocol } from '@/services/api/account'
+import { useRequestCreateFlowByTemplateDirectly } from '@/business/user/account'
 import { decryptAES } from '@/services/websocket/package/crypto'
+import plus from '@/utils/h5plus'
 
 const { getQueryStringToNumber, router } = useNavigation()
 /// 所属机构
-const memberUserId = getQueryStringToNumber('memberUserId')
-/// userStore
-const userStore = useUserStore()
+const qs = getQueryStringToNumber('memberUserId')
 /// 创建电子签合同
-const { createTemplate, templateFormData } = useRequestCreateFlowByTemplateDirectly()
-/// 电子签合同信息
-const dataList = shallowRef<Model.TencentUsereSignRecordsRsq[]>([])
-/// 用户信息
-const { customername, cardnum, mobile2 } =  userStore.userInfo
-/// 查询
-const { run } = useRequest(queryTencentUsereSignRecords, {
-    params: {
-        userId: getUserId(),
-        memberUserId: memberUserId
-    },
-    onSuccess: (res) => {
-        if (res.data != null && res.data.length != 0) {
-            dataList.value = res.data
-        }  else {
-            /// 创建电子签合同
-            initMdUserSwapProtocol()
-        }
-    }
-})
-
-/// 创建电子签合同
-const { run: initMdUserSwapProtocol } = useRequest(requestInitMdUserSwapProtocol, {
-    manual: true,
-    params: {
-        userId: getUserId(),
-        memberUserId: memberUserId
-    },
-    onSuccess: () => {
-        /// 重新请求
-        run()
-    }
-})
+const { getTencentUsereSignRecords, createTemplate, userInfo, signId, dataList } = useRequestCreateFlowByTemplateDirectly(qs)
 
 const iconName = (type: number) => {
     switch (type) {
@@ -98,7 +60,7 @@ const openWebview = (url: string) => {
         plus.openWebview({
             url,
             titleText: '实名认证',
-            onClose: () => run()
+            onClose: () => getTencentUsereSignRecords()
         })
     }
 }
@@ -111,23 +73,8 @@ const signer = (item: Model.TencentUsereSignRecordsRsq) => {
         showFailToast('合同已签署,请前往腾讯电子签小程序查看!')
     } else {
         fullloading((hideLoading) => {
-            const userinfotype = useUserStore().userInfo.userinfotype
-            templateFormData.userESignRecordID = item.recordid
-            templateFormData.userType = userinfotype
-            /// 个人信息
-            if (userinfotype === 1) {
-                templateFormData.personInfo = {
-                    idCardNumber: decryptAES(cardnum),
-                    mobile: mobile2,
-                    name: customername
-                }
-            } else {
-                templateFormData.organizationInfo = {
-                    name: customername
-                }
-            }
             /// 创建合同
-            createTemplate().then((res) => {
+            createTemplate(item.recordid).then((res) => {
                 hideLoading()
                 openWebview(res.data.signUrl)
             }).catch((err) => {
@@ -137,4 +84,16 @@ const signer = (item: Model.TencentUsereSignRecordsRsq) => {
     }
 }
 
+getTencentUsereSignRecords().then(() => {
+    if (!dataList.value.length) {
+        // 创建电子签合同
+        requestInitMdUserSwapProtocol({
+            data: {
+                memberUserId: signId
+            }
+        }).then(() => {
+            getTencentUsereSignRecords()
+        })
+    }
+})
 </script>

+ 24 - 65
src/packages/tjmd/views/account/protocol/Index.vue

@@ -5,10 +5,10 @@
         </template>
         <div class="g-form__container">
             <CellGroup inset>
-                <Cell title="姓名" :value="customername" />
-                <Cell title="手机号码" :value="mobile2" />
-                <Cell title="证件号码" :value="decryptAES(cardnum)" />
-                <Cell title="签署机构" :value="memberUserId" />
+                <Cell title="姓名" :value="userInfo.customername" />
+                <Cell title="手机号码" :value="userInfo.mobile2" />
+                <Cell title="证件号码" :value="decryptAES(userInfo.cardnum)" />
+                <Cell title="签署机构" :value="signId" />
             </CellGroup>
             <CellGroup inset>
                 <template v-for="(item, index) in dataList" :key="index">
@@ -21,57 +21,19 @@
 </template>
 
 <script lang="ts" setup>
-import { shallowRef } from 'vue'
 import { CellGroup, Cell, showFailToast, showToast } from 'vant'
-import { fullloading } from '@/utils/vant';
+import { fullloading } from '@/utils/vant'
 import { useNavigation } from '@mobile/router/navigation'
-import { useRequest } from '@/hooks/request'
-import { queryTencentUsereSignRecords, requestInitTencentESS } from '@/services/api/account';
-import { useRequestCreateFlowByTemplateDirectly } from '@/business/user/account';
-import plus from '@/utils/h5plus'
-import { getUserId } from '@/services/methods/user'
-import { useUserStore } from '@/stores'
+import { requestInitTencentESS } from '@/services/api/account'
+import { useRequestCreateFlowByTemplateDirectly } from '@/business/user/account'
 import { decryptAES } from '@/services/websocket/package/crypto'
+import plus from '@/utils/h5plus'
 
 const { getQueryStringToNumber } = useNavigation()
 /// 所属机构
-const memberUserId = getQueryStringToNumber('memberUserId')
-/// userStore
-const userStore = useUserStore()
+const qs = getQueryStringToNumber('memberUserId')
 /// 创建电子签合同
-const { createTemplate, templateFormData } = useRequestCreateFlowByTemplateDirectly()
-/// 电子签合同信息
-const dataList = shallowRef<Model.TencentUsereSignRecordsRsq[]>([])
-/// 用户信息
-const { customername, cardnum, mobile2 } =  userStore.userInfo
-/// 查询
-const { run } = useRequest(queryTencentUsereSignRecords, {
-    params: {
-        userId: getUserId(),
-        memberUserId: memberUserId
-    },
-    onSuccess: (res) => {
-        if (res.data != null && res.data.length != 0) {
-            dataList.value = res.data
-        }  else {
-            /// 创建电子签合同
-            initTencentESS()
-        }
-    }
-})
-
-/// 创建电子签合同
-const { run: initTencentESS } = useRequest(requestInitTencentESS, {
-    manual: true,
-    params: {
-        userId: getUserId(),
-        memberUserId: memberUserId
-    },
-    onSuccess: () => {
-        /// 重新请求
-        run()
-    }
-})
+const { getTencentUsereSignRecords, createTemplate, userInfo, signId, dataList } = useRequestCreateFlowByTemplateDirectly(qs)
 
 const iconName = (type: number) => {
     switch (type) {
@@ -93,7 +55,7 @@ const openWebview = (url: string) => {
         plus.openWebview({
             url,
             titleText: '实名认证',
-            onClose: () => run()
+            onClose: () => getTencentUsereSignRecords()
         })
     }
 }
@@ -106,23 +68,8 @@ const signer = (item: Model.TencentUsereSignRecordsRsq) => {
         showFailToast('合同已签署,请前往腾讯电子签小程序查看!')
     } else {
         fullloading((hideLoading) => {
-            const userinfotype = useUserStore().userInfo.userinfotype
-            templateFormData.userESignRecordID = item.recordid
-            templateFormData.userType = userinfotype
-            /// 个人信息
-            if (userinfotype === 1) {
-                templateFormData.personInfo = {
-                    idCardNumber: decryptAES(cardnum),
-                    mobile: mobile2,
-                    name: customername
-                }
-            } else {
-                templateFormData.organizationInfo = {
-                    name: customername
-                }
-            }
             /// 创建合同
-            createTemplate().then((res) => {
+            createTemplate(item.recordid).then((res) => {
                 hideLoading()
                 openWebview(res.data.signUrl)
             }).catch((err) => {
@@ -132,4 +79,16 @@ const signer = (item: Model.TencentUsereSignRecordsRsq) => {
     }
 }
 
+getTencentUsereSignRecords().then(() => {
+    if (!dataList.value.length) {
+        // 创建电子签合同
+        requestInitTencentESS({
+            data: {
+                memberUserId: signId
+            }
+        }).then(() => {
+            getTencentUsereSignRecords()
+        })
+    }
+})
 </script>

+ 27 - 16
src/services/api/account/index.ts

@@ -1,11 +1,10 @@
+import { getUserId, getToken, getLoginId, getMemberUserId, getAccountId } from '@/services/methods/user'
+import { RequestConfig } from '@/services/http/types'
+import { useGlobalStore } from '@/stores'
 import service from '@/services'
 import http from '@/services/http'
-import { RequestConfig } from '@/services/http/types'
-import { useGlobalStore, useLoginStore,useAccountStore } from '@/stores'
 
 const globalStore = useGlobalStore()
-const loginStore = useLoginStore()
-const accountStore = useAccountStore()
 
 /**
  * 账户登录
@@ -46,8 +45,8 @@ export function tokenCheck() {
     if (globalStore.getSystemInfo('tradeChannel') === 'ws') {
         return http.mqRequest<Proto.TokenCheckRsp>({
             data: <Proto.TokenCheckReq>{
-                LoginID: loginStore.loginId,
-                Token: loginStore.token
+                LoginID: getLoginId(),
+                Token: getToken()
             },
             requestCode: 'TokenCheckReq',
             responseCode: 'TokenCheckRsp'
@@ -95,7 +94,7 @@ export function queryUserAccount(config: RequestConfig<{ userID: number }> = {})
     return http.commonRequest<Model.UserAccount>({
         url: '/User/GetUserAccount',
         params: {
-            userID: loginStore.userId,
+            userID: getUserId(),
             ...config.data
         },
     }, 'GetUserAccount')
@@ -108,7 +107,7 @@ export function getTodayAccountConfigInfo(config: RequestConfig<Model.TodayAccou
     return http.commonRequest<Model.TodayAccountConfigInfoRsp>({
         url: '/User/GetTodayAccountConfigInfo',
         params: {
-            accountid: accountStore.currentAccountId,
+            accountid: getAccountId(),
             ...config.data
         },
     })
@@ -141,7 +140,7 @@ export function queryWrDraftUserInfo(config: RequestConfig<Model.WrDraftUserInfo
     return http.commonRequest<Model.UserInfo[]>({
         url: '/WrTrade2/QueryWrDraftUserInfo',
         params: {
-            userid: loginStore.userId,
+            userid: getUserId(),
             ...config.data
         },
     })
@@ -243,7 +242,7 @@ export function requestCheckCardNum(config: RequestConfig<Model.CheckCardNumReq>
         method: 'get',
         url: service.getConfig('openApiUrl') + '/onlineopen/userInfo/checkCardNum',
         params: {
-            userid: loginStore.userId,
+            userid: getUserId(),
             ...config.data
         },
     })
@@ -256,8 +255,12 @@ export function queryTencentUsereSignRecords(config: RequestConfig<Model.Tencent
     return http.commonRequest<Model.TencentUsereSignRecordsRsq[]>({
         method: 'get',
         url: '/Tencent/QueryUsereSignRecords',
-        params: config.data,
-    }, 'QueryUsereSignRecords')
+        params: {
+            userId: getUserId(),
+            memberUserId: getMemberUserId(),
+            ...config.data
+        },
+    })
 }
 
 /**
@@ -275,10 +278,14 @@ export function requestCreateFlowByTemplateDirectly(config: RequestConfig<Model.
  * 按用户 ID 和机构 ID 创建腾讯电子签业务信息
  */
 export function requestInitTencentESS(config: RequestConfig<Model.InitTencentESSReq> = {}) {
-    return http.commonRequest<Model.InitTencentESSRsp>({
+    return http.commonRequest({
         method: 'post',
         url: '/Tencent/InitTencentESS',
-        data: config.data,
+        data: {
+            userId: getUserId(),
+            memberUserId: getMemberUserId(),
+            ...config.data
+        },
     })
 }
 
@@ -289,8 +296,12 @@ export function requestInitMdUserSwapProtocol(config: RequestConfig<Model.InitMd
     return http.commonRequest<Model.InitMdUserSwapProtocolRsp>({
         method: 'post',
         url: '/Tencent/InitMdUserSwapProtocol',
-        data: config.data,
-    }, 'InitMdUserSwapProtocol')
+        data: {
+            userId: getUserId(),
+            memberUserId: getMemberUserId(),
+            ...config.data
+        },
+    })
 }
 
 /**

+ 7 - 5
src/services/api/swap/index.ts

@@ -1,9 +1,8 @@
-import { useLoginStore, useUserStore } from '@/stores'
 import http from '@/services/http'
 import { RequestConfig } from '@/services/http/types'
-import { getMemberUserId } from '@/services/methods/user'
+import { getUserId, getMemberUserId } from '@/services/methods/user'
+import { useUserStore } from '@/stores'
 
-const loginStore = useLoginStore()
 const userStore = useUserStore()
 
 /**
@@ -53,7 +52,7 @@ export function queryTjmdTradeOrderDetail(config: RequestConfig<Model.TjmdTradeO
     return http.commonRequest<Model.TjmdTradeOrderDetailRsp[]>({
         url: '/Tjmd/QueryTjmdTradeOrderDetail',
         params: {
-            userid: loginStore.userId,
+            userid: getUserId(),
             usertype: userStore.userType,
             memberuserid: getMemberUserId(),
             ...config.data
@@ -77,6 +76,9 @@ export function queryTjmdTransferApply(config: RequestConfig<Model.TjmdTransferA
 export function queryMdUserSwapProtocol(config: RequestConfig<Model.MdUserSwapProtocolReq> = {}) {
     return http.commonRequest<Model.MdUserSwapProtocolRsp[]>({
         url: '/User/QueryMdUserSwapProtocol',
-        params: config.data,
+        params: {
+            userId: getUserId(),
+            ...config.data
+        },
     })
 }

+ 9 - 0
src/services/methods/user.ts

@@ -1,6 +1,15 @@
 import { useLoginStore, useAccountStore, useUserStore } from '@/stores'
 
 /**
+ * 获取令牌
+ * @returns 
+ */
+export function getToken() {
+    const store = useLoginStore()
+    return store.token
+}
+
+/**
  * 获取登录ID
  * @returns 
  */

+ 4 - 2
src/stores/modules/global.ts

@@ -14,8 +14,9 @@ export interface SystemInfo {
     modules: ('register' | 'delivery')[]; // 应用包含的模块
     quotationPropertys: (keyof Model.QuoteDayRsp)[]; // 盘面可显示的属性
     forcedPasswordChange: boolean; // 首次登录是否强制修改密码
-    slogan: string;
+    slogan: string; // 标语
     registrationCodeRule: -1 | 0 | 1; // 注册编码规则,-1隐藏,0非必填,1必填
+    riskType: 1 | 2; // 风控类型,1按单风控,2按账户风控
 }
 
 export const useGlobalStore = defineStore(() => {
@@ -38,7 +39,8 @@ export const useGlobalStore = defineStore(() => {
             quotationPropertys: [],
             forcedPasswordChange: false,
             slogan: '数字化交易平台\r\n现代化综合服务',
-            registrationCodeRule: 1
+            registrationCodeRule: 1,
+            riskType: 1
         }
     })
 

+ 4 - 2
src/stores/modules/position.ts

@@ -2,6 +2,7 @@ import { reactive, computed, toRefs } from 'vue'
 import { handlePriceColor, round } from '@/filters'
 import { BuyOrSell } from '@/constants/order'
 import { queryTradePosition, querySBYJMyOrders } from '@/services/api/order'
+import { useGlobalStore } from './global'
 import { useFuturesStore } from './futures'
 import { defineStore } from '../store'
 import eventBus from '@/services/bus'
@@ -11,6 +12,7 @@ import quoteSocket from '@/services/websocket/quote'
  * 持仓存储对象
  */
 export const usePositionStore = defineStore(() => {
+    const globalStore = useGlobalStore()
     const futuresStore = useFuturesStore()
     const subscribe = quoteSocket.createSubscribe()
 
@@ -54,8 +56,8 @@ export const usePositionStore = defineStore(() => {
             // 计算市值 = 现价 * 数量 * 合约单位
             const marketValue = price ? price * item.curpositionqty * item.agreeunit : 0
             const roundedMarketValue = round(marketValue, quote.value?.decimalplace)
-            // 计算浮动盈亏 任务 #5600
-            const closepl = (price && item.trademode !== 52) ? (roundedMarketValue - item.curholderamount) * (item.buyorsell === BuyOrSell.Buy ? 1 : -1) : 0
+            // 计算浮动盈亏 任务 #5600 #6013
+            const closepl = (price && globalStore.getSystemInfo('riskType') !== 1) ? (roundedMarketValue - item.curholderamount) * (item.buyorsell === BuyOrSell.Buy ? 1 : -1) : 0
             const roundedClosepl = round(closepl, quote.value?.decimalplace)
 
             result.push({

+ 0 - 6
src/types/model/user.d.ts

@@ -378,12 +378,6 @@ declare namespace Model {
         userId?: number
     }
 
-    /// 按用户 ID 和机构 ID 创建腾讯电子签业务信息 - 回应
-    interface InitTencentESSRsp {
-        /// code
-        code: string
-    }
-
     /** 查询银行支行联行号信息表 请求 */
     interface BankBranChnumInfoReq {
         branchname?: string; // 支行名称(模糊查询)