li.shaoyi 2 năm trước cách đây
mục cha
commit
b027dd92f9
54 tập tin đã thay đổi với 328 bổ sung414 xóa
  1. 0 3
      src/business/bank/index.ts
  2. 0 9
      src/business/bargain/index.ts
  3. 2 3
      src/business/customs/bonded.ts
  4. 3 5
      src/business/customs/exit.ts
  5. 1 4
      src/business/favorite/index.ts
  6. 0 3
      src/business/goods/index.ts
  7. 0 2
      src/business/order/index.ts
  8. 0 3
      src/business/search/index.ts
  9. 16 15
      src/business/table/columns.ts
  10. 0 7
      src/business/trade/list.ts
  11. 0 5
      src/business/user/index.ts
  12. 0 3
      src/business/warehouse/index.ts
  13. 15 138
      src/mock/router.ts
  14. 3 3
      src/packages/pc/components/layouts/header/components/calculator/index.vue
  15. 12 4
      src/packages/pc/components/layouts/page/index.less
  16. 9 1
      src/packages/pc/components/modules/action-menu/index.ts
  17. 24 11
      src/packages/pc/components/modules/action-menu/index.vue
  18. 7 13
      src/packages/pc/components/modules/auth-operation/index.vue
  19. 8 6
      src/packages/pc/views/bargain/buy/index.vue
  20. 8 6
      src/packages/pc/views/bargain/sell/index.vue
  21. 4 2
      src/packages/pc/views/customs/bonded/components/payment/index.vue
  22. 18 7
      src/packages/pc/views/customs/bonded/index.vue
  23. 3 2
      src/packages/pc/views/customs/exit/components/details/index.vue
  24. 2 2
      src/packages/pc/views/customs/exit/components/edit/detail-edit/index.vue
  25. 4 2
      src/packages/pc/views/customs/exit/components/payment/index.vue
  26. 19 8
      src/packages/pc/views/customs/exit/index.vue
  27. 5 3
      src/packages/pc/views/favorite/main/index.vue
  28. 9 6
      src/packages/pc/views/mine/address/index.vue
  29. 1 1
      src/packages/pc/views/mine/bank/components/deposit/index.vue
  30. 1 1
      src/packages/pc/views/mine/bank/components/withdraw/index.vue
  31. 7 4
      src/packages/pc/views/mine/bank/index.vue
  32. 7 5
      src/packages/pc/views/mine/invoice/index.vue
  33. 6 5
      src/packages/pc/views/mine/profile/index.vue
  34. 1 1
      src/packages/pc/views/order/main/components/delay/index.vue
  35. 9 7
      src/packages/pc/views/order/main/index.vue
  36. 8 6
      src/packages/pc/views/search/diamond/index.vue
  37. 8 6
      src/packages/pc/views/search/fancy/index.vue
  38. 33 5
      src/packages/pc/views/trade/bargain/index.vue
  39. 1 1
      src/packages/pc/views/trade/buy/components/delisting/index.vue
  40. 6 23
      src/packages/pc/views/trade/buy/index.vue
  41. 5 3
      src/packages/pc/views/trade/delisting/index.vue
  42. 9 7
      src/packages/pc/views/trade/purchase/index.vue
  43. 6 13
      src/packages/pc/views/trade/sale/index.vue
  44. 10 16
      src/packages/pc/views/trade/sell/index.vue
  45. 1 1
      src/packages/pc/views/warehousing/goods/components/bargain/index.vue
  46. 3 3
      src/packages/pc/views/warehousing/goods/components/edit/diamond.vue
  47. 4 4
      src/packages/pc/views/warehousing/goods/components/edit/diamonds.vue
  48. 3 3
      src/packages/pc/views/warehousing/goods/components/edit/fancy.vue
  49. 3 3
      src/packages/pc/views/warehousing/goods/components/edit/jewelry.vue
  50. 5 5
      src/packages/pc/views/warehousing/goods/components/edit/rough.vue
  51. 9 8
      src/packages/pc/views/warehousing/goods/index.vue
  52. 7 4
      src/packages/pc/views/warehousing/warehouse/index.vue
  53. 1 3
      src/stores/index.ts
  54. 2 0
      src/types/ermcp/customs.d.ts

+ 0 - 3
src/business/bank/index.ts

@@ -3,7 +3,6 @@ import { decryptAES } from '@/utils/websocket/crypto'
 import { useDataTable } from '@/hooks/datatable'
 import { useUserStore, useAccountStore, useLoginStore } from '@/stores'
 import { queryCusBankSignBank, queryAccountInOutApply, t2bBankSign, t2bBankCancelSign, queryBankAccountSign, t2bBankDeposit, t2bBankWithdraw } from '@/services/api/bank'
-import { getTableColumns } from '../table'
 import { SignStatus } from '@/constants/bank'
 
 // 银行签约相关
