Prechádzať zdrojové kódy

Merge branch 'master' of http://47.101.159.18:3000/Muchinfo/MTP20_WEB_GLOBAL

li.shaoyi 2 rokov pred
rodič
commit
614c9a95d0
50 zmenil súbory, kde vykonal 1275 pridanie a 163 odobranie
  1. 1 1
      src/business/bank/index.ts
  2. 68 0
      src/constants/order.ts
  3. 2 2
      src/mock/router.ts
  4. 6 2
      src/packages/mobile/views/ballot/detail/components/delisting/index.vue
  5. 1 1
      src/packages/mobile/views/order/list/components/listingorder/detail/Index.vue
  6. 2 5
      src/packages/mobile/views/order/list/components/listingtrade/detail/Index.vue
  7. 2 3
      src/packages/mobile/views/order/list/components/presale/detail/Index.vue
  8. 8 8
      src/packages/mobile/views/order/list/components/presale/history/index.vue
  9. 8 8
      src/packages/mobile/views/order/list/components/presale/list/Index.vue
  10. 1 1
      src/packages/mobile/views/order/list/components/pricingorder/detail/Index.vue
  11. 1 4
      src/packages/mobile/views/order/list/components/pricingtrade/detail/Index.vue
  12. 1 1
      src/packages/mobile/views/order/list/components/swaporder/detail/Index.vue
  13. 1 1
      src/packages/mobile/views/order/performance/components/breach/Index.vue
  14. 52 14
      src/packages/mobile/views/order/performance/components/detail/Index.vue
  15. 49 0
      src/packages/mobile/views/order/performance/components/detail/index.less
  16. 1 1
      src/packages/mobile/views/order/performance/components/modify/Index.vue
  17. 1 1
      src/packages/mobile/views/order/position/components/goods/close/Index.vue
  18. 1 1
      src/packages/mobile/views/order/position/components/goods/delivery/Index.vue
  19. 2 2
      src/packages/mobile/views/order/position/components/presale/detail/Index.vue
  20. 16 1
      src/packages/pc/views/footer/capital/statement/index.vue
  21. 21 2
      src/packages/pc/views/footer/goods/delivery/index.vue
  22. 33 2
      src/packages/pc/views/footer/goods/order/index.vue
  23. 24 10
      src/packages/pc/views/footer/goods/position/index.vue
  24. 35 2
      src/packages/pc/views/footer/goods/trade/index.vue
  25. 55 0
      src/packages/pc/views/footer/performance/buy/index.vue
  26. 0 12
      src/packages/pc/views/footer/performance/list/index.vue
  27. 55 0
      src/packages/pc/views/footer/performance/sell/index.vue
  28. 42 1
      src/packages/pc/views/footer/spot/order/index.vue
  29. 24 1
      src/packages/pc/views/footer/spot/pickup/index.vue
  30. 20 1
      src/packages/pc/views/footer/spot/position/index.vue
  31. 36 1
      src/packages/pc/views/footer/spot/trade/index.vue
  32. 45 1
      src/packages/pc/views/query/capital/history/index.vue
  33. 16 1
      src/packages/pc/views/query/capital/list/index.vue
  34. 77 2
      src/packages/pc/views/query/order/spot/history/index.vue
  35. 42 1
      src/packages/pc/views/query/order/spot/list/index.vue
  36. 44 1
      src/packages/pc/views/query/performance/buy/all/index.vue
  37. 45 1
      src/packages/pc/views/query/performance/buy/running/index.vue
  38. 44 1
      src/packages/pc/views/query/performance/sell/all/index.vue
  39. 45 1
      src/packages/pc/views/query/performance/sell/running/index.vue
  40. 62 1
      src/packages/pc/views/query/trade/goods/history/index.vue
  41. 34 1
      src/packages/pc/views/query/trade/goods/list/index.vue
  42. 66 3
      src/packages/pc/views/query/trade/spot/history/index.vue
  43. 31 1
      src/packages/pc/views/query/trade/spot/list/index.vue
  44. 127 55
      src/packages/sbyj/views/market/list/index.vue
  45. 20 1
      src/services/api/goods/index.ts
  46. 2 1
      src/services/api/quote/index.ts
  47. 1 1
      src/stores/modules/enum.ts
  48. 2 1
      src/stores/modules/futures.ts
  49. 2 0
      src/types/model/goods.d.ts
  50. 1 0
      src/types/model/market.d.ts

+ 1 - 1
src/business/bank/index.ts

@@ -159,7 +159,7 @@ export function useDoBankSign() {
         AccountType: 1,
         IsForce: 0,
         AgentCertType: 0,
-        BankCardType: 0,
+        BankCardType: 0, 
         BankAccountType: 1,
         extend_info: JSON.stringify({ "sex": 1 }),
         AccountCode: accountStore.accountId.toString(),

+ 68 - 0
src/constants/order.ts

@@ -33,12 +33,24 @@ export enum WrTradeType {
     DeListing = 2,
 }
 
+/// 价格方式 - 1:固定价 2-浮动价 - [挂牌]
+export enum WrPriceType {
+    Fix = 1,
+    Float = 2,
+}
+
 /// 支付状态
 export enum PayStatus {
     UnPay = 1,
     Pay = 2,
 }
 
+/// 付款方式 - 1:冻结 2:扣款
+export enum PaymentType {
+    Freeze = 1,
+    Blance = 2,
+}
+
 /**
  * 获取买卖方向列表
  * @returns 
@@ -63,6 +75,29 @@ export function getWrTradeTypeList() {
 }
 
 /**
+ * 获取仓单贸易价格方式类型列表
+ * @returns 
+ */
+export function getWRPriceTypeList() {
+    return [
+        { label: '一口价', value: WrPriceType.Fix},
+        { label: '浮动价', value: WrPriceType.Float },
+    ]
+}
+
+/**
+ * 获取仓单贸易付款方式 
+ * @returns 
+ */
+export function getPaymentTypeList() {
+    return [
+        { label: '冻结', value: PaymentType.Freeze},
+        { label: '扣款', value: PaymentType.Blance },
+    ]
+}
+
+
+/**
  * 获取买卖方向名称
  * @returns 
  */
@@ -80,6 +115,22 @@ export function getWrTradeTypeName(value: number) {
 }
 
 /**
+ * 获取仓单贸易付款方式 
+ * @returns 
+ */
+export function getPaymentTypeName(value: number) {
+    return getEnumTypeName(getPaymentTypeList(), value)
+}
+
+/**
+ * 获取仓单贸易价格类型名称
+ * @returns 
+ */
+export function getWrPriceTypeName(value: number) {
+    return getEnumTypeName(getWRPriceTypeList(), value)
+}
+
+/**
  * 获取委托单据类型列表
  * @returns 
  */
@@ -240,6 +291,23 @@ export function getPerformanceStatusName(value: number) {
 }
 
 /**
+ * 获取履约步骤状态类型列表
+ * @returns 
+ */
+export function getPerformanceStepStatusList() {
+    return getEnumTypeList('stepStatus')
+}
+
+/**
+ * 获取履约步骤状态类型名称
+ * @returns 
+ */
+export function getPerformanceStepStatusName(value: number) {
+    const enums = getPerformanceStepStatusList()
+    return getEnumTypeName(enums, value)
+}
+
+/**
  * 获取履约类型列表
  * @returns 
  */

+ 2 - 2
src/mock/router.ts

@@ -135,14 +135,14 @@ const appmenu = {
                                 sort: 1,
                                 title: '买履约',
                                 code: 'bottom_performance_buy',
-                                component: 'views/footer/performance/list/index.vue',
+                                component: 'views/footer/performance/buy/index.vue',
                             },
                             {
                                 authType: 2,
                                 sort: 2,
                                 title: '卖履约',
                                 code: 'bottom_performance_sell',
-                                component: 'views/footer/performance/list/index.vue',
+                                component: 'views/footer/performance/sell/index.vue',
                             }
                         ]
                     },

+ 6 - 2
src/packages/mobile/views/ballot/detail/components/delisting/index.vue

