li.shaoyi 2 年之前
父節點
當前提交
2c991da397

+ 0 - 14
src/mock/router.ts

@@ -25,20 +25,6 @@ const appmenu = {
                                 title: '资金汇总',
                                 code: 'bottom_capital_summary',
                                 component: 'views/footer/capital/summary/index.vue',
-                                children: [
-                                    {
-                                        authType: 3,
-                                        title: '充值',
-                                        code: 'bottom_capital_summary_deposit',
-                                        component: 'views/footer/capital/summary/deposit/index.vue',
-                                    },
-                                    {
-                                        authType: 3,
-                                        title: '提现',
-                                        code: 'bottom_capital_summary_withdraw',
-                                        component: 'views/footer/capital/summary/withdraw/index.vue',
-                                    },
-                                ]
                             },
                             {
                                 authType: 2,

+ 1 - 1
src/packages/pc/assets/themes/default/default.less

@@ -158,7 +158,7 @@
         }
 
         .el-input-number {
-            width: 100%;
+            flex: 1;
 
             &__decrease,
             &__increase {

+ 4 - 4
src/packages/pc/components/base/table/index.vue

@@ -29,12 +29,12 @@
         <el-table-column type="index" label="序号" align="center" :width="80" v-if="showIndex" />
         <!-- 数据列 -->
         <template v-for="(item, index) in columns" :key="index">
-          <el-table-column :class-name="item.className" :align="item.align ?? 'center'" :min-width="120"
-            :width="item.width" :label="item.label" :prop="item.prop" :fixed="item.fixed || false"
-            :sortable="item.sortable" show-overflow-tooltip v-if="item.show ?? true">
+          <el-table-column :align="item.align ?? 'center'" :min-width="120" :width="item.width" :label="item.label"
+            :prop="item.prop" :fixed="item.fixed || false" :sortable="item.sortable" show-overflow-tooltip
+            v-if="item.show ?? true">
             <template #default="{ row, $index }">
               <slot :name="item.prop" :row="row" :value="row[item.prop]" :index="$index">
-                {{ handleValue(row, item) }}
+                <span :class="item.className">{{ handleValue(row, item) }}</span>
               </slot>
             </template>
           </el-table-column>

+ 2 - 1
src/packages/pc/components/modules/listing/index.less

@@ -23,7 +23,8 @@
         }
 
         .footer-btnbar {
-            text-align: center;
+            display: flex;
+            justify-content: center;
         }
 
         .qty-group {

+ 53 - 1
src/packages/pc/components/modules/listing/index.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="app-listing">
         <div class="app-listing__forex">
-            <Forex v-bind="{ goodsCode: goodsStore.goodsCode }" />
+            <Forex v-bind="{ goodsCode: goodsStore.goodsCode }" @buyclick="onBuyClick" @sellclick="onSellClick" />
         </div>
         <div class="app-listing__form">
             <h4 class="header-title">订单挂牌</h4>
@@ -165,6 +165,58 @@ const onRadioChange = (value: number) => {
     orderQty.value = value
 }
 
+const onBuyClick = (index: number) => {
+    const { bid = 0, bid2 = 0, bid3 = 0, bid4 = 0, bid5 = 0 } = quote.value ?? {}
+    switch (index) {
+        case 1: {
+            formData.OrderPrice = bid
+            break
+        }
+        case 2: {
+            formData.OrderPrice = bid2 || bid
+            break
+        }
+        case 3: {
+            formData.OrderPrice = bid3 || bid
+            break
+        }
+        case 4: {
+            formData.OrderPrice = bid4 || bid
+            break
+        }
+        case 5: {
+            formData.OrderPrice = bid5 || bid
+            break
+        }
+    }
+}
+
+const onSellClick = (index: number) => {
+    const { ask = 0, ask2 = 0, ask3 = 0, ask4 = 0, ask5 = 0 } = quote.value ?? {}
+    switch (index) {
+        case 1: {
+            formData.OrderPrice = ask
+            break
+        }
+        case 2: {
+            formData.OrderPrice = ask2 || ask
+            break
+        }
+        case 3: {
+            formData.OrderPrice = ask3 || ask
+            break
+        }
+        case 4: {
+            formData.OrderPrice = ask4 || ask
+            break
+        }
+        case 5: {
+            formData.OrderPrice = ask5 || ask
+            break
+        }
+    }
+}
+
 // 提交挂牌
 const onSubmit = (buildType: number) => {
     formRef.value?.validate((valid) => {

+ 1 - 1
src/packages/pc/components/modules/performance/index.less

@@ -5,7 +5,7 @@
         line-height: 1;
 
         &:not(:first-child) {
-            border-top: 1px solid #efefef;
+            border-top: 1px solid #576675;
         }
 
         &__title {

+ 16 - 7
src/packages/pc/views/account/sign/index.vue

@@ -1,8 +1,9 @@
 <!-- 签约账号管理 -->
 <template>
-    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading" :row-key="rowKey" :expand-row-keys="expandKeys"  @row-click="rowClick">
+    <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading" :row-key="rowKey"
+        :expand-row-keys="expandKeys" @row-click="rowClick">
         <template #header>
-            <el-button type="danger" size="small" @click="openComponent('')">添加签约账户</el-button>
+            <app-filter :options="filterOptons" />
         </template>
         <!-- 证件类型 -->
         <template #cardtype="{ value }">
@@ -15,13 +16,15 @@
         <!-- 展开行 -->
         <template #expand="{ row }">
             <div class="buttonbar">
-                <el-button v-if="row.signstatus === SignStatus.Signed" type="danger" size="small" @click="showComponent('cancel', row)">解约</el-button>
-                <el-button v-if="[SignStatus.Unsigned, SignStatus.Refuse, SignStatus.Signed].includes(row.signstatus)" type="danger" size="small" @click="showComponent('cancel', row)">修改</el-button>
+                <el-button v-if="row.signstatus === SignStatus.Signed" type="danger" size="small"
+                    @click="showComponent('cancel', row)">解约</el-button>
+                <el-button v-if="[SignStatus.Unsigned, SignStatus.Refuse, SignStatus.Signed].includes(row.signstatus)"
+                    type="danger" size="small" @click="showComponent('cancel', row)">修改</el-button>
             </div>
         </template>
     </app-table>
     <component ref="componentRef" v-bind="{ selectedRow }" :is="componentMap.get(componentId)" @closed="closeComponent"
-            v-if="componentId" />
+        v-if="componentId" />
 </template>
 
 <script lang="ts" setup>
@@ -29,17 +32,19 @@ import { shallowRef, defineAsyncComponent } from 'vue'
 import { useComponent } from '@/hooks/component'
 import { useComposeTable } from '@pc/components/base/table'
 import { useRequest } from '@/hooks/request'
+import { useDataFilter } from '@/hooks/datatable'
 import { queryBankAccountSign } from '@/services/api/bank'
 import { getSignStatusName, SignStatus } from '@/constants/bank'
 import { getCertificateTypeCodeName } from '@/constants/account'
 import AppTable from '@pc/components/base/table/index.vue'
-
-const { rowKey, expandKeys, rowClick, selectedRow } = useComposeTable<Model.BankAccountSignRsp>({ rowKey: 'applyexchticket' })
+import AppFilter from '@pc/components/base/table-filter/index.vue'
 
 const componentMap = new Map<string, unknown>([
     ['cancel', defineAsyncComponent(() => import('./components/cancel/index.vue'))],
 ])
 
+const { rowKey, expandKeys, rowClick, selectedRow } = useComposeTable<Model.BankAccountSignRsp>({ rowKey: 'applyexchticket' })
+const { filterOptons } = useDataFilter<Model.BankAccountSignReq>()
 const { loading, dataList, run } = useRequest(queryBankAccountSign, {})
 
 const { componentRef, componentId, openComponent, closeComponent } = useComponent(() => {
@@ -62,4 +67,8 @@ const showComponent = (componentName: string, row: Model.BankAccountSignRsp) =>
     selectedRow.value = row
     openComponent(componentName)
 }
+
+filterOptons.buttonList = [
+    { lable: '添加签约账户', className: 'el-button--primary', onClick: () => openComponent('sign') },
+]
 </script>

+ 1 - 1
src/packages/pc/views/footer/capital/summary/deposit/index.vue

@@ -11,8 +11,8 @@
             </el-form-item>
         </el-form>
         <template #footer>
+            <el-button type="info" @click="onCancel(false)">取消</el-button>
             <el-button type="primary" @click="formSubmit">提交</el-button>
-            <el-button @click="onCancel(false)" plain>取消</el-button>
         </template>
     </app-drawer>
 </template>

+ 22 - 12
src/packages/pc/views/footer/capital/summary/index.vue

@@ -2,8 +2,8 @@
 <template>
     <app-table :data="accountList" v-model:columns="tableColumns" :row-key="rowKey" :expand-row-keys="expandKeys"
         @row-click="rowClick">
-         <!-- 余额 -->
-         <template #currentbalance>
+        <!-- 余额 -->
+        <template #currentbalance>
             {{ accountInfo.currentbalance?.toFixed(2) }}
         </template>
         <!-- 净值 -->
@@ -18,8 +18,8 @@
         <template #oriusedmargin>
             {{ accountInfo.oriusedmargin?.toFixed(2) }}
         </template>
-         <!-- 可用资金 -->
-         <template #avaiableMoney>
+        <!-- 可用资金 -->
+        <template #avaiableMoney>
             {{ avaiableMoney.toFixed(2) }}
         </template>
         <!-- 冻结资金 -->
@@ -31,27 +31,37 @@
             {{ getTradeStatusName(value) }}
         </template>
         <!-- 展开行 -->
-        <template #expand="{ row }">
-            <app-auth-operation v-bind="{ code, options: { selectedRow: row } }" />
+        <template #expand>
+            <div class="buttonbar">
+                <el-button type="info" size="small" @click="openComponent('deposit')">充值</el-button>
+                <el-button type="info" size="small" @click="openComponent('withdraw')">提现</el-button>
+            </div>
+        </template>
+        <template #footer>
+            <component ref="componentRef" v-bind="{ selectedRow }" :is="componentMap.get(componentId)"
+                @closed="closeComponent" v-if="componentId" />
         </template>
     </app-table>
 </template>
 
 <script lang="ts" setup>
-import { shallowRef } from 'vue'
+import { shallowRef, defineAsyncComponent } from 'vue'
 import { useAccountStore } from '@/stores'
+import { useComponent } from '@/hooks/component'
 import { useComposeTable } from '@pc/components/base/table'
 import AppTable from '@pc/components/base/table/index.vue'
-import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 import { getTradeStatusName } from '@/constants/order'
 
-defineProps({
-    code: String
-})
+const componentMap = new Map<string, unknown>([
+    ['deposit', defineAsyncComponent(() => import('./deposit/index.vue'))], // 充值
+    ['withdraw', defineAsyncComponent(() => import('./withdraw/index.vue'))], // 提现
+])
+
+const { componentRef, componentId, openComponent, closeComponent } = useComponent()
 
 const accountStore = useAccountStore()
 const { accountList } = accountStore.$toRefs()
-const { rowKey, expandKeys, rowClick } = useComposeTable<Model.TaAccountsRsp>({ rowKey: 'accountid' })
+const { selectedRow, rowKey, expandKeys, rowClick } = useComposeTable<Model.TaAccountsRsp>({ rowKey: 'accountid' })
 const { accountInfo, freezeMargin, avaiableMoney } = accountStore.$toRefs()
 
 const tableColumns = shallowRef<Model.TableColumn[]>([

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

@@ -3,10 +3,10 @@
     <app-drawer title="提现申请" :width="800" v-model:show="show" :loading="loading" :refresh="refresh">
         <el-form ref="formRef" class="el-form--horizontal" label-width="100px" :model="formData" :rules="formRules">
             <el-form-item label="资金账号">
-                <span>{{ accountInfo?.accountid }}</span>
+                <span>{{ accountStore.accountId }}</span>
             </el-form-item>
             <el-form-item label="账户余额">
-                <span>{{ accountInfo?.currentbalance.toFixed(2) }}</span>
+                <span>{{ accountStore.accountInfo.currentbalance?.toFixed(2) }}</span>
             </el-form-item>
             <el-form-item label="出金金额" prop="Amount">
                 <el-input type="number" placeholder="请输入" v-model="formData.Amount" />
@@ -19,20 +19,21 @@
             </el-form-item>
         </el-form>
         <template #footer>
-            <el-button @click="onCancel(false)" plain>取消</el-button>
-            <el-button type="primary" @click="onSubmit">提交</el-button>
+            <el-button type="info" @click="onCancel(false)">取消</el-button>
+            <el-button type="primary" @click="formSubmit">提交</el-button>
         </template>
     </app-drawer>
 </template>
 
 <script lang="ts" setup>
 import { ref } from 'vue'
-import { ElMessage } from 'element-plus'
-import type { FormInstance, FormRules } from 'element-plus'
+import { ElMessage, FormInstance, FormRules } from 'element-plus'
 import { useDoWithdraw } from '@/business/bank'
+import { useAccountStore } from '@/stores'
 import AppDrawer from '@pc/components/base/drawer/index.vue'
 
-const { loading, accountInfo, formData, formSubmit } = useDoWithdraw()
+const { loading, formData, onSubmit } = useDoWithdraw()
+const accountStore = useAccountStore()
 const formRef = ref<FormInstance>()
 const show = ref(true)
 const refresh = ref(false)
@@ -46,10 +47,10 @@ const onCancel = (isRefresh = false) => {
     refresh.value = isRefresh
 }
 
-const onSubmit = () => {
+const formSubmit = () => {
     formRef.value?.validate((valid) => {
         if (valid) {
-            formSubmit().then(() => {
+            onSubmit().then(() => {
                 ElMessage.success('提交成功')
             }).catch((err) => {
                 ElMessage.warning(err)

+ 36 - 3
src/packages/pc/views/market/trade/goods/index.vue

@@ -1,6 +1,39 @@
 <!-- 交易市场-订单交易 -->
 <template>
-    <app-table :data="tableList" v-model:columns="tableColumns" :loading="loading" @row-click="onRowClick" showIndex />
+    <app-table :data="tableList" v-model:columns="tableColumns" :loading="loading" @row-click="onRowClick" showIndex>
+        <!-- 卖价 -->
+        <template #ask="{ row }">
+            <span :class="row.askColor">{{ row.ask }}</span>
+        </template>
+        <!-- 买价 -->
+        <template #bid="{ row }">
+            <span :class="row.bidColor">{{ row.bid }}</span>
+        </template>
+        <!-- 当前价 -->
+        <template #last="{ row }">
+            <span :class="row.lastColor">{{ row.last }}</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>
+        </template>
+        <!-- 最低 -->
+        <template #lowest="{ row }">
+            <span :class="row.lowestColor">{{ row.lowest }}</span>
+        </template>
+        <!-- 最高 -->
+        <template #highest="{ row }">
+            <span :class="row.highestColor">{{ row.highest }}</span>
+        </template>
+    </app-table>
     <component ref="componentRef" v-bind="{ goodsId }" :is="componentMap.get(componentId)" @closed="closeComponent"
         v-if="componentId" />
 </template>
@@ -69,8 +102,8 @@ const tableColumns = shallowRef<Model.TableColumn[]>([
     { prop: 'highest', label: '最高' },
     { prop: 'lowest', label: '最低' },
     { prop: 'amplitude', label: '振幅' },
-    { prop: 'limitup', label: '涨停价' },
-    { prop: 'limitdown', label: '跌停价' },
+    { prop: 'limitup', label: '涨停价', className: 'g-price-up' },
+    { prop: 'limitdown', label: '跌停价', className: 'g-price-down' },
 ])
 
 const onRowClick = (row: Model.OrderQuoteRsp) => {

+ 1 - 1
src/packages/pc/views/market/trade/spot/order/delisting/index.vue

@@ -28,8 +28,8 @@
             </el-form-item>
         </el-form>
         <template #footer>
-            <el-button type="primary" @click="onSubmit">提交</el-button>
             <el-button type="info" @click="onCancel(false)">取消</el-button>
+            <el-button type="primary" @click="onSubmit">提交</el-button>
         </template>
     </app-drawer>
 </template>

+ 1 - 1
src/packages/pc/views/market/trade/spot/order/listing/index.vue

@@ -22,8 +22,8 @@
             </el-form-item>
         </el-form>
         <template #footer>
-            <el-button type="primary" @click="onSubmit">提交</el-button>
             <el-button type="info" @click="onCancel(false)">取消</el-button>
+            <el-button type="primary" @click="onSubmit">提交</el-button>
         </template>
     </app-drawer>
 </template>

+ 1 - 1
src/services/http/index.ts

@@ -54,7 +54,7 @@ export default new (class {
             },
             (err) => {
                 if (err.message === 'Network Error') {
-                    return Promise.reject('无效的网络连接')
+                    return Promise.reject('网络或服务器错误')
                 }
                 if (err.response) {
                     const { msg, message } = err.response.data ?? {}