Handy_Cao преди 1 година
родител
ревизия
8b81bf5525

+ 1 - 1
public/config/appconfig.json

@@ -4,7 +4,7 @@
   "appTitle": "多元世纪交易中心",
   "version": "1.0.8",
   "versionCode": "10008",
-  "apiUrl": "http://192.168.31.204:8080/cfg?key=test_204",
+  "apiUrl": "http://192.168.31.158:16240/cfg?key=dev_104",
   "tradeChannel": "ws",
   "modules": [
     "register",

+ 13 - 1
public/config/columns.json

@@ -37,7 +37,7 @@
         ]
     },
     {
-        "tableKey": "order-detai2",
+        "tableKey": "order-detail2",
         "columns": [
             {
                 "field": "marketname",
@@ -64,6 +64,18 @@
                 "label": "position.goods.holddetail.holderamount"
             },
             {
+                "field": "usedMargin",
+                "label": "position.goods.holddetail.usedMargin"
+            },
+            {
+                "field": "profitLoss",
+                "label": "position.goods.holddetail.profitLoss"
+            },
+            {
+                "field": "riskRate",
+                "label": "position.goods.holddetail.riskRate"
+            },
+            {
                 "field": "tradetime",
                 "label": "position.goods.holddetail.tradetime"
             },

+ 7 - 7
public/config/router.json

@@ -162,6 +162,13 @@
                 "children": [
                     {
                         "authType": 2,
+                        "sort": 3,
+                        "title": "pcroute.bottom.bottom_pricing_detail2",
+                        "code": "bottom_pricing_detail2",
+                        "component": "views/footer/pricing/detail2/index.vue"
+                    },
+                    {
+                        "authType": 2,
                         "sort": 1,
                         "title": "pcroute.bottom.bottom_pricing_position",
                         "code": "bottom_pricing_position",
@@ -176,13 +183,6 @@
                     },
                     {
                         "authType": 2,
-                        "sort": 3,
-                        "title": "pcroute.bottom.bottom_pricing_detail",
-                        "code": "bottom_pricing_detail2",
-                        "component": "views/footer/pricing/detail2/index.vue"
-                    },
-                    {
-                        "authType": 2,
                         "sort": 4,
                         "title": "pcroute.bottom.bottom_pricing_order",
                         "code": "bottom_pricing_order",

+ 6 - 2
public/locales/en-US.json

@@ -81,7 +81,7 @@
         "save": "Save",
         "order": "Order",
         "cancel": "Cancel",
-        "cancel1": "Cancel Quick",
+        "cancel1": "Cancel-Quick",
         "cancel2": "Undo",
         "transfer": "Transfer",
         "delivery": "Delivery",
@@ -706,7 +706,10 @@
                 "holderqty": "HolderQty",
                 "freezeqty": "FreezeQty",
                 "holderprice": "HolderPrice",
-                "holderamount": "HolderAmount"
+                "holderamount": "HolderAmount",
+                "usedMargin": "UsedMargin",
+                "profitLoss": "ProfitLoss",
+                "riskRate": "RiskRate"
             }
         },
         "spot": {
@@ -1540,6 +1543,7 @@
             "bottom_pricing": "Pricing & Listing",
             "bottom_pricing_position": "Position",
             "bottom_pricing_detail": "Hold Details",
+            "bottom_pricing_detail2": "Order Details",
             "bottom_pricing_order": "Order",
             "bottom_pricing_trade": "Trade",
             "bottom_pricing_delivery": "Delivery",

+ 5 - 1
public/locales/th-TH.json

@@ -709,7 +709,10 @@
                 "holderqty": "จำนวน ที่เก็บไว้",
                 "freezeqty": "ระดับการแช่แข็ง",
                 "holderprice": "ลดราคา",
-                "holderamount": "จำนวน ที่เก็บไว้"
+                "holderamount": "จำนวน ที่เก็บไว้",
+                "usedMargin": "แทรก",
+                "profitLoss": "โชคดี",
+                "riskRate": "อัตราความเสี่ยง"
             }
         },
         "spot": {
@@ -1545,6 +1548,7 @@
             "bottom_pricing": "ลดราคา",
             "bottom_pricing_position": "สรุปรวมทั้งหมด",
             "bottom_pricing_detail": "รายละเอียด",
+            "bottom_pricing_detail2": "รายละเอียดการสั่งซื้อ",
             "bottom_pricing_order": "มอบหมาย",
             "bottom_pricing_trade": "ตกลง",
             "bottom_pricing_delivery": "กำลังตัด",

+ 7 - 3
public/locales/zh-CN.json

@@ -696,7 +696,7 @@
             "tips4": "转让成功",
             "tips5": "确认要交收吗?",
             "tips6": "交收成功",
-            "tips7": "'请输入交收量'",
+            "tips7": "请输入交收量",
             "tips8": "不能小于最小交收量",
             "tips9": "请输入收货地址",
             "tips10": "请输入交收信息",
@@ -709,7 +709,10 @@
                 "holderqty": "持仓量",
                 "freezeqty": "冻结量",
                 "holderprice": "持仓价格",
-                "holderamount": "持仓金额"
+                "holderamount": "持仓金额",
+                "usedMargin": "占用",
+                "profitLoss": "浮动盈亏",
+                "riskRate": "风险率"
             }
         },
         "spot": {
@@ -963,7 +966,7 @@
             "freezedays": "冻结天数",
             "tips1": "我已阅读并同意",
             "tips2": "《持仓转让协议》",
-            "tips3": "'请输入客户编号或手机号'",
+            "tips3": "请输入客户编号或手机号",
             "tips4": "请选择转让商品",
             "tips5": "请输入转让价格",
             "tips6": "请输入转让量",
@@ -1545,6 +1548,7 @@
             "bottom_pricing": "挂牌点价",
             "bottom_pricing_position": "持仓汇总",
             "bottom_pricing_detail": "持仓明细",
+            "bottom_pricing_detail2": "订单明细",
             "bottom_pricing_order": "委托",
             "bottom_pricing_trade": "成交",
             "bottom_pricing_delivery": "交收",

+ 6 - 2
public/locales/zh-TW.json

@@ -709,7 +709,10 @@
                 "holderqty": "持倉量",
                 "freezeqty": "凍結量",
                 "holderprice": "持倉價格",
-                "holderamount": "持倉金額"
+                "holderamount": "持倉金額",
+                "usedMargin": "佔用",
+                "profitLoss": "浮動盈虧",
+                "riskRate": "風險率"
             }
         },
         "spot": {
@@ -1544,7 +1547,8 @@
             "bottom_spot_pickup": "提貨",
             "bottom_pricing": "掛牌點價",
             "bottom_pricing_position": "持倉彙總",
-            "bottom_pricing_detail": "持倉明細",
+            "bottom_pricing_detail": "訂單明細",
+            "bottom_pricing_detail2": "รายละเอียดการสั่งซื้อ",
             "bottom_pricing_order": "委託",
             "bottom_pricing_trade": "成交",
             "bottom_pricing_delivery": "交收",

+ 26 - 22
src/packages/pc/views/footer/pricing/detail2/components/transfer/index.vue

@@ -3,28 +3,28 @@
     <app-drawer :title="t('operation.close')" :width="800" v-model:show="show" :loading="loading" :refresh="refresh">
         <el-form ref="formRef" class="el-form--horizontal" label-width="120px" :model="formData" :rules="formRules">
             <el-form-item :label="t('position.transfer.goodsname')">
-                <span>{{ selectedRow.goodscode }}/{{ selectedRow.goodsname }}</span>
+                <span>{{ selectedRow.goodsCode }}/{{ selectedRow.goodsName }}</span>
             </el-form-item>
             <el-form-item :label="t('position.transfer.buyorsell')">
-                <span>{{ getBuyOrSellName(selectedRow.buyorsell) }}</span>
+                <span>{{ getBuyOrSellName(selectedRow.tHDetailEx.buyOrSell) }}</span>
             </el-form-item>
             <el-form-item :label="t('position.transfer.buycurholderamount')">
-                <span>{{ formatDecimal(selectedRow.holderamount) }}</span>
+                <span>{{ formatDecimal(selectedRow.tHDetailEx.holderAmount) }}</span>
             </el-form-item>
             <el-form-item :label="t('position.transfer.holderqty')">
-                <span>{{ selectedRow.holderqty }}</span>
+                <span>{{ selectedRow.tHDetailEx.holderQty }}</span>
             </el-form-item>
             <el-form-item :label="t('position.transfer.holderprice')">
-                <span>{{ formatDecimal(selectedRow.holderprice, selectedRow.decimalplace) }}</span>
+                <span>{{ formatDecimal(selectedRow.tHDetailEx.holderPrice, selectedRow.decimalPlace) }}</span>
             </el-form-item>
             <el-form-item :label="t('position.goods.freezeqty')">
-                <span>{{ selectedRow.freezeqty }}</span>
+                <span>{{ selectedRow.tHDetailEx.freezeQty }}</span>
             </el-form-item>
             <el-form-item :label="t('position.transfer.enableqty')">
                 <span>{{ maxQty }}</span>
             </el-form-item>
             <el-form-item :label="t('position.transfer.closepl')">
-                <span :class="handlePriceColor(closepl)">{{ formatDecimal(closepl, selectedRow.decimalplace) }}</span>
+                <span :class="handlePriceColor(closepl)">{{ formatDecimal(closepl, selectedRow.decimalPlace) }}</span>
             </el-form-item>
             <el-form-item prop="PriceMode" :label="t('quote.pricing.pricemode')">
                 <el-radio-group v-model="formData.PriceMode">
@@ -66,13 +66,13 @@ import { ElMessage, FormInstance, FormRules } from 'element-plus'
 import { useOrder } from '@/business/trade'
 import { formatDecimal, handlePriceColor, handleRequestBigNumber, parsePercent } from '@/filters'
 import { getBuyOrSellName, BuyOrSell, getPricemode2List, PriceMode } from '@/constants/order'
-import { useFuturesStore, usePositionStore, i18n, useSettingStore, useUserStore } from '@/stores'
+import { useFuturesStore, usePositionStore, i18n, useSettingStore, useUserStore, useAccountStore } from '@/stores'
 import { EBuildType, EDelistingType, EListingSelectType, EValidType, EOrderOperateType } from '@/constants/client'
 import AppDrawer from '@pc/components/base/drawer/index.vue'
 
 const props = defineProps({
     selectedRow: {
-        type: Object as PropType<Model.TradeHolderDetailRsp>,
+        type: Object as PropType<Model.SBYJMyOrderRsp>,
         required: true
     }
 })
@@ -80,10 +80,11 @@ const props = defineProps({
 const futuresStore = useFuturesStore()
 const positionStore = usePositionStore()
 const userStore = useUserStore()
+const accountStore = useAccountStore()
 const settingStore = useSettingStore()
 // 价格类型
 const orderPriceType = computed(() => settingStore.getSettingValue('orderPriceType'))
-const quote = futuresStore.getGoodsQuote(props.selectedRow.goodscode)
+const quote = futuresStore.getGoodsQuote(props.selectedRow.goodsCode)
 const { t } = i18n.global
 const qtyStepList = [0.25, 0.5, 0.75, 1] // 数量步长列表
 const qtyStep = ref(1) // 数量步长
@@ -94,15 +95,18 @@ const formRef = ref<FormInstance>()
 
 // 可用数量
 const maxQty = computed(() => {
-    const record = positionStore.positionList.find((e) => e.goodsid === props.selectedRow.goodsid && e.buyorsell === props.selectedRow.buyorsell)
-    const qty = props.selectedRow.holderqty - props.selectedRow.freezeqty
+    const record = positionStore.positionList.find((e) => e.goodsid === props.selectedRow.tHDetailEx.goodsID && e.buyorsell === props.selectedRow.tHDetailEx.buyOrSell)
+    const qty = props.selectedRow.tHDetailEx.holderQty - props.selectedRow.tHDetailEx.freezeQty
     return Math.min(record?.enableqty ?? 0, qty)
 })
 
 // 损益
 const closepl = computed(() => {
     const { presettle = 0, last = 0 } = quote.value ?? {}
-    const { holderqty, holderamount, agreeunit, buyorsell, currencyid, tacurrencyid } = props.selectedRow
+    const { holderQty, holderAmount, buyOrSell } = props.selectedRow.tHDetailEx
+    const goods = futuresStore.getGoods(props.selectedRow.goodsCode)
+    const { currencyid, agreeunit = 0 } = goods ?? {}
+    const { currencyid: tacurrencyid } = accountStore.currentAccount
     const price = last || presettle // 没有最新价取昨结价
     
     // 查找汇率
@@ -113,8 +117,8 @@ const closepl = computed(() => {
     }
     
     // 计算市值 = 现价 * 数量 * 合约单位
-    const marketValue = price ? price * holderqty * agreeunit * exchangerate : 0
-    return price ? (marketValue - holderamount) * (buyorsell === BuyOrSell.Buy ? 1 : -1) : 0
+    const marketValue = price ? price * holderQty * agreeunit * exchangerate : 0
+    return price ? (marketValue - holderAmount) * (buyOrSell === BuyOrSell.Buy ? 1 : -1) : 0
 })
 
 const formRules: FormRules = {
@@ -175,19 +179,19 @@ const marketPrice = computed(() => {
 const onCloseSumit = () => {
     formRef.value?.validate((valid) => {
         if (valid) {
-            const { marketid, goodsid, buyorsell, tradeid } = props.selectedRow
+            const { marketID, goodsID, buyOrSell, tradeID } = props.selectedRow.tHDetailEx
             /// 市场ID
-            formData.Header = { MarketID: marketid, GoodsID: goodsid }
-            formData.MarketID = marketid
+            formData.Header = { MarketID: marketID, GoodsID: goodsID }
+            formData.MarketID = marketID
             if (formData.PriceMode === PriceMode.Market) { formData.OrderPrice = marketPrice.value }
-            formData.BuyOrSell = buyorsell === BuyOrSell.Buy ? BuyOrSell.Sell : BuyOrSell.Buy
-            formData.GoodsID = goodsid
+            formData.BuyOrSell = buyOrSell === BuyOrSell.Buy ? BuyOrSell.Sell : BuyOrSell.Buy
+            formData.GoodsID = goodsID
             formData.ListingSelectType = EListingSelectType.LISTINGSELECTTYPE_DELISTINGTHENLISTING
             formData.DelistingType = EDelistingType.DELISTINGTYPE_PRICE
             formData.BuildType = EBuildType.BUILDTYPE_CLOSE
             formData.TimevalidType = EValidType.VALIDTYPE_DR
             formData.OperateType = EOrderOperateType.ORDEROPERATETYPE_HOLDER_CLOSE
-            formData.RelatedID = handleRequestBigNumber(tradeid)
+            formData.RelatedID = handleRequestBigNumber(tradeID)
 
             formSubmit().then(() => {
                 if (settingStore.getSettingValue('showOrderSuccessMessage')) {
@@ -209,7 +213,7 @@ const onRadioChange = (value: number) => {
 
 onMounted(() => {
     const { bid, ask, presettle = 0 } = quote.value ?? {}
-    switch (props.selectedRow.buyorsell) {
+    switch (props.selectedRow.tHDetailEx.buyOrSell) {
         case BuyOrSell.Buy:
             formData.OrderPrice = ask || presettle
             break

+ 53 - 15
src/packages/pc/views/footer/pricing/detail2/index.vue

@@ -1,13 +1,47 @@
 <!-- 挂牌点价-持仓明细 按账户风控 -->
 <template>
-    <app-table :data="tableList" v-model:columns="tableColumns">
+    <app-table :data="orderComputedList" v-model:columns="tableColumns" :loading="loading" v-model:error="error">
         <!-- 商品代码/名称 -->
         <template #goodsname="{ row }">
-            {{ row.goodscode }}/{{ row.goodsname }}
+            {{ row.goodsCode }}/{{ row.goodsName }}
         </template>
         <!-- 方向 -->
-        <template #buyorsell="{ value }">
-            {{ getBuyOrSellName(value) }}
+        <template #buyorsell="{ row }">
+            {{ getBuyOrSellName(row.tHDetailEx.buyOrSell) }}
+        </template>
+        <!-- 持仓数量 -->
+        <template #holderqty="{ row }">
+            {{ enableqty(row) + getGoodsUnitName(row.goodsUnitID) }}
+        </template>
+        <!-- 持仓价格 -->
+        <template #holderprice="{ row }">
+            {{ formatDecimal(row.tHDetailEx.holderPrice, row.decimalPlace) }}
+        </template>
+        <!-- 持仓金额 -->
+        <template #holderamount="{ row }">
+            {{ formatDecimal(row.tHDetailEx.holderPrice, row.decimalPlace) }}
+        </template>
+         <!-- 占用 -->
+         <template #usedMargin="{ row }">
+            {{ formatDecimal(row.tHDetailEx.payedDeposit+row.tHDetailEx.restockDeposit, row.decimalPlace) }}
+        </template>
+        <!-- 浮动权益-->
+        <template #profitLoss="{ row }">
+            <span :class="handlePriceColor(row.tHDetailEx.floatPL)">{{ formatDecimal(row.tHDetailEx.floatPL) }}</span>
+        </template>
+         <!-- 风险率 -->
+         <template #riskRate="{ row }">
+            <span :class="row.tHDetailEx.depositRate <= row.tHDetailEx.promptDepositRate ? 'g-price-up' : ''">
+                {{ parsePercent(row.tHDetailEx.depositRate) }}
+            </span>
+        </template>
+         <!-- 交易时间 -->
+         <template #tradetime="{ row }">
+            {{ formatDate(row.tHDetailEx.tradeTime) }}
+        </template>
+         <!-- 成交单号 -->
+         <template #tradeid="{ row }">
+            {{ row.tHDetailEx.tradeID }}
         </template>
         <!-- 操作 -->
         <template #operate="{ row }">
@@ -23,14 +57,15 @@
     </app-table>
 </template>
 
-<script lang="ts" setup>
+<script lang="ts" setup> 
 import { shallowRef, defineAsyncComponent, onUnmounted } from 'vue'
 import { getBuyOrSellName } from '@/constants/order'
-import { useRequest } from '@/hooks/request'
+import { formatDecimal, formatDate, parsePercent, handlePriceColor } from '@/filters'
+import { getGoodsUnitName } from '@/constants/unit'
 import { useComponent } from '@/hooks/component'
 import { useLocalPagination } from '@/hooks/pagination'
-import { querySBYJMyOrders } from '@/services/api/order'
 import { useTableColumnsStore, i18n } from '@/stores'
+import { useSBYJOrderStore } from '@/stores'
 import AppTable from '@pc/components/base/table/index.vue'
 import eventBus from '@/services/bus'
 
@@ -39,21 +74,24 @@ const componentMap = new Map<string, unknown>([
 ])
 
 const { getTableColumns } = useTableColumnsStore()
-const { tableList, showLoadMore, initTableData, loadMore } = useLocalPagination<Model.SBYJMyOrderRsp>()
+const { showLoadMore, loadMore } = useLocalPagination<Model.SBYJMyOrderRsp>()
 const selectedRow = shallowRef<Model.SBYJMyOrderRsp>()
 const tableColumns = shallowRef<Model.TableColumn[]>([])
 const { t } = i18n.global
 
-const { run } = useRequest(querySBYJMyOrders, {
-    onSuccess: (res) => initTableData(res.data)
-})
+const { getSBYJMyOrders, $toRefs } = useSBYJOrderStore()
+const { orderComputedList, loading, error } = $toRefs()
 
-const { componentRef, componentId, openComponent, closeComponent } = useComponent(() => {
-    run()
-})
+const { componentRef, componentId, openComponent, closeComponent } = useComponent(() => getSBYJMyOrders())
+
+// 可用重量
+const enableqty = (item: Model.SBYJMyOrderRsp) => {
+    const { tHDetailEx, agreeUnit } = item
+    return (tHDetailEx.holderQty - tHDetailEx.freezeQty) * agreeUnit
+}
 
 // 接收头寸变化通知通知
-const posChangedNtf = eventBus.$on('PosChangedNtf', () => run())
+const posChangedNtf = eventBus.$on('PosChangedNtf', () => getSBYJMyOrders())
 
 const showComponent = (componentName: string, row: Model.SBYJMyOrderRsp) => {
     selectedRow.value = row

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

@@ -1476,6 +1476,12 @@ declare namespace Model {
     }
 
     interface TradeHolderDetailEx {
+        /// 报价货币ID - taaccount
+        taCurrencyID: number
+        /// 商品币种id
+        currencyID: number
+        /// 合约单位
+        agreeUnit: number;
         /// 成交单号(101+Unix秒时间戳(10位)+2位(MarketServiceID)+xxxx)
         tradeID: string;
         /// 方向 - 0:买 1:卖