@@ -57,8 +57,12 @@ const showModal = shallowRef(true)
 const formRules: { [key in keyof Proto.OrderReq]?: FieldRule[] } = {
     OrderQty: [{
         message: '请输入数量',
-        validator: () => {
-            return !!formData.OrderQty
+        validator: (val) => {
+            const enable = props.detail.presaleqty-props.detail.presaledqty
+            if (val <= enable) {
+                return true
+            }
+            return '委托数量不能大于'+`${enable}`
         }
     }],
 }

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

@@ -5,7 +5,7 @@
             <template #header>
                 <app-navbar title="挂牌委托单" @back="closed" />
             </template>
-            <div v-if="props" class="order-detail__container g-form__container">
+            <div class="order-detail__container g-form__container">
                 <CellGroup title="挂牌委托信息">
                     <Cell title="商品代码/名称" :value="selectedRow.wrstandardcode + '/' + selectedRow.wrstandardname" />
                     <Cell title="仓库" :value="selectedRow.warehousename" />

+ 2 - 5
src/packages/mobile/views/order/list/components/listingtrade/detail/Index.vue

@@ -5,7 +5,7 @@
             <template #header>
                 <app-navbar title="挂牌成交单" @back="closed" />
             </template>
-            <div v-if="props" class="order-detail__container g-form__container">
+            <div class="order-detail__container g-form__container">
                 <CellGroup title="挂牌成交信息">
                     <Cell title="商品代码/名称" :value="selectedRow.wrstandardcode + '/' + selectedRow.wrstandardname" />
                     <Cell title="仓库" :value="selectedRow.warehousename" />
@@ -19,9 +19,6 @@
                     <Cell title="成交单号" :value="selectedRow.wrtradedetailid" />
                 </CellGroup>
             </div>
-            <div v-else>
-                <Empty />
-            </div>
         </app-view>
     </app-modal>
 </template>
@@ -36,7 +33,7 @@ import { getBuyOrSellName, getWrTradeTypeName } from '@/constants/order'
 const showModal = shallowRef(true)
 const refresh = shallowRef(false) // 是否刷新父组件数据
 
-const props = defineProps({
+defineProps({
     selectedRow: {
         type: Object as PropType<Model.WrTradeDetailRsp>,
         required: true,

+ 2 - 3
src/packages/mobile/views/order/list/components/presale/detail/Index.vue

@@ -11,10 +11,9 @@
                     <Cell title="认购数量" :value="selectedRow.orderqty" />
                     <Cell title="认购价" :value="selectedRow.orderprice" />
                     <Cell title="认购金额" :value="(selectedRow.orderprice * selectedRow.orderqty).toFixed(2)" />
-                    <Cell title="定金方式" :value="parsePercent(selectedRow.presaledepositvalue)" />
+                    <Cell title="定金方式" :value="selectedRow.presaledepositalgorithm === 1 ? '比率' : '固定'" />
                     <Cell title="预售定金" :value="selectedRow.freezemargin" />
                     <Cell title="发售方" :value="selectedRow.sellname" />
-                    <Cell title="起拍价" :value="selectedRow.startprice" />
                     <Cell title="开始日期" :value="formatDate(selectedRow.starttime, 'YYYY-MM-DD')" />
                     <Cell title="结束日期" :value="formatDate(selectedRow.endtime, 'YYYY-MM-DD')" />
                     <Cell title="委托状态" :value="getOrderStatusName(selectedRow.orderstatus)" />
@@ -31,7 +30,7 @@
 <script lang="ts" setup>
 import { shallowRef, PropType } from 'vue'
 import { CellGroup, Cell } from 'vant'
-import { handleNumberValue, formatDate, parsePercent } from '@/filters'
+import { handleNumberValue, formatDate } from '@/filters'
 import { getOrderStatusName } from '@/constants/order'
 import AppModal from '@/components/base/modal/index.vue'
 

+ 8 - 8
src/packages/mobile/views/order/list/components/presale/history/index.vue

@@ -15,7 +15,7 @@
                     <div class="g-order-list__box" v-for="(item, index) in dataList" :key="index">
                         <div class="g-order-list__titlebar">
                             <div class="left">
-                                <h4>{{ item.goodsname }}</h4>
+                                <h4>{{ item.goodscode }}/{{ item.goodsname }}</h4>
                             </div>
                             <div class="right">
                                 <span>{{ getOrderStatusName(item.orderstatus) }}</span>
@@ -36,16 +36,16 @@
                                     <span>{{ item.sellname }}</span>
                                 </li>
                                 <li>
-                                    <span>起拍价</span>
-                                    <span>{{ item.startprice }}</span>
+                                    <span>认购金额</span>
+                                    <span>{{ handleNumberValue(item.orderprice * item.orderqty) }}</span>
                                 </li>
                                 <li>
-                                    <span>预售价</span>
-                                    <span>{{ handleNumberValue(item.tradeprice) }}</span>
+                                    <span>定金比例</span>
+                                    <span>{{ parsePercent(item.presaledepositvalue) }}</span>
                                 </li>
                                 <li>
-                                    <span>订单量</span>
-                                    <span>{{ handleNumberValue(item.tradeqty) }}</span>
+                                    <span>预售定金</span>
+                                    <span>{{ handleNumberValue(item.freezemargin) }}</span>
                                 </li>
                                 <li>
                                     <span>开始日期</span>
@@ -77,7 +77,7 @@
 
 <script lang="ts" setup>
 import { shallowRef, ref, defineAsyncComponent } from 'vue'
-import { formatDate, handleNumberValue } from '@/filters'
+import { formatDate, handleNumberValue, parsePercent } from '@/filters'
 import { useRequest } from '@/hooks/request'
 import { queryMineTradeOrderDetails } from '@/services/api/presale'
 import { getOrderStatusName } from '@/constants/order'

+ 8 - 8
src/packages/mobile/views/order/list/components/presale/list/Index.vue

@@ -6,7 +6,7 @@
             <div class="g-order-list__box" v-for="(item, index) in dataList" :key="index">
                 <div class="g-order-list__titlebar">
                     <div class="left">
-                        <h4>{{ item.goodsname }}</h4>
+                        <h4>{{ item.goodscode }}/{{ item.goodsname }}</h4>
                     </div>
                     <div class="right">
                         <span>{{ getOrderStatusName(item.orderstatus) }}</span>
@@ -27,16 +27,16 @@
                             <span>{{ item.sellname }}</span>
                         </li>
                         <li>
-                            <span>起拍价</span>
-                            <span>{{ item.startprice }}</span>
+                            <span>认购金额</span>
+                            <span>{{ formatDecimal(item.orderprice * item.orderqty) }}</span>
                         </li>
                         <li>
-                            <span>预售价</span>
-                            <span>{{ handleNumberValue(item.tradeprice) }}</span>
+                            <span>定金比例</span>
+                            <span>{{ parsePercent(item.presaledepositvalue) }}</span>
                         </li>
                         <li>
-                            <span>订单量</span>
-                            <span>{{ handleNumberValue(item.tradeqty) }}</span>
+                            <span>预售定金</span>
+                            <span>{{ handleNumberValue(item.freezemargin) }}</span>
                         </li>
                         <li>
                             <span>开始日期</span>
@@ -65,7 +65,7 @@
 <script lang="ts" setup>
 import { shallowRef, defineAsyncComponent } from 'vue'
 import { Button } from 'vant'
-import { formatDate, handleNumberValue } from '@/filters'
+import { formatDate, handleNumberValue, parsePercent, formatDecimal } from '@/filters'
 import { useComponent } from '@/hooks/component'
 import { useRequest } from '@/hooks/request'
 import { queryMineTradeOrderDetails } from '@/services/api/presale'

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

@@ -5,7 +5,7 @@
             <template #header>
                 <app-navbar title="详细" @back="closed" />
             </template>
-            <div v-if="props" class="order-detail__container g-form__container">
+            <div class="order-detail__container g-form__container">
                 <CellGroup title="挂牌点价委托信息">
                     <Cell title="商品代码/名称" :value="selectedRow.goodscode + '/' + selectedRow.goodsname" />
                     <Cell title="方向" :value="getBuyOrSellName(selectedRow.buyorsell)" />

+ 1 - 4
src/packages/mobile/views/order/list/components/pricingtrade/detail/Index.vue

@@ -5,7 +5,7 @@
             <template #header>
                 <app-navbar title="详细" @back="closed" />
             </template>
-            <div v-if="props" class="order-detail__container g-form__container">
+            <div class="order-detail__container g-form__container">
                 <CellGroup title="挂牌点价成交信息">
                     <Cell title="商品代码/名称" :value="selectedRow.goodscode+'/'+selectedRow.goodsname"/>
                     <Cell title="方向" :value="getBuyOrSellName(selectedRow.buyorsell)" />
@@ -19,9 +19,6 @@
                     <Cell title="成交单号" :value="selectedRow.tradeid" />
                 </CellGroup>
             </div>
-            <div v-else>
-                <Empty />
-            </div>
         </app-view>
     </app-modal>
 </template>

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

@@ -5,7 +5,7 @@
             <template #header>
                 <app-navbar title="掉期委托单" @back="closed" />
             </template>
-            <div v-if="props" class="order-detail__container g-form__container">
+            <div class="order-detail__container g-form__container">
                 <CellGroup title="掉期委托信息">
                     <Cell title="商品代码/名称" :value="selectedRow.goodscode + '/' + selectedRow.goodsname" />
                     <Cell title="方向" :value="getBuyOrSellName(selectedRow.buyorsell)" />

+ 1 - 1
src/packages/mobile/views/order/performance/components/breach/Index.vue

@@ -70,7 +70,7 @@ const formRules: { [key in keyof Proto.PerformanceContractedApplyReq]?: FieldRul
 
 const contracted = () => {
     dialog({
-        message: '确认要违约申请吗?',
+        message: '确认要提交违约申请吗?',
         showCancelButton: true,
     }).then(() => {
         /// PerformancePlanID

+ 52 - 14
src/packages/mobile/views/order/performance/components/detail/Index.vue

@@ -1,11 +1,11 @@
 <!-- 我的订单- 我的履约 - 详情 -->
 <template>
     <app-modal direction="right" height="100%" v-model:show="showModal" :refresh="refresh">
-        <app-view class="g-form" v-model="loading">
+        <app-view class="g-form">
             <template #header>
                 <app-navbar title="履约详情" @back="closed" />
             </template>
-            <div v-if="props" class="order-detail__container g-form__container">
+            <div class="order-detail__container g-form__container">
                 <CellGroup title="履约信息">
                     <Cell title="类型" :value="selectedRow.typename" />
                     <Cell title="商品" :value="selectedRow.wrstandardname" />
@@ -23,7 +23,21 @@
                     <Cell title="履约单号" :value="selectedRow.performanceplanid" />
                 </CellGroup>
                 <CellGroup title="执行信息">
-
+                    <div class="planstep-info" v-for="(item, index) in dataList" :key="index">
+                        <div class="planstep-info__up" :style="styles(item.stepstatus)">
+                            <p class="stepindex">{{ item.stepindex }}</p>
+                            <p class="steptypename">{{ item.steptypename }}</p>
+                            <p class="stepstatus">{{ getPerformanceStepStatusName(item.stepstatus) }}</p>
+                        </div>
+                        <div class="planstep-info__mid">
+                            <p class="starttime" v-if="item.stepstatus != 2">{{ handleNoneValue(item.starttime) }}</p>
+                            <p class="remaindays">{{ remaindays(item) }}</p>
+                            <p class="endtime" v-if="item.stepstatus != 2">{{ handleNoneValue(item.endtime) }}</p>
+                        </div>
+                        <div class="planstep-info__dwn" v-if="item.stepstatus === 1">
+                            <p class="remaindays">{{ item.stepdays }}天</p>
+                        </div>
+                    </div>
                 </CellGroup>
             </div>
             <Form ref="formRef" class="g-form__container" @submit="toConfirm">
@@ -44,9 +58,10 @@
 import { shallowRef, PropType } from 'vue'
 import { CellGroup, Cell, Button, Dialog, Field, FieldRule, Form, FormInstance } from 'vant'
 import { fullloading } from '@/utils/vant'
-import { formatDate, formatDecimal } from '@/filters'
+import { formatDate, formatDecimal, handleNoneValue } from '@/filters'
 import { usePerformanceDelayApply, usePerformanceManualConfirm } from '@/business/performance'
 import { queryWrPerformancePlanStep } from '@/services/api/performance'
+import { getPerformanceStepStatusName } from '@/constants/order'
 
 import AppModal from '@/components/base/modal/index.vue'
 import { useRequest } from '@/hooks/request'
@@ -65,13 +80,39 @@ const props = defineProps({
 })
 
 const { confirmFormData, confirmSubmit } = usePerformanceManualConfirm(props.selectedRow.buyaccountid)
-const datelist = shallowRef<Model.WrPerformancePlanStep[]>([])
-const error = shallowRef(false)
 const show = shallowRef(false)
 const showDays = shallowRef(false)
 const remark = shallowRef('')
 const dialogTitle = shallowRef('是否要手动执行步骤?')
 
+const styles= (status: number) => {
+    let backgroundColor = '#2794ff'
+    if (status === 2) {
+        backgroundColor = '#2794ff'
+    } else if ([3, 6].includes(status)) {
+        backgroundColor = '#89c5ff'
+    } else {
+        backgroundColor = '#dde3e8'
+    }
+
+    return {
+        backgroundColor
+    }
+}
+
+const remaindays = (item: Model.WrPerformancePlanStep) => {
+    let days = ''
+    if ([2].includes(item.stepstatus)) {
+        days = `剩余${item.remaindays}天`
+    }
+    else if ([3, 6].includes(item.stepstatus)) {
+        days = `${item.stepdays}`
+    } else {
+        days = ''
+    }
+    return days
+}
+
 // 表单验证规则
 const formRules: { [key in keyof Proto.PerformanceDelayApplyReq | 'remark' ]?: FieldRule[] } = {
     delaydays: [{
@@ -84,16 +125,10 @@ const formRules: { [key in keyof Proto.PerformanceDelayApplyReq | 'remark' ]?: F
     }],
 }
 
-const { loading } = useRequest(queryWrPerformancePlanStep, {
+const { dataList } = useRequest(queryWrPerformancePlanStep, {
     params: {
         planid: props.selectedRow.performanceplanid
     },
-    onSuccess: (res) => {
-        datelist.value.push(...res.data)
-    },
-    onError: () => {
-        error.value = true
-    }
 })
 
 const showConfirm = (showDelay: boolean) => {
@@ -143,5 +178,8 @@ const closed = (isRefresh = false) => {
 defineExpose({
     closed,
 })
+</script>
 
-</script>
+<style lang="less">
+@import './index.less';
+</style>

+ 49 - 0
src/packages/mobile/views/order/performance/components/detail/index.less

@@ -0,0 +1,49 @@
+.planstep-info {
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    align-content: center;
+    border: 0.5px solid #387BDC;
+    border-radius: 10px;
+    color: #333;
+    font-size: 0.25rem;
+    margin: 15px 10px;
+
+    &__up, &__mid, &__dwn {
+      width: 100%;
+      display: flex;
+      flex-direction: row;
+      justify-content: space-between;
+      align-items: center;
+      align-content: center;
+      text-align: center;
+      padding: 10px 0px;
+
+      :nth-child(1){
+        margin-left: 10px;
+      }
+
+      :nth-last-child(1) {
+        margin-right: 10px;
+      }
+    }
+
+    &__up {
+      color: #fff;
+      border-radius: 10px 10px 0px 0px;
+    }
+
+    .stepindex {
+      width: 25px;
+      height: 25px;
+      border-radius: 50%;
+      background-color: #fff;
+      color: #666;
+      text-align: center;
+      display: flex;
+      flex-direction: row;
+      justify-content: center;
+      align-items: center;
+    }
+  }

+ 1 - 1
src/packages/mobile/views/order/performance/components/modify/Index.vue

@@ -7,7 +7,7 @@
             </template>
             <Form ref="formRef" class="g-form__container" @submit="formSubmit">
                 <CellGroup title="履约信息">
-                    <Field name="Contract" label="联络信息" type="textarea" autosize v-model="Contract" placeholder="请输入联络信息" :rules="formRules.Contract" />
+                    <Field name="Contract" label="联络信息" type="textarea" autosize :maxlength="50" v-model="Contract" placeholder="请输入联络信息" :rules="formRules.Contract" />
                     <Field name="Receive" label="收货地址" type="textarea" autosize v-model="Receive" :rules="formRules.Receive" placeholder="请输入收货地址" right-icon="add-o" @click-right-icon="showContact = true" />
                     <Field name="Receipt" label="发票信息" type="textarea" autosize v-model="Receipt" placeholder="必填" :rules="formRules.Receipt" right-icon="add-o" @click-right-icon="showReceipt = true" />
                 </CellGroup>

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

@@ -5,7 +5,7 @@
             <template #header>
                 <app-navbar title="订单持仓 - 转让" @back="closed" />
             </template>
-            <div v-if="props" class="order-detail__container g-form__container">
+            <div class="order-detail__container g-form__container">
                 <CellGroup title="持仓信息">
                     <Cell title="商品代码/名称" :value="`${selectedRow.goodscode}/${selectedRow.goodsname}`" />
                     <Cell title="持仓方向" :value="getBuyOrSellName(selectedRow.buyorsell)" />

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

@@ -5,7 +5,7 @@
             <template #header>
                 <app-navbar title="订单持仓 - 交收" @back="closed" />
             </template>
-            <div v-if="props" class="order-detail__container g-form__container">
+            <div class="order-detail__container g-form__container">
                 <CellGroup title="持仓信息">
                     <Cell title="商品代码/名称" :value="`${selectedRow.goodscode}/${selectedRow.goodsname}`" />
                     <Cell title="持仓方向" :value="getBuyOrSellName(selectedRow.buyorsell)" />

+ 2 - 2
src/packages/mobile/views/order/position/components/presale/detail/Index.vue

@@ -9,8 +9,8 @@
                 <CellGroup title="预售持仓信息">
                     <Cell title="商品代码/名称" :value="`${selectedRow.goodscode}/${selectedRow.goodsname}`" />
                     <Cell title="发售方" :value="selectedRow.sellname" />
-                    <Cell title="开始日期" :value="formatDate(selectedRow.starttime)" />
-                    <Cell title="结束日期" :value="formatDate(selectedRow.endtime)" />
+                    <Cell title="开始日期" :value="formatDate(selectedRow.starttime, 'YYYY-MM-DD')" />
+                    <Cell title="结束日期" :value="formatDate(selectedRow.endtime, 'YYYY-MM-DD')" />
                     <Cell title="认购数量" :value="selectedRow.tradeqty" />
                     <Cell title="预售价" :value="selectedRow.openprice" />
                     <Cell title="总货款" :value="selectedRow.tradeamount" />

+ 16 - 1
src/packages/pc/views/footer/capital/statement/index.vue

@@ -1,12 +1,27 @@
 <!-- 资金信息-资金流水 -->
 <template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+        <!-- 委托时间 -->
+        <template #createtime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+    </app-table>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryAmountLog } from '@/services/api/bank'
 import AppTable from '@pc/components/base/table/index.vue'
 
+const { loading, dataList } = useRequest(queryAmountLog, {})
+
 const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'accountid', label: '资金账号' },
+    { prop: 'operatetypename', label: '资金类型' },
+    { prop: 'amount', label: '金额' },
+    { prop: 'currentbalance', label: '余额' },
+    { prop: 'createtime', label: '时间' }
 ])
 </script>

+ 21 - 2
src/packages/pc/views/footer/goods/delivery/index.vue

@@ -1,12 +1,31 @@
-<!-- 商品订单-交 -->
+<!-- 商品订单-交 -->
 <template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+        <!-- 申请时间 -->
+        <template #reqtime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+    </app-table>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
+import { useRequest } from '@/hooks/request'
+import { queryMineTradeGoodsDeliveryOfflines } from '@/services/api/transfer'
 import AppTable from '@pc/components/base/table/index.vue'
+import { formatDate } from '@/filters'
+
+const { loading, dataList } = useRequest(queryMineTradeGoodsDeliveryOfflines, {})
 
 const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'goodsnamedisplay', label: '订单合约' },
+    { prop: 'buyorselldisplay', label: '交收方向' },
+    { prop: 'deliveryqty', label: '交收数量' },
+    { prop: 'deliveryprice', label: '交收价格' },
+    { prop: 'deliveryamount', label: '交收金额' },
+    { prop: 'deliveryinfo', label: '交收信息' },
+    { prop: 'orderstatusdisplay', label: '状态' },
+    { prop: 'deliveryorderid', label: '交收单号' },
+    { prop: 'reqtime', label: '申请时间' }
 ])
 </script>

+ 33 - 2
src/packages/pc/views/footer/goods/order/index.vue

@@ -1,12 +1,43 @@
-<!-- 商品订单-交收 -->
+<!-- 商品订单- 委托 -->
 <template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+        <!-- 类型' -->
+        <template #buyorsell="{ value }">
+            {{ getBuyOrSellName(value) }}
+        </template>
+        <!-- 挂牌类型 -->
+        <template #orderstatus="{ value }">
+            {{ getWRTradeOrderStatusName(value) }}
+        </template>
+        <!-- 委托时间 -->
+        <template #ordertime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+    </app-table>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
+import { useRequest } from '@/hooks/request'
+import { getBuyOrSellName, getWRTradeOrderStatusName } from '@/constants/order'
+import { queryTradeOrderDetail } from '@/services/api/order'
 import AppTable from '@pc/components/base/table/index.vue'
+import { formatDate } from '@/filters'
+
+const { loading, dataList } = useRequest(queryTradeOrderDetail, {
+    params: {
+        tradeMode: '50'
+    },
+})
 
 const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'goodsname', label: '订单合约' },
+    { prop: 'buyorsell', label: '类型' },
+    { prop: 'orderprice', label: '委托价' },
+    { prop: 'orderqty', label: '委托数量' },
+    { prop: 'tradeqty', label: '成交数量' },
+    { prop: 'orderid', label: '委托单号' },
+    { prop: 'ordertime', label: '委托时间' },
+    { prop: 'orderstatus', label: '状态' }
 ])
 </script>

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

@@ -1,23 +1,37 @@
 <!-- 商品订单-合约汇总 -->
 <template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+        <!-- 挂牌类型 -->
+        <template #buyorsell="{ value }">
+            {{ getBuyOrSellName(value) }}
+        </template>
+    </app-table>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
+import { useRequest } from '@/hooks/request'
+import { getBuyOrSellName } from '@/constants/order'
+import { queryTradePosition } from '@/services/api/order'
 import AppTable from '@pc/components/base/table/index.vue'
 
+const { loading, dataList } = useRequest(queryTradePosition, {
+    params: {
+        tradeMode: '50'
+    },
+})
+
 const tableColumns = shallowRef<Model.TableColumn[]>([
-    { prop: 'unknown', label: '订单合约' },
-    { prop: 'unknown', label: '方向' },
-    { prop: 'unknown', label: '持有数量' },
-    { prop: 'unknown', label: '可用数量' },
-    { prop: 'unknown', label: '冻结数量' },
-    { prop: 'unknown', label: '均价' },
+    { prop: 'goodsname', label: '订单合约' },
+    { prop: 'buyorsell', label: '方向' },
+    { prop: 'curpositionqty', label: '持有数量' },
+    { prop: 'enableqty', label: '可用数量' },
+    { prop: 'frozenqty', label: '冻结数量' },
+    { prop: 'averageprice', label: '均价' },
     { prop: 'unknown', label: '现价' },
-    { prop: 'unknown', label: '持仓金额' },
-    { prop: 'unknown', label: '占用保证金' },
-    { prop: 'unknown', label: '市值' },
+    { prop: 'curholderamount', label: '持仓金额' },
+    { prop: 'usedmargin', label: '占用保证金' },
+    { prop: 'marketamount', label: '市值' },
     { prop: 'unknown', label: '浮动盈亏' },
 ])
 </script>

+ 35 - 2
src/packages/pc/views/footer/goods/trade/index.vue

@@ -1,12 +1,45 @@
-<!-- 商品订单-交 -->
+<!-- 商品订单 -交 -->
 <template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+        <!-- 类型' -->
+        <template #buyorsell="{ value }">
+            {{ getBuyOrSellName(value) }}
+        </template>
+        <!-- 成交类型 -->
+        <template #buildtype="{ value }">
+            {{ getBuildTypeName(value) }}
+        </template>
+        <!-- 成交时间 -->
+        <template #tradetime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+    </app-table>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
+import { useRequest } from '@/hooks/request'
+import { getBuyOrSellName, getBuildTypeName } from '@/constants/order'
+import { queryTradeDetail } from '@/services/api/order'
 import AppTable from '@pc/components/base/table/index.vue'
+import { formatDate } from '@/filters'
+
+const { loading, dataList } = useRequest(queryTradeDetail, {
+    params: {
+        tradeMode: '50'
+    },
+})
 
 const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'goodsname', label: '订单合约' },
+    { prop: 'buyorsell', label: '方向' },
+    { prop: 'buildtype', label: '成交类型' },
+    { prop: 'tradeprice', label: '成交价格' },
+    { prop: 'tradeqty', label: '成交数量' },
+    { prop: 'charge', label: '手续费' },
+    { prop: 'closepl', label: '平仓盈亏' },
+    { prop: 'tradeid', label: '成交单号' },
+    { prop: 'matchaccountid', label: '成交对手' },
+    { prop: 'tradetime', label: '成交时间' }
 ])
 </script>

+ 55 - 0
src/packages/pc/views/footer/performance/buy/index.vue

@@ -0,0 +1,55 @@
+<!-- 资金流水-卖履约-执行中 -->
+<template>
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+         <!-- 履约状态 -->
+         <template #performancestatus="{ value }">
+            {{ getPerformanceStatusName(value) }}
+        </template>
+        <!-- 履约类型 -->
+        <template #performancetype="{ value }">
+            {{ getPerformanceTypeName(value) }}
+        </template>
+        <!-- 履约类型 -->
+        <template #paymenttype="{ value }">
+            {{ getPaymentTypeName(value) }}
+        </template>
+        <!-- 委托时间 -->
+        <template #starttime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+    </app-table>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryPerformancePlan } from '@/services/api/performance'
+import { BuyOrSell, getPaymentTypeName, getPerformanceStatusName, getPerformanceTypeName } from '@/constants/order'
+import AppTable from '@pc/components/base/table/index.vue'
+
+const { loading, dataList } = useRequest(queryPerformancePlan, {
+    params: {
+        buyorsell: BuyOrSell.Sell,
+        status:'2'
+    },
+})
+
+const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'deliverygoodsname', label: '品种' },
+    { prop: 'wrstandardname', label: '商品' },
+    { prop: 'performancetype', label: '类型' },
+    { prop: 'relatedorderid', label: '关联单号' },
+    { prop: 'paymenttype', label: '付款方式' },
+    { prop: 'sellerfreezeamount', label: '履约冻结' },
+    { prop: 'sellerfreezeamountremain', label: '履约冻结剩余' },
+    { prop: 'amount', label: '总金额' },
+    { prop: 'sellreceivedamount', label: '已收金额' },
+    { prop: 'overshortamount', label: '溢短金额' },
+    { prop: 'buyusername', label: '买方' },
+    { prop: 'performancestatus', label: '履约状态' },
+    { prop: 'curstepname', label: '当前步骤' },
+    { prop: 'starttime', label: '开始时间' },
+    
+])
+</script>

