li.shaoyi 2 年之前
父节点
当前提交
9e824d4a6b

+ 2 - 2
app/package.json

@@ -1,6 +1,6 @@
 {
-  "name": "trading-beta",
-  "version": "1.0.5",
+  "name": "trading",
+  "version": "1.0.26",
   "main": "main.js",
   "dependencies": {
     "electron-updater": "^6.1.4",

+ 1 - 1
file/android/fxgl.txt

@@ -65,7 +65,7 @@ cn.muchinfo.sbyj_release_v1.0.0.apk
 http://112.74.182.230:8280/cfg?key=yjhj_sp
 
 
-海南掉期市场
+海南掉期市场(天津麦顿)
 实盘
 cn.muchinfo.tjmd_release_v1.0.0.apk
 http://47.104.141.54:8280/cfg?key=tjmd_sp

+ 2 - 2
oem/gstj/config/appconfig.json

@@ -1,8 +1,8 @@
 {
   "appId": "com.muchinfo.gstj",
   "appName": "甘肃碳交",
-  "version": "1.0.16",
-  "versionCode": "100016",
+  "version": "1.0.17",
+  "versionCode": "100017",
   "apiUrl": "http://192.168.31.204:8080/cfg?key=test_204",
   "tradeChannel": "ws",
   "modules": [

+ 1 - 2
oem/gstj/config/router.json

@@ -55,8 +55,7 @@
                         "sort": 3,
                         "title": "委托",
                         "code": "bottom_goods_order",
-                        "component": "views/footer/goods/order/index.vue",
-                        "hidden": true
+                        "component": "views/footer/goods/order/index.vue"
                     },
                     {
                         "authType": 2,

+ 4 - 4
oem/qxst/config/appconfig.json

@@ -1,10 +1,10 @@
 {
   "appId": "com.muchinfo.qxst",
-  "appName": "贵茶数字化",
-  "version": "1.0.25",
-  "versionCode": "100025",
+  "appName": "贵数字化中心",
+  "version": "1.0.26",
+  "versionCode": "100026",
   "apiUrl": "http://192.168.31.204:8080/cfg?key=test_204",
-  "tradeChannel": "http",
+  "tradeChannel": "ws",
   "modules": [
     "register"
   ],

+ 2 - 2
oem/tjmd/config/router.json

@@ -130,7 +130,7 @@
     {
         "authType": 1,
         "sort": 1,
-        "title": "交易市场",
+        "title": "掉期市场",
         "code": "market",
         "url": "/market",
         "urlType": 1,
@@ -140,7 +140,7 @@
             {
                 "authType": 1,
                 "sort": 1,
-                "title": "交易市场",
+                "title": "掉期市场",
                 "code": "market_trade",
                 "url": "trade",
                 "urlType": 1,

+ 5 - 5
src/packages/mobile/views/bank/capital/index.vue

@@ -45,11 +45,11 @@ const components = [
         component: defineAsyncComponent(() => import('./statement/index.vue')),
         history: defineAsyncComponent(() => import('./statement/history/index.vue')),
     },
-    // {
-    //     name: 'report',
-    //     title: '结算单',
-    //     component: defineAsyncComponent(() => import('./report/index.vue')),
-    // }
+    {
+        name: 'report',
+        title: '结算单',
+        component: defineAsyncComponent(() => import('./report/index.vue')),
+    }
 ]
 
 const active = shallowRef(props.tabName)

+ 65 - 0
src/packages/mobile/views/bank/capital/report/bank/index.vue

@@ -0,0 +1,65 @@
+<template>
+    <app-modal direction="right" height="100%" v-model:show="showModal">
+        <app-view>
+            <template #header>
+                <app-navbar title="出入金明细" @back="closed" />
+            </template>
+            <app-pull-refresh ref="pullRefreshRef" v-model:loading="loading" v-model:error="error"
+                v-model:pageIndex="pageIndex" :page-count="pageCount" @refresh="run">
+                <app-list :columns="columns" :data-list="dataList">
+                    <template #updatetime="{ value }">
+                        <span>{{ formatDate(value, 'YYYY-MM-DD') }}</span>
+                        <span>{{ formatDate(value, 'HH:mm:ss') }}</span>
+                    </template>
+                </app-list>
+            </app-pull-refresh>
+        </app-view>
+    </app-modal>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryReportBankAccountOutInLog } from '@/services/api/report'
+import AppModal from '@/components/base/modal/index.vue'
+import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
+import AppList from '@mobile/components/base/list/index.vue'
+
+const showModal = shallowRef(true)
+const dataList = shallowRef<Model.ReportBankAccountOutInLogRsp[]>([])
+const error = shallowRef(false)
+
+const columns: Model.TableColumn[] = [
+    { prop: 'updatetime', label: '时间' },
+    { prop: 'executetypedisplay', label: '资金类型' },
+    { prop: 'amount', label: '金额' },
+    { prop: 'applystatusdisplay', label: '状态' },
+]
+
+const { loading, pageIndex, pageCount, run } = useRequest(queryReportBankAccountOutInLog, {
+    manual: true,
+    params: {
+        pagesize: 20,
+    },
+    onSuccess: (res) => {
+        if (pageIndex.value === 1) {
+            dataList.value = []
+        }
+        dataList.value.push(...res.data)
+    },
+    onError: () => {
+        error.value = true
+    }
+})
+
+// 关闭弹窗
+const closed = () => {
+    showModal.value = false
+}
+
+// 暴露组件属性给父组件调用
+defineExpose({
+    closed,
+})
+</script>

+ 128 - 21
src/packages/mobile/views/bank/capital/report/index.vue

@@ -1,47 +1,154 @@
 <template>
-    <div style="border-top: 1px solid #fbfbfb;">
-        <DropdownMenu :close-on-click-outside="false">
-            <DropdownItem title="日报表" v-model="reportTypeValue" :options="reportType" />
-            <DropdownItem ref="dropdownItemRef" title="2023-10-1" @open="showPicker = true" />
-        </DropdownMenu>
+    <app-view>
+        <template #header>
+            <DropdownMenu :close-on-click-outside="false">
+                <DropdownItem v-model="reportTypeValue" :options="reportType" @change="onChange" />
+                <DropdownItem ref="dropdownItemRef" :title="currentDate.length ? currentDate.join('-') : '结算日期'"
+                    @open="showPicker = true" />
+            </DropdownMenu>
+        </template>
         <CellGroup title="账户信息">
-            <Cell title="账号" value="250000000006" />
-            <Cell title="名称" value="交易商01" />
+            <Cell title="账号" :value="currentAccount.accountid" />
+            <Cell title="名称" :value="userInfo.customername" />
             <Cell title="币种" value="RMB" />
-            <Cell title="结算日期" value="2023-10-02" />
+            <Cell title="结算日期" :value="tradeDate" />
         </CellGroup>
         <CellGroup title="资金信息">
-            <Cell title="期初余额" value="611950.93" />
-            <Cell title="银行入金" value="0.00" />
-            <Cell title="平仓损益" value="0.00" />
-            <Cell title="银行出金" value="0.00" />
-            <Cell title="结算损益" value="0.00" />
+            <Cell title="期初余额" :value="handleAmount(taaccount?.balance)" />
+            <Cell title="银行入金" :value="handleAmount(taaccount?.inamount)" />
+            <Cell title="银行出金" :value="handleAmount(taaccount?.outamount)" />
+            <Cell title="平仓损益" :value="handleAmount(taaccount?.closepl)" />
+            <Cell title="结算损益" :value="handleAmount(taaccount?.reckonpl)" />
+            <Cell title="服务费" :value="handleAmount(taaccount?.paycharge)" />
+            <Cell title="期末余额" :value="handleAmount(taaccount?.currentbalance)" />
+            <Cell title="占用资金" :value="handleAmount(taaccount?.oriusedmargin)" />
+            <Cell title="可用资金" :value="handleAmount(taaccount?.avaiablemoney)" />
+            <Cell title="冻结资金" :value="handleAmount(taaccount?.orioutamountfreeze)" />
+            <Cell title="可出资金" :value="handleAmount(taaccount?.avaiableoutmoney)" />
         </CellGroup>
-        <Popup position="bottom" v-model:show="showPicker" @click-overlay="dropdownItemRef.toggle()">
-            <DatePicker @confirm="onPickerConfirm" @cancel="onPickerCancel" />
+        <CellGroup title="报表明细">
+            <Cell title="出入金明细" is-link @click="openComponent('bank')" />
+            <Cell title="持仓汇总" is-link @click="openComponent('position')" />
+            <Cell title="分时成交" is-link @click="openComponent('trade')" />
+        </CellGroup>
+        <Popup position="bottom" v-model:show="showPicker" round @click-overlay="dropdownItemRef.toggle()">
+            <DatePicker v-model="currentDate" :max-date="new Date()" :columns-type="columnsType" @confirm="onPickerConfirm"
+                @cancel="onPickerCancel" />
         </Popup>
-    </div>
-</template>title
+        <component ref="componentRef" :is="componentMap.get(componentId)" @closed="closeComponent" v-if="componentId" />
+    </app-view>
+</template>
 
 <script lang="ts" setup>
-import { shallowRef } from 'vue'
-import { DropdownMenu, DropdownItem, DatePicker, Popup, CellGroup, Cell } from 'vant'
+import { shallowRef, computed, onMounted, defineAsyncComponent } from 'vue'
+import { DropdownMenu, DropdownItem, DatePicker, Popup, CellGroup, Cell, DatePickerColumnType } from 'vant'
+import { formatDecimal, handleNoneValue } from '@/filters'
+import { useComponent } from '@/hooks/component'
+import { queryMarketRun } from '@/services/api/market'
+import { queryReportMonthTaaccount, queryReportReckonDayTaaccount } from '@/services/api/report'
+import { useAccountStore, useUserStore } from '@/stores'
+import moment from 'moment'
+
+const componentMap = new Map<string, unknown>([
+    ['bank', defineAsyncComponent(() => import('./bank/index.vue'))],
+    ['position', defineAsyncComponent(() => import('./position/index.vue'))],
+    ['trade', defineAsyncComponent(() => import('./trade/index.vue'))],
+])
 
+const { currentAccount } = useAccountStore()
+const { userInfo } = useUserStore()
 const dropdownItemRef = shallowRef()
-const reportTypeValue = shallowRef(1)
+const reportTypeValue = shallowRef(1) // 报表类型
 const showPicker = shallowRef(false)
+const marketInfo = shallowRef<Model.MarketRunRsp>()
+const currentDate = shallowRef<string[]>([])
+const taaccount = shallowRef<Model.ReportMonthTaaccountRsp | Model.ReportReckonDayTaaccountRsp>()
+
+const { componentRef, componentId, closeComponent, openComponent } = useComponent()
 
 const reportType = [
     { text: '日报表', value: 1 },
     { text: '月报表', value: 2 }
 ]
 
+const pickerFormat = computed(() => reportTypeValue.value === 1 ? 'YYYY-MM-DD' : 'YYYY-MM')
+
+const columnsType = computed<DatePickerColumnType[]>(() => {
+    if (reportTypeValue.value === 1) {
+        return ['year', 'month', 'day']
+    }
+    return ['year', 'month']
+})
+
+// 结算日期
+const tradeDate = computed(() => {
+    if (taaccount.value) {
+        if ('reckondate' in taaccount.value) {
+            return moment(taaccount.value.reckondate).format(pickerFormat.value)
+        }
+        if ('cycletime' in taaccount.value) {
+            return moment(taaccount.value.cycletime).format(pickerFormat.value)
+        }
+    }
+    return '--'
+})
+
+// 处理金额显示
+const handleAmount = (value?: number) => {
+    if (value !== undefined) {
+        return formatDecimal(value)
+    }
+    return handleNoneValue()
+}
+
+// 查询市场上个交易日
+const getMarketRun = queryMarketRun().then((res) => {
+    marketInfo.value = res.data.find((e) => e.marketid === 0)
+    const dateString = marketInfo.value?.pretradedate ?? new Date().toISOString()
+    currentDate.value = moment(dateString).format(pickerFormat.value).split('-')
+})
+
+const requestData = () => {
+    getMarketRun.finally(() => {
+        if (reportTypeValue.value === 2) {
+            /// 表 - 交易商结算单 - 资金信息(月)
+            queryReportMonthTaaccount({
+                data: {
+                    cycletime: currentDate.value.join(''),
+                }
+            }).then((res) => {
+                taaccount.value = res.data[0]
+            })
+        } else {
+            /// 报表 - 交易商结算单 - 资金信息(日)
+            queryReportReckonDayTaaccount({
+                data: {
+                    reckondate: currentDate.value.join(''),
+                }
+            }).then((res) => {
+                taaccount.value = res.data[0]
+            })
+        }
+    })
+}
+
+// 切换报表类型
+const onChange = () => {
+    const dateString = marketInfo.value?.pretradedate ?? new Date().toISOString()
+    currentDate.value = moment(dateString).format(pickerFormat.value).split('-')
+    requestData()
+}
+
 const onPickerCancel = () => {
     showPicker.value = false
     dropdownItemRef.value?.toggle()
 }
 
-const onPickerConfirm = () => {
+const onPickerConfirm = ({ selectedValues }: { selectedValues: string[] }) => {
+    currentDate.value = selectedValues
+    requestData()
     onPickerCancel()
 }
+
+onMounted(() => requestData())
 </script>

+ 67 - 0
src/packages/mobile/views/bank/capital/report/position/index.vue

@@ -0,0 +1,67 @@
+<template>
+    <app-modal direction="right" height="100%" v-model:show="showModal">
+        <app-view>
+            <template #header>
+                <app-navbar title="出入金明细" @back="closed" />
+            </template>
+            <app-pull-refresh ref="pullRefreshRef" v-model:loading="loading" v-model:error="error"
+                v-model:pageIndex="pageIndex" :page-count="pageCount" @refresh="run">
+                <app-list :columns="columns" :data-list="dataList">
+                    <template #updatetime="{ value }">
+                        <span>{{ formatDate(value, 'YYYY-MM-DD') }}</span>
+                        <span>{{ formatDate(value, 'HH:mm:ss') }}</span>
+                    </template>
+                </app-list>
+            </app-pull-refresh>
+        </app-view>
+    </app-modal>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryReportReckonDayPosition } from '@/services/api/report'
+import AppModal from '@/components/base/modal/index.vue'
+import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
+import AppList from '@mobile/components/base/list/index.vue'
+
+const showModal = shallowRef(true)
+const dataList = shallowRef<Model.ReportReckonDayPositionRsp[]>([])
+const error = shallowRef(false)
+
+const columns: Model.TableColumn[] = [
+    { prop: 'goodsdisplay', label: '商品' },
+    { prop: 'buyorselldisplay', label: '方向' },
+    { prop: 'curpositionqty', label: '持有数量' },
+    { prop: 'frozenqty', label: '冻结数量' },
+    { prop: 'curholderamount', label: '持仓金额' },
+    { prop: 'avagepricedisplay', label: '均价' },
+]
+
+const { loading, pageIndex, pageCount, run } = useRequest(queryReportReckonDayPosition, {
+    manual: true,
+    params: {
+        pagesize: 20,
+    },
+    onSuccess: (res) => {
+        if (pageIndex.value === 1) {
+            dataList.value = []
+        }
+        dataList.value.push(...res.data)
+    },
+    onError: () => {
+        error.value = true
+    }
+})
+
+// 关闭弹窗
+const closed = () => {
+    showModal.value = false
+}
+
+// 暴露组件属性给父组件调用
+defineExpose({
+    closed,
+})
+</script>

+ 72 - 0
src/packages/mobile/views/bank/capital/report/trade/index.vue

@@ -0,0 +1,72 @@
+<template>
+    <app-modal direction="right" height="100%" v-model:show="showModal">
+        <app-view>
+            <template #header>
+                <app-navbar title="出入金明细" @back="closed" />
+            </template>
+            <app-pull-refresh ref="pullRefreshRef" v-model:loading="loading" v-model:error="error"
+                v-model:pageIndex="pageIndex" :page-count="pageCount" @refresh="run">
+                <app-list :columns="columns" :data-list="dataList">
+                    <template #updatetime="{ value }">
+                        <span>{{ formatDate(value, 'YYYY-MM-DD') }}</span>
+                        <span>{{ formatDate(value, 'HH:mm:ss') }}</span>
+                    </template>
+                </app-list>
+            </app-pull-refresh>
+        </app-view>
+    </app-modal>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef } from 'vue'
+import { formatDate } from '@/filters'
+import { useRequest } from '@/hooks/request'
+import { queryReportTradeDetail } from '@/services/api/report'
+import AppModal from '@/components/base/modal/index.vue'
+import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
+import AppList from '@mobile/components/base/list/index.vue'
+
+defineProps({
+
+})
+
+const showModal = shallowRef(true)
+const dataList = shallowRef<Model.ReportTradeDetailRsp[]>([])
+const error = shallowRef(false)
+
+const columns: Model.TableColumn[] = [
+    { prop: 'goodsdisplay', label: '商品' },
+    { prop: 'buyorselldisplay', label: '类型/方向' },
+    { prop: 'tradeqty', label: '数量' },
+    { prop: 'tradeprice', label: '价格' },
+    { prop: 'tradeamount', label: '成交金额' },
+    { prop: 'charge', label: '服务费' },
+    { prop: 'tradetime', label: '时间' },
+]
+
+const { loading, pageIndex, pageCount, run } = useRequest(queryReportTradeDetail, {
+    manual: true,
+    params: {
+        pagesize: 20,
+    },
+    onSuccess: (res) => {
+        if (pageIndex.value === 1) {
+            dataList.value = []
+        }
+        dataList.value.push(...res.data)
+    },
+    onError: () => {
+        error.value = true
+    }
+})
+
+// 关闭弹窗
+const closed = () => {
+    showModal.value = false
+}
+
+// 暴露组件属性给父组件调用
+defineExpose({
+    closed,
+})
+</script>

+ 0 - 7
src/packages/mobile/views/bank/capital/statement/history/index.vue

@@ -18,7 +18,6 @@
                 </app-list>
             </app-pull-refresh>
             <Calendar v-model:show="showCalendar" type="range" :max-date="new Date()" :min-date="moment().subtract(1, 'years').toDate()" @confirm="onConfirm" />
-            <component ref="componentRef" :is="componentMap.get(componentId)" @closed="closeComponent" v-if="componentId" />
         </app-view>
     </app-modal>
 </template>
@@ -33,13 +32,7 @@ import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
 import AppList from '@mobile/components/base/list/index.vue'
 import moment from 'moment'
 import { Calendar, Cell } from 'vant'
-import { useComponent } from '@/hooks/component'
 
-const { componentRef, componentId, closeComponent } = useComponent(() => {
-    pullRefreshRef.value?.refresh()
-})
-
-const componentMap = new Map<string, unknown>([])
 const showModal = shallowRef(true)
 const dataList = shallowRef<Model.HisAmountLogRsp[]>([])
 const error = shallowRef(false)

+ 15 - 17
src/packages/pc/components/layouts/header/components/report/index.vue

@@ -9,7 +9,7 @@
                 </el-select>
                 <el-date-picker :type="pickerType" placeholder="查询日期" :value-format="pickerFormat" :clearable="false"
                     v-model="cycletime" />
-                <el-button type="primary" :loading="loading" @click="reloadData">查询</el-button>
+                <el-button type="primary" :loading="loading" @click="requestData">查询</el-button>
             </div>
         </div>
         <app-table-details title="账户信息" :data="currentAccount" :label-width="180" :cell-props="accountDetailProps"
@@ -86,7 +86,7 @@ const tradeDate = computed(() => {
 })
 
 const loginStore = useLoginStore()
-const currentAccount = useAccountStore().currentAccount
+const { currentAccount } = useAccountStore()
 const userInfo = useUserStore().userInfo
 const marketInfo = shallowRef<Model.MarketRunRsp>()
 
@@ -135,7 +135,7 @@ const getMarketRun = queryMarketRun().then((res) => {
     cycletime.value = formatDate(dateString, 'YYYYMMDD')
 })
 
-const reloadData = () => {
+const requestData = () => {
     loading.value = true
     getMarketRun.finally(() => {
         Promise.all([
@@ -198,17 +198,17 @@ const accountDetailProps = [
 
 /// 资金信息
 const taDetailProps = [
-    { prop: 'balance', label: '期初余额:', entireRow: true },
-    { prop: 'inamount', label: '银行入金:' },
-    { prop: 'closepl', label: '平仓损益:' },
-    { prop: 'outamount', label: '银行出金:' },
-    { prop: 'reckonpl', label: '结算损益:' },
-    { prop: 'paycharge', label: '服务费:' },
-    { prop: 'currentbalance', label: '期末余额:', entireRow: true },
-    { prop: 'oriusedmargin', label: '占用资金:' },
-    { prop: 'orioutamountfreeze', label: '冻结资金:' },
-    { prop: 'avaiablemoney', label: '可用资金:' },
-    { prop: 'avaiableoutmoney', label: '可出资金:' },
+    { prop: 'balance', label: '期初余额:', decimal: 2, entireRow: true },
+    { prop: 'inamount', label: '银行入金:', decimal: 2 },
+    { prop: 'closepl', label: '平仓损益:', decimal: 2 },
+    { prop: 'outamount', label: '银行出金:', decimal: 2 },
+    { prop: 'reckonpl', label: '结算损益:', decimal: 2 },
+    { prop: 'paycharge', label: '服务费:', decimal: 2 },
+    { prop: 'currentbalance', label: '期末余额:', decimal: 2, entireRow: true },
+    { prop: 'oriusedmargin', label: '占用资金:', decimal: 2 },
+    { prop: 'orioutamountfreeze', label: '冻结资金:', decimal: 2 },
+    { prop: 'avaiablemoney', label: '可用资金:', decimal: 2 },
+    { prop: 'avaiableoutmoney', label: '可出资金:', decimal: 2 },
 ]
 
 /// 出入金明细
@@ -246,7 +246,5 @@ const selectList = [
 ]
 
 /// 请求数据
-onMounted(() => {
-    reloadData()
-})
+onMounted(() => requestData())
 </script>

+ 1 - 2
src/packages/pc/views/market/trade/goods/list/listing/index.vue

@@ -39,8 +39,7 @@
                 </el-form-item>
                 <el-form-item prop="OrderQty" label="数量">
                     <div class="g-qty-group">
-                        <el-input-number ref="qtyRef" placeholder="请输入" :min="0"
-                            :max="settingStore.getSettingValue('orderMaxQty')" :precision="0" :step="qtyStep || 1"
+                        <el-input-number ref="qtyRef" placeholder="请输入" :min="0" :precision="0" :step="qtyStep || 1"
                             v-model="formData.OrderQty" @keyup.enter="submitFocus" />
                         <el-radio-group size="small" v-model="qtyStep" :validate-event="false" @change="onRadioChange">
                             <el-radio v-for="(value, index) in qtyStepList" :key="index" :label="value" border />

+ 3 - 4
src/packages/pc/views/market/trade/presell/transfer/listing/index.vue

@@ -38,8 +38,7 @@
                 </el-form-item>
                 <el-form-item prop="OrderQty" label="数量">
                     <div class="g-qty-group">
-                        <el-input-number ref="qtyRef" placeholder="请输入" :min="0"
-                            :max="settingStore.getSettingValue('orderMaxQty')" :precision="0" :step="qtyStep || 1"
+                        <el-input-number ref="qtyRef" placeholder="请输入" :min="0" :precision="0" :step="qtyStep || 1"
                             v-model="formData.OrderQty" @keyup.enter="submitFocus" />
                         <el-radio-group size="small" v-model="qtyStep" :validate-event="false" @change="onRadioChange">
                             <el-radio v-for="(value, index) in qtyStepList" :key="index" :label="value" border />
@@ -51,8 +50,8 @@
                         @click="onBeforeSubmit"
                         v-if="formData.BuyOrSell === BuyOrSell.Buy && !selectedGoods?.iscannotbuy">订立</el-button>
                     <el-button ref="submitRef" type="primary" :loading="loading"
-                        :disabled="!formData.OrderQty || !enableqty || (formData.OrderQty > enableqty)" @click="onBeforeSubmit"
-                        v-if="formData.BuyOrSell === BuyOrSell.Sell">
+                        :disabled="!formData.OrderQty || !enableqty || (formData.OrderQty > enableqty)"
+                        @click="onBeforeSubmit" v-if="formData.BuyOrSell === BuyOrSell.Sell">
                         <span>转让</span>
                         <span v-if="enableqty">(≤{{ enableqty }})</span>
                     </el-button>

+ 2 - 1
src/packages/sbyj/router/index.ts

@@ -195,7 +195,8 @@ const routes: Array<RouteRecordRaw> = [
         name: 'cancel-list',
         component: () => import('../views/order/history/index.vue'),
         props: {
-          title: '终止订单'
+          title: '终止订单',
+          holderqty: 0
         }
       }
     ]

+ 2 - 3
src/packages/sbyj/views/mine/index.vue

@@ -114,20 +114,19 @@
 </template>
 
 <script lang="ts" setup>
-import { shallowRef, onMounted, onActivated, computed } from 'vue'
+import { shallowRef, onActivated, computed } from 'vue'
 import { Cell, CellGroup, Button, Icon } from 'vant'
 import { fullloading, dialog } from '@/utils/vant'
 import { useNavigation } from '@mobile/router/navigation'
 import { AuthStatus } from '@/constants/account'
 import { queryBankAccountSign } from '@/services/api/bank'
-import { useLoginStore, useAccountStore, useUserStore, usePositionStore } from '@/stores'
+import { useLoginStore, useAccountStore, useUserStore } from '@/stores'
 import eventBus from '@/services/bus'
 import Iconfont from '@/components/base/iconfont/index.vue'
 
 const { router, routerTo } = useNavigation()
 const loginStore = useLoginStore()
 const userStore = useUserStore()
-const positionStore = usePositionStore()
 const accountStore = useAccountStore()
 const { currentAccount } = accountStore.$toRefs()
 

+ 7 - 5
src/packages/sbyj/views/order/history/index.vue

@@ -71,11 +71,12 @@ import { useRequest } from '@/hooks/request'
 import { queryTradeHolderDetailEx } from '@/services/api/order'
 import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
 
-defineProps({
-    title:{
-        type:String,
-        default:'全部订单'
-    }
+const props = defineProps({
+    title: {
+        type: String,
+        default: '全部订单'
+    },
+    holderqty: Number
 })
 
 const error = shallowRef(false)
@@ -89,6 +90,7 @@ const enableqty = (item: Model.TradeHolderDetailExRsp) => {
 const { loading, pageIndex, pageCount, run } = useRequest(queryTradeHolderDetailEx, {
     params: {
         pagesize: 20,
+        holderqty: props.holderqty
     },
     onSuccess: (res) => {
         if (pageIndex.value === 1) {

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

@@ -1736,6 +1736,7 @@ declare namespace Model {
         accountid?: number; // 资金账户
         tradedate?: number; // 交易日(yyyyMMdd)
         goodsid?: number; // 商品ID
+        holderqty?: number; // 持仓数量
         page?: number; // 页码
         pagesize?: number; // 每页条数
     }