li.shaoyi 4 年之前
父節點
當前提交
1215a7a2f2

+ 87 - 0
src/common/components/tableButton/index.vue

@@ -0,0 +1,87 @@
+<template>
+    <div class="btn-list">
+        <a-button :class="item.className" v-for="item in buttons" :key="item.code" @click.stop="onClick(item)">
+            {{ item.lable }}
+        </a-button>
+    </div>
+</template>
+
+<script lang="ts">
+import { defineComponent, PropType } from 'vue';
+import { useRoute } from 'vue-router';
+import { OperationTabMenuAuth } from '@/services/go/commonService/interface';
+import { BtnClassName, BtnListType } from './interface';
+
+/**
+ * 获取class 名
+ * @param val
+ * @returns
+ */
+const getClassName = (val: string): BtnClassName => {
+    let result: BtnClassName = 'btnDeafault';
+    const btnDanger = ['disable', 'cancle', 'cancel', 'delete', 'logout', 'locked', 'refuse'];
+    const operBtn = ['add', 'modify', 'reset', 'credit', 'payment', 'confirm_withdrawal', 'complete_stocking', 'upload_logistics', 'buy', 'listed', 'delisting', 'receipt', 'confirm_pickup'];
+    const map = new Map<BtnClassName, string[]>([
+        ['btnDanger', btnDanger],
+        ['operBtn', operBtn],
+    ]);
+    for (const [key, value] of map) {
+        for (const item of value) {
+            if (val.includes(item)) {
+                result = key;
+                break;
+            }
+        }
+    }
+    return result;
+};
+
+export default defineComponent({
+    name: 'mtpTableButton',
+    emits: ['click'],
+    props: {
+        code: {
+            type: Array as PropType<string[]>,
+            required: true,
+        },
+        record: {
+            default: {},
+            type: Object,
+        },
+    },
+    setup(props, context) {
+        const route = useRoute();
+        const auth = route.meta.auth as OperationTabMenuAuth[];
+
+        // 根据code权限获取按钮列表
+        const buttons = props.code.reduce((prev, cur) => {
+            if (cur === 'detail') {
+                prev.push({
+                    lable: '详情',
+                    code: 'detail',
+                    className: getClassName(''),
+                });
+            } else {
+                const item = auth.find((val) => val.code === cur);
+                if (item) {
+                    prev.push({
+                        lable: item.label,
+                        code: item.code,
+                        className: getClassName(item.code),
+                    });
+                }
+            }
+            return prev;
+        }, [] as BtnListType[]);
+
+        const onClick = (item: BtnListType) => {
+            context.emit('click', item, props.record);
+        };
+
+        return {
+            buttons,
+            onClick,
+        };
+    },
+});
+</script>

+ 7 - 0
src/common/components/tableButton/interface.ts

@@ -0,0 +1,7 @@
+export type BtnClassName = 'btnDeafault' | 'btnPrimary' | 'btnDanger' | 'operBtn'
+export interface BtnListType {
+    lable: string;  // 按钮名字
+    code: string;   //
+    callback?: Function;
+    className: BtnClassName    // 按钮 class 名字
+}

+ 2 - 1
src/common/export/commonTable.ts

@@ -1,11 +1,12 @@
 import BtnList from '@/common/components/btnList/index.vue';
+import MtpTableButton from '@/common/components/tableButton/index.vue';
 import contextMenu from '@/common/components/contextMenu/temp.vue';
 import { ModalEnum } from '@/common/constants/modalNameEnum';
 import { ComposeTableParam, handleComposeTable } from '@/common/setup/table/compose';
 import { queryTableList } from '@/common/setup/table/index';
 import { defineAsyncComponent, defineComponent } from 'vue';
 
-export { queryTableList, BtnList, contextMenu, defineAsyncComponent, defineComponent, ModalEnum, handleComposeTable };
+export { queryTableList, BtnList, MtpTableButton, contextMenu, defineAsyncComponent, defineComponent, ModalEnum, handleComposeTable };
 export type { ComposeTableParam };
 
 

+ 2 - 1
src/common/export/table.ts

@@ -1,6 +1,7 @@
 // 通用表格需要的导入的数据
 
 import BtnList from '@/common/components/buttonList/index.vue';
+import MtpTableButton from '@/common/components/tableButton/index.vue';
 import contextMenu from '@/common/components/contextMenu/index.vue';
 import { initData } from '@/common/methods';
 import { getBtnList, getTableColumns, getTableEvent, queryTableList, _getBtnList } from '@/common/setup/table/index';