+ 0 - 12
src/packages/pc/views/footer/performance/list/index.vue

@@ -1,12 +0,0 @@
-<!-- 履约信息 -->
-<template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
-</template>
-
-<script lang="ts" setup>
-import { shallowRef } from 'vue'
-import AppTable from '@pc/components/base/table/index.vue'
-
-const tableColumns = shallowRef<Model.TableColumn[]>([
-])
-</script>

+ 55 - 0
src/packages/pc/views/footer/performance/sell/index.vue

@@ -0,0 +1,55 @@
+<!-- 底部-履约信息-卖履约 -->
+<template>
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+         <!-- 履约状态 -->
+         <template #performancestatus="{ value }">
+            {{ getPerformanceStatusName(value) }}
+        </template>
+        <!-- 履约类型 -->
+        <template #performancetype="{ value }">
+            {{ getPerformanceTypeName(value) }}
+        </template>
+        <!-- 履约类型 -->
+        <template #paymenttype="{ value }">
+            {{ getPaymentTypeName(value) }}
+        </template>
+        <!-- 委托时间 -->
+        <template #starttime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+    </app-table>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryPerformancePlan } from '@/services/api/performance'
+import { BuyOrSell, getPaymentTypeName, getPerformanceStatusName, getPerformanceTypeName } from '@/constants/order'
+import AppTable from '@pc/components/base/table/index.vue'
+
+const { loading, dataList } = useRequest(queryPerformancePlan, {
+    params: {
+        buyorsell: BuyOrSell.Sell,
+        status:'2'
+    },
+})
+
+const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'deliverygoodsname', label: '品种' },
+    { prop: 'wrstandardname', label: '商品' },
+    { prop: 'performancetype', label: '类型' },
+    { prop: 'relatedorderid', label: '关联单号' },
+    { prop: 'paymenttype', label: '付款方式' },
+    { prop: 'sellerfreezeamount', label: '履约冻结' },
+    { prop: 'sellerfreezeamountremain', label: '履约冻结剩余' },
+    { prop: 'amount', label: '总金额' },
+    { prop: 'sellreceivedamount', label: '已收金额' },
+    { prop: 'overshortamount', label: '溢短金额' },
+    { prop: 'buyusername', label: '买方' },
+    { prop: 'performancestatus', label: '履约状态' },
+    { prop: 'curstepname', label: '当前步骤' },
+    { prop: 'starttime', label: '开始时间' },
+    
+])
+</script>

