li.shaoyi 4 éve
szülő
commit
645fffa49d
25 módosított fájl, 278 hozzáadás és 315 törlés
  1. 3 3
      src/services/proto/delivery/interface.ts
  2. 36 0
      src/views/business/search/list/plan/components/filter/index.vue
  3. 1 1
      src/views/business/search/list/plan/index.vue
  4. 0 0
      src/views/business/search/list/purchase/components/filter/index.vue
  5. 1 1
      src/views/business/search/list/purchase/index.vue
  6. 5 2
      src/views/business/spotmarket/components/modify/index.vue
  7. 7 7
      src/views/information/account_info/compoments/add-child-futures/index.vue
  8. 4 5
      src/views/information/account_info/compoments/add-futures/index.vue
  9. 4 5
      src/views/information/account_info/compoments/add-managers-permission/index.vue
  10. 4 5
      src/views/information/account_info/compoments/add-managers/index.vue
  11. 5 12
      src/views/information/account_info/compoments/cancel-futures/index.vue
  12. 4 5
      src/views/information/account_info/compoments/cancel-managers/index.vue
  13. 4 5
      src/views/information/account_info/compoments/credit-futures/index.vue
  14. 11 19
      src/views/information/account_info/compoments/detail-futures/index.vue
  15. 11 18
      src/views/information/account_info/compoments/detail-managers/index.vue
  16. 4 5
      src/views/information/account_info/compoments/locked-managers/index.vue
  17. 23 43
      src/views/information/account_info/compoments/managers-permission/index.vue
  18. 5 12
      src/views/information/account_info/compoments/modify-futures-son/index.vue
  19. 5 12
      src/views/information/account_info/compoments/modify-futures/index.vue
  20. 5 12
      src/views/information/account_info/compoments/modify-managers/index.vue
  21. 4 5
      src/views/information/account_info/compoments/reset-managers/index.vue
  22. 4 5
      src/views/information/account_info/compoments/unlocked-managers/index.vue
  23. 36 25
      src/views/information/account_info/list/account_info_futures/index.vue
  24. 38 29
      src/views/information/account_info/list/account_info_manager/index.vue
  25. 54 79
      src/views/information/account_info/list/account_info_trade/index.vue

+ 3 - 3
src/services/proto/delivery/interface.ts