@@ -9,6 +10,6 @@ import { defineComponent } from 'vue';
 export {
     defineComponent, initData,
     getTableColumns, getTableEvent, getBtnList, _getBtnList, queryTableList,
-    contextMenu, BtnList,
+    contextMenu, BtnList, MtpTableButton
 };
 

+ 1 - 1
src/common/setup/order/orderData.ts

@@ -16,7 +16,7 @@ export function handleOrderData() {
     const componentId = ref<enumOrderComponents>()
     initData(() => {
         const menuList = APP.getRef('menus');
-        const findResult = menuList.value.find((e: OperationTabMenu) => e.code === 'bottom' && e.type === 4);
+        const findResult = menuList.value.find((e: OperationTabMenu) => e.code === 'bottom');
         if (findResult) {
             isBottom.value = true
             const list = findResult.children;

+ 57 - 47
src/common/setup/table/button.ts

@@ -1,3 +1,7 @@
+/*!
+ * 待确认是否废弃------------------------------------------------------
+ */
+
 import { BtnClassName, BtnListType } from '@/common/components/btnList/interface';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
 import { ModalName } from '@/common/constants/modalName';
@@ -47,18 +51,19 @@ export function handleBtnList(list: OperationTabMenu | undefined, menuType: keyo
     const commonBtn = ref<BtnListType[]>([]); // 通用按钮列表,不用选中数据才显示
     const forDataBtn = ref<BtnListType[]>([]); // 针对数据按钮列表,选中某条数据才显示
     if (list && list.children) {
-        list.children.forEach(e => {
-            const { code, type, title, isshow } = e;
-            if (type === 2 && isshow) { // 按钮类型
-                const { openAction } = openModal(code as keyof ModalName);
-                const item = { lable: title, callback: openAction, className: getClassName(code), code: code }
-                if (commonName.includes(title)) { //
-                    commonBtn.value.push(item)
-                } else {
-                    forDataBtn.value.push(item)
-                }
-            }
-        })
+        // list.children.forEach(e => {
+        //     const { code, type, title, isshow } = e;
+        //     if (type === 2 && isshow) { // 按钮类型
+        //         const { openAction } = openModal(code as keyof ModalName);
+        //         const item = { lable: title, callback: openAction, className: getClassName(code), code: code }
+        //         if (commonName.includes(title)) { //
+        //             commonBtn.value.push(item)
+        //         } else {
+        //             forDataBtn.value.push(item)
+        //         }
+        //     }
+        // })
+        debugger
     } else {
         console.warn(`menuType: ${menuType}未找到`)
     }
@@ -76,17 +81,18 @@ export function _handleBtnList_(list: OperationTabMenu | undefined, hasDetail: b
     const temp: [number, OperationTabMenu[] | undefined] = [0, list?.children]
     while (temp[1] && temp[1].length) {
         temp[1].forEach((e) => {
-            const { code, type, title, isshow } = e;
-            const index = temp[0]
-            if (!Array.isArray(result.value[index])) {
-                result.value[index] = []
-            }
-            if (type === 2 && isshow && code !== 'none_btn') {
-                // 按钮类型 并且显示
-                // 当code为 none_btn, 是空按钮,(返回按钮确保数据结构统一)
-                const item = { lable: title, code, className: getClassName(code) }
-                result.value[index].push(item)
-            }
+            // const { code, type, title, isshow } = e;
+            // const index = temp[0]
+            // if (!Array.isArray(result.value[index])) {
+            //     result.value[index] = []
+            // }
+            // if (type === 2 && isshow && code !== 'none_btn') {
+            //     // 按钮类型 并且显示
+            //     // 当code为 none_btn, 是空按钮,(返回按钮确保数据结构统一)
+            //     const item = { lable: title, code, className: getClassName(code) }
+            //     result.value[index].push(item)
+            // }
+            debugger
         })
         const children = temp[1][0].children
         if (children && children.length) {
@@ -121,16 +127,17 @@ export function _handleBtnList(list: OperationTabMenu | undefined, hasDetail: bo
     const temp: [number, OperationTabMenu[] | undefined] = [0, list?.children]
     while (temp[1] && temp[1].length) {
         temp[1].forEach((e) => {
-            const { code, type, title, isshow } = e;
-            const index = temp[0]
-            if (!Array.isArray(result.value[index])) {
-                result.value[index] = []
-            }
-            if (type === 2 && isshow) { // 按钮类型 并且显示
-                const { openAction } = openModal(code as keyof ModalName);
-                const item = { lable: title, callback: openAction, className: getClassName(code), code: code }
-                result.value[index].push(item)
-            }
+            // const { code, type, title, isshow } = e;
+            // const index = temp[0]
+            // if (!Array.isArray(result.value[index])) {
+            //     result.value[index] = []
+            // }
+            // if (type === 2 && isshow) { // 按钮类型 并且显示
+            //     const { openAction } = openModal(code as keyof ModalName);
+            //     const item = { lable: title, callback: openAction, className: getClassName(code), code: code }
+            //     result.value[index].push(item)
+            // }
+            debugger
         })
         const children = temp[1][0].children
         if (children && children.length) {
@@ -160,11 +167,12 @@ export function _handleBtnList(list: OperationTabMenu | undefined, hasDetail: bo
 export function getOrderBtnList(list: OperationTabMenu[], hasDetail = false) {
     const result = ref<BtnListType[]>([])
     list.forEach(el => {
-        const { code, type, title, isshow } = el;
-        if (type === 2 && isshow) {
-            const item = { lable: title, code, className: getClassName(code) }
-            result.value.push(item)
-        }
+        // const { code, type, title, isshow } = el;
+        // if (type === 2 && isshow) {
+        //     const item = { lable: title, code, className: getClassName(code) }
+        //     result.value.push(item)
+        // }
+        debugger
     });
     // 详情
     if (hasDetail) {
@@ -214,13 +222,14 @@ export function findChildList(menuType: EnumRouterName): OperationTabMenu | unde
         }
         return null
     }
-    findFn(data)
+    //findFn(data)
     return list
 }
 // 处理有三级路由的特殊情况,例如仓单贸易
 export function getBtnList_(menuType: EnumRouterName, hasDetail: boolean) {
     const list = findChildList(menuType)
-    return _handleBtnList_(list, hasDetail)
+    const res = _handleBtnList_(list, hasDetail);
+    return res;
 }
 
 /****************************** ======================================= *************************/
@@ -232,13 +241,14 @@ export function getButtonList(menuType: EnumRouterName, hasDetail: boolean) {
     const result = [] // 操作按钮列表
     if (list && list.children) {
         list.children.forEach(el => {
-            const { code, type, title, isshow } = el;
-            if (isshow) {
-                if (type === 2) {
-                    const item = { lable: title, className: getClassName(code), code: code }
-                    result.push(item)
-                }
-            }
+            // const { code, type, title, isshow } = el;
+            // if (isshow) {
+            //     if (type === 2) {
+            //         const item = { lable: title, className: getClassName(code), code: code }
+            //         result.push(item)
+            //     }
+            // }
+            debugger
         })
     }
     // 详情

+ 5 - 4
src/common/setup/table/compose.ts

@@ -94,10 +94,11 @@ export function handleComposeTable_detail<T>({ queryFn, tableName, tableFilterKe
     const list = data.find((e) => e.code === menuType);
     const tabList = ref<TabList[]>([])
     list?.children.forEach(el => {
-        const { code, title, type } = el
-        if (type === 3) {
-            tabList.value.push({ lable: title, code })
-        }
+        // const { code, title, type } = el
+        // if (type === 3) {
+        //     tabList.value.push({ lable: title, code })
+        // }
+        debugger
     })
 
     initData(() => {

+ 2 - 9
src/layout/components/menu.vue

@@ -1,12 +1,5 @@
 <template>
-    <a-menu
-        theme="dark"
-        mode="inline"
-        :class="['left-menu', isBottom ? 'left-menu_bottom' : 'left-menu_no_bottom']"
-        v-model:selectedKeys="selectedKeys"
-        v-model:openKeys="openKeys"
-        @click="menuClick"
-    >
+    <a-menu theme="dark" mode="inline" :class="['left-menu', isBottom ? 'left-menu_bottom' : 'left-menu_no_bottom']" v-model:selectedKeys="selectedKeys" v-model:openKeys="openKeys" @click="menuClick">
         <a-sub-menu v-for="item in filterMenu()" :key="item.code">
             <template #title>
                 <span>
@@ -92,7 +85,7 @@ export default defineComponent({
                 openKeys.value = preOpenKeys.value;
             }
         });
-        const filterMenu = () => menuList.value.filter((e: OperationTabMenu) => e.type === 1);
+        const filterMenu = () => menuList.value.filter((e: OperationTabMenu) => e.path);
         const route = useRoute();
         initData(() => {
             // 处理路由跳转到菜单栏里第一个对应的页面

+ 3 - 23
src/router/dynamic.ts

@@ -1,27 +1,7 @@
 import { RouteRecordRaw } from 'vue-router'
 import router from '@/router'
 import { OperationTabMenu } from '@/services/go/commonService/interface';
-import APP from '@/services';
-
-interface OperationMenu {
-    title: string,
-    code: string,
-    path: string,
-    component: string,
-    sort: number,
-    requireAuth: boolean,
-    isshow: boolean,
-    url?: string,
-    remark?: string,
-    children?: OperationMenu[],
-    auth?: {
-        label: string,
-        code: string,
-        requireAuth: boolean,
-        isshow: boolean,
-        remark?: string,
-    }[]
-}
+import { localStorageUtil } from '@/utils/storage';
 
 /**
  * 添加404页面
@@ -37,7 +17,7 @@ const addNotFound = () => {
 /**
  * 动态添加路由
  */
-const addRoutes = (routes: OperationMenu[], parentName = ""): void => {
+const addRoutes = (routes: OperationTabMenu[], parentName = ''): void => {
     routes.forEach((item) => {
         if (item.path && item.isshow && !item.url) {
             let component;
@@ -78,7 +58,7 @@ const addRoutes = (routes: OperationMenu[], parentName = ""): void => {
  * 注册路由
  */
 export const registerRoutes = (): Promise<boolean> => {
-    const routerMap: OperationMenu[] = APP.get('menus');
+    const routerMap: OperationTabMenu[] = localStorageUtil.getItem('menus');
     return new Promise((resolve, reject) => {
         addNotFound();
         if (routerMap.length) {

+ 1 - 1
src/router/index.ts

@@ -2049,7 +2049,7 @@ router.beforeEach((to, from, next) => {
                     routerComplete = true;
                     next({ ...to, replace: true });
                 }).catch(() => {
-                    // 404?
+                    console.error('菜单加载失败');
                 })
             }
         } else {

+ 3 - 2
src/services/go/commonService/index.ts

@@ -91,7 +91,7 @@ export function queryNotice(): Promise<type.QueryNoticeRsp[]> {
 /**
  * 获取PC交易端菜单
  */
-export function GetPCMenus(): Promise<string> {
+export function GetPCMenus(): Promise<type.OperationTabMenu[]> {
     // 目前只有平安期货需要 oem 这个参数 请求菜单数据,如后续添加需要根据name获取菜单,此处需要修改
     const obj = isOemByEnum(OemType.pingan) ? { name: getOem() } : {}
     const param = {
@@ -101,8 +101,9 @@ export function GetPCMenus(): Promise<string> {
     return commonSearch_go('/Common/GetPCWebMenus', param)
         .then((res) => {
             APP.set('menus', res);
+            localStorageUtil.setItem('menus', res);
             console.log('交易端菜单', res);
-            return 'ok';
+            return res;
         })
         .catch((err: Error) => {
             throw new Error(`获取PC交易端菜单失败:${err}`);

+ 19 - 9
src/services/go/commonService/interface.ts

@@ -35,16 +35,26 @@ export interface QueryNoticeRsp {
     userid: number; //会员/投资者ID推送方式 为 个人时,填写投资者ID
 }
 
+export interface OperationTabMenuAuth {
+    label: string, //标签
+    code: string, //权限标识代码
+    requireauth: boolean, //是否需要登录权限
+    isshow: boolean, //是否显示
+    remark: string, //备注
+}
+
 export interface OperationTabMenu {
-    code: string; //ID
-    isshow: boolean; //是否显示
-    rulekey: string; //对应权限主键,对应FUNCMENULIST表RESOURCECODE
-    sort: number; //排序
-    title: string; //标题
-    type: 1 | 2 | 3 | 4 | 5; //类型,1:菜单 2:按钮  3: 明细 4:单据  5:管理端页面地址
-    url: string;
-    remark: string;
-    children: OperationTabMenu[];
+    title: string, //标题
+    code: string,  //唯一ID
+    path: string, //路由路径
+    component: string, // 路由组件
+    sort: number, // 排序
+    requireauth: boolean, //是否需要登录权限
+    isshow: boolean, //是否显示
+    url: string, //管理端地址
+    remark: string, // 备注
+    children: OperationTabMenu[],
+    auth: OperationTabMenuAuth[]
 }
 
 export interface Column {

+ 2 - 0
src/utils/storage/localStorage.ts

@@ -1,4 +1,5 @@
 import { ErrorCodeList } from '@/services/dataCenter/interafce/error';
+import { OperationTabMenu } from '@/services/go/commonService/interface';
 import { parseBase64, toBase64 } from './base64/index';
 interface StorageKeyName {
     loginData: string; // 账号登录返回信息 token等
@@ -10,6 +11,7 @@ interface StorageKeyName {
     errorCodeInfos: ErrorCodeList[];
     theme: string; // 主题色
     rowNumber: string; // 数据库错误信息 时间戳
+    menus: OperationTabMenu[]; // 菜单
 }
 
 /**

+ 44 - 67
src/views/business/purchase/list/pending/index.vue

@@ -1,80 +1,55 @@
 <template>
-  <!-- 采购: 待点价-->
-  <div class="purchase-peddding"
-       :loading="loading">
-    <filterCustomTable @search="updateColumn">
-      <BtnList :btnList="firstBtn"
-               @click="openComponent" />
-    </filterCustomTable>
-    <a-table :columns="columns"
-             class="srcollYTable"
-             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
-             :pagination="false"
-             :loading="loading"
-             :expandedRowKeys="expandedRowKeys"
-             :customRow="Rowclick"
-             rowKey="key"
-             :data-source="tableList">
-      <!-- 额外的展开行 -->
-      <template #expandedRowRender="{ record }">
-        <BtnList :btnList="secondBtn"
-                 :record="record"
-                 class="btn-list-sticky"
-                 @click="openComponent" />
+    <!-- 采购: 待点价-->
+    <div class="purchase-peddding" :loading="loading">
+        <filterCustomTable @search="updateColumn">
+            <BtnList :btnList="firstBtn" @click="openComponent" />
+        </filterCustomTable>
+        <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :loading="loading" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList">
+            <!-- 额外的展开行 -->
+            <template #expandedRowRender="{ record }">
+                <mtp-table-button class="btn-list-sticky" :code="[ModalEnum.purchase_pending_someprice, ModalEnum.detail]" :record="record" @click="openComponent" />
+            </template>
+            <template #pricedqty="{ text, record }">
+                <span>{{ handleEnumdic(text, record) }}</span>
+            </template>
+            <template #unsureqty="{ text, record }">
+                <span>{{ handleEnumdic(text, record) }}</span>
+            </template>
+            <template #qty="{ text, record }">
+                <span>{{ handleEnumdic(text, record) }}</span>
+            </template>
+            <template #unpricedqty="{ text, record }">
+                <span>{{ handleEnumdic(text, record) }}</span>
+            </template>
+            <template #unpayamount="{ text, record }">
+                <span>{{ record.unpayamount.toFixed(2) }}</span>
+            </template>
+            <template #daikaiamount="{ text, record }">
+                <span>{{ record.daikaiamount.toFixed(2) }}</span>
+            </template>
 
-      </template>
-      <template #pricedqty="{ text, record }">
-        <span>{{ handleEnumdic(text, record) }}</span>
-      </template>
-      <template #unsureqty="{ text, record }">
-        <span>{{ handleEnumdic(text, record) }}</span>
-      </template>
-      <template #qty="{ text, record }">
-        <span>{{ handleEnumdic(text, record) }}</span>
-      </template>
-      <template #unpricedqty="{ text, record }">
-        <span>{{ handleEnumdic(text, record) }}</span>
-      </template>
-        <template #unpayamount="{ text, record }">
-            <span>{{ record.unpayamount.toFixed(2) }}</span>
-        </template>
-        <template #daikaiamount="{ text, record }">
-            <span>{{ record.daikaiamount.toFixed(2) }}</span>
-        </template>
-
-
-
-        <template #deliverystartdate,deliveryenddate="{ record }">
-            <span>{{ formatValue(formatTime(record.deliverystartdate, "d") + '--' +
-                        formatTime(record.deliveryenddate, "d"))  }}</span>
-        </template>
-        <template #startdate,enddate="{ record }">
-            <span>{{ formatValue(formatTime(record.startdate, "d") + '--' +
-                        formatTime(record.enddate, "d"))  }}</span>
-        </template>
-
-    </a-table>
-    <!-- 右键 -->
-    <contextMenu :contextMenu="contextMenu"
-                 @cancel="closeContext"
-                 :list="secondBtn">
-    </contextMenu>
-    <component :is="componentId"
-               v-if="componentId"
-               :selectedRow="selectedRow"
-               @cancel="closeComponent"></component>
-  </div>
+            <template #deliverystartdate,deliveryenddate="{ record }">
+                <span>{{ formatValue(formatTime(record.deliverystartdate, 'd') + '--' + formatTime(record.deliveryenddate, 'd')) }}</span>
+            </template>
+            <template #startdate,enddate="{ record }">
+                <span>{{ formatValue(formatTime(record.startdate, 'd') + '--' + formatTime(record.enddate, 'd')) }}</span>
+            </template>
+        </a-table>
+        <!-- 右键 -->
+        <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="secondBtn"> </contextMenu>
+        <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
+    </div>
 </template>
 
 <script lang="ts">
-import { queryTableList, BtnList, contextMenu, defineAsyncComponent, defineComponent, ModalEnum, handleComposeTable, ComposeTableParam } from '@/common/export/commonTable';
+import { queryTableList, BtnList, MtpTableButton, contextMenu, defineAsyncComponent, defineComponent, ModalEnum, handleComposeTable, ComposeTableParam } from '@/common/export/commonTable';
 
 import { Ermcp3SellBuyContract } from '../index';
 import { filterCustomTable } from '../../components';
 import { QueryPurchase } from '@/services/go/ermcp/purchase';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
 import { handleEnumdic } from '../setup';
-import {formatTime, formatValue} from "@/common/methods";
+import { formatTime, formatValue } from '@/common/methods';
 
 const Detail = defineAsyncComponent(() => import('../../components/detail/index.vue'));
 const SomePrice = defineAsyncComponent(() => import('../../components/someprice/index.vue')); //采购点价登记
@@ -85,6 +60,7 @@ export default defineComponent({
         contextMenu,
         filterCustomTable,
         BtnList,
+        MtpTableButton,
         [ModalEnum.detail]: Detail,
         [ModalEnum.purchase_pending_someprice]: SomePrice,
     },
@@ -108,7 +84,8 @@ export default defineComponent({
             loading,
             handleEnumdic,
             formatTime,
-            formatValue
+            formatValue,
+            ModalEnum,
         };
     },
 });

+ 35 - 56
src/views/business/purchase/list/performance/index.vue

@@ -1,58 +1,37 @@
 <template>
-  <!-- 采购: 履约交收-->
-  <div class="purchase-performance"
-       :loading="loading">
-    <filterCustomTable @search="updateColumn">
-      <BtnList :btnList="firstBtn"
-               @click="openComponent" />
-    </filterCustomTable>
-    <a-table :columns="columns"
-             class="srcollYTable"
-             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
-             :pagination="false"
-             :loading="loading"
-             :expandedRowKeys="expandedRowKeys"
-             :customRow="Rowclick"
-             rowKey="key"
-             :data-source="tableList">
-      <!-- 额外的展开行 -->
-      <template #expandedRowRender="{ record }">
-        <BtnList :btnList="secondBtn"
-                 :record="record"
-                 class="btn-list-sticky"
-                 @click="openComponent" />
-      </template>
-      <template #pricedqty="{ text, record }">
-        <span>{{ handleEnumdic(text, record) }}</span>
-      </template>
-      <template #unsureqty="{ text, record }">
-        <span>{{ handleEnumdic(text, record) }}</span>
-      </template>
-      <template #qty="{ text, record }">
-        <span>{{ handleEnumdic(text, record) }}</span>
-      </template>
-      <template #unpricedqty="{ text, record }">
-        <span>{{ handleEnumdic(text, record) }}</span>
-      </template>
-        <template #deliverystartdate,deliveryenddate="{ record }">
-            <span>{{ formatValue(formatTime(record.deliverystartdate, "d") + '--' +
-                        formatTime(record.deliveryenddate, "d"))  }}</span>
-        </template>
-        <template #startdate,enddate="{ record }">
-            <span>{{ formatValue(formatTime(record.startdate, "d") + '--' +
-                        formatTime(record.enddate, "d"))  }}</span>
-        </template>
-    </a-table>
-    <!-- 右键 -->
-    <contextMenu :contextMenu="contextMenu"
-                 @cancel="closeContext"
-                 :list="secondBtn">
-    </contextMenu>
-    <component :is="componentId"
-               v-if="componentId"
-               :selectedRow="selectedRow"
-               @cancel="closeComponent"></component>
-  </div>
+    <!-- 采购: 履约交收-->
+    <div class="purchase-performance" :loading="loading">
+        <filterCustomTable @search="updateColumn">
+            <BtnList :btnList="firstBtn" @click="openComponent" />
+        </filterCustomTable>
+        <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :loading="loading" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList">
+            <!-- 额外的展开行 -->
+            <template #expandedRowRender="{ record }">
+                <BtnList :btnList="secondBtn" :record="record" class="btn-list-sticky" @click="openComponent" />
+            </template>
+            <template #pricedqty="{ text, record }">
+                <span>{{ handleEnumdic(text, record) }}</span>
+            </template>
+            <template #unsureqty="{ text, record }">
+                <span>{{ handleEnumdic(text, record) }}</span>
+            </template>
+            <template #qty="{ text, record }">
+                <span>{{ handleEnumdic(text, record) }}</span>
+            </template>
+            <template #unpricedqty="{ text, record }">
+                <span>{{ handleEnumdic(text, record) }}</span>
+            </template>
+            <template #deliverystartdate,deliveryenddate="{ record }">
+                <span>{{ formatValue(formatTime(record.deliverystartdate, 'd') + '--' + formatTime(record.deliveryenddate, 'd')) }}</span>
+            </template>
+            <template #startdate,enddate="{ record }">
+                <span>{{ formatValue(formatTime(record.startdate, 'd') + '--' + formatTime(record.enddate, 'd')) }}</span>
+            </template>
+        </a-table>
+        <!-- 右键 -->
+        <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="secondBtn"> </contextMenu>
+        <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"></component>
+    </div>
 </template>
 
 <script lang="ts">
@@ -63,7 +42,7 @@ import { QueryPurchase } from '@/services/go/ermcp/purchase';
 import { Ermcp3SellBuyContract } from '@/views/business/sell/list';
 import { EnumRouterName } from '@/common/constants/enumRouterName';
 import { handleEnumdic } from '../setup';
-import {formatTime, formatValue} from "@/common/methods";
+import { formatTime, formatValue } from '@/common/methods';
 
 const Detail = defineAsyncComponent(() => import('../../components/detail/index.vue'));
 const Settlement = defineAsyncComponent(() => import('../../components/settlement/index.vue')); //交收登记
@@ -102,7 +81,7 @@ export default defineComponent({
             loading,
             handleEnumdic,
             formatTime,
-            formatValue
+            formatValue,
         };
     },
 });

+ 33 - 42
src/views/information/custom/list/normal-use/index.vue

@@ -1,50 +1,40 @@
 <template>
-  <!-- 客户信息: 正常 -->
-  <div class="custom-normal"
-       :loading="loading">
-    <filterCustomTable @search="updateColumn">
-      <BtnList :btnList="commonBtn" />
-    </filterCustomTable>
-    <contextMenu :contextMenuList="forDataBtn">
-      <a-table :columns="columns"
-               class="srcollYTable"
-               :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
-               :pagination="false"
-               :expandedRowKeys="expandedRowKeys"
-               :customRow="Rowclick"
-               rowKey="key"
-               :data-source="tableList">
-        <!-- 额外的展开行 -->
-        <template #expandedRowRender="{  }">
-          <BtnList :btnList="forDataBtn" />
-        </template>
+    <!-- 客户信息: 正常 -->
+    <div class="custom-normal" :loading="loading">
+        <filterCustomTable @search="updateColumn">
+            <BtnList :btnList="commonBtn" />
+        </filterCustomTable>
+        <contextMenu :contextMenuList="forDataBtn">
+            <a-table :columns="columns" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList">
+                <!-- 额外的展开行 -->
+                <template #expandedRowRender="{}">
+                    <BtnList :btnList="forDataBtn" />
+                </template>
 
-        <template v-if="isPingAnOem()"
-                  #index="{ index }">
-          <span>{{ index + 1 }}</span>
-        </template>
-        <template #userinfotype="{ text }">
-          <a>{{ text === 2 ? '企业' : '个人' }}</a>
-        </template>
-        <!-- 客户名称 -->
-        <template #customername="{ record }">
-          <a>{{ record.userinfotype === 2 ? record.customername :  record.username }}</a>
-        </template>
-        <template #status="{ text }">
-          <a>{{ getStatusName(text) }}</a>
-        </template>
-        <template #cardtype="{ text }">
-          <a>{{ getCardTypeEnumItemName(text) }}</a>
-        </template>
-      </a-table>
-    </contextMenu>
-    <Middle :selectedRow="selectedRow"
-            @refresh="queryTable" />
-  </div>
+                <template v-if="isPingAnOem()" #index="{ index }">
+                    <span>{{ index + 1 }}</span>
+                </template>
+                <template #userinfotype="{ text }">
+                    <a>{{ text === 2 ? '企业' : '个人' }}</a>
+                </template>
+                <!-- 客户名称 -->
+                <template #customername="{ record }">
+                    <a>{{ record.userinfotype === 2 ? record.customername : record.username }}</a>
+                </template>
+                <template #status="{ text }">
+                    <a>{{ getStatusName(text) }}</a>
+                </template>
+                <template #cardtype="{ text }">
+                    <a>{{ getCardTypeEnumItemName(text) }}</a>
+                </template>
+            </a-table>
+        </contextMenu>
+        <Middle :selectedRow="selectedRow" @refresh="queryTable" />
+    </div>
 </template>
 
 <script lang="ts">
-import { defineComponent, initData, getTableColumns, getTableEvent, getBtnList, contextMenu, BtnList } from '@/common/export/table';
+import { defineComponent, initData, getTableColumns, getTableEvent, getBtnList, contextMenu, BtnList, MtpTableButton } from '@/common/export/table';
 
 import { filterCustomTable } from '../../compoments';
 import { queryTableList, QueryCustomInfoType } from '../index';
@@ -60,6 +50,7 @@ export default defineComponent({
         filterCustomTable,
         contextMenu,
         BtnList,
+        MtpTableButton,
         Middle,
     },
     setup() {

+ 15 - 14
src/views/market/spot_trade/setup.ts

@@ -37,24 +37,25 @@ export function handleSpotBtnList(menuType: EnumRouterName) {
             })
         }
         // 过滤报价大厅按钮列表
-        const temp = list.children.filter(e => e.type === 2)
-        firstBtn = fnMap(temp)
+        // const temp = list.children.filter(e => e.type === 2)
+        // firstBtn = fnMap(temp)
 
-        const fn = (code: EnumRouterName) => {
-            const findResult = list.children.find(e => e.code === code)
-            const result: BuyAndSellMarket = { isMarket: false, btnList: [] }
-            if (findResult) {
-                result.isMarket = true
-                const arr = findResult.children.filter(e => e.type === 2)
-                result.btnList = fnMap(arr)
-            }
-            return result
-        }
+        // const fn = (code: EnumRouterName) => {
+        //     const findResult = list.children.find(e => e.code === code)
+        //     const result: BuyAndSellMarket = { isMarket: false, btnList: [] }
+        //     if (findResult) {
+        //         result.isMarket = true
+        //         const arr = findResult.children.filter(e => e.type === 2)
+        //         result.btnList = fnMap(arr)
+        //     }
+        //     return result
+        // }
 
         // 处理买大厅
-        Object.assign(buyMarket, fn(EnumRouterName.spot_trade_warehouse_buy_hall))
+        //Object.assign(buyMarket, fn(EnumRouterName.spot_trade_warehouse_buy_hall))
         // 处理卖大厅
-        Object.assign(sellMarket, fn(EnumRouterName.spot_trade_warehouse_sell_hall))
+        //Object.assign(sellMarket, fn(EnumRouterName.spot_trade_warehouse_sell_hall))
+        debugger
     }
     return { firstBtn, buyMarket, sellMarket }
 }

+ 4 - 4
src/views/platinum/platinum_broker_management/waiting/index.vue

@@ -1,8 +1,8 @@
 <template>
-  <!-- 经纪人管理: 经纪人管理-->
-  <div class="iframe-container">
-    <iframe :src="url"></iframe>
-  </div>
+    <!-- 经纪人管理: 经纪人管理-->
+    <div class="iframe-container">
+        <iframe :src="url"></iframe>
+    </div>
 </template>
 
 <script lang="ts">