+ 42 - 1
src/packages/pc/views/footer/spot/order/index.vue

@@ -1,12 +1,53 @@
 <!-- 现货仓单-挂单 -->
 <template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+        <!-- 挂牌类型 -->
+        <template #wrtradetype="{ value }">
+            {{ getWrTradeTypeName(value) }}
+        </template>
+        <!-- 委托状态 -->
+        <template #wrtradeorderstatus="{ value }">
+            {{ getWRTradeOrderStatusName(value) }}
+        </template>
+         <!-- 挂牌方式 -->
+         <template #wrpricetype="{ value }">
+            {{ getWrPriceTypeName(value) }}
+        </template>
+        <!-- 过户时间 -->
+        <template #ordertime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+    </app-table>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryWrOrderDetail } from '@/services/api/order'
+import { getWrTradeTypeName, getWRTradeOrderStatusName, getWrPriceTypeName } from '@/constants/order'
 import AppTable from '@pc/components/base/table/index.vue'
 
+const { loading, dataList } = useRequest(queryWrOrderDetail, {
+    params: {
+        wrtradetype: 1,
+        marketid: 17201,
+        haswr: 1
+    },
+})
+
 const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'wrtradeorderid', label: '挂牌单号' },
+    { prop: 'wrtradetype', label: '挂牌类型' },
+    { prop: 'wrtradeorderstatus', label: '委托状态' },
+    { prop: 'deliverygoodsname', label: '品种' },
+    { prop: 'wrstandardname', label: '商品' },
+    { prop: 'warehousename', label: '仓库' },
+    { prop: 'wrpricetype', label: '挂牌方式' },
+    { prop: 'goodsname', label: '期货合约' },
+    { prop: 'fixedprice', label: '价格/基差' },
+    { prop: 'orderqty', label: '挂牌数量' },
+    { prop: 'tradeqty', label: '成交数量' },
+    { prop: 'ordertime', label: '挂牌时间' }
 ])
 </script>

+ 24 - 1
src/packages/pc/views/footer/spot/pickup/index.vue

@@ -1,12 +1,35 @@
 <!-- 现货仓单-提货 -->
 <template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+        <!-- 状态 -->