@@ -115,7 +114,6 @@ export function useBankCancelSign(bankInfo: Ermcp.BankAccountSignRsp) {
 export function useAccountInOut() {
     const { getUserId } = useLoginStore()
     const { dataList } = useDataTable<Ermcp.AccountOutInApplyRsp>()
-    const columns = shallowRef(getTableColumns('mine_capital'))
     const loading = shallowRef(false)
 
     const getAccountInOutApply = (params: Partial<Ermcp.AccountInOutApplyReq> = {}) => {
@@ -138,7 +136,6 @@ export function useAccountInOut() {
     return {
         loading,
         dataList,
-        columns,
         getAccountInOutApply,
     }
 }

+ 0 - 9
src/business/bargain/index.ts

@@ -3,7 +3,6 @@ import { v4 } from 'uuid'
 import { ClientType } from '@/constants/client'
 import { Market } from '@/constants/market'
 import { useDataTable } from '@/hooks/datatable'
-import { getTableColumns } from '@/business/table'
 import { queryMyBargainApply, queryMyDelistingApply, zsBuyOrderDestingNegPriceOperate, zsSellOrderDestingApplyOperate } from '@/services/api/trade'
 import { useLoginStore } from '@/stores'
 import { BuyOrSell } from '@/constants/order'
@@ -16,7 +15,6 @@ export function useBargain() {
     const { getUserId } = useLoginStore()
     const { dataList, total, pageIndex, pageSize } = useDataTable<Ermcp.MyBargainApplyRsp | Ermcp.MyDelistingApplyRsp>()
     const loading = shallowRef(false)
-    const columns = shallowRef<Ermcp.TableColumn[]>([])
 
     // 获取我的询价列表
     const getBargainOrderList = (params: Partial<(Ermcp.MyBargainApplyReq | Ermcp.MyDelistingApplyReq) & { buyorsell: number }> = {}) => {
@@ -33,7 +31,6 @@ export function useBargain() {
 
         switch (params.buyorsell) {
             case BuyOrSell.Buy: {
-                columns.value = getTableColumns('listing_bargain_buy')
                 return queryMyBargainApply({
                     data: param,
                     success: (res) => {
@@ -46,7 +43,6 @@ export function useBargain() {
                 })
             }
             case BuyOrSell.Sell: {
-                columns.value = getTableColumns('listing_bargain_sell')
                 return queryMyDelistingApply({
                     data: param,
                     success: (res) => {
@@ -70,7 +66,6 @@ export function useBargain() {
         total,
         pageIndex,
         pageSize,
-        columns,
         getBargainOrderList,
     }
 }
@@ -82,7 +77,6 @@ export function useBuyBargain() {
     const { getUserId } = useLoginStore()
     const { dataList, total, pageIndex, pageSize } = useDataTable<Ermcp.MyBargainApplyRsp>()
     const loading = shallowRef(false)
-    const columns = shallowRef(getTableColumns('bargain_buy'))
 
     // 获取询价列表
     const getBargainOrderList = (params: Partial<Ermcp.MyBargainApplyReq> = {}) => {
@@ -111,7 +105,6 @@ export function useBuyBargain() {
         total,
         pageIndex,
         pageSize,
-        columns,
         getBargainOrderList,
     }
 }
@@ -123,7 +116,6 @@ export function useSellBargain() {
     const { getUserId } = useLoginStore()
     const { dataList, total, pageIndex, pageSize } = useDataTable<Ermcp.MyDelistingApplyRsp>()
     const loading = shallowRef(false)
-    const columns = shallowRef(getTableColumns('bargain_sell'))
 
     // 获取询价列表
     const getDelistingOrderList = (params: Partial<Ermcp.MyDelistingApplyReq> = {}) => {
@@ -152,7 +144,6 @@ export function useSellBargain() {
         total,
         pageIndex,
         pageSize,
-        columns,
         getDelistingOrderList,
     }
 }

+ 2 - 3
src/business/customs/bonded.ts

@@ -12,15 +12,15 @@ export function useBSFWOrderList() {
     const { getUserId } = useLoginStore()
     const { dataList, total, pageIndex, pageSize } = useDataTable<Ermcp.GZBSFWOrderRsp>()
     const loading = shallowRef(false)
-    const columns = shallowRef(getTableColumns('customs_bsfw'))
 
-    const getBSFWOrderList = () => {
+    const getBSFWOrderList = (params: Partial<Ermcp.GZBSFWOrderReq> = {}) => {
         loading.value = true
         return queryGZBSFWOrder({
             data: {
                 page: pageIndex.value,
                 pagesize: pageSize.value,
                 userid: getUserId(),
+                executestatus: params.executestatus,
             },
             success: (res) => {
                 total.value = res.total
@@ -38,7 +38,6 @@ export function useBSFWOrderList() {
         total,
         pageIndex,
         pageSize,
-        columns,
         getBSFWOrderList,
     }
 }

+ 3 - 5
src/business/customs/exit.ts

@@ -1,7 +1,6 @@
 import { shallowRef, reactive, computed } from 'vue'
 import { v4 } from 'uuid'
 import { useDataTable } from '@/hooks/datatable'
-import { getTableColumns } from '@/business/table'
 import { cjjcApply, queryGZCJJCOrder, cjjcMemberOperate, queryGZCJJCOrderDetail, queryGzcjjcorderoperate } from '@/services/api/customs'
 import { ClientType } from '@/constants/client'
 import { useLoginStore } from '@/stores'
@@ -12,15 +11,15 @@ export function useCJJCOrderList() {
     const { getUserId } = useLoginStore()
     const { dataList, total, pageIndex, pageSize } = useDataTable<Ermcp.GZCJJCOrderRsp>()
     const loading = shallowRef(false)
-    const columns = shallowRef(getTableColumns('customs_cjjc'))
 
-    const getGZCJJCOrderList = () => {
+    const getGZCJJCOrderList = (params: Partial<Ermcp.GZCJJCOrderReq> = {}) => {
         loading.value = true
         return queryGZCJJCOrder({
             data: {
                 page: pageIndex.value,
                 pagesize: pageSize.value,
                 userid: getUserId(),
+                executestatus: params.executestatus,
             },
             success: (res) => {
                 total.value = res.total
@@ -38,7 +37,6 @@ export function useCJJCOrderList() {
         total,
         pageIndex,
         pageSize,
-        columns,
         getGZCJJCOrderList,
     }
 }
@@ -70,7 +68,7 @@ export function useGZCJJCOrderDetail(selectedRow: Ermcp.GZCJJCOrderRsp) {
                     { prop: 'gzcjmarktype', label: '刻印服务(证书号/ 其他/ 无)', width: 220 },
                     { prop: 'gzcjpublishtypestring', label: '是否披露处理' },
                     { prop: 'gzcjservicetypestring', label: '服务类别' },
-                    { prop: 'OriginCertNo', label: '原证书号' },
+                    { prop: 'origincertno', label: '原证书号' },
                     { prop: 'colorinfo', label: '彩钻信息' },
                     { prop: 'remark', label: '其他' },
                 ]

+ 1 - 4
src/business/favorite/index.ts

@@ -1,12 +1,10 @@
-import { shallowRef, watch } from 'vue'
+import { watch } from 'vue'
 import { useDataTable } from '@/hooks/datatable'
-import { getTableColumns } from '@/business/table'
 import { useFavoriteStore } from '@/stores'
 
 export function useFavorite() {
     const { loading, favoriteList, getFavoriteList } = useFavoriteStore()
     const { dataList, total, pageIndex, pageSize, filters } = useDataTable<Ermcp.MyFavoriteRsp>({ pagination: true })
-    const columns = shallowRef(getTableColumns('favorite'))
 
     watch(favoriteList, (data) => {
         total.value = data.length
@@ -18,7 +16,6 @@ export function useFavorite() {
     return {
         loading,
         dataList,
-        columns,
         filters,
         total,
         pageIndex,

+ 0 - 3
src/business/goods/index.ts

@@ -1,7 +1,6 @@
 import { shallowRef, shallowReactive, reactive, computed } from 'vue'
 import { v4 } from 'uuid'
 import { useDataTable } from '@/hooks/datatable'
-import { getTableColumns } from '@/business/table'
 import { formatDecimal } from '@/filters'
 import { ClientType } from '@/constants/client'
 import { Market } from '@/constants/market'
@@ -34,7 +33,6 @@ export function useDiamond() {
     const { getUserId } = useLoginStore()
     const { dataList, total, pageIndex, pageSize } = useDataTable<Ermcp.MyWRPositionRsp>()
     const loading = shallowRef(false)
-    const columns = shallowRef(getTableColumns('warehousing_diamond'))
 
     const categoryList = [
         { label: '单颗裸钻', value: Category.Diamond },
@@ -88,7 +86,6 @@ export function useDiamond() {
         total,
         pageIndex,
         pageSize,
-        columns,
         categoryList,
         warehouseList,
         getDiamondList,

+ 0 - 2
src/business/order/index.ts

@@ -12,7 +12,6 @@ export function usePerformance(buyorsell?: BuyOrSell) {
     const { getUserId } = useLoginStore()
     const { dataList, total, pageIndex, pageSize } = useDataTable<Ermcp.MyPerformancRsp>()
     const loading = shallowRef(false)
-    const columns = shallowRef(getTableColumns('order'))
 
     const filterData = ref<{ history: boolean, date: string[] }>({
         history: false,
@@ -52,7 +51,6 @@ export function usePerformance(buyorsell?: BuyOrSell) {
         pageIndex,
         pageSize,
         filterData,
-        columns,
         getPerformanceList,
     }
 }

+ 0 - 3
src/business/search/index.ts

@@ -1,6 +1,5 @@
 import { ref, shallowRef, computed } from 'vue'
 import { useDataTable } from '@/hooks/datatable'
-import { getTableColumns } from '@/business/table'
 import { searchSellOrder } from '@/services/api/trade'
 import {
     Category,
@@ -19,7 +18,6 @@ import {
 export function useSearch(category: Category) {
     const { dataList, total, pageIndex, pageSize } = useDataTable<Ermcp.SellOrderSearchRsp & { checked: boolean }>()
     const loading = shallowRef(false)
-    const columns = shallowRef(getTableColumns('listing_sellorder'))
     const warehouseList = shallowRef<Ermcp.WarehouseInfoRsp[]>([]) // 仓库列表
 
     // 部分请求参数类型重定义
@@ -123,7 +121,6 @@ export function useSearch(category: Category) {
         enums,
         dataList,
         checkedItems,
-        columns,
         total,
         pageIndex,
         pageSize,

+ 16 - 15
src/business/table/columns.ts

@@ -37,7 +37,7 @@ export const pcTableColumnMap = new Map<TableColumnKey, Ermcp.TableColumn[]>([
         { prop: 'weight', label: '克拉重量' },
         { prop: 'priceper', label: '克拉单价' },
         { prop: 'marketflag', label: '是否上架' },
-        { prop: 'operate', label: '操作', width: 240 }
+        { prop: 'operate', label: '操作' }
     ]],
     // 我的仓储-我的仓库
     ['warehousing_warehouse', [
@@ -64,6 +64,7 @@ export const pcTableColumnMap = new Map<TableColumnKey, Ermcp.TableColumn[]>([
         { prop: 'price', label: '价格' },
         { prop: 'totalqty', label: '克拉重量' },
         { prop: 'fixedprice', label: '克拉单价' },
+        { prop: 'operate', label: '操作' }
     ]],
     // 挂牌大厅-求购大厅
     ['listing_buyorder', [
@@ -76,6 +77,7 @@ export const pcTableColumnMap = new Map<TableColumnKey, Ermcp.TableColumn[]>([
         { prop: 'zssymmetrytypedisplay', label: '对称' },
         { prop: 'zsfluorescencetypedisplay', label: '荧光' },
         { prop: 'zssize', label: '尺寸' },
+        { prop: 'operate', label: '操作' }
     ]],
     // 挂牌大厅-我的出售
     ['listing_saleorder', [
@@ -103,7 +105,7 @@ export const pcTableColumnMap = new Map<TableColumnKey, Ermcp.TableColumn[]>([
         { prop: 'zssymmetrytypedisplay', label: '对称' },
         { prop: 'zsfluorescencetypedisplay', label: '荧光' },
         { prop: 'zssize', label: '尺寸' },
-        { prop: 'operate', label: '操作', width: 180 }
+        { prop: 'operate', label: '操作' }
     ]],
     // 挂牌大厅-我的摘牌
     ['listing_delisting', [
@@ -142,7 +144,7 @@ export const pcTableColumnMap = new Map<TableColumnKey, Ermcp.TableColumn[]>([
         { prop: 'applyprice', label: '我的出价' },
         { prop: 'applystatus', label: '申请状态' },
         { prop: 'applytime', label: '申请时间', width: 200 },
-        { prop: 'operate', label: '操作', width: 180 }
+        { prop: 'operate', label: '操作' }
     ]],
     // 挂牌大厅-我的询价-出售
     ['listing_bargain_sell', [
@@ -160,7 +162,7 @@ export const pcTableColumnMap = new Map<TableColumnKey, Ermcp.TableColumn[]>([
         { prop: 'applyprice', label: '我的出价' },
         { prop: 'applystatus', label: '申请状态' },
         { prop: 'applytime', label: '申请时间', width: 200 },
-        { prop: 'operate', label: '操作', width: 180 }
+        { prop: 'operate', label: '操作' }
     ]],
     // 会员中心-我的出入金
     ['mine_capital', [
@@ -180,7 +182,7 @@ export const pcTableColumnMap = new Map<TableColumnKey, Ermcp.TableColumn[]>([
         { prop: 'phonenum', label: '联系电话' },
         { prop: 'address', label: '收货地址', width: 300 },
         { prop: 'isdefault', label: '是否默认' },
-        { prop: 'operate', label: '操作', width: 250 }
+        { prop: 'operate', label: '操作' }
     ]],
     // 会员中心-我的发票
     ['mine_invoice', [
@@ -205,7 +207,7 @@ export const pcTableColumnMap = new Map<TableColumnKey, Ermcp.TableColumn[]>([
         { prop: 'price', label: '价格' },
         { prop: 'weight', label: '克拉重量' },
         { prop: 'priceper', label: '克拉单价' },
-        { prop: 'operate', label: '操作', width: 180 }
+        { prop: 'operate', label: '操作' }
     ]],
     // 订单管理
     ['order', [
@@ -215,14 +217,14 @@ export const pcTableColumnMap = new Map<TableColumnKey, Ermcp.TableColumn[]>([
         { prop: 'zscolortype1display', label: '颜色' },
         { prop: 'sizedisplay', label: '尺寸' },
         { prop: 'zspolishtype1display', label: '重量' },
-        { prop: 'price', label: '价格' },
+        { prop: 'price', label: '履约金额' },
         { prop: 'accountname', label: '对手方' },
         { prop: 'paidamount', label: '已付/已付金额' },
         { prop: 'freezeamountremain', label: '履约剩余冻结' },
         { prop: 'performancestatus', label: '履约状态' },
         { prop: 'steptypeid', label: '当前步骤' },
         { prop: 'remaindays', label: '剩余天数' },
-        { prop: 'operate', label: '操作', width: 380 }
+        { prop: 'operate', label: '操作' }
     ]],
     // 订单履约步骤
     ['order_step', [
@@ -257,7 +259,7 @@ export const pcTableColumnMap = new Map<TableColumnKey, Ermcp.TableColumn[]>([
         { prop: 'applyprice', label: '买方出价' },
         { prop: 'applystatus', label: '申请状态' },
         { prop: 'applytime', label: '申请时间', width: 200 },
-        { prop: 'operate', label: '操作', width: 180 }
+        { prop: 'operate', label: '操作' }
     ]],
     // 询价消息-出售
     ['bargain_sell', [
@@ -275,7 +277,7 @@ export const pcTableColumnMap = new Map<TableColumnKey, Ermcp.TableColumn[]>([
         { prop: 'applyprice', label: '卖方出价' },
         { prop: 'applystatus', label: '申请状态' },
         { prop: 'applytime', label: '申请时间', width: 200 },
-        { prop: 'operate', label: '操作', width: 180 }
+        { prop: 'operate', label: '操作' }
     ]],
     // 交易服务-出境检测
     ['customs_cjjc', [
@@ -283,13 +285,13 @@ export const pcTableColumnMap = new Map<TableColumnKey, Ermcp.TableColumn[]>([
         { prop: 'gzcjcategorytypedisplay', label: '货物品类' },
         { prop: 'gzcjdeliverytypedisplay', label: '收货方式', width: 200 },
         { prop: 'gzcjaccount', label: '送检账户' },
-        { prop: 'undefined', label: '总数量(粒)' },
-        { prop: 'undefined', label: '总重量(ct)' },
+        { prop: 'totalnumber', label: '总数量(粒)' },
+        { prop: 'totalweight', label: '总重量(ct)' },
         { prop: 'totalamount', label: '总参考值(US$)' },
         { prop: 'contactname', label: '联系人姓名' },
         { prop: 'contactphoneno', label: '联系人电话' },
         { prop: 'gzcjstatusdisplay', label: '单据状态' },
-        { prop: 'operate', label: '操作', width: 260 }
+        { prop: 'operate', label: '操作' }
     ]],
     // 交易服务-保税服务
     ['customs_bsfw', [
@@ -300,9 +302,8 @@ export const pcTableColumnMap = new Map<TableColumnKey, Ermcp.TableColumn[]>([
         { prop: 'totalgrossweightgm', label: '总毛重(克)' },
         { prop: 'totalamount', label: '总值(美元)' },
         { prop: 'priceper', label: '单价(美元/克拉)', width: 160 },
-        { prop: 'undefined', label: '备注' },
         { prop: 'gzbsstatusdisplay', label: '单据状态' },
-        { prop: 'operate', label: '操作', width: 280 }
+        { prop: 'operate', label: '操作' }
     ]],
     // 交易服务-保税服务-文件下载
     ['customs_bsfw_file', [

+ 0 - 7
src/business/trade/list.ts

@@ -1,6 +1,5 @@
 import { shallowRef, ref } from 'vue'
 import { useDataTable } from '@/hooks/datatable'
-import { getTableColumns } from '@/business/table'
 import { queryBuyOrder, querySellOrder, queryMyBuyOrder, queryMySellOrder, queryMyDeListing } from '@/services/api/trade'
 import { useLoginStore } from '@/stores'
 import { getBuyOrSellList, BuyOrSell } from '@/constants/order'
@@ -18,7 +17,6 @@ const categoryList = [
 export function useBuyOrder() {
     const { dataList, total, pageIndex, pageSize } = useDataTable<Ermcp.BuyOrderRsp>()
     const loading = shallowRef(false)
-    const columns = shallowRef(getTableColumns('listing_buyorder'))
 
     // 获取求购大厅委托单
     const getBuyOrderList = (params: Partial<Ermcp.BuyOrderReq> = {}) => {
@@ -48,7 +46,6 @@ export function useBuyOrder() {
         total,
         pageIndex,
         pageSize,
-        columns,
         categoryList,
         getBuyOrderList,
     }
@@ -155,7 +152,6 @@ export function usePurchaseOrder() {
     const { getUserId } = useLoginStore()
     const { dataList, total, pageIndex, pageSize } = useDataTable<Ermcp.MyBuyOrderRsp>()
     const loading = shallowRef(false)
-    const columns = shallowRef(getTableColumns('listing_purchaseorder'))
 
     const filterData = ref<{ history: boolean, date: string[] }>({
         history: false,
@@ -196,7 +192,6 @@ export function usePurchaseOrder() {
         total,
         pageIndex,
         pageSize,
-        columns,
         filterData,
         categoryList,
         getPurchaseOrderList,
@@ -210,7 +205,6 @@ export function useDelistingOrder(buyorsell = BuyOrSell.Buy) {
     const { getUserId } = useLoginStore()
     const { dataList, total, pageIndex, pageSize } = useDataTable<Ermcp.MyDeListingRsp>()
     const loading = shallowRef(false)
-    const columns = shallowRef(getTableColumns('listing_delisting'))
     const filterDate = shallowRef<string[]>([])
     const buyOrSell = shallowRef(buyorsell) // 根据查询的方向固定显示
 
@@ -249,7 +243,6 @@ export function useDelistingOrder(buyorsell = BuyOrSell.Buy) {
         pageIndex,
         pageSize,
         buyOrSell,
-        columns,
         filterDate,
         categoryList,
         buyOrSellList: getBuyOrSellList(),

+ 0 - 5
src/business/user/index.ts

@@ -1,6 +1,5 @@
 import { shallowRef, reactive } from 'vue'
 import { useDataTable } from '@/hooks/datatable'
-import { getTableColumns } from '@/business/table'
 import { queryUserReceiveInfo, queryWrUserReceiptInfo, userReceiveInfo, delUserReceiveInfo, userReceiveIsDefault, userReceiptInfo, delUserReceiptInfo } from '@/services/api/user'
 import { useLoginStore } from '@/stores'
 import { getCertificateTypeList } from '@/constants/certificate'
@@ -9,7 +8,6 @@ export function useAddress() {
     const { getUserId } = useLoginStore()
     const { dataList, total, pageIndex, pageSize } = useDataTable<Ermcp.UserReceiveInfoRsp>()
     const loading = shallowRef(false)
-    const columns = shallowRef(getTableColumns('mine_address'))
 
     const getUserAddressList = () => {
         loading.value = true
@@ -30,7 +28,6 @@ export function useAddress() {
     return {
         loading,
         dataList,
-        columns,
         total,
         pageIndex,
         pageSize,
@@ -120,7 +117,6 @@ export function useInvoice() {
     const { getUserId } = useLoginStore()
     const { dataList, total, pageIndex, pageSize } = useDataTable<Ermcp.WrUserReceiptInfoRsp>()
     const loading = shallowRef(false)
-    const columns = shallowRef(getTableColumns('mine_invoice'))
 
     const getUserInvoiceList = () => {
         loading.value = true
@@ -141,7 +137,6 @@ export function useInvoice() {
     return {
         loading,
         dataList,
-        columns,
         total,
         pageIndex,
         pageSize,

+ 0 - 3
src/business/warehouse/index.ts

@@ -1,6 +1,5 @@
 import { shallowRef, reactive } from 'vue'
 import { useDataTable } from '@/hooks/datatable'
-import { getTableColumns } from '@/business/table'
 import { queryWarehouseInfo, warehouseApply } from '@/services/api/warehouse'
 import { useUserStore, useLoginStore } from '@/stores'
 
@@ -8,7 +7,6 @@ export function useWarehouse() {
     const { getUserId } = useLoginStore()
     const { dataList, total, pageIndex, pageSize } = useDataTable<Ermcp.WarehouseInfoRsp>()
     const loading = shallowRef(false)
-    const columns = shallowRef(getTableColumns('warehousing_warehouse'))
 
     const getWarehouseList = () => {
         loading.value = true
@@ -31,7 +29,6 @@ export function useWarehouse() {
     return {
         loading,
         dataList,
-        columns,
         total,
         pageIndex,
         pageSize,

+ 15 - 138
src/mock/router.ts

@@ -40,16 +40,12 @@ const appmenu = {
                                 title: '详情',
                                 code: 'search_diamond_details',
                                 component: 'views/warehousing/goods/components/details/index.vue',
-                                buttonName: 'details',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '收藏',
                                 code: 'search_diamond_favorite',
                                 component: 'views/warehousing/goods/components/favorite/index.vue',
-                                buttonName: 'favorite',
-                                buttonType: 'primary',
                             },
                         ]
                     },
@@ -67,16 +63,12 @@ const appmenu = {
                                 title: '详情',
                                 code: 'search_fancy_details',
                                 component: 'views/warehousing/goods/components/details/index.vue',
-                                buttonName: 'details',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '收藏',
                                 code: 'search_fancy_favorite',
                                 component: 'views/warehousing/goods/components/favorite/index.vue',
-                                buttonName: 'favorite',
-                                buttonType: 'primary',
                             },
                         ]
                     },
@@ -116,14 +108,12 @@ const appmenu = {
                                 title: '详情',
                                 code: 'trade_sell_details',
                                 component: 'views/warehousing/goods/components/details/index.vue',
-                                className: 'el-button--primary',
                             },
                             {
                                 authType: 3,
                                 title: '收藏',
                                 code: 'trade_sell_favorite',
                                 component: 'views/warehousing/goods/components/favorite/index.vue',
-                                className: 'el-button--primary',
                             },
                         ]
                     },
@@ -141,7 +131,6 @@ const appmenu = {
                                 title: '详情',
                                 code: 'trade_buy_details',
                                 component: 'views/trade/buy/components/details/index.vue',
-                                className: 'el-button--primary',
                                 children: [
                                     {
                                         authType: 2,
@@ -175,14 +164,12 @@ const appmenu = {
                                 title: '详情',
                                 code: 'trade_sale_details',
                                 component: 'views/trade/sale/components/details/index.vue',
-                                className: 'el-button--primary',
                             },
                             {
                                 authType: 3,
                                 title: '撤销',
                                 code: 'trade_sale_cancel',
                                 component: 'views/trade/sale/components/cancel/index.vue',
-                                className: 'el-button--primary',
                             },
                         ]
                     },
@@ -200,24 +187,19 @@ const appmenu = {
                                 title: '我要求购',
                                 code: 'trade_purchase_add',
                                 component: 'views/trade/purchase/components/add/index.vue',
-                                buttonName: 'add',
-                                buttonType: 'primary',
+                                className: 'el-button--primary',
                             },
                             {
                                 authType: 3,
                                 title: '详情',
                                 code: 'trade_purchase_details',
                                 component: 'views/trade/purchase/components/details/index.vue',
-                                buttonName: 'details',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '撤销',
                                 code: 'trade_purchase_cancel',
                                 component: 'views/trade/purchase/components/cancel/index.vue',
-                                buttonName: 'cancel',
-                                buttonType: 'primary',
                             },
                         ]
                     },
@@ -235,8 +217,6 @@ const appmenu = {
                                 title: '详情',
                                 code: 'trade_delisting_details',
                                 component: 'views/trade/delisting/components/details/index.vue',
-                                buttonName: 'details',
-                                buttonType: 'primary',
                             },
                         ]
                     },
@@ -254,16 +234,12 @@ const appmenu = {
                                 title: '详情',
                                 code: 'trade_bargain_details',
                                 component: 'views/trade/bargain/components/details/index.vue',
-                                buttonName: 'details',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '撤销',
                                 code: 'trade_bargain_cancel',
                                 component: 'views/trade/bargain/components/cancel/index.vue',
-                                buttonName: 'cancel',
-                                buttonType: 'primary',
                             },
                         ]
                     }
@@ -284,16 +260,12 @@ const appmenu = {
                         title: '详情',
                         code: 'favorite_details',
                         component: 'views/warehousing/goods/components/details/index.vue',
-                        buttonName: 'details',
-                        buttonType: 'primary',
                     },
                     {
                         authType: 3,
                         title: '取消',
                         code: 'favorite_cancel',
                         component: 'views/favorite/main/components/cancel/index.vue',
-                        buttonName: 'cancel',
-                        buttonType: 'primary',
                     },
                 ]
             },
@@ -321,40 +293,30 @@ const appmenu = {
                                 title: '详情',
                                 code: 'order_buy_details',
                                 component: 'views/order/main/components/details/index.vue',
-                                buttonName: 'details',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '手动',
                                 code: 'order_buy_manual',
                                 component: 'views/order/main/components/manual/index.vue',
-                                buttonName: 'manual',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '延期',
                                 code: 'order_buy_delay',
                                 component: 'views/order/main/components/delay/index.vue',
-                                buttonName: 'delay',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '违约',
                                 code: 'order_buy_contracted',
                                 component: 'views/order/main/components/contracted/index.vue',
-                                buttonName: 'contracted',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '修改',
                                 code: 'order_buy_edit',
                                 component: 'views/order/main/components/edit/index.vue',
-                                buttonName: 'edit',
-                                buttonType: 'primary',
                             },
                         ]
                     },
@@ -372,40 +334,30 @@ const appmenu = {
                                 title: '详情',
                                 code: 'order_sell_details',
                                 component: 'views/order/main/components/details/index.vue',
-                                buttonName: 'details',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '手动',
                                 code: 'order_sell_manual',
                                 component: 'views/order/main/components/manual/index.vue',
-                                buttonName: 'manual',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '延期',
                                 code: 'order_sell_delay',
                                 component: 'views/order/main/components/delay/index.vue',
-                                buttonName: 'delay',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '违约',
                                 code: 'order_sell_contracted',
                                 component: 'views/order/main/components/contracted/index.vue',
-                                buttonName: 'contracted',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '修改',
                                 code: 'order_sell_edit',
                                 component: 'views/order/main/components/edit/index.vue',
-                                buttonName: 'edit',
-                                buttonType: 'primary',
                             },
                         ]
                     },
@@ -435,72 +387,55 @@ const appmenu = {
                                 title: '详情',
                                 code: 'customs_exit_details',
                                 component: 'views/customs/exit/components/details/index.vue',
-                                buttonName: 'details',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '提交申请',
                                 code: 'customs_exit_add',
                                 component: 'views/customs/exit/components/edit/index.vue',
-                                buttonName: 'add',
-                                buttonType: 'primary',
+                                className: 'el-button--primary',
                             },
                             {
                                 authType: 3,
                                 title: '修改',
                                 code: 'customs_exit_edit',
                                 component: 'views/customs/exit/components/edit/index.vue',
-                                buttonName: 'edit',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '撤回',
                                 code: 'customs_exit_cancel',
                                 component: 'views/customs/exit/components/cancel/index.vue',
-                                buttonName: 'cancel',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '下载',
                                 code: 'customs_exit_download',
                                 component: 'views/customs/exit/components/download/index.vue',
-                                buttonName: 'download',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '确认发货',
                                 code: 'customs_exit_delivery',
                                 component: 'views/customs/exit/components/delivery/index.vue',
-                                buttonName: 'delivery',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '确认检测结果',
                                 code: 'customs_exit_check',
                                 component: 'views/customs/exit/components/check/index.vue',
-                                buttonName: 'check',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '确认预付款',
                                 code: 'customs_exit_advance_payment',
                                 component: 'views/customs/exit/components/advance-payment/index.vue',
-                                buttonName: 'advance_payment',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '确认付款',
                                 code: 'customs_exit_payment',
                                 component: 'views/customs/exit/components/payment/index.vue',
-                                buttonName: 'payment',
-                                buttonType: 'primary',
                             },
                         ]
                     },
@@ -518,48 +453,36 @@ const appmenu = {
                                 title: '详情',
                                 code: 'customs_bonded_details',
                                 component: 'views/customs/bonded/components/details/index.vue',
-                                buttonName: 'details',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '上传发货单',
                                 code: 'customs_bonded_upload_bill',
                                 component: 'views/customs/bonded/components/upload-bill/index.vue',
-                                buttonName: 'upload_bill',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '下载',
                                 code: 'customs_bonded_download',
                                 component: 'views/customs/bonded/components/download/index.vue',
-                                buttonName: 'download',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '上传盖章单据',
                                 code: 'customs_bonded_upload_seal',
                                 component: 'views/customs/bonded/components/upload-seal/index.vue',
-                                buttonName: 'upload_seal',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '确认预付款',
                                 code: 'customs_bonded_advance_payment',
                                 component: 'views/customs/bonded/components/advance-payment/index.vue',
-                                buttonName: 'advance_payment',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '确认付款',
                                 code: 'customs_bonded_payment',
                                 component: 'views/customs/bonded/components/payment/index.vue',
-                                buttonName: 'payment',
-                                buttonType: 'primary',
                             },
                         ]
                     },
@@ -589,48 +512,38 @@ const appmenu = {
                                 title: '添加商品',
                                 code: 'warehousing_goods_add',
                                 component: 'views/warehousing/goods/components/edit/index.vue',
-                                buttonName: 'add',
-                                buttonType: 'primary',
+                                className: 'el-button--primary',
                             },
                             {
                                 authType: 3,
                                 title: '商品上架',
                                 code: 'warehousing_goods_sell',
                                 component: 'views/warehousing/goods/components/edit/index.vue',
-                                buttonName: 'sell',
-                                buttonType: 'primary',
+                                className: 'el-button--primary',
                             },
                             {
                                 authType: 3,
                                 title: '详情',
                                 code: 'warehousing_goods_details',
                                 component: 'views/warehousing/goods/components/details/index.vue',
-                                buttonName: 'details',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '上架',
                                 code: 'warehousing_goods_put',
                                 component: 'views/warehousing/goods/components/put/index.vue',
-                                buttonName: 'put',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '下架',
                                 code: 'warehousing_goods_pull',
                                 component: 'views/warehousing/goods/components/pull/index.vue',
-                                buttonName: 'pull',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '删除',
                                 code: 'warehousing_goods_delete',
                                 component: 'views/warehousing/goods/components/delete/index.vue',
-                                buttonName: 'delete',
-                                buttonType: 'danger',
                             },
                         ]
                     },
@@ -648,16 +561,13 @@ const appmenu = {
                                 title: '新增仓库',
                                 code: 'warehousing_warehouse_add',
                                 component: 'views/warehousing/warehouse/components/edit/index.vue',
-                                buttonName: 'add',
-                                buttonType: 'primary',
+                                className: 'el-button--primary',
                             },
                             {
                                 authType: 3,
                                 title: '修改',
                                 code: 'warehousing_warehouse_edit',
                                 component: 'views/warehousing/warehouse/components/edit/index.vue',
-                                buttonName: 'edit',
-                                buttonType: 'primary',
                             }
                         ]
                     },
@@ -687,32 +597,28 @@ const appmenu = {
                                 title: '签约',
                                 code: 'mine_profile_sign',
                                 component: 'views/mine/profile/components/sign/index.vue',
-                                buttonName: 'sign',
-                                buttonType: 'primary',
+                                className: 'el-button--primary',
                             },
                             {
                                 authType: 3,
                                 title: '解约',
                                 code: 'mine_profile_rescind',
                                 component: 'views/mine/profile/components/rescind/index.vue',
-                                buttonName: 'rescind',
-                                buttonType: 'primary',
+                                className: 'el-button--primary',
                             },
                             {
                                 authType: 3,
                                 title: '修改登录密码',
                                 code: 'mine_profile_loginpassword',
                                 component: 'views/mine/profile/components/password/index.vue',
-                                buttonName: 'loginPassword',
-                                buttonType: 'primary',
+                                className: 'el-button--primary',
                             },
                             {
                                 authType: 3,
                                 title: '修改资金密码',
                                 code: 'mine_profile_accountpassword',
                                 component: 'views/mine/profile/components/password/index.vue',
-                                buttonName: 'accountPassword',
-                                buttonType: 'primary',
+                                className: 'el-button--primary',
                                 hidden: true,
                             }
                         ]
@@ -731,24 +637,20 @@ const appmenu = {
                                 title: '入金申请',
                                 code: 'bank_deposit',
                                 component: 'views/mine/bank/components/deposit/index.vue',
-                                buttonName: 'deposit',
-                                buttonType: 'primary',
+                                className: 'el-button--primary',
                             },
                             {
                                 authType: 3,
                                 title: '出金申请',
                                 code: 'bank_withdraw',
                                 component: 'views/mine/bank/components/withdraw/index.vue',
-                                buttonName: 'withdraw',
-                                buttonType: 'primary',
+                                className: 'el-button--primary',
                             },
                             {
                                 authType: 3,
                                 title: '撤销',
                                 code: 'bank_cancel',
                                 component: 'views/mine/bank/components/cancel/index.vue',
-                                buttonName: 'cancel',
-                                buttonType: 'primary',
                             }
                         ]
                     },
@@ -766,8 +668,7 @@ const appmenu = {
                                 title: '新增地址',
                                 code: 'mine_address_add',
                                 component: 'views/mine/address/components/edit/index.vue',
-                                buttonName: 'add',
-                                buttonType: 'primary',
+                                className: 'el-button--primary',
 
                             },
                             {
@@ -775,24 +676,18 @@ const appmenu = {
                                 title: '修改',
                                 code: 'mine_address_edit',
                                 component: 'views/mine/address/components/edit/index.vue',
-                                buttonName: 'edit',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '默认',
                                 code: 'mine_address_default',
                                 component: 'views/mine/address/components/default/index.vue',
-                                buttonName: 'default',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '删除',
                                 code: 'mine_address_delete',
                                 component: 'views/mine/address/components/delete/index.vue',
-                                buttonName: 'delete',
-                                buttonType: 'danger',
                             },
                         ]
                     },
@@ -810,8 +705,7 @@ const appmenu = {
                                 title: '新增发票',
                                 code: 'mine_invoice_add',
                                 component: 'views/mine/invoice/components/edit/index.vue',
-                                buttonName: 'add',
-                                buttonType: 'primary',
+                                className: 'el-button--primary',
 
                             },
                             {
@@ -819,16 +713,12 @@ const appmenu = {
                                 title: '修改',
                                 code: 'mine_invoice_edit',
                                 component: 'views/mine/invoice/components/edit/index.vue',
-                                buttonName: 'edit',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '删除',
                                 code: 'mine_invoice_delete',
                                 component: 'views/mine/invoice/components/delete/index.vue',
-                                buttonName: 'delete',
-                                buttonType: 'danger',
                             }
                         ]
                     },
@@ -898,16 +788,12 @@ const appmenu = {
                                 title: '同意',
                                 code: 'bargain_buy_agree',
                                 component: 'views/bargain/buy/components/audit/index.vue',
-                                buttonName: 'agree',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '拒绝',
                                 code: 'bargain_buy_refuse',
                                 component: 'views/bargain/buy/components/audit/index.vue',
-                                buttonName: 'refuse',
-                                buttonType: 'primary',
                             }
                         ]
                     },
@@ -925,16 +811,12 @@ const appmenu = {
                                 title: '同意',
                                 code: 'bargain_sell_agree',
                                 component: 'views/bargain/sell/components/audit/index.vue',
-                                buttonName: 'agree',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '拒绝',
                                 code: 'bargain_sell_refuse',
                                 component: 'views/bargain/sell/components/audit/index.vue',
-                                buttonName: 'refuse',
-                                buttonType: 'primary',
                             }
                         ]
                     }
@@ -975,15 +857,14 @@ const appmenu = {
                                 title: '新增',
                                 code: 'system_menu_add',
                                 icon: 'Plus',
-                                buttonType: 'primary',
                                 component: 'views/system/menu/components/edit/index.vue',
+                                className: 'el-button--primary',
                             },
                             {
                                 authType: 3,
                                 title: '编辑',
                                 code: 'system_menu_edit',
                                 icon: 'Edit',
-                                buttonType: 'primary',
                                 component: 'views/system/menu/components/edit/index.vue',
                             },
                             {
@@ -991,7 +872,6 @@ const appmenu = {
                                 title: '删除',
                                 code: 'system_menu_delete',
                                 icon: 'Delete',
-                                buttonType: 'danger',
                             }
                         ]
                     },
@@ -1009,14 +889,13 @@ const appmenu = {
                                 title: '新增',
                                 code: 'system_role_add',
                                 icon: 'Plus',
-                                buttonType: 'primary',
+                                className: 'el-button--primary',
                             },
                             {
                                 authType: 3,
                                 title: '权限',
                                 code: 'system_role_auth',
                                 icon: 'Lock',
-                                buttonType: 'primary',
                                 component: 'views/system/role/components/auth/index.vue',
                             },
                             {
@@ -1024,14 +903,12 @@ const appmenu = {
                                 title: '编辑',
                                 code: 'system_role_edit',
                                 icon: 'Edit',
-                                buttonType: 'primary',
                             },
                             {
                                 authType: 3,
                                 title: '删除',
                                 code: 'system_role_delete',
                                 icon: 'Delete',
-                                buttonType: 'danger',
                             }
                         ]
                     },

+ 3 - 3
src/packages/pc/components/layouts/header/components/calculator/index.vue

@@ -23,15 +23,15 @@
                 </el-radio-group>
             </el-form-item>
             <el-form-item label="重量" prop="weight" style="width:50%">
-                <el-input type="number" placeholder="请输入" v-model.number="formData.weight">
+                <el-input type="number" placeholder="请输入" v-model="formData.weight">
                     <template #append>(克拉)</template>
                 </el-input>
             </el-form-item>
             <el-form-item label="汇率" prop="rate" style="width:50%">
-                <el-input type="number" placeholder="请输入" v-model.number="formData.rate" />
+                <el-input type="number" placeholder="请输入" v-model="formData.rate" />
             </el-form-item>
             <el-form-item label="折扣(%)" prop="discount" style="width:50%">
-                <el-input type="number" placeholder="请输入" v-model.number="formData.discount">
+                <el-input type="number" placeholder="请输入" v-model="formData.discount">
                     <template #prepend>
                         <el-select v-model="operator" style="width: 60px">
                             <el-option label="+" :value="1" />

+ 12 - 4
src/packages/pc/components/layouts/page/index.less

@@ -47,14 +47,22 @@
         overflow: hidden;
     }
 
-    /* teleport 为空时隐藏元素 */
-    &__wrapper &__teleport:empty {
-        display: none;
+    &__wrapper &__teleport {
+        position: absolute;
+        left: 0;
+        top: 0;
+        width: 100%;
+
+        /* teleport 为空时隐藏元素 */
+        &:empty {
+            display: none;
+        }
     }
 
     /* teleport 非空时隐藏兄弟元素 */
     &__wrapper &__teleport:not(:empty)+&__main {
-        display: none;
+        opacity: 0;
+        visibility: hidden;
     }
 
     .view-enter-from,

+ 9 - 1
src/packages/pc/components/modules/action-menu/index.ts

@@ -5,6 +5,7 @@ import { ActionMenu, ActionMenuOptions } from './interface'
 export function useActionMenu<T>(options: ActionMenuOptions = {}) {
     const { authCode, preventDefault = true, queryFn } = options
     const { componentMap, getAuthButtons } = useMenu(authCode)
+    const authButtons = getAuthButtons()
 
     // 当前激活的菜单
     const activeMenu = shallowRef<Partial<ActionMenu<T>>>({})
@@ -15,6 +16,13 @@ export function useActionMenu<T>(options: ActionMenuOptions = {}) {
         return componentMap.get(name)
     })
 
+    const getActionMenus = (...filtered: string[]) => {
+        if (filtered.length) {
+            return authButtons.filter((e) => filtered.includes(e.code))
+        }
+        return authButtons
+    }
+
     // 打开组件
     const openComponent = (e: ActionMenu<T>) => {
         if (preventDefault) {
@@ -37,7 +45,7 @@ export function useActionMenu<T>(options: ActionMenuOptions = {}) {
         componentMap,
         asyncComponent,
         activeMenu,
-        getAuthButtons,
+        getActionMenus,
         openComponent,
         closeComponent,
     }

+ 24 - 11
src/packages/pc/components/modules/action-menu/index.vue

@@ -14,17 +14,29 @@
                 </ul>
             </div>
         </teleport>
-        <el-dropdown trigger="click" class="app-action-menu__dropdown" v-else-if="type === 'dropdown'">
-            <el-button size="small" icon="MoreFilled" round />
-            <template #dropdown>
-                <el-dropdown-menu>
-                    <el-dropdown-item :class="item.className" v-for="(item, index) in actionMenus" :key="index"
-                        :icon="item.icon" @click.stop="onClick(item, index)">
-                        {{ item.label }}
-                    </el-dropdown-item>
-                </el-dropdown-menu>
-            </template>
-        </el-dropdown>
+        <div class="app-action-menu__dropdown" v-else-if="type === 'dropdown'">
+            <el-dropdown ref="dropdownRef" trigger="contextmenu" v-if="actionMenus.length > 1">
+                <el-button-group>
+                    <el-button size="small" round @click="onClick(actionMenus[0], 0)">{{
+                        actionMenus[0].label
+                    }}</el-button>
+                    <el-button size="small" icon="ArrowDownBold" round @click="dropdownRef.handleOpen()" />
+                </el-button-group>
+                <template #dropdown>
+                    <el-dropdown-menu>
+                        <template v-for="(item, index) in actionMenus" :key="index">
+                            <el-dropdown-item :class="item.className" :icon="item.icon"
+                                @click.stop="onClick(item, index)" v-if="index > 0">
+                                {{ item.label }}
+                            </el-dropdown-item>
+                        </template>
+                    </el-dropdown-menu>
+                </template>
+            </el-dropdown>
+            <el-button size="small" round @click="onClick(actionMenus[0], 0)" v-else-if="actionMenus.length">{{
+                actionMenus[0].label
+            }}</el-button>
+        </div>
         <div class="app-action-menu__btnbar" v-else>
             <template v-for="(item, index) in actionMenus" :key="index">
                 <el-button :class="item.className" :type="item.type" :disabled="item.disabled"
@@ -73,6 +85,7 @@ const props = defineProps({
 
 const emit = defineEmits(['click'])
 const contextmenuOptions = shallowRef(props.contextmenu)
+const dropdownRef = ref()
 const actionMenus = ref<ActionMenu[]>([])
 
 // 右键菜单坐标

+ 7 - 13
src/packages/pc/components/modules/auth-operation/index.vue

@@ -29,7 +29,7 @@
             </el-dropdown>
             <ul v-else>
                 <li v-for="(item, index) in dataList" :key="index">
-                    <el-button :class="item.code" :type="item.buttonType" :disabled="item.code === componentId"
+                    <el-button :class="item.className" :type="item.buttonType" :disabled="item.code === componentId"
                         @click="openComponent(item.code)" :link="linkButton">
                         <el-icon v-if="item.icon">
                             <component :is="item.icon" />
@@ -45,7 +45,7 @@
 </template>
 
 <script lang="ts" setup>
-import { onMounted, onUnmounted, onDeactivated, shallowRef, PropType, computed, watch } from 'vue'
+import { onMounted, onUnmounted, shallowRef, PropType, computed, watch } from 'vue'
 import { useMenu } from '@/hooks/menu'
 
 const emit = defineEmits(['click', 'closed'])
@@ -54,6 +54,8 @@ const props = defineProps({
     code: String,
     // 组件参数
     options: Object,
+    // 菜单列表
+    menus: Array as PropType<string[]>,
     // 操作类型
     type: {
         type: String as PropType<'button' | 'dropdown' | 'contextmenu'>,
@@ -73,10 +75,6 @@ const props = defineProps({
         type: Boolean,
         default: false,
     },
-    menus: {
-        type: Array as PropType<string[] | null>,
-        default: () => ([]),
-    },
 })
 
 const { componentMap, getAuthButtons } = useMenu(props.code);
@@ -88,13 +86,10 @@ const auth = shallowRef<Ermcp.UserMenu[]>([]);
 const dataList = computed(() => {
     const menus = props.menus
     if (menus) {
-        if (menus.length) {
-            return auth.value.filter((e) => menus.includes(e.code) || menus.includes(e.buttonName));
-        } else {
-            return auth.value;
-        }
+        return auth.value.filter((e) => menus.includes(e.code) || menus.includes(e.buttonName));
+    } else {
+        return auth.value;
     }
-    return []
 })
 
 // 右键菜单坐标
@@ -128,7 +123,6 @@ watch(() => props.contextmenu, (val) => contextmenuOption.value = val)
 
 onMounted(() => auth.value = getAuthButtons())
 onUnmounted(() => closeComponent())
-onDeactivated(() => closeComponent())
 </script>
 
 <style lang="less">

+ 8 - 6
src/packages/pc/views/bargain/buy/index.vue

@@ -5,7 +5,7 @@
             <app-filter :options="filterOptons" :loading="loading" />
         </template>
         <!-- 表格数据 -->
-        <app-table :data="dataList" v-model:columns="columns" :loading="loading">
+        <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
             <!-- 克拉单价 -->
             <template #priceper="{ row }">
                 {{ row.zscurrencytypedisplayunit + formatDecimal(row.priceper) }}
@@ -20,7 +20,7 @@
             </template>
             <!-- 操作 -->
             <template #operate="{ row }">
-                <app-auth-operation :menus="handleTableButtons(row)" :options="{ selectedRow: row }"
+                <app-auth-operation type="dropdown" :menus="handleOperateButtons(row)" :options="{ selectedRow: row }"
                     @closed="onRefresh" />
             </template>
             <template #footer>
@@ -37,20 +37,22 @@ import { formatDecimal } from '@/filters'
 import { useDataFilter } from '@/hooks/datatable'
 import { useBuyBargain } from '@/business/bargain'
 import { getApplyStatusName, ApplyStatus } from '@/constants/order'
+import { useComposeTable } from '@pc/components/base/table'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppPagination from '@pc/components/base/pagination/index.vue'
 import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 import AppFilter from '@pc/components/base/table-filter/index.vue'
 
-const { loading, dataList, total, pageIndex, pageSize, columns, getBargainOrderList } = useBuyBargain()
+const { loading, dataList, total, pageIndex, pageSize, getBargainOrderList } = useBuyBargain()
+const { tableColumns } = useComposeTable<Ermcp.MyBargainApplyRsp>({ rowKey: 'wrtradeorderid', columnKey: 'bargain_buy' })
 const { filterOptons, getQueryParams } = useDataFilter<Ermcp.MyBargainApplyReq>()
 
 // “待确认”有操作 ”同意“、”拒绝“
-const handleTableButtons = (row: Ermcp.MyBargainApplyRsp) => {
+const handleOperateButtons = (row: Ermcp.MyBargainApplyRsp) => {
     if (row.applystatus === ApplyStatus.Pending) {
-        return ['agree', 'refuse']
+        return ['bargain_buy_agree', 'bargain_buy_refuse']
     }
-    return null
+    return []
 }
 
 const onSearch = (clear = false) => {

+ 8 - 6
src/packages/pc/views/bargain/sell/index.vue

@@ -5,7 +5,7 @@
             <app-filter :options="filterOptons" :loading="loading" />
         </template>
         <!-- 表格数据 -->
-        <app-table :data="dataList" v-model:columns="columns" :loading="loading">
+        <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
             <!-- 卖方出价 -->
             <template #applyprice="{ row }">
                 {{ row.zscurrencytypedisplayunit + formatDecimal(row.applyprice) }}
@@ -16,7 +16,7 @@
             </template>
             <!-- 操作 -->
             <template #operate="{ row }">
-                <app-auth-operation :menus="handleTableButtons(row)" :options="{ selectedRow: row }"
+                <app-auth-operation type="dropdown" :menus="handleOperateButtons(row)" :options="{ selectedRow: row }"
                     @closed="onRefresh" />
             </template>
             <template #footer>
@@ -33,20 +33,22 @@ import { formatDecimal } from '@/filters'
 import { useDataFilter } from '@/hooks/datatable'
 import { useSellBargain } from '@/business/bargain'
 import { getApplyStatusName, ApplyStatus } from '@/constants/order'
+import { useComposeTable } from '@pc/components/base/table'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppPagination from '@pc/components/base/pagination/index.vue'
 import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 import AppFilter from '@pc/components/base/table-filter/index.vue'
 
-const { loading, dataList, total, pageIndex, pageSize, columns, getDelistingOrderList } = useSellBargain()
+const { loading, dataList, total, pageIndex, pageSize, getDelistingOrderList } = useSellBargain()
+const { tableColumns } = useComposeTable<Ermcp.MyDelistingApplyRsp>({ rowKey: 'buywrtradeorderid', columnKey: 'bargain_sell' })
 const { filterOptons, getQueryParams } = useDataFilter<Ermcp.MyDelistingApplyReq>()
 
 // “待确认”有操作 ”同意“、”拒绝“
-const handleTableButtons = (row: Ermcp.MyDelistingApplyRsp) => {
+const handleOperateButtons = (row: Ermcp.MyDelistingApplyRsp) => {
     if (row.applystatus === ApplyStatus.Pending) {
-        return ['agree', 'refuse']
+        return ['bargain_sell_agree', 'bargain_sell_refuse']
     }
-    return null
+    return []
 }
 
 const onSearch = (clear = false) => {

+ 4 - 2
src/packages/pc/views/customs/bonded/components/payment/index.vue

@@ -10,9 +10,11 @@
             <el-descriptions-item label="其它费用">{{ details.otherfee }}</el-descriptions-item>
             <el-descriptions-item label="总应收款">{{ details.settleamount }}</el-descriptions-item>
             <el-descriptions-item label="预收款">{{ details.advanceamount }}</el-descriptions-item>
-            <el-descriptions-item label="应收\退款">{{ arrearage }}</el-descriptions-item>
+            <el-descriptions-item label="应收\退款">{{ arrearage.toFixed(2) }}</el-descriptions-item>
             <el-descriptions-item label="结算费用详情文件">请下载文件“付款通知书(结算费用).pdf”</el-descriptions-item>
-            <el-descriptions-item label="账户可用余额" v-if="arrearage >= 0">{{ avaiableMoney }}</el-descriptions-item>
+            <el-descriptions-item label="账户可用余额" v-if="arrearage >= 0">{{
+                avaiableMoney.toFixed(2)
+            }}</el-descriptions-item>
         </el-descriptions>
         <template #footer>
             <el-button @click="onCancel(false)" plain>取消</el-button>

+ 18 - 7
src/packages/pc/views/customs/bonded/index.vue

@@ -5,10 +5,10 @@
             <app-filter :options="filterOptons" />
         </template>
         <!-- 表格数据 -->
-        <app-table :data="dataList" v-model:columns="columns" :loading="loading">
+        <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
             <!-- 操作 -->
             <template #operate="{ row }">
-                <app-auth-operation :menus="handleOperateButtons(row)" :options="{ selectedRow: row }"
+                <app-auth-operation type="dropdown" :menus="handleOperateButtons(row)" :options="{ selectedRow: row }"
                     @closed="onRefresh" />
             </template>
             <template #footer>
@@ -24,13 +24,15 @@ import { ElMessage } from 'element-plus'
 import { useDataFilter } from '@/hooks/datatable'
 import { GZBSStatus } from '@/constants/customs'
 import { useBSFWOrderList } from '@/business/customs/bonded'
+import { useComposeTable } from '@pc/components/base/table'
 import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppFilter from '@pc/components/base/table-filter/index.vue'
 import AppPagination from '@pc/components/base/pagination/index.vue'
 
-const { loading, dataList, columns, total, pageIndex, pageSize, getBSFWOrderList } = useBSFWOrderList()
-const { filterOptons } = useDataFilter<Ermcp.GZBSFWOrderRsp>()
+const { loading, dataList, total, pageIndex, pageSize, getBSFWOrderList } = useBSFWOrderList()
+const { tableColumns } = useComposeTable<Ermcp.GZBSFWOrderRsp>({ rowKey: 'orderid', columnKey: 'customs_bsfw' })
+const { filterOptons, getQueryParams } = useDataFilter<Ermcp.GZBSFWOrderRsp>()
 
 const handleOperateButtons = (row: Ermcp.GZBSFWOrderRsp) => {
     const buttons = ['customs_bonded_details', 'customs_bonded_download']
@@ -55,8 +57,17 @@ const handleOperateButtons = (row: Ermcp.GZBSFWOrderRsp) => {
     return buttons
 }
 
+const onSearch = (clear = false) => {
+    getQueryParams((qs) => {
+        pageIndex.value = 1
+        getBSFWOrderList(qs)
+    }, clear)
+}
+
 const onRefresh = () => {
-    getBSFWOrderList().catch((err) => ElMessage.error(err))
+    getQueryParams((qs) => {
+        getBSFWOrderList(qs).catch((err) => ElMessage.error(err))
+    })
 }
 
 filterOptons.selectList = [
@@ -68,12 +79,12 @@ filterOptons.selectList = [
             { label: '进行中', value: 2 },
             { label: '已结束', value: 3 },
         ],
-        locked: true,
     },
 ]
 
 filterOptons.buttonList = [
-    { lable: '查询', className: 'el-button--primary', onClick: () => onRefresh() }
+    { lable: '重置', onClick: () => onSearch(true) },
+    { lable: '查询', className: 'el-button--primary', onClick: () => onSearch() }
 ]
 
 onRefresh()

+ 3 - 2
src/packages/pc/views/customs/exit/components/details/index.vue

@@ -11,7 +11,8 @@
         </div>
         <el-descriptions title="委托方信息" :column="2" border>
             <el-descriptions-item width="100" label="单据编号">{{ selectedRow.orderidstr }}</el-descriptions-item>
-            <el-descriptions-item label="送检账户" v-if="selectedRow.gzcjaccounttype === 1">{{ selectedRow.gzcjaccount
+            <el-descriptions-item label="送检账户" v-if="selectedRow.gzcjaccounttype === 1">{{
+                selectedRow.gzcjaccount
             }}</el-descriptions-item>
             <el-descriptions-item label="公司名称(中文)">{{ selectedRow.companynamecn }}</el-descriptions-item>
             <el-descriptions-item label="公司名称(英文)">{{ selectedRow.companynameen }}</el-descriptions-item>
@@ -23,7 +24,7 @@
             <el-descriptions-item label="邮箱">{{ selectedRow.email }}</el-descriptions-item>
             <el-descriptions-item label="货物品类">{{ selectedRow.gzcjcategorytypedisplay }}</el-descriptions-item>
             <el-descriptions-item label="成品钻石加工国">{{ selectedRow.processingcountry }}</el-descriptions-item>
-            <el-descriptions-item label="天然钻石毛坯原产地">{{ selectedRow.origincountry }}</el-descriptions-item>
+            <el-descriptions-item label="天然钻石毛坯原产地">{{ selectedRow.zsorigin }}</el-descriptions-item>
             <el-descriptions-item label="完成检测后收货方式">{{ selectedRow.gzcjdeliverytypedisplay }}</el-descriptions-item>
         </el-descriptions>
         <h3 class="el-descriptions__header">

+ 2 - 2
src/packages/pc/views/customs/exit/components/edit/detail-edit/index.vue

@@ -11,10 +11,10 @@
                 </el-select>
             </el-form-item>
             <el-form-item label="重量(ct)" prop="Weight">
-                <el-input type="number" placeholder="请输入" v-model.number="formItem.Weight" />
+                <el-input type="number" placeholder="请输入" v-model="formItem.Weight" />
             </el-form-item>
             <el-form-item label="参考货值(USD)" prop="Amount">
-                <el-input type="number" placeholder="请输入" v-model.number="formItem.Amount" />
+                <el-input type="number" placeholder="请输入" v-model="formItem.Amount" />
             </el-form-item>
             <template v-if="formData.GZCJAccountType === 2">
                 <el-form-item label="刻印服务" prop="GZCJMarkType">

+ 4 - 2
src/packages/pc/views/customs/exit/components/payment/index.vue

@@ -11,9 +11,11 @@
             <el-descriptions-item label="其它费用">{{ details.otherfee }}</el-descriptions-item>
             <el-descriptions-item label="总共">{{ details.settleamount }}</el-descriptions-item>
             <el-descriptions-item label="预收款">{{ details.advanceamount }}</el-descriptions-item>
-            <el-descriptions-item label="应收\退款">{{ arrearage }}</el-descriptions-item>
+            <el-descriptions-item label="应收\退款">{{ arrearage.toFixed(2) }}</el-descriptions-item>
             <el-descriptions-item label="结算费用详情文件">请下载文件“付款通知书(结算费用).pdf”</el-descriptions-item>
-            <el-descriptions-item label="账户可用余额" v-if="arrearage >= 0">{{ avaiableMoney }}</el-descriptions-item>
+            <el-descriptions-item label="账户可用余额" v-if="arrearage >= 0">{{
+                avaiableMoney.toFixed(2)
+            }}</el-descriptions-item>
         </el-descriptions>
         <template #footer>
             <el-button @click="onCancel(false)" plain>取消</el-button>

+ 19 - 8
src/packages/pc/views/customs/exit/index.vue

@@ -5,13 +5,13 @@
             <app-filter :options="filterOptons" />
         </template>
         <!-- 表格数据 -->
-        <app-table :data="dataList" v-model:columns="columns" :loading="loading">
+        <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
             <template #header>
-                <app-auth-operation :menus="['customs_exit_add']" />
+                <app-auth-operation :menus="['customs_exit_add']" @closed="onRefresh" />
             </template>
             <!-- 操作 -->
             <template #operate="{ row }">
-                <app-auth-operation :menus="handleOperateButtons(row)" :options="{ selectedRow: row }"
+                <app-auth-operation type="dropdown" :menus="handleOperateButtons(row)" :options="{ selectedRow: row }"
                     @closed="onRefresh" />
             </template>
             <template #footer>
@@ -27,13 +27,15 @@ import { ElMessage } from 'element-plus'
 import { useDataFilter } from '@/hooks/datatable'
 import { GZCJStatus } from '@/constants/customs'
 import { useCJJCOrderList } from '@/business/customs/exit'
+import { useComposeTable } from '@pc/components/base/table'
 import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppFilter from '@pc/components/base/table-filter/index.vue'
 import AppPagination from '@pc/components/base/pagination/index.vue'
 
-const { loading, dataList, columns, total, pageIndex, pageSize, getGZCJJCOrderList } = useCJJCOrderList()
-const { filterOptons } = useDataFilter<Ermcp.GZCJJCOrderRsp>()
+const { loading, dataList, total, pageIndex, pageSize, getGZCJJCOrderList } = useCJJCOrderList()
+const { tableColumns } = useComposeTable<Ermcp.GZCJJCOrderRsp>({ rowKey: 'orderidstr', columnKey: 'customs_cjjc' })
+const { filterOptons, getQueryParams } = useDataFilter<Ermcp.GZCJJCOrderRsp>()
 
 const handleOperateButtons = (row: Ermcp.GZCJJCOrderRsp) => {
     switch (row.gzcjstatus) {
@@ -61,8 +63,17 @@ const handleOperateButtons = (row: Ermcp.GZCJJCOrderRsp) => {
     }
 }
 
+const onSearch = (clear = false) => {
+    getQueryParams((qs) => {
+        pageIndex.value = 1
+        getGZCJJCOrderList(qs)
+    }, clear)
+}
+
 const onRefresh = () => {
-    getGZCJJCOrderList().catch((err) => ElMessage.error(err))
+    getQueryParams((qs) => {
+        getGZCJJCOrderList(qs).catch((err) => ElMessage.error(err))
+    })
 }
 
 filterOptons.selectList = [
@@ -74,12 +85,12 @@ filterOptons.selectList = [
             { label: '进行中', value: 2 },
             { label: '已结束', value: 3 },
         ],
-        locked: true,
     },
 ]
 
 filterOptons.buttonList = [
-    { lable: '查询', className: 'el-button--primary', onClick: () => onRefresh() }
+    { lable: '重置', onClick: () => onSearch(true) },
+    { lable: '查询', className: 'el-button--primary', onClick: () => onSearch() }
 ]
 
 onRefresh()

+ 5 - 3
src/packages/pc/views/favorite/main/index.vue

@@ -4,7 +4,7 @@
         <template #header>
             <app-filter :options="filterOptons" />
         </template>
-        <app-table :data="dataList" v-model:columns="columns" :loading="loading">
+        <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
             <!-- 我的出价 -->
             <template #price="{ row }">
                 {{ row.zscurrencytypedisplayunit + formatDecimal(row.price) }}
@@ -15,7 +15,7 @@
             </template>
             <!-- 操作 -->
             <template #operate="{ row }">
-                <app-auth-operation :options="{ selectedRow: row }" @closed="getFavoriteList" />
+                <app-auth-operation type="dropdown" :options="{ selectedRow: row }" @closed="getFavoriteList" />
             </template>
             <template #footer>
                 <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex" />
@@ -29,12 +29,14 @@ import { formatDecimal } from '@/filters'
 import { useDataFilter } from '@/hooks/datatable'
 import { useFavorite } from '@/business/favorite'
 import { Category } from '@/constants/diamond'
+import { useComposeTable } from '@pc/components/base/table'
 import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppPagination from '@pc/components/base/pagination/index.vue'
 import AppFilter from '@pc/components/base/table-filter/index.vue'
 
-const { loading, dataList, columns, filters, total, pageIndex, pageSize, getFavoriteList } = useFavorite()
+const { loading, dataList, filters, total, pageIndex, pageSize, getFavoriteList } = useFavorite()
+const { tableColumns } = useComposeTable<Ermcp.MyFavoriteRsp>({ rowKey: 'wrtradeorderid', columnKey: 'favorite' })
 const { filterOptons, getFilterParams } = useDataFilter<Ermcp.MyFavoriteRsp>()
 
 const onSearch = (clear = false) => {

+ 9 - 6
src/packages/pc/views/mine/address/index.vue

@@ -1,9 +1,9 @@
 <!-- 会员中心-我的地址 -->
 <template>
     <app-view>
-        <app-table :data="dataList" v-model:columns="columns" :loading="loading">
+        <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
             <template #header>
-                <app-auth-operation :menus="['add']" @closed="getUserAddressList" />
+                <app-auth-operation :menus="['mine_address_add']" @closed="getUserAddressList" />
             </template>
             <!-- 证件类型 -->
             <template #cardtypeid="{ value }">
@@ -15,12 +15,13 @@
             </template>
             <!-- 是否默认 -->
             <template #isdefault="{ value }">
-                {{ value ? '是' : '否' }}
+                {{ value? '是': '否' }}
             </template>
             <!-- 操作 -->
             <template #operate="{ row }">
-                <app-auth-operation :menus="['edit', 'default', 'delete']" :options="{ selectedRow: row }"
-                    @closed="getUserAddressList" />
+                <app-auth-operation type="dropdown"
+                    :menus="['mine_address_edit', 'mine_address_default', 'mine_address_delete']"
+                    :options="{ selectedRow: row }" @closed="getUserAddressList" />
             </template>
             <template #footer>
                 <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
@@ -34,11 +35,13 @@
 import { ElMessage } from 'element-plus'
 import { useAddress } from '@/business/user'
 import { getCertificateTypeName } from '@/constants/certificate'
+import { useComposeTable } from '@pc/components/base/table'
 import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppPagination from '@pc/components/base/pagination/index.vue'
 
-const { loading, dataList, columns, total, pageIndex, pageSize, getUserAddressList } = useAddress()
+const { loading, dataList, total, pageIndex, pageSize, getUserAddressList } = useAddress()
+const { tableColumns } = useComposeTable<Ermcp.UserReceiveInfoRsp>({ rowKey: 'autoid', columnKey: 'mine_address' })
 
 getUserAddressList().catch((err) => ElMessage.error(err))
 </script>

+ 1 - 1
src/packages/pc/views/mine/bank/components/deposit/index.vue

@@ -9,7 +9,7 @@
                 <span>{{ accountInfo?.currentbalance.toFixed(2) }}</span>
             </el-form-item>
             <el-form-item label="入金金额" prop="Amount">
-                <el-input type="number" placeholder="请输入" v-model.number="formData.Amount" />
+                <el-input type="number" placeholder="请输入" v-model="formData.Amount" />
             </el-form-item>
             <!-- <el-form-item label="金额大写">
                 <span>壹万元</span>

+ 1 - 1
src/packages/pc/views/mine/bank/components/withdraw/index.vue

@@ -9,7 +9,7 @@
                 <span>{{ accountInfo?.currentbalance.toFixed(2) }}</span>
             </el-form-item>
             <el-form-item label="出金金额" prop="Amount">
-                <el-input type="number" placeholder="请输入" v-model.number="formData.Amount" />
+                <el-input type="number" placeholder="请输入" v-model="formData.Amount" />
             </el-form-item>
             <!-- <el-form-item label="金额大写">
                 <span>壹万元</span>

+ 7 - 4
src/packages/pc/views/mine/bank/index.vue

@@ -4,9 +4,9 @@
         <template #header>
             <app-filter :options="filterOptons" />
         </template>
-        <app-table :data="dataList" v-model:columns="columns" :loading="loading">
+        <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
             <template #header>
-                <app-auth-operation :menus="['deposit', 'withdraw']" @closed="onRefresh" />
+                <app-auth-operation :menus="['bank_deposit', 'bank_withdraw']" @closed="onRefresh" />
             </template>
             <!-- 申请状态 -->
             <template #applystatus="{ value }">
@@ -18,7 +18,8 @@
             </template>
             <!-- 操作 -->
             <template #operate="{ row }">
-                <app-auth-operation :menus="['cancel']" :options="{ selectedRow: row }" @closed="onRefresh" />
+                <app-auth-operation type="dropdown" :menus="['bank_cancel']" :options="{ selectedRow: row }"
+                    @closed="onRefresh" />
             </template>
         </app-table>
     </app-view>
@@ -29,11 +30,13 @@ import { ElMessage } from 'element-plus'
 import { useDataFilter } from '@/hooks/datatable'
 import { useAccountInOut } from '@/business/bank'
 import { getApplyStatusName, getExecuteTypeName } from '@/constants/bank'
+import { useComposeTable } from '@pc/components/base/table'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppFilter from '@pc/components/base/table-filter/index.vue'
 import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 
-const { dataList, columns, loading, getAccountInOutApply } = useAccountInOut()
+const { dataList, loading, getAccountInOutApply } = useAccountInOut()
+const { tableColumns } = useComposeTable<Ermcp.AccountOutInApplyRsp>({ rowKey: 'bankticket', columnKey: 'mine_capital' })
 const { filterOptons, getQueryParams } = useDataFilter<Ermcp.AccountInOutApplyReq>()
 
 const onSearch = (clear = false) => {

+ 7 - 5
src/packages/pc/views/mine/invoice/index.vue

@@ -1,17 +1,17 @@
 <!-- 会员中心-我的发票 -->
 <template>
     <app-view>
-        <app-table :data="dataList" v-model:columns="columns" :loading="loading">
+        <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
             <template #header>
-                <app-auth-operation :menus="['add']" @closed="getUserInvoiceList" />
+                <app-auth-operation :menus="['mine_invoice_add']" @closed="getUserInvoiceList" />
             </template>
             <!-- 发票类型 -->
             <template #receipttype="{ value }">
                 {{ getReceiptTypeName(value) }}
             </template>
             <template #operate="{ row }">
-                <app-auth-operation :menus="['edit', 'delete']" :options="{ selectedRow: row }"
-                    @closed="getUserInvoiceList" />
+                <app-auth-operation type="dropdown" :menus="['mine_invoice_edit', 'mine_invoice_delete']"
+                    :options="{ selectedRow: row }" @closed="getUserInvoiceList" />
             </template>
             <template #footer>
                 <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
@@ -25,11 +25,13 @@
 import { ElMessage } from 'element-plus'
 import { useInvoice } from '@/business/user'
 import { getReceiptTypeName } from '@/constants/receipt'
+import { useComposeTable } from '@pc/components/base/table'
 import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppPagination from '@pc/components/base/pagination/index.vue'
 
-const { loading, dataList, columns, total, pageIndex, pageSize, getUserInvoiceList } = useInvoice()
+const { loading, dataList, total, pageIndex, pageSize, getUserInvoiceList } = useInvoice()
+const { tableColumns } = useComposeTable<Ermcp.WrUserReceiptInfoRsp>({ rowKey: 'autoid', columnKey: 'mine_invoice' })
 
 getUserInvoiceList().catch((err) => ElMessage.error(err))
 </script>

+ 6 - 5
src/packages/pc/views/mine/profile/index.vue

@@ -25,7 +25,8 @@
             <template v-if="bankInfo">
                 <el-descriptions-item label="托管银行">{{ bankInfo.cusbankname }}</el-descriptions-item>
                 <el-descriptions-item label="开户银行">{{ bankInfo.bankname }}</el-descriptions-item>
-                <el-descriptions-item label="证件类型">{{ bankInfo.cardtype ?
+                <el-descriptions-item label="证件类型">{{
+                    bankInfo.cardtype ?
                         getCertificateTypeName(Number(bankInfo.cardtype)) : handleNoneValue('')
                 }}
                 </el-descriptions-item>
@@ -55,23 +56,23 @@ const { accountInfo, avaiableMoney, freezeMargin } = useAccountStore()
 const { loading, loginInfo, userInfo, bankInfo, getBankAccountSign } = useAccount()
 
 const handleTableButtons = computed(() => {
-    const buttons = ['loginPassword', 'accountPassword']
+    const buttons = ['mine_profile_loginpassword', 'mine_profile_accountpassword']
     if (!loading.value) {
         if (bankInfo.value) {
             switch (bankInfo.value.signstatus) {
                 case SignStatus.Signed: {
-                    buttons.push('rescind')
+                    buttons.push('mine_profile_rescind')
                     break
                 }
                 case SignStatus.Unsigned:
                 case SignStatus.Rescinded:
                 case SignStatus.Refuse: {
-                    buttons.push('sign')
+                    buttons.push('mine_profile_sign')
                     break
                 }
             }
         } else {
-            buttons.push('sign')
+            buttons.push('mine_profile_sign')
         }
     }
     return buttons

+ 1 - 1
src/packages/pc/views/order/main/components/delay/index.vue

@@ -9,7 +9,7 @@
                 <span>{{ getStepTypeName(selectedRow.steptypeid) }}</span>
             </el-form-item>
             <el-form-item label="申请延期天数" prop="delaydays">
-                <el-input type="number" placeholder="请输入" v-model.number="formData.delaydays" />
+                <el-input type="number" placeholder="请输入" v-model="formData.delaydays" />
             </el-form-item>
             <el-form-item label="备注" prop="applyremark">
                 <el-input type="textarea" :rows="3" v-model="formData.applyremark" />

+ 9 - 7
src/packages/pc/views/order/main/index.vue

@@ -11,7 +11,7 @@
                 </template>
             </app-filter>
         </template>
-        <app-table :data="dataList" v-model:columns="columns" :loading="loading">
+        <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
             <!-- 已付金额 -->
             <template #paidamount="{ row }">
                 {{ row.buyorsell === BuyOrSell.Buy ? row.buypaidamount : row.sellreceivedamount }}
@@ -30,7 +30,7 @@
             </template>
             <!-- 操作 -->
             <template #operate="{ row }">
-                <app-auth-operation :menus="handleTableButtons(row)" :options="{ selectedRow: row }"
+                <app-auth-operation type="dropdown" :menus="handleOperateButtons(row)" :options="{ selectedRow: row }"
                     @closed="onRefresh" />
             </template>
             <template #footer>
@@ -47,6 +47,7 @@ import { useRoute } from 'vue-router'
 import { useDataFilter } from '@/hooks/datatable'
 import { BuyOrSell, StepType, getStepTypeName, getPerformanceStatusName } from '@/constants/order'
 import { usePerformance } from '@/business/order'
+import { useComposeTable } from '@pc/components/base/table'
 import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppPagination from '@pc/components/base/pagination/index.vue'
@@ -65,10 +66,11 @@ const buyorsell = (() => {
     }
 })()
 
-const { loading, dataList, columns, total, pageIndex, pageSize, filterData, getPerformanceList } = usePerformance(buyorsell)
+const { loading, dataList, total, pageIndex, pageSize, filterData, getPerformanceList } = usePerformance(buyorsell)
+const { tableColumns } = useComposeTable<Ermcp.MyPerformancRsp>({ rowKey: 'performanceplanid', columnKey: 'order' })
 const { filterOptons, getQueryParams } = useDataFilter<Ermcp.MyPerformancReq>()
 
-columns.value.forEach((e) => {
+tableColumns.value.forEach((e) => {
     if (e.prop === 'paidamount') {
         if (buyorsell === BuyOrSell.Buy) {
             e.label = '已付金额'
@@ -78,11 +80,11 @@ columns.value.forEach((e) => {
     }
 })
 
-const handleTableButtons = (item: Ermcp.MyPerformancRsp) => {
+const handleOperateButtons = (item: Ermcp.MyPerformancRsp) => {
     if ([StepType.Payment, StepType.Pickup, StepType.ConfirmGoods, StepType.ConfirmInvoice].includes(item.steptypeid)) {
-        return ['details', 'manual', 'delay', 'contracted', 'edit']
+        return undefined
     }
-    return ['details', 'contracted', 'edit']
+    return ['order_buy_details', 'order_buy_contracted', 'order_buy_edit', 'order_sell_details', 'order_sell_contracted', 'order_sell_edit']
 }
 
 const onSearch = (clear = false) => {

+ 8 - 6
src/packages/pc/views/search/diamond/index.vue

@@ -50,7 +50,7 @@
                 </el-form-item>
             </el-form>
         </template>
-        <app-table :data="dataList" v-model:columns="columns" :show-toolbar="false" :loading="loading">
+        <app-table :data="dataList" v-model:columns="tableColumns" :show-toolbar="false" :loading="loading">
             <!-- 价格 -->
             <template #price="{ row }">
                 {{ row.zscurrencytypedisplayunit + formatDecimal(row.price) }}
@@ -61,7 +61,7 @@
             </template>
             <!-- 操作 -->
             <template #operate="{ row }">
-                <app-auth-operation :menus="handleTableButtons(row)" :options="{ selectedRow: row }"
+                <app-auth-operation type="dropdown" :menus="handleOperateButtons(row)" :options="{ selectedRow: row }"
                     @closed="getSellOrderList" />
             </template>
             <template #footer>
@@ -80,6 +80,7 @@ import { formatDecimal } from '@/filters'
 import { useLoginStore, useFavoriteStore } from '@/stores'
 import { useSearch } from '@/business/search'
 import { Category } from '@/constants/diamond'
+import { useComposeTable } from '@pc/components/base/table'
 import AppMultiple from '@pc/components/base/multiple/index.vue'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
@@ -87,7 +88,8 @@ import AppPagination from '@pc/components/base/pagination/index.vue'
 
 const { getUserId } = useLoginStore()
 const { hasFavorite } = useFavoriteStore()
-const { loading, dataList, columns, total, pageIndex, pageSize, formData, enums, getSellOrderList, onSearch, onReset } = useSearch(Category.Diamond)
+const { loading, dataList, total, pageIndex, pageSize, formData, enums, getSellOrderList, onSearch, onReset } = useSearch(Category.Diamond)
+const { tableColumns } = useComposeTable<Ermcp.SellOrderSearchRsp>({ rowKey: 'wrtradeorderid', columnKey: 'listing_sellorder' })
 const formRef = ref<FormInstance>()
 
 const formRules: FormRules = {
@@ -112,11 +114,11 @@ const formRules: FormRules = {
 }
 
 // 未收藏的卖委托有收藏按钮
-const handleTableButtons = (row: Ermcp.SellOrderRsp) => {
+const handleOperateButtons = (row: Ermcp.SellOrderSearchRsp) => {
     if (hasFavorite(row.goodsno) || row.userid === getUserId()) {
-        return ['details']
+        return ['search_diamond_details']
     }
-    return ['details', 'favorite']
+    return ['search_diamond_details', 'search_diamond_favorite']
 }
 
 getSellOrderList().catch((err) => ElMessage.error(err))

+ 8 - 6
src/packages/pc/views/search/fancy/index.vue

@@ -47,7 +47,7 @@
                 </el-form-item>
             </el-form>
         </template>
-        <app-table :data="dataList" v-model:columns="columns" :show-toolbar="false" :loading="loading">
+        <app-table :data="dataList" v-model:columns="tableColumns" :show-toolbar="false" :loading="loading">
             <!-- 价格 -->
             <template #price="{ row }">
                 {{ row.zscurrencytypedisplayunit + formatDecimal(row.price) }}
@@ -58,7 +58,7 @@
             </template>
             <!-- 操作 -->
             <template #operate="{ row }">
-                <app-auth-operation :menus="handleTableButtons(row)" :options="{ selectedRow: row }"
+                <app-auth-operation type="dropdown" :menus="handleOperateButtons(row)" :options="{ selectedRow: row }"
                     @closed="getSellOrderList" />
             </template>
             <template #footer>
@@ -76,6 +76,7 @@ import { formatDecimal } from '@/filters'
 import { useLoginStore, useFavoriteStore } from '@/stores'
 import { useSearch } from '@/business/search'
 import { Category } from '@/constants/diamond'
+import { useComposeTable } from '@pc/components/base/table'
 import AppMultiple from '@pc/components/base/multiple/index.vue'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
@@ -83,7 +84,8 @@ import AppPagination from '@pc/components/base/pagination/index.vue'
 
 const { getUserId } = useLoginStore()
 const { hasFavorite } = useFavoriteStore()
-const { loading, dataList, columns, total, pageIndex, pageSize, formData, enums, getSellOrderList, onSearch, onReset } = useSearch(Category.Fancy)
+const { loading, dataList, total, pageIndex, pageSize, formData, enums, getSellOrderList, onSearch, onReset } = useSearch(Category.Fancy)
+const { tableColumns } = useComposeTable<Ermcp.SellOrderSearchRsp>({ rowKey: 'wrtradeorderid', columnKey: 'listing_sellorder' })
 const formRef = ref<FormInstance>()
 
 const formRules: FormRules = {
@@ -108,11 +110,11 @@ const formRules: FormRules = {
 }
 
 // 未收藏的卖委托有收藏按钮
-const handleTableButtons = (row: Ermcp.SellOrderRsp) => {
+const handleOperateButtons = (row: Ermcp.SellOrderSearchRsp) => {
     if (hasFavorite(row.goodsno) || row.userid === getUserId()) {
-        return ['details']
+        return ['search_fancy_details']
     }
-    return ['details', 'favorite']
+    return ['search_fancy_details', 'search_fancy_favorite']
 }
 
 getSellOrderList()

+ 33 - 5
src/packages/pc/views/trade/bargain/index.vue

@@ -24,7 +24,7 @@
             </template>
             <!-- 操作 -->
             <template #operate="{ row }">
-                <app-auth-operation :menus="handleTableButtons(row)" :options="{ selectedRow: row }"
+                <app-auth-operation type="dropdown" :menus="handleOperateButtons(row)" :options="{ selectedRow: row }"
                     @closed="onRefresh" />
             </template>
             <template #footer>
@@ -36,37 +36,65 @@
 </template>
 
 <script lang="ts" setup>
+import { shallowRef } from 'vue'
 import { ElMessage } from 'element-plus'
 import { formatDecimal } from '@/filters'
 import { useDataFilter } from '@/hooks/datatable'
 import { BuyOrSell } from '@/constants/order'
 import { useBargain } from '@/business/bargain'
 import { getApplyStatusName, ApplyStatus } from '@/constants/order'
+import { useComposeTable } from '@pc/components/base/table'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppPagination from '@pc/components/base/pagination/index.vue'
 import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 import AppFilter from '@pc/components/base/table-filter/index.vue'
 
-const { loading, dataList, total, pageIndex, pageSize, columns, getBargainOrderList } = useBargain()
+const { loading, dataList, total, pageIndex, pageSize, getBargainOrderList } = useBargain()
 const { filterOptons, getQueryParams } = useDataFilter<(Ermcp.MyBargainApplyReq | Ermcp.MyDelistingApplyReq) & { buyorsell: number }>()
 
+// 求购表格列
+const { tableColumns: buyColumns } = useComposeTable<Ermcp.MyBargainApplyRsp>({ rowKey: 'wrtradeorderid', columnKey: 'listing_bargain_buy' })
+// 出售表格列
+const { tableColumns: sellColumns } = useComposeTable<Ermcp.MyDelistingApplyRsp>({ rowKey: 'ladingbillid', columnKey: 'listing_bargain_sell' })
+// 默认表格列
+const columns = shallowRef<Ermcp.TableColumn[]>([])
+
 // “待确认”状态 有撤销按钮
-const handleTableButtons = (row: Ermcp.MyBargainApplyRsp | Ermcp.MyDelistingApplyRsp) => {
+const handleOperateButtons = (row: Ermcp.MyBargainApplyRsp | Ermcp.MyDelistingApplyRsp) => {
     if (row.applystatus === ApplyStatus.Pending) {
-        return ['details', 'cancel']
+        return ['trade_bargain_details', 'trade_bargain_cancel']
+    }
+    return ['trade_bargain_details']
+}
+
+// 切换表格列
+const getColumns = (buyorsell?: number) => {
+    switch (buyorsell) {
+        case BuyOrSell.Buy: {
+            columns.value = buyColumns.value
+            break
+        }
+        case BuyOrSell.Sell: {
+            columns.value = sellColumns.value
+            break
+        }
+        default: {
+            columns.value = []
+        }
     }
-    return ['details']
 }
 
 const onSearch = (clear = false) => {
     getQueryParams((qs) => {
         pageIndex.value = 1
+        getColumns(qs.buyorsell)
         getBargainOrderList(qs)
     }, clear)
 }
 
 const onRefresh = () => {
     getQueryParams((qs) => {
+        getColumns(qs.buyorsell)
         getBargainOrderList(qs).catch((err) => ElMessage.error(err))
     })
 }

+ 1 - 1
src/packages/pc/views/trade/buy/components/delisting/index.vue

@@ -20,7 +20,7 @@
         <el-form ref="formRef" label-width="80px" :model="formData" :rules="formRules" v-if="dataList.length">
             <el-form-item label="价格(¥)" prop="ApplyPrice">
                 <div class="el-form-item--col">
-                    <el-input type="number" placeholder="请输入" v-model.number="formData.ApplyPrice" />
+                    <el-input type="number" placeholder="请输入" v-model="formData.ApplyPrice" />
                     <span style="white-space:nowrap;"
                         v-if="selectedGoods && selectedGoods.zscurrencytype !== CurrencyType.CNY">汇率:{{
                                 getExrate(selectedGoods.zscurrencytype)

+ 6 - 23
src/packages/pc/views/trade/buy/index.vue

@@ -5,20 +5,16 @@
             <app-filter :options="filterOptons" :loading="loading" />
         </template>
         <!-- 表格数据 -->
-        <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading" :row-key="rowKey"
-            :expand-row-keys="expandKeys" @row-click="rowClick">
-            <!-- 展开行 -->
-            <template #expand="{ row }">
-                <app-action-menu :menus="handleOperateButtons(row)" :record="row" @click="openComponent" />
+        <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
+            <!-- 操作 -->
+            <template #operate="{ row }">
+                <app-auth-operation type="dropdown" :options="{ selectedRow: row }" @closed="onRefresh" />
             </template>
             <template #footer>
                 <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
                     @change="onRefresh" />
             </template>
         </app-table>
-        <component ref="componentRef" :is="asyncComponent"
-            v-bind="{ code: activeMenu.name, selectedRow: activeMenu.record }" @closed="closeComponent"
-            v-if="asyncComponent" />
     </app-view>
 </template>
 
@@ -26,20 +22,15 @@
 import { ElMessage } from 'element-plus'
 import { useDataFilter } from '@/hooks/datatable'
 import { useBuyOrder } from '@/business/trade/list'
-import { useLoginStore } from '@/stores'
-import { useActionMenu } from '@pc/components/modules/action-menu'
-import AppActionMenu from '@pc/components/modules/action-menu/index.vue'
+import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 import { useComposeTable } from '@pc/components/base/table'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppPagination from '@pc/components/base/pagination/index.vue'
 import AppFilter from '@pc/components/base/table-filter/index.vue'
 
-const { getUserId } = useLoginStore()
 const { loading, dataList, total, pageIndex, pageSize, categoryList, getBuyOrderList } = useBuyOrder()
-const { tableColumns, rowKey, expandKeys, rowClick } = useComposeTable<Ermcp.BuyOrderRsp>({ rowKey: 'wrtradeorderid', columnKey: 'listing_buyorder' })
-const { asyncComponent, activeMenu, getAuthButtons, openComponent, closeComponent } = useActionMenu<Ermcp.BuyOrderRsp>()
+const { tableColumns } = useComposeTable<Ermcp.BuyOrderRsp>({ rowKey: 'wrtradeorderid', columnKey: 'listing_buyorder' })
 const { filterOptons, getQueryParams } = useDataFilter<Ermcp.BuyOrderReq>()
-const tableButtons = getAuthButtons()
 
 filterOptons.selectList = [
     {
@@ -59,14 +50,6 @@ filterOptons.buttonList = [
     { lable: '查询', className: 'el-button--primary', onClick: () => onSearch() }
 ]
 
-const handleOperateButtons = (row?: Ermcp.BuyOrderRsp) => {
-    if (row?.userid === getUserId()) {
-        // 自己上架的商品不能摘牌
-        return tableButtons.filter((e) => !['trade_buy_delisting'].includes(e.code))
-    }
-    return tableButtons
-}
-
 const onSearch = (clear = false) => {
     getQueryParams((qs) => {
         pageIndex.value = 1

+ 5 - 3
src/packages/pc/views/trade/delisting/index.vue

@@ -10,7 +10,7 @@
             </app-filter>
         </template>
         <!-- 表格数据 -->
-        <app-table :data="dataList" v-model:columns="columns" :loading="loading">
+        <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
             <!-- 类型 -->
             <template #buyorsell>
                 {{ getBuyOrSellName(buyOrSell) }}
@@ -25,7 +25,7 @@
             </template>
             <!-- 操作 -->
             <template #operate="{ row }">
-                <app-auth-operation :menus="['details']" :options="{ selectedRow: row, buyorsell: buyOrSell }"
+                <app-auth-operation type="dropdown" :options="{ selectedRow: row, buyorsell: buyOrSell }"
                     @closed="onRefresh" />
             </template>
             <template #footer>
@@ -44,6 +44,7 @@ import { useDataFilter } from '@/hooks/datatable'
 import { Category } from '@/constants/diamond'
 import { getBuyOrSellName } from '@/constants/order'
 import { useDelistingOrder } from '@/business/trade/list'
+import { useComposeTable } from '@pc/components/base/table'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppPagination from '@pc/components/base/pagination/index.vue'
 import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
@@ -56,7 +57,8 @@ const buyorsell = (() => {
     return isNaN(result) ? undefined : result
 })()
 
-const { loading, dataList, total, pageIndex, pageSize, buyOrSell, columns, filterDate, categoryList, buyOrSellList, getDelistingOrderList } = useDelistingOrder(buyorsell)
+const { loading, dataList, total, pageIndex, pageSize, buyOrSell, filterDate, categoryList, buyOrSellList, getDelistingOrderList } = useDelistingOrder(buyorsell)
+const { tableColumns } = useComposeTable<Ermcp.MyDeListingRsp>({ rowKey: 'wrtradedetailid', columnKey: 'listing_delisting' })
 const { filterOptons, getQueryParams } = useDataFilter<Ermcp.MyDeListingReq>()
 
 const onSearch = (clear = false) => {

+ 9 - 7
src/packages/pc/views/trade/purchase/index.vue

@@ -12,13 +12,13 @@
             </app-filter>
         </template>
         <!-- 表格数据 -->
-        <app-table :data="dataList" v-model:columns="columns" :loading="loading">
+        <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
             <template #header>
-                <app-auth-operation :menus="['add']" @closed="onRefresh" />
+                <app-auth-operation :menus="['trade_purchase_add']" @closed="onRefresh" />
             </template>
             <!-- 操作 -->
             <template #operate="{ row }">
-                <app-auth-operation :menus="handleTableButtons(row)" :options="{ selectedRow: row }"
+                <app-auth-operation type="dropdown" :menus="handleOperateButtons(row)" :options="{ selectedRow: row }"
                     @closed="onRefresh" />
             </template>
             <template #footer>
@@ -33,20 +33,22 @@
 import { ElMessage } from 'element-plus'
 import { useDataFilter } from '@/hooks/datatable'
 import { usePurchaseOrder } from '@/business/trade/list'
+import { useComposeTable } from '@pc/components/base/table'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppPagination from '@pc/components/base/pagination/index.vue'
 import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 import AppFilter from '@pc/components/base/table-filter/index.vue'
 
-const { loading, dataList, total, pageIndex, pageSize, filterData, columns, categoryList, getPurchaseOrderList } = usePurchaseOrder()
+const { loading, dataList, total, pageIndex, pageSize, filterData, categoryList, getPurchaseOrderList } = usePurchaseOrder()
+const { tableColumns } = useComposeTable<Ermcp.MyBuyOrderRsp>({ rowKey: 'wrtradeorderid', columnKey: 'listing_purchaseorder' })
 const { filterOptons, getQueryParams } = useDataFilter<Ermcp.MyBuyOrderReq>()
 
 // 3:委托成功 7:部成 -  状态有撤销
-const handleTableButtons = (row: Ermcp.MyBuyOrderRsp) => {
+const handleOperateButtons = (row: Ermcp.MyBuyOrderRsp) => {
     if ([3, 7].includes(row.wrtradeorderstatus)) {
-        return ['details', 'cancel']
+        return ['trade_purchase_details', 'trade_purchase_cancel']
     }
-    return ['details']
+    return ['trade_purchase_details']
 }
 
 const onSearch = (clear = false) => {

+ 6 - 13
src/packages/pc/views/trade/sale/index.vue

@@ -14,7 +14,7 @@
         <!-- 表格数据 -->
         <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
             <template #header>
-                <app-action-menu :menus="headerButtons" @click="openComponent" />
+                <app-auth-operation :menus="['trade_sale_add']" @closed="onRefresh" />
             </template>
             <!-- 价格 -->
             <template #price="{ row }">
@@ -26,16 +26,14 @@
             </template>
             <!-- 操作 -->
             <template #operate="{ row }">
-                <app-action-menu type="dropdown" :menus="handleOperateButtons(row)" :record="row"
-                    @click="openComponent" />
+                <app-auth-operation type="dropdown" :menus="handleOperateButtons(row)" :options="{ selectedRow: row }"
+                    @closed="onRefresh" />
             </template>
             <template #footer>
                 <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
                     @change="onRefresh" />
             </template>
         </app-table>
-        <component ref="componentRef" :is="asyncComponent" v-bind="{ selectedRow: activeMenu.record }"
-            @closed="closeComponent" v-if="asyncComponent" />
     </app-view>
 </template>
 
@@ -44,27 +42,22 @@ import { ElMessage } from 'element-plus'
 import { formatDecimal } from '@/filters'
 import { useDataFilter } from '@/hooks/datatable'
 import { useSaleOrder } from '@/business/trade/list'
-import { useActionMenu } from '@pc/components/modules/action-menu'
-import AppActionMenu from '@pc/components/modules/action-menu/index.vue'
 import { useComposeTable } from '@pc/components/base/table'
 import AppTable from '@pc/components/base/table/index.vue'
+import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 import AppPagination from '@pc/components/base/pagination/index.vue'
 import AppFilter from '@pc/components/base/table-filter/index.vue'
 
 const { loading, dataList, total, pageIndex, pageSize, filterData, categoryList, getSaleOrderList } = useSaleOrder()
 const { tableColumns } = useComposeTable<Ermcp.MySellOrderRsp>({ rowKey: 'wrtradeorderid', columnKey: 'listing_saleorder' })
-const { asyncComponent, activeMenu, getAuthButtons, openComponent, closeComponent } = useActionMenu<Ermcp.MySellOrderRsp>({ queryFn: () => onRefresh() })
 const { filterOptons, getQueryParams } = useDataFilter<Ermcp.MySellOrderReq>()
 
-const headerButtons = getAuthButtons(['trade_sale_add'])
-const tableButtons = getAuthButtons(['trade_sale_details', 'trade_sale_cancel'])
-
 // 3:委托成功 7:部成 -  状态有撤销
 const handleOperateButtons = (row: Ermcp.MySellOrderRsp) => {
     if ([3, 7].includes(row.wrtradeorderstatus)) {
-        return tableButtons
+        return ['trade_sale_details', 'trade_sale_cancel']
     }
-    return tableButtons.filter((e) => e.code !== 'trade_sale_cancel')
+    return ['trade_sale_details']
 }
 
 const onSearch = (clear = false) => {

+ 10 - 16
src/packages/pc/views/trade/sell/index.vue

@@ -5,12 +5,7 @@
             <app-filter :options="filterOptons" :loading="loading" />
         </template>
         <!-- 表格数据 -->
-        <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading" :row-key="rowKey"
-            :expand-row-keys="expandKeys" @row-click="rowClick">
-            <!-- 展开行 -->
-            <template #expand="{ row }">
-                <app-action-menu :menus="handleOperateButtons(row)" :record="row" @click="openComponent" />
-            </template>
+        <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
             <!-- 价格 -->
             <template #price="{ row }">
                 {{ row.zscurrencytypedisplayunit + formatDecimal(row.price) }}
@@ -19,14 +14,16 @@
             <template #fixedprice="{ row }">
                 {{ row.zscurrencytypedisplayunit + formatDecimal(row.fixedprice) }}
             </template>
+            <!-- 操作 -->
+            <template #operate="{ row }">
+                <app-auth-operation type="dropdown" :menus="handleOperateButtons(row)" :options="{ selectedRow: row }"
+                    @closed="onRefresh" />
+            </template>
             <template #footer>
                 <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
                     @change="onRefresh" />
             </template>
         </app-table>
-        <component ref="componentRef" :is="asyncComponent"
-            v-bind="{ code: activeMenu.name, selectedRow: activeMenu.record }" @closed="closeComponent"
-            v-if="asyncComponent" />
     </app-view>
 </template>
 
@@ -36,8 +33,7 @@ import { formatDecimal } from '@/filters'
 import { useDataFilter } from '@/hooks/datatable'
 import { useLoginStore, useFavoriteStore } from '@/stores'
 import { useSellOrder } from '@/business/trade/list'
-import { useActionMenu } from '@pc/components/modules/action-menu'
-import AppActionMenu from '@pc/components/modules/action-menu/index.vue'
+import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 import { useComposeTable } from '@pc/components/base/table'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppPagination from '@pc/components/base/pagination/index.vue'
@@ -46,17 +42,15 @@ import AppFilter from '@pc/components/base/table-filter/index.vue'
 const { getUserId } = useLoginStore()
 const { hasFavorite } = useFavoriteStore()
 const { loading, dataList, total, pageIndex, pageSize, categoryList, getSellOrderList } = useSellOrder()
-const { tableColumns, rowKey, expandKeys, rowClick } = useComposeTable<Ermcp.SellOrderRsp>({ rowKey: 'wrtradeorderid', columnKey: 'listing_sellorder' })
-const { asyncComponent, activeMenu, getAuthButtons, openComponent, closeComponent } = useActionMenu<Ermcp.SellOrderRsp>({ queryFn: () => onRefresh() })
+const { tableColumns } = useComposeTable<Ermcp.SellOrderRsp>({ rowKey: 'wrtradeorderid', columnKey: 'listing_sellorder' })
 const { filterOptons, getQueryParams } = useDataFilter<Ermcp.SellOrderReq>()
-const tableButtons = getAuthButtons()
 
 // 未收藏的卖委托有收藏按钮
 const handleOperateButtons = (row: Ermcp.SellOrderRsp) => {
     if (hasFavorite(row.goodsno) || row.userid === getUserId()) {
-        return tableButtons.filter((e) => e.code === 'trade_sell_details')
+        return ['trade_sell_details']
     }
-    return tableButtons
+    return ['trade_sell_details', 'trade_sell_favorite']
 }
 
 const onSearch = (clear = false) => {

+ 1 - 1
src/packages/pc/views/warehousing/goods/components/bargain/index.vue

@@ -4,7 +4,7 @@
         <el-form ref="formRef" label-width="60px" :model="formData" :rules="formRules">
             <el-form-item label="价格" prop="ApplyPrice">
                 <div class="el-form-item--col">
-                    <el-input type="number" placeholder="请输入" v-model.number="formData.ApplyPrice" />
+                    <el-input type="number" placeholder="请输入" v-model="formData.ApplyPrice" />
                     <span style="white-space:nowrap;"
                         v-if="selectedRow.zscurrencytype !== CurrencyType.CNY">汇率:{{getExrate(selectedRow.zscurrencytype)}}</span>
                 </div>

+ 3 - 3
src/packages/pc/views/warehousing/goods/components/edit/diamond.vue

@@ -15,12 +15,12 @@
             </el-radio-group>
         </el-form-item>
         <el-form-item label="价格" prop="Price">
-            <el-input type="number" placeholder="请输入" v-model.number="formData.Price">
+            <el-input type="number" placeholder="请输入" v-model="formData.Price">
                 <template #append>{{ currencyInfo?.enumitemvalue }}</template>
             </el-input>
         </el-form-item>
         <el-form-item label="克拉重量" prop="Weight">
-            <el-input type="number" placeholder="请输入" v-model.number="formData.Weight">
+            <el-input type="number" placeholder="请输入" v-model="formData.Weight">
                 <template #append>(克拉)</template>
             </el-input>
         </el-form-item>
@@ -85,7 +85,7 @@
             </el-select>
         </el-form-item>
         <el-form-item label="市场价" prop="MarketPrice">
-            <el-input type="number" placeholder="请输入" v-model.number="formData.MarketPrice">
+            <el-input type="number" placeholder="请输入" v-model="formData.MarketPrice">
                 <template #append>{{ currencyInfo?.enumitemvalue }}</template>
             </el-input>
         </el-form-item>

+ 4 - 4
src/packages/pc/views/warehousing/goods/components/edit/diamonds.vue

@@ -15,17 +15,17 @@
             </el-radio-group>
         </el-form-item>
         <el-form-item label="总价" prop="Price">
-            <el-input type="number" placeholder="请输入" v-model.number="formData.Price">
+            <el-input type="number" placeholder="请输入" v-model="formData.Price">
                 <template #append>{{ currencyInfo?.enumitemvalue }}</template>
             </el-input>
         </el-form-item>
         <el-form-item label="总重量" prop="Weight">
-            <el-input type="number" placeholder="请输入" v-model.number="formData.Weight">
+            <el-input type="number" placeholder="请输入" v-model="formData.Weight">
                 <template #append>(克拉)</template>
             </el-input>
         </el-form-item>
         <el-form-item label="平均重量" prop="WeightAvg">
-            <el-input type="number" placeholder="请输入" v-model.number="formData.WeightAvg">
+            <el-input type="number" placeholder="请输入" v-model="formData.WeightAvg">
                 <template #append>(克拉)</template>
             </el-input>
         </el-form-item>
@@ -65,7 +65,7 @@
             </el-select>
         </el-form-item>
         <el-form-item label="市场价" prop="MarketPrice">
-            <el-input type="number" placeholder="请输入" v-model.number="formData.MarketPrice">
+            <el-input type="number" placeholder="请输入" v-model="formData.MarketPrice">
                 <template #append>{{ currencyInfo?.enumitemvalue }}</template>
             </el-input>
         </el-form-item>

+ 3 - 3
src/packages/pc/views/warehousing/goods/components/edit/fancy.vue

@@ -15,12 +15,12 @@
             </el-radio-group>
         </el-form-item>
         <el-form-item label="价格" prop="Price">
-            <el-input type="number" placeholder="请输入" v-model.number="formData.Price">
+            <el-input type="number" placeholder="请输入" v-model="formData.Price">
                 <template #append>{{ currencyInfo?.enumitemvalue }}</template>
             </el-input>
         </el-form-item>
         <el-form-item label="克拉重量" prop="Weight">
-            <el-input type="number" placeholder="请输入" v-model.number="formData.Weight">
+            <el-input type="number" placeholder="请输入" v-model="formData.Weight">
                 <template #append>(克拉)</template>
             </el-input>
         </el-form-item>
@@ -89,7 +89,7 @@
             </el-select>
         </el-form-item>
         <el-form-item label="市场价" prop="MarketPrice">
-            <el-input type="number" placeholder="请输入" v-model.number="formData.MarketPrice">
+            <el-input type="number" placeholder="请输入" v-model="formData.MarketPrice">
                 <template #append>{{ currencyInfo?.enumitemvalue }}</template>
             </el-input>
         </el-form-item>

+ 3 - 3
src/packages/pc/views/warehousing/goods/components/edit/jewelry.vue

@@ -15,12 +15,12 @@
             </el-radio-group>
         </el-form-item>
         <el-form-item label="价格" prop="Price">
-            <el-input type="number" placeholder="请输入" v-model.number="formData.Price">
+            <el-input type="number" placeholder="请输入" v-model="formData.Price">
                 <template #append>{{ currencyInfo?.enumitemvalue }}</template>
             </el-input>
         </el-form-item>
         <el-form-item label="主石重量" prop="Weight">
-            <el-input type="number" placeholder="请输入" v-model.number="formData.Weight">
+            <el-input type="number" placeholder="请输入" v-model="formData.Weight">
                 <template #append>(克拉)</template>
             </el-input>
         </el-form-item>
@@ -82,7 +82,7 @@
             </el-select>
         </el-form-item>
         <el-form-item label="市场价" prop="MarketPrice">
-            <el-input type="number" placeholder="请输入" v-model.number="formData.MarketPrice">
+            <el-input type="number" placeholder="请输入" v-model="formData.MarketPrice">
                 <template #append>{{ currencyInfo?.enumitemvalue }}</template>
             </el-input>
         </el-form-item>

+ 5 - 5
src/packages/pc/views/warehousing/goods/components/edit/rough.vue

@@ -15,17 +15,17 @@
             </el-radio-group>
         </el-form-item>
         <el-form-item label="总价" prop="Price">
-            <el-input type="number" placeholder="请输入" v-model.number="formData.Price">
+            <el-input type="number" placeholder="请输入" v-model="formData.Price">
                 <template #append>{{ currencyInfo?.enumitemvalue }}</template>
             </el-input>
         </el-form-item>
         <el-form-item label="总重量" prop="Weight">
-            <el-input type="number" placeholder="请输入" v-model.number="formData.Weight">
+            <el-input type="number" placeholder="请输入" v-model="formData.Weight">
                 <template #append>(克拉)</template>
             </el-input>
         </el-form-item>
         <el-form-item label="平均重量" prop="WeightAvg">
-            <el-input type="number" placeholder="请输入" v-model.number="formData.WeightAvg">
+            <el-input type="number" placeholder="请输入" v-model="formData.WeightAvg">
                 <template #append>(克拉)</template>
             </el-input>
         </el-form-item>
@@ -60,12 +60,12 @@
             <el-input placeholder="请输入" v-model="formData.CPCertNo" />
         </el-form-item>
         <el-form-item label="市场价" prop="MarketPrice">
-            <el-input type="number" placeholder="请输入" v-model.number="formData.MarketPrice">
+            <el-input type="number" placeholder="请输入" v-model="formData.MarketPrice">
                 <template #append>{{ currencyInfo?.enumitemvalue }}</template>
             </el-input>
         </el-form-item>
         <el-form-item label="金伯利重量" prop="KPWeight">
-            <el-input type="number" placeholder="请输入" v-model.number="formData.KPWeight">
+            <el-input type="number" placeholder="请输入" v-model="formData.KPWeight">
                 <template #append>(克拉)</template>
             </el-input>
         </el-form-item>

+ 9 - 8
src/packages/pc/views/warehousing/goods/index.vue

@@ -5,9 +5,9 @@
             <app-filter :options="filterOptons" :loading="loading" />
         </template>
         <!-- 表格数据 -->
-        <app-table :data="dataList" v-model:columns="columns" :loading="loading">
+        <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
             <template #header>
-                <app-auth-operation :menus="headerButtons" @closed="onRefresh" />
+                <app-auth-operation :menus="['warehousing_goods_add', 'warehousing_goods_sell']" @closed="onRefresh" />
             </template>
             <!-- 价格 -->
             <template #price="{ row }">
@@ -31,7 +31,7 @@
             </template>
             <!-- 操作 -->
             <template #operate="{ row }">
-                <app-auth-operation :menus="handleTableButtons(row)" :options="{ selectedRow: row }"
+                <app-auth-operation type="dropdown" :menus="handleOperateButtons(row)" :options="{ selectedRow: row }"
                     @closed="onRefresh" />
             </template>
             <template #footer>
@@ -48,20 +48,21 @@ import { formatDecimal } from '@/filters'
 import { useDataFilter } from '@/hooks/datatable'
 import { useDiamond } from '@/business/goods'
 import { Category } from '@/constants/diamond'
+import { useComposeTable } from '@pc/components/base/table'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppPagination from '@pc/components/base/pagination/index.vue'
 import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 import AppFilter from '@pc/components/base/table-filter/index.vue'
 
-const { loading, dataList, total, pageIndex, pageSize, columns, warehouseList, categoryList, getDiamondList } = useDiamond()
+const { loading, dataList, total, pageIndex, pageSize, warehouseList, categoryList, getDiamondList } = useDiamond()
+const { tableColumns } = useComposeTable<Ermcp.MyWRPositionRsp>({ rowKey: 'goodsno', columnKey: 'warehousing_diamond' })
 const { filterOptons, getQueryParams } = useDataFilter<Ermcp.MyWRPositionReq>()
-const headerButtons = ['add', 'sell']
 
-const handleTableButtons = (row: Ermcp.MyWRPositionRsp) => {
+const handleOperateButtons = (row: Ermcp.MyWRPositionRsp) => {
     if (row.marketflag === 1) {
-        return ['details', 'pull']
+        return ['warehousing_goods_details', 'warehousing_goods_pull']
     }
-    return ['details', 'put', 'delete']
+    return ['warehousing_goods_details', 'warehousing_goods_put', 'warehousing_goods_delete']
 }
 
 const onSearch = (clear = false) => {

+ 7 - 4
src/packages/pc/views/warehousing/warehouse/index.vue

@@ -1,16 +1,17 @@
 <!-- 我的仓储-我的仓库 -->
 <template>
     <app-view>
-        <app-table :data="dataList" v-model:columns="columns" :loading="loading">
+        <app-table :data="dataList" v-model:columns="tableColumns" :loading="loading">
             <template #header>
-                <app-auth-operation :menus="['add']" @closed="getWarehouseList" />
+                <app-auth-operation :menus="['warehousing_warehouse_add']" @closed="getWarehouseList" />
             </template>
             <template #address="{ row }">
                 {{ [row.provincename, row.cityname, row.districtname, row.address].join(' ') }}
             </template>
             <!-- 操作 -->
             <template #operate="{ row }">
-                <app-auth-operation :menus="['edit']" :options="{ selectedRow: row }" @closed="getWarehouseList" />
+                <app-auth-operation type="dropdown" :menus="['warehousing_warehouse_edit']"
+                    :options="{ selectedRow: row }" @closed="getWarehouseList" />
             </template>
             <template #footer>
                 <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
@@ -23,11 +24,13 @@
 <script lang="ts" setup>
 import { ElMessage } from 'element-plus'
 import { useWarehouse } from '@/business/warehouse'
+import { useComposeTable } from '@pc/components/base/table'
 import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppPagination from '@pc/components/base/pagination/index.vue'
 
-const { loading, dataList, columns, total, pageIndex, pageSize, getWarehouseList } = useWarehouse()
+const { loading, dataList, total, pageIndex, pageSize, getWarehouseList } = useWarehouse()
+const { tableColumns } = useComposeTable<Ermcp.WarehouseInfoRsp>({ rowKey: 'autoid', columnKey: 'warehousing_warehouse' })
 
 getWarehouseList().catch((err) => ElMessage.error(err))
 </script>

+ 1 - 3
src/stores/index.ts

@@ -44,6 +44,4 @@ export function useStore() {
         performanceStore: usePerformanceStore(),
         exrateStore: useExrateStore(),
     }
-}
-
-import './@next.ts'
+}

+ 2 - 0
src/types/ermcp/customs.d.ts

@@ -3,6 +3,7 @@ declare namespace Ermcp {
     /** 查询出境检测单据 请求 */
     interface GZCJJCOrderReq {
         userid: number; // 用户ID
+        executestatus?: number; // 执行状态 - 1:未生效 2:进行中 3:已结束
         page?: number; // 页码
         pagesize?: number; // 每页条数
     }
@@ -85,6 +86,7 @@ declare namespace Ermcp {
     /** 查询保税服务单据 请求 */
     interface GZBSFWOrderReq {
         userid: number; // 用户ID
+        executestatus?: number; // 执行状态 - 1:未生效 2:进行中 3:已结束
         page?: number; // 页码
         pagesize?: number; // 每页条数
     }