@@ -78,9 +78,9 @@ export interface ErmcpSpotGoodsPriceReq {
     CurrencyID: number; // uint64 报价货币ID
     SpotGoodsPrice: number; // double 现货价格
     TradeDate: string; // string 交易日(yyyyMMdd)
-    OperateSrc?: number // int32 最后操作来源 - 1:管理端 2:终端
-    OperateID?: number; // uint64 最后操作人
-    OperateType?: number; // int32 操作类型 - 1:新增 2:修改 3:删除
+    OperateSrc: 1 | 2 // int32 最后操作来源 - 1:管理端 2:终端
+    OperateID: number; // uint64 最后操作人
+    OperateType: 1 | 2 | 3; // int32 操作类型 - 1:新增 2:修改 3:删除
 }
 // 现货市价响应 0 29 163
 export interface ErmcpSpotGoodsPriceRsp {

+ 36 - 0
src/views/business/search/list/plan/components/filter/index.vue

@@ -0,0 +1,36 @@
+<template>
+    <div class="filterTable">
+        <FilterOption :selectList="selectList" :inputList="inputList" :fixedBtnList="fixedBtnList" />
+        <slot></slot>
+    </div>
+</template>
+
+<script lang="ts">
+import FilterOption from '@/common/components/filter/index.vue';
+import { defineComponent } from 'vue';
+import { handleFilter, InputList, SelectList } from '@/common/setup/filter';
+export default defineComponent({
+    name: 'filter-spot-contract-search',
+    components: { FilterOption },
+    setup(props, context) {
+        const select: SelectList[] = [
+            {
+                value: undefined,
+                key: 'contracttype',
+                placeholder: '全部计划类型',
+                list: [
+                    { value: 1, lable: '采购' },
+                    { value: -1, lable: '销售' },
+                ],
+            },
+        ];
+        const input: InputList[] = [
+            { value: '', placeholder: '模糊搜索计划', key: 'hedgeplanno' },
+            { value: '', placeholder: '模糊搜索现货品种', key: 'deliverygoodsname' },
+        ];
+        return {
+            ...handleFilter(select, input, context),
+        };
+    },
+});
+</script>

+ 1 - 1
src/views/business/search/list/plan/index.vue

@@ -13,7 +13,7 @@
 
 <script lang="ts">
 import { queryTableList, MtpTableButton, defineComponent, handleComposeTable, ComposeTableParam } from '@/common/export/commonTable';
-import filterCustomTable from '../../components/filter/index.vue';
+import filterCustomTable from './components/filter/index.vue';
 import { formatTime, formatValue } from '@/common/methods';
 import { columns } from './setup';
 import { Ermcp3HedgePlan } from '@/services/go/ermcp/plan/interface';

+ 0 - 0
src/views/business/search/components/filter/index.vue → src/views/business/search/list/purchase/components/filter/index.vue


+ 1 - 1
src/views/business/search/list/purchase/index.vue

@@ -13,7 +13,7 @@
 
 <script lang="ts">
 import { queryTableList, MtpTableButton, defineComponent, handleComposeTable, ComposeTableParam } from '@/common/export/commonTable';
-import filterCustomTable from '../../components/filter/index.vue';
+import filterCustomTable from './components/filter/index.vue';
 import { formatTime, formatValue } from '@/common/methods';
 import { columns } from './setup';
 import { Ermcp3SellBuyContract } from '@/services/go/ermcp/purchase/interface';

+ 5 - 2
src/views/business/spotmarket/components/modify/index.vue

@@ -74,7 +74,7 @@ export default defineComponent({
         // 选择币种列表
         const currencyList = getPayCurrencyTypeEnumList();
 
-        const { deliverygoodsid, wrstandardid, spotgoodsbrandid, tradedate, currencyid, spotgoodsprice } = props.selectedRow;
+        const { deliverygoodsid, wrstandardid, spotgoodsbrandid, tradedate, currencyid, spotgoodsprice, operateid } = props.selectedRow;
         const formState: UnwrapRef<ErmcpSpotGoodsPriceReq> = reactive({
             DeliveryGoodsID: deliverygoodsid,
             WRStandardID: wrstandardid,
@@ -82,6 +82,9 @@ export default defineComponent({
             CurrencyID: currencyid,
             SpotGoodsPrice: spotgoodsprice,
             TradeDate: tradedate,
+            OperateSrc: 2,
+            OperateID: operateid,
+            OperateType: 2,
         });
 
         // 表单验证规则
@@ -93,7 +96,7 @@ export default defineComponent({
         // 提交
         function submit() {
             validateAction<ErmcpSpotGoodsPriceReq>(formRef, formState).then((res) => {
-                requestResultLoadingAndInfo(ermcpSpotGoodsPrice, res, loading, ['修改现货参考价成功', '修改现货参考价失败:']).then(() => {
+                requestResultLoadingAndInfo(ermcpSpotGoodsPrice, res, loading, ['修改现货参考价成功', '修改现货参考价失败']).then(() => {
                     cancel(true);
                 });
             });

+ 7 - 7
src/views/information/account_info/compoments/add-child-futures/index.vue

@@ -49,12 +49,13 @@
                 </a-col>
             </a-row>
         </a-form>
-        <AddTrader @refresh="updateTrader" />
+        <AddTrader @cancel="updateTrader" />
     </a-modal>
 </template>
 
 <script lang="ts">
-import { closeModal, openModal } from '@/common/setup/modal/index';
+import { openModal } from '@/common/setup/modal/index';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { defineComponent, PropType, ref, watchEffect } from 'vue';
 import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
 import { ErmcpBizGroupReq, HedgeOutMainConfigReq } from '@/services/proto/accountinfo/interface';
@@ -72,7 +73,7 @@ import { isPingAnOem } from '@/common/config/projectName';
 
 export default defineComponent({
     name: 'account_info_futures_btn_add',
-    emits: ['updateTrader', 'refresh'],
+    emits: ['cancel', 'update'],
     components: {
         AddTrader,
     },
@@ -96,13 +97,13 @@ export default defineComponent({
     },
     setup(props, context) {
         // 控制关闭弹窗
-        const { visible, cancel } = closeModal('account_info_futures_btn_child_add');
+        const { visible, cancel } = _closeModal(context);
         // 新增交易用户
         const { openAction: addTrader } = openModal('account_info_trade_btn_add');
         const loading = ref<boolean>(false);
         const { rules, formState, formRef } = handleBusinessForm();
         function updateTrader() {
-            context.emit('updateTrader');
+            context.emit('update');
         }
         function submit() {
             validateAction<FormState>(formRef, formState).then((res) => {
@@ -127,8 +128,7 @@ export default defineComponent({
                 };
 
                 requestResultLoadingAndInfo(hedgeOutMainReq, reqParam, loading, ['新增期货子账户成功', '新增期货子账户失败:']).then(() => {
-                    cancel();
-                    context.emit('refresh');
+                    cancel(true);
                 });
             });
         }

+ 4 - 5
src/views/information/account_info/compoments/add-futures/index.vue

@@ -40,7 +40,7 @@
 </template>
 
 <script lang="ts">
-import { closeModal } from '@/common/setup/modal/index';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { defineComponent, ref, watchEffect } from 'vue';
 import { queryResultLoadingAndInfo, requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
 import { hedgeOutMainReq } from '@/services/proto/accountinfo';
@@ -58,11 +58,11 @@ import { isPingAnOem } from '@/common/config/projectName';
 
 export default defineComponent({
     name: 'account_info_futures_btn_add',
-    emits: ['refresh'],
+    emits: ['cancel', 'update'],
     components: {},
     setup(props, context) {
         // 控制关闭弹窗
-        const { visible, cancel } = closeModal('account_info_futures_btn_add');
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         const companyList = ref<ErmcpFuturesCompany[]>([]);
         const { rules, formState, formRef } = handleAddOrModifyFuturesForm();
@@ -97,8 +97,7 @@ export default defineComponent({
                 };
                 // 期货账户主账户
                 requestResultLoadingAndInfo(hedgeOutMainReq, reqParam, loading, ['新增账户成功', '新增账户失败:']).then(() => {
-                    cancel();
-                    context.emit('refresh');
+                    cancel(true);
                 });
             });
         }

+ 4 - 5
src/views/information/account_info/compoments/add-managers-permission/index.vue

@@ -41,7 +41,7 @@
 </template>
 
 <script lang="ts">
-import { closeModal } from '@/common/setup/modal/index';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { defineComponent, ref, watchEffect } from 'vue';
 import { handleBusinessForm } from '../setup';
 import { ErmcpRoleMenuEx } from '@/services/go/ermcp/account/interface';
@@ -57,10 +57,10 @@ import { isPingAnOem } from '@/common/config/projectName';
 
 export default defineComponent({
     name: 'account_info_manager_btn_add',
-    emits: ['refresh'],
+    emits: ['cancel', 'update'],
     setup(props, context) {
         // 控制关闭弹窗
-        const { visible, cancel } = closeModal('account_info_manager_btn_add');
+        const { visible, cancel } = _closeModal(context);
         const { rules, formState, formRef } = handleBusinessForm();
         const loading = ref<boolean>(false);
         const tableList = ref<ErmcpRoleMenuEx[]>([]);
@@ -140,8 +140,7 @@ export default defineComponent({
                 }), // MemberFuncMenu 机构菜单
             };
             requestResultLoadingAndInfo(roleOperate, reqParam, loading, ['新增成功', '新增失败:']).then(() => {
-                cancel();
-                context.emit('refresh');
+                cancel(true);
             });
         }
         function firstChaneg(value: ErmcpRoleMenuEx) {

+ 4 - 5
src/views/information/account_info/compoments/add-managers/index.vue

@@ -48,7 +48,7 @@
 </template>
 
 <script lang="ts">
-import { closeModal } from '@/common/setup/modal/index';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { defineComponent, ref, PropType } from 'vue';
 import { handleBusinessForm } from '../setup';
 import { ErmcpLoginUser, ErmcpLoginUserEx, ErmcpTaAccount } from '@/services/go/ermcp/account/interface';
@@ -61,7 +61,7 @@ import { useTaAccount } from '../../list/setup';
 
 export default defineComponent({
     name: 'account_info_manager_btn_child_add',
-    emits: ['refresh'],
+    emits: ['cancel', 'update'],
     components: {},
     props: {
         tableList: {
@@ -71,7 +71,7 @@ export default defineComponent({
     },
     setup(props, context) {
         // 控制关闭弹窗
-        const { visible, cancel } = closeModal('account_info_manager_btn_child_add');
+        const { visible, cancel } = _closeModal(context);
         const { rules, formState, formRef } = handleBusinessForm();
         const loading = ref<boolean>(false);
         // 期货账户
@@ -93,8 +93,7 @@ export default defineComponent({
                     }), // LoginTaaccount 期货账户(勾选交易员必填)
                 };
                 requestResultLoadingAndInfo(loginAccountOperate, reqParam, loading, ['新增成功', '新增失败:']).then(() => {
-                    cancel();
-                    context.emit('refresh');
+                    cancel(true);
                 });
             });
         }

+ 5 - 12
src/views/information/account_info/compoments/cancel-futures/index.vue

@@ -10,7 +10,7 @@
 </template>
 
 <script lang="ts">
-import { closeModal } from '@/common/setup/modal/index';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { defineComponent, ref, PropType } from 'vue';
 import { Modal } from 'ant-design-vue';
 import { TaaccountOperateReq } from '@/services/proto/accountinfo/interface';
@@ -21,7 +21,7 @@ import { geLoginID_number } from '@/services/bus/login';
 import Detail from '../detail-commom-futures/index.vue';
 export default defineComponent({
     name: 'account_info_futures_btn_child_cancel',
-    emits: ['refresh'],
+    emits: ['cancel', 'update'],
     components: { Detail },
     props: {
         selectedData: {
@@ -39,7 +39,7 @@ export default defineComponent({
     },
     setup(props, context) {
         // 控制关闭弹窗
-        const { visible, cancel } = closeModal('account_info_futures_btn_child_cancel');
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
 
         function submit() {
@@ -55,8 +55,7 @@ export default defineComponent({
                         areauserid: Number(props.secondeData.relateduserid), // uint64 机构用户ID
                     };
                     requestResultLoadingAndInfo(taAccountOperateReq, reqParam, loading, ['账户注销成功', '账户注销失败:']).then(() => {
-                        cancel();
-                        context.emit('refresh');
+                        cancel(true);
                     });
                 },
                 onCancel() {},
@@ -71,10 +70,4 @@ export default defineComponent({
         };
     },
 });
-</script>
-
-<style lang="less">
-.add-custom {
-}
-</style
->;
+</script>

+ 4 - 5
src/views/information/account_info/compoments/cancel-managers/index.vue

@@ -11,7 +11,7 @@
 
 <script lang="ts">
 import { defineComponent, PropType, ref } from 'vue';
-import { closeModal } from '@/common/setup/modal/index';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { ErmcpLoginUser } from '@/services/go/ermcp/account/interface';
 import { Modal } from 'ant-design-vue';
 import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
@@ -21,7 +21,7 @@ import Detail from '../detail-commom-manager/index.vue';
 
 export default defineComponent({
     name: 'account_info_manager_btn_logout',
-    emits: ['refresh'],
+    emits: ['cancel', 'update'],
     components: {
         Detail,
     },
@@ -32,7 +32,7 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('account_info_manager_btn_logout');
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         function submit() {
             Modal.confirm({
@@ -47,8 +47,7 @@ export default defineComponent({
                         logintaaccounts: [],
                     };
                     requestResultLoadingAndInfo(loginAccountOperate, reqParam, loading, ['账户注销成功', '账户注销失败:']).then(() => {
-                        cancel();
-                        context.emit('refresh');
+                        cancel(true);
                     });
                 },
                 onCancel() {},

+ 4 - 5
src/views/information/account_info/compoments/credit-futures/index.vue

@@ -40,7 +40,7 @@
 
 <script lang="ts">
 import { defineComponent, PropType, ref, toRaw, watchEffect } from 'vue';
-import { closeModal } from '@/common/setup/modal/index';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { ErmcpLoginUser, ErmcpTaAccount, ErmcpTaAccountEx } from '@/services/go/ermcp/account/interface';
 import { message, Modal } from 'ant-design-vue';
 import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
@@ -52,7 +52,7 @@ import { getUserId } from '@/services/bus/user';
 
 export default defineComponent({
     name: 'account_info_futures_btn_child_credit',
-    emits: ['refresh'],
+    emits: ['cancel', 'update'],
     components: {},
     props: {
         selectedData: {
@@ -65,7 +65,7 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('account_info_futures_btn_child_credit');
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         // 当前余额
         const currentbalance = ref<number>(0);
@@ -103,8 +103,7 @@ export default defineComponent({
                             areauserid: Number(props.secondeData.relateduserid), // uint64 机构用户ID
                         };
                         requestResultLoadingAndInfo(taAccountTransfersXMoneyReq, reqParam, loading, ['账户授信成功', '账户授信失败:']).then(() => {
-                            cancel();
-                            context.emit('refresh');
+                            cancel(true);
                         });
                     } else {
                         message.error('请输入授信金额');

+ 11 - 19
src/views/information/account_info/compoments/detail-futures/index.vue

@@ -1,30 +1,22 @@
 <template>
-  <!-- 账号详情-->
-  <a-modal class="add-custom custom-detail"
-           title="账号详情"
-           v-model:visible="visible"
-           centered
-           @cancel="cancel"
-           width="890px">
-    <template #footer>
-      <a-button key="submit"
-                type="primary"
-                @click="cancel">关闭</a-button>
-    </template>
-    <Detail :selectedData="selectedData"
-            :userList="userList"
-            :secondeData="secondeData" />
-  </a-modal>
+    <!-- 账号详情-->
+    <a-modal class="add-custom custom-detail" title="账号详情" v-model:visible="visible" centered @cancel="cancel" width="890px">
+        <template #footer>
+            <a-button key="submit" type="primary" @click="cancel">关闭</a-button>
+        </template>
+        <Detail :selectedData="selectedData" :userList="userList" :secondeData="secondeData" />
+    </a-modal>
 </template>
 
 <script lang="ts">
 import { defineComponent, PropType, ref } from 'vue';
-import { closeModal } from '@/common/setup/modal/index';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { ErmcpLoginUserEx, ErmcpTaAccount, ErmcpTaAccountEx } from '@/services/go/ermcp/account/interface';
 import Detail from '../detail-commom-futures/index.vue';
 
 export default defineComponent({
     name: 'trader-detail',
+    emits: ['cancel', 'update'],
     components: { Detail },
     props: {
         selectedData: {
@@ -40,8 +32,8 @@ export default defineComponent({
             default: [],
         },
     },
-    setup(props) {
-        const { visible, cancel } = closeModal('detail');
+    setup(props, context) {
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         return {
             visible,

+ 11 - 18
src/views/information/account_info/compoments/detail-managers/index.vue

@@ -1,29 +1,22 @@
 <template>
-  <!-- 账号详情-->
-  <a-modal class="add-custom custom-detail"
-           title="账号详情"
-           v-model:visible="visible"
-           centered
-           :maskClosable="false"
-           @cancel="cancel"
-           width="890px">
-    <template #footer>
-      <a-button key="submit"
-                type="primary"
-                @click="cancel">关闭</a-button>
-    </template>
-    <Detail :selectedData="selectedData" />
-  </a-modal>
+    <!-- 账号详情-->
+    <a-modal class="add-custom custom-detail" title="账号详情" v-model:visible="visible" centered :maskClosable="false" @cancel="cancel" width="890px">
+        <template #footer>
+            <a-button key="submit" type="primary" @click="cancel">关闭</a-button>
+        </template>
+        <Detail :selectedData="selectedData" />
+    </a-modal>
 </template>
 
 <script lang="ts">
 import { defineComponent, PropType } from 'vue';
-import { closeModal } from '@/common/setup/modal/index';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { ErmcpLoginUser } from '@/services/go/ermcp/account/interface';
 import Detail from '../detail-commom-manager/index.vue';
 
 export default defineComponent({
     name: 'detail-managers',
+    emits: ['cancel', 'update'],
     components: { Detail },
     props: {
         selectedData: {
@@ -31,8 +24,8 @@ export default defineComponent({
             default: {},
         },
     },
-    setup() {
-        const { visible, cancel } = closeModal('detail');
+    setup(props, context) {
+        const { visible, cancel } = _closeModal(context);
 
         return {
             visible,

+ 4 - 5
src/views/information/account_info/compoments/locked-managers/index.vue

@@ -11,7 +11,7 @@
 
 <script lang="ts">
 import { defineComponent, PropType, ref } from 'vue';
-import { closeModal } from '@/common/setup/modal/index';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { ErmcpLoginUser } from '@/services/go/ermcp/account/interface';
 import { Modal } from 'ant-design-vue';
 import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
@@ -21,7 +21,7 @@ import Detail from '../detail-commom-manager/index.vue';
 
 export default defineComponent({
     name: 'account_info_manager_btn_locked',
-    emits: ['refresh'],
+    emits: ['cancel', 'update'],
     components: { Detail },
     props: {
         selectedData: {
@@ -30,7 +30,7 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('account_info_manager_btn_locked');
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         function submit() {
             Modal.confirm({
@@ -45,8 +45,7 @@ export default defineComponent({
                         logintaaccounts: [],
                     };
                     requestResultLoadingAndInfo(loginAccountOperate, reqParam, loading, ['账户锁定成功', '账户锁定失败:']).then(() => {
-                        cancel();
-                        context.emit('refresh');
+                        cancel(true);
                     });
                 },
                 onCancel() {},

+ 23 - 43
src/views/information/account_info/compoments/managers-permission/index.vue

@@ -1,48 +1,27 @@
 <template>
-  <!-- 权限设置 -->
-  <a-modal class="commonModal"
-           title="权限设置"
-           v-model:visible="visible"
-           @cancel="cancel"
-           :loading="loading"
-           centered
-           :maskClosable="false"
-           width="890px">
-    <template #footer>
-      <a-button key="submit"
-                type="primary"
-                :loading="loading"
-                @click="cancel">完成</a-button>
-    </template>
-    <a-table :columns="columns"
-             class="dialogTable topTable hiddenFirstCol"
-             :data-source="tableList"
-             rowKey="key"
-             :expandedRowKeys="expandedRowKeys"
-             :customRow="Rowclick"
-             :pagination="false">
-      <!-- 额外的展开行 -->
-      <template #expandedRowRender="{ record }">
-        <BtnList :selectedData="record"
-                 :btnList="btnList"
-                 class="btn-list-sticky"
-                 @onClick="btnClick" />
-      </template>
-      <template #rolestatus="{ text }">
-        <span>{{ text === 1 ? '正常' : "2:停用" }}</span>
-      </template>
-    </a-table>
-    <Modify :selectedData="selectedRow"
-            @refresh="queryTable" />
-    <Delete :selectedData="selectedRow"
-            @refresh="queryTable" />
-    <Detail :selectedData="selectedRow"
-            @refresh="queryTable" />
-  </a-modal>
+    <!-- 权限设置 -->
+    <a-modal class="commonModal" title="权限设置" v-model:visible="visible" @cancel="cancel" :loading="loading" centered :maskClosable="false" width="890px">
+        <template #footer>
+            <a-button key="submit" type="primary" :loading="loading" @click="cancel">完成</a-button>
+        </template>
+        <a-table :columns="columns" class="dialogTable topTable hiddenFirstCol" :data-source="tableList" rowKey="key" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" :pagination="false">
+            <!-- 额外的展开行 -->
+            <template #expandedRowRender="{ record }">
+                <BtnList :selectedData="record" :btnList="btnList" class="btn-list-sticky" @onClick="btnClick" />
+            </template>
+            <template #rolestatus="{ text }">
+                <span>{{ text === 1 ? '正常' : '2:停用' }}</span>
+            </template>
+        </a-table>
+        <Modify :selectedData="selectedRow" @refresh="queryTable" />
+        <Delete :selectedData="selectedRow" @refresh="queryTable" />
+        <Detail :selectedData="selectedRow" @refresh="queryTable" />
+    </a-modal>
 </template>
 
 <script lang="ts">
-import { closeModal, openModal } from '@/common/setup/modal/index';
+import { openModal } from '@/common/setup/modal/index';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { ref, watchEffect } from 'vue';
 import { ErmcpRole } from '@/services/go/ermcp/account/interface';
 import { queryResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
@@ -55,15 +34,16 @@ import Detail from '../managers-permission-detail/index.vue';
 
 export default defineComponent({
     name: 'account_info_manager_btn_setting',
+    emits: ['cancel', 'update'],
     components: {
         BtnList,
         Modify,
         Delete,
         Detail,
     },
-    setup() {
+    setup(props, context) {
         // 控制关闭弹窗
-        const { visible, cancel } = closeModal('account_info_manager_btn_setting');
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         const columns = [
             { title: '角色名称', dataIndex: 'rolename', key: 'rolename', align: 'center' },

+ 5 - 12
src/views/information/account_info/compoments/modify-futures-son/index.vue

@@ -46,7 +46,7 @@
 </template>
 
 <script lang="ts">
-import { closeModal } from '@/common/setup/modal/index';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { defineComponent, ref, watchEffect, PropType } from 'vue';
 import { validateAction } from '@/common/setup/form';
 import { FormState } from '@/views/information/account_info/compoments/add-child-futures/interface';
@@ -63,7 +63,7 @@ import { isPingAnOem } from '@/common/config/projectName';
 
 export default defineComponent({
     name: 'account_info_futures_btn_child_modify',
-    emits: ['refresh'],
+    emits: ['cancel', 'update'],
     components: {},
     props: {
         selectedData: {
@@ -89,7 +89,7 @@ export default defineComponent({
     },
     setup(props, context) {
         // 控制关闭弹窗
-        const { visible, cancel } = closeModal('account_info_futures_btn_child_modify');
+        const { visible, cancel } = _closeModal(context);
 
         const loading = ref<boolean>(false);
         const { rules, formState, formRef } = handleBusinessForm();
@@ -130,8 +130,7 @@ export default defineComponent({
                 };
 
                 requestResultLoadingAndInfo(hedgeOutMainReq, reqParam, loading, ['修改期货子账户成功', '修改期货子账户失败:']).then(() => {
-                    cancel();
-                    context.emit('refresh');
+                    cancel(true);
                 });
             });
         }
@@ -148,10 +147,4 @@ export default defineComponent({
         };
     },
 });
-</script>
-
-<style lang="less">
-.add-futures-son {
-}
-</style
->;
+</script>

+ 5 - 12
src/views/information/account_info/compoments/modify-futures/index.vue

@@ -40,7 +40,7 @@
 </template>
 
 <script lang="ts">
-import { closeModal } from '@/common/setup/modal/index';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { defineComponent, ref, watchEffect, PropType } from 'vue';
 import { ErmcpFuturesCompany, ErmcpTaAccountEx } from '@/services/go/ermcp/account/interface';
 import { handleAddOrModifyFuturesForm } from '../setup';
@@ -58,7 +58,7 @@ import { isPingAnOem } from '@/common/config/projectName';
 
 export default defineComponent({
     name: 'account_info_futures_btn_modify',
-    emits: ['refresh'],
+    emits: ['cancel', 'update'],
     components: {},
     props: {
         selectedData: {
@@ -68,7 +68,7 @@ export default defineComponent({
     },
     setup(props, context) {
         // 控制关闭弹窗
-        const { visible, cancel } = closeModal('account_info_futures_btn_modify');
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         const companyList = ref<ErmcpFuturesCompany[]>([]);
         const { rules, formState, formRef, initFormData } = handleAddOrModifyFuturesForm();
@@ -108,13 +108,12 @@ export default defineComponent({
 
                 requestResultLoadingAndInfo(hedgeOutMainReq, reqParam, loading, ['修改账户成功', '修改账户失败:']).then(() => {
                     closeAction();
-                    context.emit('refresh');
                 });
             });
         }
         function closeAction() {
             Object.assign(formState, initFormData());
-            cancel();
+            cancel(true);
         }
         return {
             formState,
@@ -131,10 +130,4 @@ export default defineComponent({
         };
     },
 });
-</script>
-
-<style lang="less">
-.add-futures {
-}
-</style
->;
+</script>

+ 5 - 12
src/views/information/account_info/compoments/modify-managers/index.vue

@@ -45,7 +45,7 @@
 </template>
 
 <script lang="ts">
-import { closeModal } from '@/common/setup/modal/index';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { defineComponent, ref, PropType, watchEffect } from 'vue';
 import { handleBusinessForm } from '../setup';
 import { validateAction } from '@/common/setup/form';
@@ -61,7 +61,7 @@ import { useTaAccount } from '../../list/setup';
 
 export default defineComponent({
     name: 'account_info_manager_btn_modify',
-    emits: ['refresh'],
+    emits: ['cancel', 'update'],
     props: {
         tableList: {
             default: [],
@@ -74,7 +74,7 @@ export default defineComponent({
     },
     setup(props, context) {
         // 控制关闭弹窗
-        const { visible, cancel } = closeModal('account_info_manager_btn_modify');
+        const { visible, cancel } = _closeModal(context);
         const { rules, formState, formRef } = handleBusinessForm();
         const loading = ref<boolean>(false);
         // 期货账户
@@ -104,8 +104,7 @@ export default defineComponent({
                     }), // LoginTaaccount 期货账户(勾选交易员必填)
                 };
                 requestResultLoadingAndInfo(loginAccountOperate, reqParam, loading, ['修改成功', '修改失败:']).then(() => {
-                    cancel();
-                    context.emit('refresh');
+                    cancel(true);
                 });
             });
         }
@@ -121,10 +120,4 @@ export default defineComponent({
         };
     },
 });
-</script>
-
-<style lang="less">
-.add-managers {
-}
-</style
->;
+</script>

+ 4 - 5
src/views/information/account_info/compoments/reset-managers/index.vue

@@ -27,7 +27,7 @@
 </template>
 
 <script lang="ts">
-import { closeModal } from '@/common/setup/modal/index';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { defineComponent, ref, PropType, watchEffect } from 'vue';
 import { ErmcpLoginUser } from '@/services/go/ermcp/account/interface';
 import { ResetPasswordFormState } from '../interface';
@@ -39,7 +39,7 @@ import { handlePasswordForm } from '../setup';
 
 export default defineComponent({
     name: 'account_info_manager_btn_reset',
-    emits: ['refresh'],
+    emits: ['cancel', 'update'],
     props: {
         selectedData: {
             default: {},
@@ -48,7 +48,7 @@ export default defineComponent({
     },
     setup(props, context) {
         // 控制关闭弹窗
-        const { visible, cancel } = closeModal('account_info_manager_btn_reset');
+        const { visible, cancel } = _closeModal(context);
         const { rules, formState, formRef } = handlePasswordForm();
         const loading = ref<boolean>(false);
         watchEffect(() => {
@@ -67,8 +67,7 @@ export default defineComponent({
                     password: res.password,
                 };
                 requestResultLoadingAndInfo(loginAccountOperate, reqParam, loading, ['重置登录账户密码成功', '重置登录账户密码失败:']).then(() => {
-                    cancel();
-                    context.emit('refresh');
+                    cancel(true);
                 });
             });
         }

+ 4 - 5
src/views/information/account_info/compoments/unlocked-managers/index.vue

@@ -11,7 +11,7 @@
 
 <script lang="ts">
 import { defineComponent, PropType, ref } from 'vue';
-import { closeModal } from '@/common/setup/modal/index';
+import { _closeModal } from '@/common/setup/modal/modal';
 import { ErmcpLoginUser } from '@/services/go/ermcp/account/interface';
 import { Modal } from 'ant-design-vue';
 import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
@@ -21,7 +21,7 @@ import Detail from '../detail-commom-manager/index.vue';
 
 export default defineComponent({
     name: 'account_info_manager_btn_unlocked',
-    emits: ['refresh'],
+    emits: ['cancel', 'update'],
     components: { Detail },
     props: {
         selectedData: {
@@ -30,7 +30,7 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('account_info_manager_btn_unlocked');
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         function submit() {
             Modal.confirm({
@@ -45,8 +45,7 @@ export default defineComponent({
                         logintaaccounts: [],
                     };
                     requestResultLoadingAndInfo(loginAccountOperate, reqParam, loading, ['账户解锁成功', '账户解锁失败:']).then(() => {
-                        cancel();
-                        context.emit('refresh');
+                        cancel(true);
                     });
                 },
                 onCancel() {},

+ 36 - 25
src/views/information/account_info/list/account_info_futures/index.vue

@@ -10,7 +10,7 @@
                 </svg>
                 {{ getUserName() }}
             </span>
-            <BtnList :btnList="firstBtn" />
+            <mtp-table-button :buttons="firstBtn" @click="openComponent" />
         </div>
         <div class="a-collapse-container">
             <a-collapse class="spotCollapse" v-for="(item, i) in tableList" :key="i + '11'" :bordered="false">
@@ -27,7 +27,8 @@
                         <a-row class="headRow">
                             <a-col :span="12"> {{ item.mainAcc.accountname }} {{ '-' + item.mainAcc.hedgeaccountcode }} ({{ item.subacclist.length }}){{ item.mainAcc.fcname }} </a-col>
                             <a-col :span="12">
-                                <BtnList :btnList="secondBtn" @onClick="secondeClick(item)" />
+                                <!-- <BtnList :btnList="secondBtn" @onClick="secondeClick(item)" /> -->
+                                <mtp-table-button :buttons="secondBtn" :record="item" @click="openComponent" />
                             </a-col>
                         </a-row>
                     </template>
@@ -39,56 +40,57 @@
                                     <a-col :span="12">{{ getTaAccountStatus(sub.tradestatus) }}</a-col>
                                 </a-row>
                             </template>
-                            <BtnList :btnList="getBtnList(sub.tradestatus)" @onClick="thirdClick(item, sub)" />
+                            <!-- <BtnList :btnList="getBtnList(sub.tradestatus)" @onClick="thirdClick(item, sub)" /> -->
+                            <mtp-table-button :buttons="thirdBtn" :record="sub" @click="openComponent" />
                         </a-collapse-panel>
                     </a-collapse>
                 </a-collapse-panel>
             </a-collapse>
         </div>
-        <Add @refresh="queryTable" />
+        <!-- <Add @refresh="queryTable" />
         <AddChild :selectedData="firstData" :userList="userList" :marginList="marginList" :feeList="feeList" @updateTrader="queryUserList" @refresh="queryTable" />
         <Modify :selectedData="firstData" @refresh="queryTable" />
         <ModifyChild @refresh="queryTable" :userList="userList" :marginList="marginList" :feeList="feeList" :secondeData="secondeData" :selectedData="firstData" />
         <Detail :selectedData="firstData" :secondeData="secondeData" :userList="userList" :marginList="marginList" :feeList="feeList" />
         <Cancel @refresh="queryTable" :userList="userList" :marginList="marginList" :feeList="feeList" :secondeData="secondeData" :selectedData="firstData" />
-        <Credit @refresh="queryTable" :selectedData="firstData" :secondeData="secondeData" />
+        <Credit @refresh="queryTable" :selectedData="firstData" :secondeData="secondeData" /> -->
+        <component :is="componentId" v-if="componentId" :selectedData="firstData" :secondeData="secondeData" :userList="userList" :marginList="marginList" :feeList="feeList" @update="queryUserList" @cancel="closeComponent"></component>
     </div>
 </template>
 
 <script lang="ts">
-import { defineComponent, initData, _getBtnList, contextMenu, BtnList } from '@/common/export/table';
+import { defineAsyncComponent, defineComponent, MtpTableButton } from '@/common/export/commonTable';
+import { initData } from '@/common/methods';
 import filterCustomTable from '@/views/information/goods/components/filterTable/index.vue';
-import { getAccountStatus, getTaAccountStatus, handleModalData } from '../setup';
+import { getTaAccountStatus } from '../setup';
 import { handleTradeTemplate, queryTableList } from './setup';
 import { getUserName } from '@/services/bus/user';
-import Add from '../../compoments/add-futures/index.vue';
-import AddChild from '../../compoments/add-child-futures/index.vue';
-import Modify from '../../compoments/modify-futures/index.vue';
-import ModifyChild from '../../compoments/modify-futures-son/index.vue';
-import Detail from '../../compoments/detail-futures/index.vue';
-import Cancel from '../../compoments/cancel-futures/index.vue';
-import Credit from '../../compoments/credit-futures/index.vue';
 import { ErmcpTaAccountEx } from '@/services/go/ermcp/account/interface';
-import { ref } from 'vue';
+import { ref, Ref } from 'vue';
 import { handlerManagerList } from '@/common/setup/user';
+import { handleModalComponent } from '@/common/setup/asyncComponent';
+import { getTableButton } from '@/common/setup/table/button';
 
 export default defineComponent({
     name: 'account_info_futures',
     components: {
-        contextMenu,
-        BtnList,
+        MtpTableButton,
         filterCustomTable,
-        Add,
-        AddChild,
-        Modify,
-        ModifyChild,
-        Detail,
-        Cancel,
-        Credit,
+        detail: defineAsyncComponent(() => import('../../compoments/detail-futures/index.vue')), // 详情
+        account_futures_add: defineAsyncComponent(() => import('../../compoments/add-futures/index.vue')), // 新增账户
+        account_futures_child_add: defineAsyncComponent(() => import('../../compoments/add-child-futures/index.vue')), // 新增子账户
+        account_futures_modify: defineAsyncComponent(() => import('../../compoments/modify-futures/index.vue')), // 修改账户
+        account_futures_child_modify: defineAsyncComponent(() => import('../../compoments/modify-futures-son/index.vue')), // 修改子账号
+        account_futures_child_cancel: defineAsyncComponent(() => import('../../compoments/cancel-futures/index.vue')), // 注销
+        account_futures_child_credit: defineAsyncComponent(() => import('../../compoments/credit-futures/index.vue')), // 授信
     },
     setup() {
         const { loading, tableList, queryTable } = queryTableList();
-        const [firstBtn, secondBtn, thirdBtn] = _getBtnList('account_info_futures', true).value;
+
+        const firstBtn = getTableButton(['account_futures_setting', 'account_futures_add']);
+        const secondBtn = getTableButton(['account_futures_modify', 'account_futures_child_add']);
+        const thirdBtn = getTableButton(['account_futures_child_modify', 'account_futures_child_credit', 'account_futures_child_cancel', 'detail']);
+
         // 交易用户
         const { tableList: userList, queryTable: queryUserList } = handlerManagerList(loading, 2);
         // 交易模板
@@ -117,6 +119,12 @@ export default defineComponent({
                 });
             }
         }
+
+        // 弹窗选中的数据
+        const selectedData = ref<ErmcpTaAccountEx>();
+        // 控制异步组件
+        const { componentId, closeComponent, openComponent } = handleModalComponent<ErmcpTaAccountEx>(() => {}, selectedData as Ref<ErmcpTaAccountEx>);
+
         // 查询
         function search(value: any) {}
 
@@ -139,6 +147,9 @@ export default defineComponent({
             marginList,
             feeList,
             queryUserList,
+            componentId,
+            closeComponent,
+            openComponent,
         };
     },
 });

+ 38 - 29
src/views/information/account_info/list/account_info_manager/index.vue

@@ -10,7 +10,7 @@
                 </svg>
                 {{ getUserName() }}
             </span>
-            <BtnList :btnList="firstBtn" />
+            <mtp-table-button :buttons="firstBtn" @click="openComponent" />
         </div>
         <div class="a-collapse-container">
             <a-collapse class="spotCollapse" v-for="(item, i) in tableList" :key="i + '11'" :bordered="false">
@@ -27,7 +27,8 @@
                         <a-row class="headRow">
                             <a-col :span="12">{{ item.rolename }}({{ item.userlist.length }})</a-col>
                             <a-col :span="12">
-                                <BtnList :selectedData="item" :btnList="secondBtn" @onClick="openAction" />
+                                <!-- <BtnList :selectedData="item" :btnList="secondBtn" @onClick="openAction" /> -->
+                                <mtp-table-button :buttons="secondBtn" :record="item" @click="openComponent" />
                             </a-col>
                         </a-row>
                     </template>
@@ -39,13 +40,14 @@
                                     <a-col :span="12">{{ getLoginStatusEnumItemName(sub.loginstatus) }}</a-col>
                                 </a-row>
                             </template>
-                            <BtnList :btnList="sub.btnList" :selectedData="sub" @onClick="moreOptenAction" />
+                            <!-- <BtnList :btnList="sub.btnList" :selectedData="sub" @onClick="moreOptenAction" /> -->
+                            <mtp-table-button :buttons="thirdBtn" :record="sub" @click="openComponent" />
                         </a-collapse-panel>
                     </a-collapse>
                 </a-collapse-panel>
             </a-collapse>
         </div>
-        <Add @refresh="handleBtnAction" :selectedData="addModelData" :tableList="tableList" />
+        <!-- <Add @refresh="handleBtnAction" :selectedData="addModelData" :tableList="tableList" />
         <Modify :tableList="tableList" @refresh="handleBtnAction" :selectedData="moreModelData" />
         <Cancel @refresh="handleBtnAction" :selectedData="moreModelData" />
         <Locked @refresh="handleBtnAction" :selectedData="moreModelData" />
@@ -53,59 +55,63 @@
         <Reset @refresh="handleBtnAction" :selectedData="moreModelData" />
         <Detail :selectedData="moreModelData" />
         <AddPermission @refresh="handleBtnAction" />
-        <Permission />
+        <Permission /> -->
+        <component :is="componentId" v-if="componentId" :tableList="tableList" :selectedData="selectedData" @cancel="closeComponent"></component>
     </div>
 </template>
 
 <script lang="ts">
-import { defineComponent, initData, contextMenu, BtnList, _getBtnList } from '@/common/export/table';
+import { defineAsyncComponent, defineComponent, MtpTableButton } from '@/common/export/commonTable';
+import { initData } from '@/common/methods';
 import filterCustomTable from '@/views/information/goods/components/filterTable/index.vue';
 import { getLoginStatusEnumItemName } from '@/common/constants/enumsName';
 import { getAccountStatus, handleModalData, handleTableList, useTaAccount } from '../setup';
 import { getUserName } from '@/services/bus/user';
-import Add from '../../compoments/add-managers/index.vue';
-import Modify from '../../compoments/modify-managers/index.vue';
-import Detail from '../../compoments/detail-managers/index.vue';
-import Cancel from '../../compoments/cancel-managers/index.vue';
-import Locked from '../../compoments/locked-managers/index.vue';
-import Unlocked from '../../compoments/unlocked-managers/index.vue';
-import Reset from '../../compoments/reset-managers/index.vue';
-import AddPermission from '../../compoments/add-managers-permission/index.vue';
-import Permission from '../../compoments/managers-permission/index.vue';
 import { ErmcpLoginUser, ErmcpLoginUserEx } from '@/services/go/ermcp/account/interface';
-import { openModal } from '@/common/setup/modal';
 import { handlerManagerList } from '@/common/setup/user';
-import { ref } from 'vue';
+import { ref, Ref } from 'vue';
+import { handleModalComponent } from '@/common/setup/asyncComponent';
+import { getTableButton } from '@/common/setup/table/button';
 
 export default defineComponent({
     name: 'account_info_manager',
     components: {
-        contextMenu,
-        BtnList,
+        MtpTableButton,
         filterCustomTable,
-        Add,
-        Modify,
-        Detail,
-        Cancel,
-        Locked,
-        Unlocked,
-        Reset,
-        AddPermission,
-        Permission,
+        detail: defineAsyncComponent(() => import('../../compoments/detail-managers/index.vue')), // 详情
+        account_manager_add: defineAsyncComponent(() => import('../../compoments/add-managers/index.vue')), // 新增权限模板
+        account_manager_setting: defineAsyncComponent(() => import('../../compoments/managers-permission/index.vue')), // 权限设置
+        account_manager_child_add: defineAsyncComponent(() => import('../../compoments/add-managers-permission/index.vue')), // 新增角色
+        account_manager_child_modify: defineAsyncComponent(() => import('../../compoments/modify-managers/index.vue')), // 修改
+        account_trade_child_cancel: defineAsyncComponent(() => import('../../compoments/cancel-managers/index.vue')), // 注销
+        account_manager_child_locked: defineAsyncComponent(() => import('../../compoments/locked-managers/index.vue')), // 锁定
+        account_manager_child_unlocked: defineAsyncComponent(() => import('../../compoments/unlocked-managers/index.vue')), // 解锁
+        account_manager_child_reset: defineAsyncComponent(() => import('../../compoments/reset-managers/index.vue')), // 重置
     },
     setup() {
         // 加载状态
         const loading = ref<boolean>(false);
         const { tableList, queryTable } = handlerManagerList(loading, 3);
-        const [firstBtn, secondBtn, thirdBtn] = _getBtnList('account_info_manager', true).value;
+
+        const firstBtn = getTableButton(['account_manager_add', 'account_manager_setting']);
+        const secondBtn = getTableButton(['account_manager_child_add']);
+        const thirdBtn = getTableButton(['account_manager_child_modify', 'account_manager_child_reset', 'account_manager_child_locked', 'account_manager_child_unlocked', 'account_trade_child_cancel', 'detail']);
+
         // 新增弹窗
         const { selectedData: addModelData, openAction } = handleModalData<ErmcpLoginUserEx>();
         // 修改 重置密码、详情等弹窗
         const { selectedData: moreModelData, openAction: moreOptenAction } = handleModalData<ErmcpLoginUser>();
+
         // 处理根据状态显示对应按钮
         function handleBtnAction() {
             handleTableList(queryTable, tableList, thirdBtn);
         }
+
+        // 弹窗选中的数据
+        const selectedData = ref<ErmcpLoginUser>();
+        // 控制异步组件
+        const { componentId, closeComponent, openComponent } = handleModalComponent<ErmcpLoginUser>(handleBtnAction, selectedData as Ref<ErmcpLoginUser>);
+
         // 期货账户
         const { updateTaAccount } = useTaAccount();
         initData(() => {
@@ -131,6 +137,9 @@ export default defineComponent({
             moreModelData,
             moreOptenAction,
             handleBtnAction,
+            componentId,
+            closeComponent,
+            openComponent,
         };
     },
 });

+ 54 - 79
src/views/information/account_info/list/account_info_trade/index.vue

@@ -1,80 +1,56 @@
 <template>
-  <div style="background: red; color: #fff; padding: 5px 0">待修改</div>
-  <!-- 交易账户 -->
-  <div class="account_info_trade account_info_container"
-       :loading="loading">
-    <filterCustomTable @search="search"></filterCustomTable>
-    <div class="tltLeft">
-      <span class="blue">
-        <svg class="icon svg-icon"
-             aria-hidden="true">
-          <use xlink:href="#icon-shuzhuangtu"></use>
-        </svg>
-        {{ getUserName() }}
-      </span>
-      <mtp-table-button :buttons="firstBtn"
-                        @click="openComponent" />∏
+    <!-- 交易账户 -->
+    <div class="account_info_trade account_info_container" :loading="loading">
+        <filterCustomTable @search="search"></filterCustomTable>
+        <div class="tltLeft">
+            <span class="blue">
+                <svg class="icon svg-icon" aria-hidden="true">
+                    <use xlink:href="#icon-shuzhuangtu"></use>
+                </svg>
+                {{ getUserName() }}
+            </span>
+            <mtp-table-button :buttons="firstBtn" @click="openComponent" />
+        </div>
+        <div class="a-collapse-container">
+            <a-collapse class="spotCollapse" v-for="(item, i) in tableList" :key="i + '11'" :bordered="false">
+                <template #expandIcon="props">
+                    <svg class="icon svg-icon" aria-hidden="true" v-if="props.isActive == 0">
+                        <use xlink:href="#icon-shouqi1"></use>
+                    </svg>
+                    <svg class="icon svg-icon" aria-hidden="true" v-else>
+                        <use xlink:href="#icon-shouqi2"></use>
+                    </svg>
+                </template>
+                <a-collapse-panel>
+                    <template #header>
+                        <a-row class="headRow">
+                            <a-col :span="12"> {{ item.rolename }}({{ item.userlist.length }}) </a-col>
+                            <a-col :span="12">
+                                <mtp-table-button :buttons="secondBtn" :record="item" @click="openComponent" />
+                            </a-col>
+                        </a-row>
+                    </template>
+                    <a-collapse class="busyCollapse" v-for="(sub, i) in item.userlist" :key="i + '11'" :bordered="false">
+                        <a-collapse-panel :show-arrow="false">
+                            <template #header>
+                                <a-row class="contRow">
+                                    <a-col :span="12">{{ sub.loginname }}-{{ sub.logincode }}</a-col>
+                                    <a-col :span="12">{{ getRoleTypeName(sub.loginstatus) }}</a-col>
+                                </a-row>
+                            </template>
+                            <mtp-table-button :buttons="thirdBtn" :record="sub" @click="openSecondBtnAction" />
+                        </a-collapse-panel>
+                    </a-collapse>
+                </a-collapse-panel>
+            </a-collapse>
+        </div>
+        <component :is="componentId" v-if="componentId" :accountList="accountList" :tableList="tableList" :firstBtnData="firstSelectedData" :selectedData="selectedData" @cancel="closeComponent"></component>
     </div>
-    <div class="a-collapse-container">
-      <a-collapse class="spotCollapse"
-                  v-for="(item, i) in tableList"
-                  :key="i + '11'"
-                  :bordered="false">
-        <template #expandIcon="props">
-          <svg class="icon svg-icon"
-               aria-hidden="true"
-               v-if="props.isActive == 0">
-            <use xlink:href="#icon-shouqi1"></use>
-          </svg>
-          <svg class="icon svg-icon"
-               aria-hidden="true"
-               v-else>
-            <use xlink:href="#icon-shouqi2"></use>
-          </svg>
-        </template>
-        <a-collapse-panel>
-          <template #header>
-            <a-row class="headRow">
-              <a-col :span="12"> {{ item.rolename }}({{ item.userlist.length }}) </a-col>
-              <a-col :span="12">
-                <mtp-table-button :buttons="secondBtn"
-                                  :record="item"
-                                  @click="openComponent" />
-              </a-col>
-            </a-row>
-          </template>
-          <a-collapse class="busyCollapse"
-                      v-for="(sub, i) in item.userlist"
-                      :key="i + '11'"
-                      :bordered="false">
-            <a-collapse-panel :show-arrow="false">
-              <template #header>
-                <a-row class="contRow">
-                  <a-col :span="12">{{ sub.loginname }}-{{ sub.logincode }}</a-col>
-                  <a-col :span="12">{{ getRoleTypeName(sub.loginstatus) }}</a-col>
-                </a-row>
-              </template>
-              <mtp-table-button :buttons="thirdBtn"
-                                :record="sub"
-                                @click="openSecondBtnAction" />
-            </a-collapse-panel>
-          </a-collapse>
-        </a-collapse-panel>
-      </a-collapse>
-    </div>
-    <component :is="componentId"
-               v-if="componentId"
-               :accountList="accountList"
-               :tableList="tableList"
-               :firstBtnData="firstSelectedData"
-               :selectedData="selectedData"
-               @cancel="closeComponent"></component>
-  </div>
 </template>
 
 <script lang="ts">
-import { initData, _getBtnList } from '@/common/export/table';
-import { contextMenu, defineAsyncComponent, defineComponent, MtpTableButton } from '@/common/export/commonTable';
+import { initData } from '@/common/methods';
+import { defineAsyncComponent, defineComponent, MtpTableButton } from '@/common/export/commonTable';
 import filterCustomTable from '@/views/information/goods/components/filterTable/index.vue';
 import { getRoleTypeName } from '../setup';
 import { getUserName } from '@/services/bus/user';
@@ -91,17 +67,16 @@ import { Ref, ref } from 'vue';
 export default defineComponent({
     name: 'account_info_trade',
     components: {
-        contextMenu,
         MtpTableButton,
         filterCustomTable,
+        detail: defineAsyncComponent(() => import('../../compoments/detail-trader/index.vue')),
         account_trade_modify: defineAsyncComponent(() => import('../../compoments/modify-traders/index.vue')),
         account_trade_add: defineAsyncComponent(() => import('../../compoments/add-traders/index.vue')),
-        add_child: defineAsyncComponent(() => import('../../compoments/add-child-traders/index.vue')),
+        account_trade_child_add: defineAsyncComponent(() => import('../../compoments/add-child-traders/index.vue')),
         account_trade_child_locked: defineAsyncComponent(() => import('../../compoments/locked-trader/index.vue')),
-        unlocked: defineAsyncComponent(() => import('../../compoments/unlocked-trader/index.vue')),
-        account_trade_child_logout: defineAsyncComponent(() => import('../../compoments/cancel-trader/index.vue')),
+        account_trade_child_unlocked: defineAsyncComponent(() => import('../../compoments/unlocked-trader/index.vue')),
+        account_trade_child_cancel: defineAsyncComponent(() => import('../../compoments/cancel-trader/index.vue')),
         account_trade_child_reset: defineAsyncComponent(() => import('../../compoments/reset-trader/index.vue')),
-        detail: defineAsyncComponent(() => import('../../compoments/detail-trader/index.vue')),
         account_trade_child_modify: defineAsyncComponent(() => import('../../compoments/modify-child-traders/index.vue')),
     },
     setup() {
@@ -110,8 +85,8 @@ export default defineComponent({
         const { tableList, queryTable } = handlerManagerList(loading, 2);
 
         const firstBtn = getTableButton(['account_trade_add']);
-        const secondBtn = getTableButton(['account_trade_modify', 'add_child']);
-        const thirdBtn = getTableButton(['account_trade_add', 'account_trade_modify', 'add_child'], true);
+        const secondBtn = getTableButton(['account_trade_modify', 'account_trade_child_add']);
+        const thirdBtn = getTableButton(['account_trade_add', 'account_trade_modify', 'account_trade_child_add'], true);
 
         // 处理根据状态显示对应按钮
         function handleBtnAction() {