+        <template #applystatus="{ value }">
+            {{ getApplyStatusName(value) }}
+        </template>
+        <!-- 成交时间 -->
+        <template #applytime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+    </app-table>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryWrOutInApply } from '@/services/api/order'
+import { getApplyStatusName } from '@/constants/order'
 import AppTable from '@pc/components/base/table/index.vue'
 
+const { loading, dataList } = useRequest(queryWrOutInApply, {})
+
 const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'deliverygoodsname', label: '品种' },
+    { prop: 'wrstandardname', label: '商品' },
+    { prop: 'warehousename', label: '仓库' },
+    { prop: 'appointmentmodeldisplay', label: '类型' },
+    { prop: 'qty', label: '数量' },
+    { prop: 'applytime', label: '时间' },
+    { prop: 'expressnum', label: '物流信息' },
+    { prop: 'applystatus', label: '状态' }
 ])
 </script>

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

@@ -1,12 +1,31 @@
 <!-- 现货仓单-现货明细 -->
 <template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+        <!-- 过户时间 -->
+        <template #createtime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+    </app-table>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryHoldLB } from '@/services/api/order'
 import AppTable from '@pc/components/base/table/index.vue'
 
+const { loading, dataList } = useRequest(queryHoldLB, {})
+
 const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'wrholdeno', label: '仓单编号' },
+    { prop: 'deliverygoodsname', label: '品种' },
+    { prop: 'wrstandardname', label: '商品' },
+    { prop: 'warehousename', label: '仓库' },
+    { prop: 'qty', label: '库存数量' },
+    { prop: 'freezerqty', label: '冻结数量' },
+    { prop: 'pledgeqty', label: '质押数量' },
+    { prop: 'enableqty', label: '可用数量' },
+    { prop: 'createtime', label: '过户时间' }
 ])
 </script>

+ 36 - 1
src/packages/pc/views/footer/spot/trade/index.vue

@@ -1,12 +1,47 @@
 <!-- 现货仓单-成交 -->
 <template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+        <!-- 挂牌类型 -->
+        <template #wrtradetype="{ value }">
+            {{ getWrTradeTypeName(value) }}
+        </template>
+        <!-- 成交金额 -->
+        <template #tradeamount="{ row }">
+            {{ formatDecimal(row.tradeqty*row.tradeprice) }}
+        </template>
+        <!-- 成交时间 -->
+        <template #tradetime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+    </app-table>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
+import { formatDate, formatDecimal } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryWrTradeDetail } from '@/services/api/order'
+import { getWrTradeTypeName } from '@/constants/order'
 import AppTable from '@pc/components/base/table/index.vue'
 
+const { loading, dataList } = useRequest(queryWrTradeDetail, {
+    params: {
+        marketid: 17201,
+        haswr: 1
+    },
+})
+
 const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'wrtradedetailid', label: '成交单号' },
+    { prop: 'wrtradetype', label: '类型' },
+    { prop: 'deliverygoodsname', label: '品种' },
+    { prop: 'wrstandardname', label: '商品' },
+    { prop: 'warehousename', label: '仓库' },
+    { prop: 'tradeprice', label: '成交价格' },
+    { prop: 'tradeqty', label: '成交数量' },
+    { prop: 'tradeamount', label: '成交金额 ' },
+    { prop: 'chargevalue', label: '手续费' },
+    { prop: 'matchusername', label: '对手方' },
+    { prop: 'tradetime', label: '成交时间' }
 ])
 </script>

+ 45 - 1
src/packages/pc/views/query/capital/history/index.vue

@@ -1,12 +1,56 @@
 <!-- 资金流水-历史记录 -->
 <template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+        <template #header>
+            <app-filter :options="filterOptons" :loading="loading">
+                <template #before>
+                    <el-date-picker type="daterange" start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYYMMDD"
+                        v-model="filterDate" />
+                </template>
+            </app-filter>
+        </template>
+        <!-- 委托时间 -->
+        <template #createtime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+    </app-table>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useDataFilter } from '@/hooks/datatable'
+import { useRequest } from '@/hooks/request'
+import { queryHisAmountLog } from '@/services/api/bank'
 import AppTable from '@pc/components/base/table/index.vue'
+import AppFilter from '@pc/components/base/table-filter/index.vue'
+
+const { filterOptons, getQueryParams } = useDataFilter<Model.HisTradeOrderDetailReq>()
+const filterDate = shallowRef<string[]>([])
+
+const { loading, dataList, run } = useRequest(queryHisAmountLog, {})
 
 const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'accountid', label: '资金账号' },
+    { prop: 'operatetypename', label: '资金类型' },
+    { prop: 'amount', label: '金额' },
+    { prop: 'currentbalance', label: '余额' },
+    { prop: 'createtime', label: '时间' }
 ])
+
+filterOptons.buttonList = [
+    { lable: '重置', onClick: () => onSearch(true) },
+    { lable: '查询', className: 'el-button--primary', onClick: () => onSearch() }
+]
+
+const onSearch = (clear = false) => {
+    if (clear) {
+        filterDate.value = []
+    }
+    getQueryParams((qs) => {
+        qs.startDate = filterDate.value[0]
+        qs.endDate = filterDate.value[1]
+        run(qs)
+    }, clear)
+}
 </script>

+ 16 - 1
src/packages/pc/views/query/capital/list/index.vue

@@ -1,12 +1,27 @@
 <!-- 资金流水-当前记录 -->
 <template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+        <!-- 委托时间 -->
+        <template #createtime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+    </app-table>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryAmountLog } from '@/services/api/bank'
 import AppTable from '@pc/components/base/table/index.vue'
 
+const { loading, dataList } = useRequest(queryAmountLog, {})
+
 const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'accountid', label: '资金账号' },
+    { prop: 'operatetypename', label: '资金类型' },
+    { prop: 'amount', label: '金额' },
+    { prop: 'currentbalance', label: '余额' },
+    { prop: 'createtime', label: '时间' }
 ])
 </script>

+ 77 - 2
src/packages/pc/views/query/order/spot/history/index.vue

@@ -1,12 +1,87 @@
 <!-- 委托记录-现货仓单-历史记录 -->
 <template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+        <template #header>
+            <app-filter :options="filterOptons" :loading="loading">
+                <template #before>
+                    <el-date-picker type="daterange" start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYYMMDD"
+                        v-model="filterDate" />
+                </template>
+            </app-filter>
+        </template>
+        <!-- 类型 -->
+        <template #wrtradetype="{ value }">
+            {{ getWrTradeTypeName(value) }}
+        </template>
+        <!-- 挂牌方式 -->
+        <template #wrpricetype="{ value }">
+            {{ getWrPriceTypeName(value) }}
+        </template>
+        <!-- 委托时间 -->
+        <template #ordertime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+        <!-- 状态 -->
+        <template #wrtradeorderstatus="{ value }">
+            {{ getWRTradeOrderStatusName(value) }}
+        </template>
+    </app-table>
 </template>
 
 <script lang="ts" setup>
-import { shallowRef } from 'vue'
+import { shallowRef, reactive } from 'vue'
+import { formatDate } from '@/filters'
+import { useDataFilter } from '@/hooks/datatable'
+import { useRequest } from '@/hooks/request'
+import { queryWrOrderDetail } from '@/services/api/order'
+import { getWrTradeTypeName, getWrPriceTypeName, getWRTradeOrderStatusName } from '@/constants/order'
 import AppTable from '@pc/components/base/table/index.vue'
+import AppFilter from '@pc/components/base/table-filter/index.vue'
+
+const { filterOptons, getQueryParams } = useDataFilter<Model.WrOrderDetailRsp>()
+const filterDate = shallowRef<string[]>([])
+
+const formData = reactive<Model.WrOrderDetailReq>({
+    wrtradetype: 1,
+    marketid: 17201,
+    haswr: 1,
+})
+
+const { loading, dataList, run } = useRequest(queryWrOrderDetail, {
+    params: {
+        ...formData
+    },
+})
 
 const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'wrtradeorderid', label: '挂牌单号' },
+    { prop: 'wrtradetype', label: '挂牌类型' },
+    { prop: 'deliverygoodsname', label: '品种' },
+    { prop: 'wrstandardname', label: '商品' },
+    { prop: 'warehousename', label: '仓库' },
+    { prop: 'wrpricetype', label: '挂牌方式' },
+    { prop: 'wrtypename', label: '期货合约' },
+    { prop: 'fixedprice', label: '价格/基差' },
+    { prop: 'orderqty', label: '挂牌数量' },
+    { prop: 'tradeqty', label: '成交数量' },
+    { prop: 'ordertime', label: '挂牌时间' },
+    { prop: 'wrtradeorderstatus', label: '状态' },
 ])
+
+filterOptons.buttonList = [
+    { lable: '重置', onClick: () => onSearch(true) },
+    { lable: '查询', className: 'el-button--primary', onClick: () => onSearch() }
+]
+
+const onSearch = (clear = false) => {
+    if (clear) {
+        filterDate.value = []
+    }
+    getQueryParams((qs) => {
+        qs.begindate = filterDate.value[0]
+        qs.enddate = filterDate.value[1]
+        run(qs)
+    }, clear)
+}
+
 </script>

+ 42 - 1
src/packages/pc/views/query/order/spot/list/index.vue

@@ -1,12 +1,53 @@
 <!-- 委托记录-现货仓单-当前记录 -->
 <template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+         <!-- 类型 -->
+         <template #wrtradetype="{ value }">
+            {{ getWrTradeTypeName(value) }}
+        </template>
+        <!-- 挂牌方式 -->
+        <template #wrpricetype="{ value }">
+            {{ getWrPriceTypeName(value) }}
+        </template>
+        <!-- 委托时间 -->
+        <template #ordertime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+        <!-- 状态 -->
+        <template #wrtradeorderstatus="{ value }">
+            {{ getWRTradeOrderStatusName(value) }}
+        </template>
+    </app-table>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryWrOrderDetail } from '@/services/api/order'
+import { getWrTradeTypeName, getWrPriceTypeName, getWRTradeOrderStatusName } from '@/constants/order'
 import AppTable from '@pc/components/base/table/index.vue'
 
+const { loading, dataList } = useRequest(queryWrOrderDetail, {
+    params: {
+        wrtradetype: 1,
+        marketid: 17201,
+        haswr: 1 
+    },
+})
+
 const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'wrtradeorderid', label: '挂牌单号' },
+    { prop: 'wrtradetype', label: '挂牌类型' },
+    { prop: 'deliverygoodsname', label: '品种' },
+    { prop: 'wrstandardname', label: '商品' },
+    { prop: 'warehousename', label: '仓库' },
+    { prop: 'wrpricetype', label: '挂牌方式' },
+    { prop: 'wrtypename', label: '期货合约' },
+    { prop: 'fixedprice', label: '价格/基差' },
+    { prop: 'orderqty', label: '挂牌数量' },
+    { prop: 'tradeqty', label: '成交数量' },
+    { prop: 'ordertime', label: '挂牌时间' },
+    { prop: 'wrtradeorderstatus', label: '状态' },
 ])
 </script>

+ 44 - 1
src/packages/pc/views/query/performance/buy/all/index.vue

@@ -1,12 +1,55 @@
 <!-- 资金流水-买履约-全部 -->
 <template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+         <!-- 履约状态 -->
+         <template #performancestatus="{ value }">
+            {{ getPerformanceStatusName(value) }}
+        </template>
+        <!-- 履约类型 -->
+        <template #performancetype="{ value }">
+            {{ getPerformanceTypeName(value) }}
+        </template>
+        <!-- 履约类型 -->
+        <template #paymenttype="{ value }">
+            {{ getPaymentTypeName(value) }}
+        </template>
+        <!-- 委托时间 -->
+        <template #starttime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+    </app-table>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryPerformancePlan } from '@/services/api/performance'
+import { BuyOrSell, getPaymentTypeName, getPerformanceStatusName, getPerformanceTypeName } from '@/constants/order'
 import AppTable from '@pc/components/base/table/index.vue'
 
+
+const { loading, dataList } = useRequest(queryPerformancePlan, {
+    params: {
+        buyorsell: BuyOrSell.Buy
+    },
+})
+
 const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'deliverygoodsname', label: '品种' },
+    { prop: 'wrstandardname', label: '商品' },
+    { prop: 'performancetype', label: '类型' },
+    { prop: 'relatedorderid', label: '关联单号' },
+    { prop: 'paymenttype', label: '付款方式' },
+    { prop: 'buyerfreezeamount', label: '履约冻结' },
+    { prop: 'buyerfreezeamountremain', label: '履约冻结剩余' },
+    { prop: 'amount', label: '总金额' },
+    { prop: 'buypaidamount', label: '已付金额' },
+    { prop: 'overshortamount', label: '溢短金额' },
+    { prop: 'sellusername', label: '卖方' },
+    { prop: 'performancestatus', label: '履约状态' },
+    { prop: 'curstepname', label: '当前步骤' },
+    { prop: 'starttime', label: '开始时间' },
+    
 ])
 </script>

+ 45 - 1
src/packages/pc/views/query/performance/buy/running/index.vue

@@ -1,12 +1,56 @@
 <!-- 资金流水-买履约-执行中 -->
 <template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+        <!-- 履约状态 -->
+        <template #performancestatus="{ value }">
+            {{ getPerformanceStatusName(value) }}
+        </template>
+        <!-- 履约类型 -->
+        <template #performancetype="{ value }">
+            {{ getPerformanceTypeName(value) }}
+        </template>
+        <!-- 履约类型 -->
+        <template #paymenttype="{ value }">
+            {{ getPaymentTypeName(value) }}
+        </template>
+        <!-- 委托时间 -->
+        <template #starttime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+    </app-table>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryPerformancePlan } from '@/services/api/performance'
+import { BuyOrSell, getPaymentTypeName, getPerformanceStatusName, getPerformanceTypeName } from '@/constants/order'
 import AppTable from '@pc/components/base/table/index.vue'
 
+
+const { loading, dataList } = useRequest(queryPerformancePlan, {
+    params: {
+        buyorsell: BuyOrSell.Buy,
+        status: '2'
+    },
+})
+
 const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'deliverygoodsname', label: '品种' },
+    { prop: 'wrstandardname', label: '商品' },
+    { prop: 'performancetype', label: '类型' },
+    { prop: 'relatedorderid', label: '关联单号' },
+    { prop: 'paymenttype', label: '付款方式' },
+    { prop: 'buyerfreezeamount', label: '履约冻结' },
+    { prop: 'buyerfreezeamountremain', label: '履约冻结剩余' },
+    { prop: 'amount', label: '总金额' },
+    { prop: 'buypaidamount', label: '已付金额' },
+    { prop: 'overshortamount', label: '溢短金额' },
+    { prop: 'sellusername', label: '卖方' },
+    { prop: 'performancestatus', label: '履约状态' },
+    { prop: 'curstepname', label: '当前步骤' },
+    { prop: 'starttime', label: '开始时间' },
+    
 ])
 </script>

+ 44 - 1
src/packages/pc/views/query/performance/sell/all/index.vue

@@ -1,12 +1,55 @@
 <!-- 资金流水-卖履约-全部 -->
 <template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+         <!-- 履约状态 -->
+         <template #performancestatus="{ value }">
+            {{ getPerformanceStatusName(value) }}
+        </template>
+        <!-- 履约类型 -->
+        <template #performancetype="{ value }">
+            {{ getPerformanceTypeName(value) }}
+        </template>
+        <!-- 履约类型 -->
+        <template #paymenttype="{ value }">
+            {{ getPaymentTypeName(value) }}
+        </template>
+        <!-- 委托时间 -->
+        <template #starttime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+    </app-table>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryPerformancePlan } from '@/services/api/performance'
+import { BuyOrSell, getPaymentTypeName, getPerformanceStatusName, getPerformanceTypeName } from '@/constants/order'
 import AppTable from '@pc/components/base/table/index.vue'
 
+
+const { loading, dataList } = useRequest(queryPerformancePlan, {
+    params: {
+        buyorsell: BuyOrSell.Sell
+    },
+})
+
 const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'deliverygoodsname', label: '品种' },
+    { prop: 'wrstandardname', label: '商品' },
+    { prop: 'performancetype', label: '类型' },
+    { prop: 'relatedorderid', label: '关联单号' },
+    { prop: 'paymenttype', label: '付款方式' },
+    { prop: 'sellerfreezeamount', label: '履约冻结' },
+    { prop: 'sellerfreezeamountremain', label: '履约冻结剩余' },
+    { prop: 'amount', label: '总金额' },
+    { prop: 'sellreceivedamount', label: '已收金额' },
+    { prop: 'overshortamount', label: '溢短金额' },
+    { prop: 'buyusername', label: '买方' },
+    { prop: 'performancestatus', label: '履约状态' },
+    { prop: 'curstepname', label: '当前步骤' },
+    { prop: 'starttime', label: '开始时间' },
+    
 ])
 </script>

+ 45 - 1
src/packages/pc/views/query/performance/sell/running/index.vue

@@ -1,12 +1,56 @@
 <!-- 资金流水-卖履约-执行中 -->
 <template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+         <!-- 履约状态 -->
+         <template #performancestatus="{ value }">
+            {{ getPerformanceStatusName(value) }}
+        </template>
+        <!-- 履约类型 -->
+        <template #performancetype="{ value }">
+            {{ getPerformanceTypeName(value) }}
+        </template>
+        <!-- 履约类型 -->
+        <template #paymenttype="{ value }">
+            {{ getPaymentTypeName(value) }}
+        </template>
+        <!-- 委托时间 -->
+        <template #starttime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+    </app-table>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryPerformancePlan } from '@/services/api/performance'
+import { BuyOrSell, getPaymentTypeName, getPerformanceStatusName, getPerformanceTypeName } from '@/constants/order'
 import AppTable from '@pc/components/base/table/index.vue'
 
+
+const { loading, dataList } = useRequest(queryPerformancePlan, {
+    params: {
+        buyorsell: BuyOrSell.Sell,
+        status:'2'
+    },
+})
+
 const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'deliverygoodsname', label: '品种' },
+    { prop: 'wrstandardname', label: '商品' },
+    { prop: 'performancetype', label: '类型' },
+    { prop: 'relatedorderid', label: '关联单号' },
+    { prop: 'paymenttype', label: '付款方式' },
+    { prop: 'sellerfreezeamount', label: '履约冻结' },
+    { prop: 'sellerfreezeamountremain', label: '履约冻结剩余' },
+    { prop: 'amount', label: '总金额' },
+    { prop: 'sellreceivedamount', label: '已收金额' },
+    { prop: 'overshortamount', label: '溢短金额' },
+    { prop: 'buyusername', label: '买方' },
+    { prop: 'performancestatus', label: '履约状态' },
+    { prop: 'curstepname', label: '当前步骤' },
+    { prop: 'starttime', label: '开始时间' },
+    
 ])
 </script>

+ 62 - 1
src/packages/pc/views/query/trade/goods/history/index.vue

@@ -1,12 +1,73 @@
 <!-- 成交记录-商品合约-历史记录 -->
 <template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+        <template #header>
+            <app-filter :options="filterOptons" :loading="loading">
+                <template #before>
+                    <el-date-picker type="daterange" start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYYMMDD"
+                        v-model="filterDate" />
+                </template>
+            </app-filter>
+        </template>
+        <!-- 类型 -->
+        <template #buyorsell="{ value }">
+            {{ getBuyOrSellName(value) }}
+        </template>
+        <!-- 成交类型 -->
+        <template #buildtype="{ value }">
+            {{ getBuildTypeName(value) }}
+        </template>
+        <!-- 委托时间 -->
+        <template #tradetime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+    </app-table>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useDataFilter } from '@/hooks/datatable'
+import { useRequest } from '@/hooks/request'
+import { queryHisTradeDetail } from '@/services/api/order'
+import { getBuildTypeName, getBuyOrSellName } from '@/constants/order'
 import AppTable from '@pc/components/base/table/index.vue'
 
+const { filterOptons, getQueryParams } = useDataFilter<Model.HisTradeDetailReq>()
+const filterDate = shallowRef<string[]>([])
+
+const { loading, dataList, run } = useRequest(queryHisTradeDetail, {
+    params: {
+        tradeMode: '50'
+    },
+})
+
 const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'goodsname', label: '订单合约' },
+    { prop: 'buyorsell', label: '类型' },
+    { prop: 'buildtype', label: '成交类型' },
+    { prop: 'tradeprice', label: '成交价' },
+    { prop: 'tradeqty', label: '成交数量' },
+    { prop: 'charge', label: '手续费' },
+    { prop: 'closepl', label: '平仓盈亏' },
+    { prop: 'tradeid', label: '成交单号' },
+    { prop: 'matchaccountid', label: '成交对手' },
+    { prop: 'tradetime', label: '成交时间' },
 ])
+
+filterOptons.buttonList = [
+    { lable: '重置', onClick: () => onSearch(true) },
+    { lable: '查询', className: 'el-button--primary', onClick: () => onSearch() }
+]
+
+const onSearch = (clear = false) => {
+    if (clear) {
+        filterDate.value = []
+    }
+    getQueryParams((qs) => {
+        qs.startDate = filterDate.value[0]
+        qs.endDate = filterDate.value[1]
+        run(qs)
+    }, clear)
+}
 </script>

+ 34 - 1
src/packages/pc/views/query/trade/goods/list/index.vue

@@ -1,12 +1,45 @@
 <!-- 成交记录-商品合约-当前记录 -->
 <template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+        <!-- 类型 -->
+        <template #buyorsell="{ value }">
+            {{ getBuyOrSellName(value) }}
+        </template>
+        <!-- 成交类型 -->
+        <template #buildtype="{ value }">
+            {{ getBuildTypeName(value) }}
+        </template>
+        <!-- 委托时间 -->
+        <template #tradetime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+    </app-table>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryTradeDetail } from '@/services/api/order'
+import { getBuildTypeName, getBuyOrSellName } from '@/constants/order'
 import AppTable from '@pc/components/base/table/index.vue'
 
+const { loading, dataList } = useRequest(queryTradeDetail, {
+    params: {
+        tradeMode: '50'
+    },
+})
+
 const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'goodsname', label: '订单合约' },
+    { prop: 'buyorsell', label: '类型' },
+    { prop: 'buildtype', label: '成交类型' },
+    { prop: 'tradeprice', label: '成交价' },
+    { prop: 'tradeqty', label: '成交数量' },
+    { prop: 'charge', label: '手续费' },
+    { prop: 'closepl', label: '平仓盈亏' },
+    { prop: 'tradeid', label: '成交单号' },
+    { prop: 'matchaccountid', label: '成交对手' },
+    { prop: 'tradetime', label: '成交时间' },
 ])
 </script>

+ 66 - 3
src/packages/pc/views/query/trade/spot/history/index.vue

@@ -1,12 +1,75 @@
-<!-- 成交记录-现货仓单-历史记录 -->
+<!-- 成交记录-现货仓单-当前记录 -->
 <template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+        <template #header>
+            <app-filter :options="filterOptons" :loading="loading">
+                <template #before>
+                    <el-date-picker type="daterange" start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYYMMDD"
+                        v-model="filterDate" />
+                </template>
+            </app-filter>
+        </template>
+        <!-- 挂牌方式 -->
+        <template #buyorsell="{ value }">
+            {{ getBuildTypeName(value) }}
+        </template>
+        <!-- 委托时间 -->
+        <template #ordertime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+    </app-table>
 </template>
 
 <script lang="ts" setup>
-import { shallowRef } from 'vue'
+import { shallowRef, reactive } from 'vue'
+import { formatDate } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { useDataFilter } from '@/hooks/datatable'
+import { queryWrTradeDetail } from '@/services/api/order'
+import { getBuildTypeName } from '@/constants/order'
 import AppTable from '@pc/components/base/table/index.vue'
+import AppFilter from '@pc/components/base/table-filter/index.vue'
+
+const { filterOptons, getQueryParams } = useDataFilter<Model.WrTradeDetailRsp>()
+const filterDate = shallowRef<string[]>([])
+
+const formData = reactive<Model.WrTradeDetailReq>({
+    marketid: 17201,
+    haswr: 1,
+})
+
+const { loading, dataList, run } = useRequest(queryWrTradeDetail, {
+    params: {
+        ...formData
+    },
+})
 
 const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'wrtradedetailid', label: '成交单号' },
+    { prop: 'buyorsell', label: '类型' },
+    { prop: 'deliverygoodsname', label: '品种' },
+    { prop: 'wrstandardname', label: '商品' },
+    { prop: 'warehousename', label: '仓库' },
+    { prop: 'tradeprice', label: '成交价格' },
+    { prop: 'tradeqty', label: '成交数量' },
+    { prop: 'chargevalue', label: '手续费' },
+    { prop: 'matchusername', label: '对手方' },
+    { prop: 'tradetime', label: '成交时间' },
 ])
+
+filterOptons.buttonList = [
+    { lable: '重置', onClick: () => onSearch(true) },
+    { lable: '查询', className: 'el-button--primary', onClick: () => onSearch() }
+]
+
+const onSearch = (clear = false) => {
+    if (clear) {
+        filterDate.value = []
+    }
+    getQueryParams((qs) => {
+        qs.begindate = filterDate.value[0]
+        qs.enddate = filterDate.value[1]
+        run(qs)
+    }, clear)
+}
 </script>

+ 31 - 1
src/packages/pc/views/query/trade/spot/list/index.vue

@@ -1,12 +1,42 @@
 <!-- 成交记录-现货仓单-当前记录 -->
 <template>
-    <app-table :data="[]" v-model:columns="tableColumns" />
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+        <!-- 挂牌方式 -->
+        <template #buyorsell="{ value }">
+            {{ getBuildTypeName(value) }}
+        </template>
+        <!-- 委托时间 -->
+        <template #ordertime="{ value }">
+            {{ formatDate(value) }}
+        </template>
+    </app-table>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryWrTradeDetail } from '@/services/api/order'
+import { getBuildTypeName } from '@/constants/order'
 import AppTable from '@pc/components/base/table/index.vue'
 
+const { loading, dataList } = useRequest(queryWrTradeDetail, {
+    params: {
+        marketid: 17201,
+        haswr: 1 
+    },
+})
+
 const tableColumns = shallowRef<Model.TableColumn[]>([
+    { prop: 'wrtradedetailid', label: '成交单号' },
+    { prop: 'buyorsell', label: '类型' },
+    { prop: 'deliverygoodsname', label: '品种' },
+    { prop: 'wrstandardname', label: '商品' },
+    { prop: 'warehousename', label: '仓库' },
+    { prop: 'tradeprice', label: '成交价格' },
+    { prop: 'tradeqty', label: '成交数量' },
+    { prop: 'chargevalue', label: '手续费' },
+    { prop: 'matchusername', label: '对手方' },
+    { prop: 'tradetime', label: '成交时间' },
 ])
 </script>

+ 127 - 55
src/packages/sbyj/views/market/list/index.vue

@@ -1,94 +1,154 @@
 <template>
     <app-view>
         <template #header>
-            <app-navbar title="参考行情" />
+            <app-navbar title="行情" />
         </template>
-        <app-list :columns="columns" :data-list="dataList" @row-click="rowClick">
-            <!-- 卖价 -->
+        <app-list :columns="columns" :data-list="touristTradeGoodsList" @row-click="rowClick">
+            <!-- 回购 -->
             <template #ask="{ row }">
-                <span :class="row.askColor">{{ row.ask }}</span>
+                <span :class="row.bidColor">{{ handleNumberValue(row.bid) }}</span>
             </template>
-            <!-- 买价 -->
+            <!-- 销售 -->
             <template #bid="{ row }">
-                <span :class="row.bidColor">{{ row.bid }}</span>
+                <span :class="row.askColor">{{ handleNumberValue(row.ask) }}</span>
             </template>
-            <!-- 最新价 -->
-            <template #last="{ row }">
-                <span :class="row.lastColor">{{ row.last }}</span>
+            <!-- 高/低 -->
+            <template #hl="{ row }">
+                <span :class="row.highestColor">{{ handleNumberValue(row.highest) }}</span>
+                <span :class="row.lowestColor">{{ handleNumberValue(row.lowest) }}</span>
             </template>
-            <!-- 涨跌 -->
-            <template #rise="{ row }">
-                <span :class="row.lastColor">{{ row.rise }}</span>
-            </template>
-            <!-- 幅度 -->
-            <template #change="{ row }">
-                <span :class="row.lastColor">{{ row.change }}</span>
-            </template>
-            <!-- 今开 -->
-            <template #opened="{ row }">
-                <span :class="row.openedColor">{{ row.opened }}</span>
+        </app-list>
+        <div>参考行情</div>
+        <app-list :columns="columns" :data-list="touristRefGoodsList" @row-click="rowClick">
+            <!-- 回购 -->
+            <template #ask="{ row }">
+                <span :class="row.bidColor">{{ handleNumberValue(row.bid) }}</span>
             </template>
-            <!-- 最低 -->
-            <template #lowest="{ row }">
-                <span :class="row.lowestColor">{{ row.lowest }}</span>
+            <!-- 销售 -->
+            <template #bid="{ row }">
+                <span :class="row.askColor">{{ handleNumberValue(row.ask) }}</span>
             </template>
-            <!-- 最高 -->
-            <template #highest="{ row }">
-                <span :class="row.highestColor">{{ row.highest }}</span>
+            <!-- 高/低 -->
+            <template #hl="{ row }">
+                <span :class="row.highestColor">{{ handleNumberValue(row.highest) }}</span>
+                <span :class="row.lowestColor">{{ handleNumberValue(row.lowest) }}</span>
             </template>
         </app-list>
     </app-view>
 </template>
 
 <script lang="ts" setup>
-import { onMounted, onUnmounted, computed } from 'vue'
-import { parsePercent, handleNumberValue } from '@/filters'
+import { computed, onActivated, onDeactivated ,nextTick} from 'vue'
+import { handleNumberValue } from '@/filters'
 import { useNavigation } from '@/packages/sbyj/router/navigation'
-import { useFuturesStore } from '@/stores'
+import { useFuturesStore, useLoginStore } from '@/stores'
 import quoteSocket from '@/services/websocket/quote'
 import AppList from '@/packages/sbyj/components/base/list/index.vue'
+import { useRequest } from '@/hooks/request'
+import { queryTouristGoods, queryTouristQuoteDay } from '@/services/api/goods'
+import { timerTask } from '@/utils/timer'
 
 const { router } = useNavigation()
 const futuresStore = useFuturesStore()
+const loginStore = useLoginStore()
+
+// *************** 游客 ***************
+// 获取游客商品列表
+const { dataList: touristGoodsList, run: getTouristGoods } = useRequest(queryTouristGoods, {
+    manual: true,
+    onSuccess: (res) => {
+        const goodsCodes = res.data.map((item) => item.goodscode)
+        getTouristQuoteDay({goodsCodes: goodsCodes.join(',')})
+    }
+})
+// 获取游客商品盘面
+const { dataList: srcTouristQuoteDayList, run: getTouristQuoteDay } = useRequest(queryTouristQuoteDay, {
+    manual: true,
+    onSuccess: () => {
+        const goodsCodes = touristGoodsList.value.map((item) => item.goodscode)
+        // 每2秒轮训一次游客商品盘面(递归调用)
+        timerTask.setTimeout(() => getTouristQuoteDay({goodsCodes: goodsCodes.join(',')}), 2000, 'queryTouristQuoteDayKey')
+    }
+})
+
+// 构建显示使用游客商品(包括交易与参考行情)
+const touristQuoteDayList = computed(() => {
+    const arr: Partial<Model.Futures>[] = []
+    touristGoodsList.value.forEach((item) => {
+        const t = srcTouristQuoteDayList.value.find((r) => r.goodscode === item.goodscode)
+        if (t) {
+            arr.push({ 
+                goodsid: item.goodsid,
+                goodscode: item.goodscode,
+                goodsname: item.goodsname,
+                ask: t.ask,
+                bid: t.bid,
+                highest: t.highest,
+                lowest: t.lowest,
+                askColor: handleColor(t.ask, t.presettle),
+                bidColor: handleColor(t.bid, t.presettle),
+                highestColor: handleColor(t.highest, t.presettle),
+                lowestColor: handleColor(t.lowest, t.presettle),
+                trademode: item.trademode,
+            })
+        }
+    })
+    return arr
+})
+// 构建游客交易商品
+const touristTradeGoodsList = computed(() => {
+    if (loginStore.token) {
+        return dataList.value.filter((e) => e.trademode === 52)
+    } else {
+        return touristQuoteDayList.value.filter((e) => e.trademode === 52)
+    }
+})
+// 构建游客参考行情商品
+const touristRefGoodsList = computed(() => {
+    if (loginStore.token) {
+        return dataList.value.filter((e) => e.trademode === 99)
+    } else {
+        return touristQuoteDayList.value.filter((e) => e.trademode === 99)
+    }
+})
 
+// *************** 已登录 ***************
 const dataList = computed(() => {
     const list = futuresStore.quoteList.filter((e) => e.marketid === 99201)
     return list.map((e) => ({
         goodscode: e.goodscode,
+        goodsname: e.goodsname,
         askColor: e.askColor,
         bidColor: e.bidColor,
-        lastColor: e.lastColor,
-        openedColor: e.openedColor,
         lowestColor: e.lowestColor,
         highestColor: e.highestColor,
-        ask: handleNumberValue(e.ask),
-        bid: handleNumberValue(e.bid),
-        last: handleNumberValue(e.last),
-        rise: handleNumberValue(e.rise.toFixed(e.decimalplace)),
-        change: parsePercent(e.change),
-        opened: handleNumberValue(e.opened),
-        presettle: handleNumberValue(e.presettle),
-        lowest: handleNumberValue(e.lowest),
-        highest: handleNumberValue(e.highest),
-        amplitude: parsePercent(e.amplitude),
+        ask: e.ask,
+        bid: e.bid,
+        lowest: e.lowest,
+        highest: e.highest,
+        trademode: e.trademode,
     }))
 })
 
-const goodsCodes = dataList.value.map((e) => e.goodscode.toUpperCase())
+// 处理行情价格颜色
+const handleColor = (value: number, presettle: number) => {
+                if (value === 0 || value === presettle) {
+                    return ''
+                } else if (value > presettle) {
+                    return 'g-price-up'
+                } else {
+                    return 'g-price-down'
+                }
+            }
+
+
 const subscribe = quoteSocket.createSubscribe()
 
 const columns: Model.TableColumn[] = [
-    { prop: 'goodscode', label: '合约' },
-    { prop: 'ask', label: '卖价' },
-    { prop: 'bid', label: '买价' },
-    { prop: 'last', label: '最新价' },
-    { prop: 'rise', label: '涨跌' },
-    { prop: 'change', label: '幅度' },
-    { prop: 'opened', label: '今开' },
-    { prop: 'presettle', label: '昨结' },
-    { prop: 'lowest', label: '最低' },
-    { prop: 'highest', label: '最高' },
-    { prop: 'amplitude', label: '振幅' },
+    { prop: 'goodsname', label: '商品' },
+    { prop: 'ask', label: '回购' },
+    { prop: 'bid', label: '销售' },
+    { prop: 'hl', label: '高/低' },
 ]
 
 const rowClick = (row: Model.Futures) => {
@@ -100,6 +160,18 @@ const rowClick = (row: Model.Futures) => {
     })
 }
 
-onMounted(() => subscribe.start(...goodsCodes))
-onUnmounted(() => subscribe.stop())
+onActivated(() => {
+    if (loginStore.token) {
+        nextTick(() => {
+            const goodsCodes = dataList.value.map((e) => e.goodscode.toUpperCase())
+            subscribe.start(...goodsCodes)
+        })
+    } else {
+        getTouristGoods()
+    }
+})
+onDeactivated(() => {
+    subscribe.stop()
+    timerTask.clearTimeout('queryTouristQuoteDayKey')
+})
 </script>

+ 20 - 1
src/services/api/goods/index.ts

@@ -166,4 +166,23 @@ export function queryWrStandardFactoryItem(config: RequestConfig<Model.WrStandar
         url: '/WrTrade2/QueryWrStandardFactoryItem',
         params: config.data,
     })
-}
+}
+
+/**
+ * 查询企业风管期货商品信息
+ */
+ export function queryTouristGoods(config: RequestConfig = {}) {
+    return http.commonRequest<Model.GoodsRsp[]>({
+        url: '/sbyj/GetTouristGoods',
+    })
+}
+
+/**
+ * 获取游客商品盘面信息
+ */
+ export function queryTouristQuoteDay(config: RequestConfig<Model.QuoteDayReq> = {}) {
+    return http.commonRequest<Model.QuoteDayRsp[]>({
+        url: '/Quote/GetTouristQuoteDay',
+        params: config.data,
+    })
+}

+ 2 - 1
src/services/api/quote/index.ts

@@ -40,4 +40,5 @@ export function queryHistoryTikDatas(config: RequestConfig<Model.HistoryTikDatas
         url: '/Quote/QueryHistoryTikDatas',
         params: config.data,
     })
-}
+}
+

+ 1 - 1
src/stores/modules/enum.ts

@@ -12,7 +12,7 @@ export interface EnumType {
     disabled?: boolean;
 }
 
-const enumKeys = ['clientType', 'scoreConfigType', 'GZBSCPayStatus', 'performanceStatus', 'handlestatus', 'performanceType', 'accountBusinessCode', 'certificatetype', 'signstatus', 'thjOrderStatus', 'THJDeliveryMode', 'goodsunit', 'WROutInApplyStatus2', 'THJTransferStatus', 'WRTradeOrderStatus', 'THJMarket', 'THJProfitRoleType', 'appointmentModelOut', 'orderstatus', 'Pricemode2', 'buildtype', 'listingselecttype'] as const
+const enumKeys = ['clientType', 'stepStatus', 'scoreConfigType', 'GZBSCPayStatus', 'performanceStatus', 'handlestatus', 'performanceType', 'accountBusinessCode', 'certificatetype', 'signstatus', 'thjOrderStatus', 'THJDeliveryMode', 'goodsunit', 'WROutInApplyStatus2', 'THJTransferStatus', 'WRTradeOrderStatus', 'THJMarket', 'THJProfitRoleType', 'appointmentModelOut', 'orderstatus', 'Pricemode2', 'buildtype', 'listingselecttype'] as const
 
 const enumMap = new Map<typeof enumKeys[number], ShallowRef<Model.EnumRsp[]>>()
 

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

@@ -21,7 +21,7 @@ export const useFuturesStore = defineStore(() => {
     // 行情列表
     const quoteList = computed(() => {
         return state.goodsList.reduce((res, cur) => {
-            const { agreeunit, goodsid, goodscode, goodsname, goodunitid, goodsgroupid, marketid, decimalplace, quoteminunit } = cur
+            const { agreeunit, goodsid, goodscode, goodsname, goodunitid, goodsgroupid, marketid, decimalplace, quoteminunit, trademode } = cur
             const quoteDayInfo = state.quoteDayList.find((e) => e.goodscode.toUpperCase() === goodscode.toUpperCase())
             const {
                 averageprice = 0,
@@ -140,6 +140,7 @@ export const useFuturesStore = defineStore(() => {
                 openedColor: handleColor(opened),
                 highestColor: handleColor(highest),
                 lowestColor: handleColor(lowest),
+                trademode,
             }
             res.push(item)
             return res

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

@@ -55,6 +55,8 @@ declare namespace Model {
         quoteshowtypeinterval: number;//行情报价间隔时间(秒)(成交价时为number;
         //)
         remark: string;//备注
+
+        trademode: number;//交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价
     }
 
     /** 现货商品详情 */

+ 1 - 0
src/types/model/market.d.ts

@@ -128,5 +128,6 @@ declare namespace Model {
         limitdown: number; // 跌停价
         limitup: number; // 涨停价
         quoteminunit: number;//行情最小变动单位 [整数,报价小数位一起使用]
+        trademode: number;
     }
 }