li.shaoyi 3 年之前
父节点
当前提交
1aa487006e
共有 38 个文件被更改,包括 1269 次插入1128 次删除
  1. 91 0
      public/proto/gz.proto
  2. 2 2
      src/business/account/index.ts
  3. 6 5
      src/business/goods/index.ts
  4. 2 28
      src/business/menu/index.ts
  5. 67 534
      src/business/order/list.ts
  6. 43 222
      src/business/order/listing.ts
  7. 58 85
      src/business/search/index.ts
  8. 205 39
      src/business/table/index.ts
  9. 114 0
      src/business/user/index.ts
  10. 6 43
      src/business/warehouse/index.ts
  11. 3 2
      src/constants/client.ts
  12. 18 31
      src/constants/diamond.ts
  13. 12 0
      src/constants/funcode.ts
  14. 22 9
      src/constants/index.ts
  15. 1 0
      src/hooks/datatable/index.ts
  16. 68 6
      src/mock/router.ts
  17. 5 2
      src/packages/pc/components/base/pagination/index.vue
  18. 1 1
      src/packages/pc/components/base/table-filter/index.vue
  19. 3 3
      src/packages/pc/components/base/table/index.vue
  20. 4 4
      src/packages/pc/views/listing/buy/components/add/index.vue
  21. 22 16
      src/packages/pc/views/mine/account/index.vue
  22. 92 0
      src/packages/pc/views/mine/address/components/edit/index.vue
  23. 25 1
      src/packages/pc/views/mine/address/index.vue
  24. 24 0
      src/packages/pc/views/mine/capital/index.vue
  25. 0 30
      src/packages/pc/views/mine/info/index.vue
  26. 25 1
      src/packages/pc/views/mine/invoice/index.vue
  27. 42 17
      src/packages/pc/views/search/diamond/index.vue
  28. 91 1
      src/packages/pc/views/search/fancy/index.vue
  29. 0 1
      src/packages/pc/views/search/index.vue
  30. 3 30
      src/packages/pc/views/system/role/index.vue
  31. 3 3
      src/packages/pc/views/warehousing/goods/components/edit/diamond.vue
  32. 3 3
      src/packages/pc/views/warehousing/goods/components/edit/fancy.vue
  33. 3 3
      src/packages/pc/views/warehousing/goods/components/edit/jewelry.vue
  34. 4 4
      src/packages/pc/views/warehousing/warehouse/components/edit/index.vue
  35. 2 2
      src/packages/pc/views/warehousing/warehouse/index.vue
  36. 53 0
      src/services/api/user/index.ts
  37. 50 0
      src/types/ermcp/user.d.ts
  38. 96 0
      src/types/proto/user.d.ts

+ 91 - 0
public/proto/gz.proto

@@ -177,6 +177,97 @@ message MoneyChangedNtf {
 		optional uint64 AccountID = 3; // uint64 交易账号
 		optional uint64 AccountID = 3; // uint64 交易账号
 }
 }
 
 
+// 新增修改收货地址请求
+message UserReceiveInfoReq {
+	optional MessageHead Header = 1;
+		optional uint64 ClientSerialID = 2; // 客户端唯一ID
+		optional uint32 UserID = 3; // 用户ID
+		optional string ReceiverName = 4; // 提货人姓名
+		optional uint32 CardTypeID = 5; // 证件类型
+		optional string CardNum = 6; // 证件号码
+		optional string PhoneNum = 7; // 提货人联系方式
+		optional uint32 CountryID = 8; // 国家
+		optional uint32 ProvinceID = 9; // 省
+		optional uint32 CityID = 10; // 市
+		optional uint32 DistrictID = 11; // 地区
+		optional string Address = 12; // 提货人详细地址
+		optional string TakeRemark = 13; // 提货备注
+		optional uint64 ReceiveInfoId = 14; // 修改时填收货地址id
+}
+
+// 新增修改收货地址请求响应
+message UserReceiveInfoRsp {
+	optional MessageHead Header = 1; // 消息头
+	optional int32 RetCode = 2; // 返回码
+	optional string RetDesc = 3; // 描述信息
+		optional uint64 ReceiveInfoId = 4; // 响应返回autoid
+}
+
+// 删除收货地址请求
+message DelUserReceiveInfoReq {
+	optional MessageHead Header = 1;
+		optional uint64 ReceiveInfoId = 2; // 收货地址id
+}
+
+// 删除收货地址请求响应
+message DelUserReceiveInfoRsp {
+	optional MessageHead Header = 1; // 消息头
+	optional int32 RetCode = 2; // 返回码
+	optional string RetDesc = 3; // 描述信息
+}
+
+// 设置默认收货地址请求
+message UserReceiveIsDefaultReq {
+	optional MessageHead Header = 1;
+		optional uint64 AutoId = 2; // 提货地址ID
+		optional uint64 UserId = 3; // 用户ID
+}
+
+// 设置默认收货地址应答
+message UserReceiveIsDefaultRsp {
+	optional MessageHead Header = 1; // 消息头
+	optional int32 RetCode = 2; // 返回码
+	optional string RetDesc = 3; // 描述信息
+		optional uint64 AutoId = 4; // 提货地址ID
+}
+
+// 新增修改用户发票信息请求
+message UserReceiptInfoReq {
+	optional MessageHead Header = 1;
+		optional uint64 ClientSerialID = 2; // 客户端唯一ID
+		optional uint32 UserID = 3; // 用户ID
+		optional string UserName = 4; // 发票抬头姓名
+		optional uint32 ReceiptType = 5; // 发票类型
+		optional string TaxpayerID = 6; // 纳税人识别号
+		optional string ContactInfo = 7; // 联系方式
+		optional uint64 ReceiptInfoId = 8; // 修改时填用户发票信息id
+		optional string ReceiptBank = 9; // 发票开户行[发票类型:企业]
+		optional string ReceiptAccount = 10; // 发票帐号[发票类型:企业]
+		optional string Address = 11; // 地址[发票类型:企业]
+		optional string IDNum = 12; // 身份证号码[发票类型:个人]
+}
+
+// 新增修改用户发票信息请求响应
+message UserReceiptInfoRsp {
+	optional MessageHead Header = 1; // 消息头
+	optional int32 RetCode = 2; // 返回码
+	optional string RetDesc = 3; // 描述信息
+		optional uint64 ReceiptInfoId = 4; // 响应返回发票信息id
+}
+
+// 删除用户发票信息请求
+message DelUserReceiptInfoReq {
+	optional MessageHead Header = 1;
+		optional uint64 ReceiptInfoId = 2; // 删除发票信息id
+}
+
+// 删除用户发票信息请求响应
+message DelUserReceiptInfoRsp {
+	optional MessageHead Header = 1; // 消息头
+	optional int32 RetCode = 2; // 返回码
+	optional string RetDesc = 3; // 描述信息
+}
+
 // 仓库申请请求 0 29 141
 // 仓库申请请求 0 29 141
 message WarehouseApplyReq {
 message WarehouseApplyReq {
 	optional MessageHead Header = 1; // MessageHead
 	optional MessageHead Header = 1; // MessageHead

+ 2 - 2
src/business/account/index.ts

@@ -2,7 +2,7 @@ import { shallowRef, computed } from 'vue'
 import { useDataTable } from '@/hooks/datatable'
 import { useDataTable } from '@/hooks/datatable'
 import { commonStore, accountStore, sessionData } from '@/stores'
 import { commonStore, accountStore, sessionData } from '@/stores'
 import { queryAccountInOutApply } from '@/services/api/account'
 import { queryAccountInOutApply } from '@/services/api/account'
-import { useTableColumns } from '../table'
+import { getTableColumns } from '../table'
 
 
 export function useAccount() {
 export function useAccount() {
     const { getLoginDataInfo } = commonStore
     const { getLoginDataInfo } = commonStore
@@ -23,7 +23,7 @@ export function useAccount() {
  */
  */
 export function useAccountInOut() {
 export function useAccountInOut() {
     const { dataList, selectList, buttonList } = useDataTable<Ermcp.AccountOutInApplyRsp>()
     const { dataList, selectList, buttonList } = useDataTable<Ermcp.AccountOutInApplyRsp>()
-    const { columns } = useTableColumns('table_pcweb_qhj_recharge_review')
+    const columns = shallowRef(getTableColumns('mine_capital'))
     const loading = shallowRef(false)
     const loading = shallowRef(false)
 
 
     selectList.value = [
     selectList.value = [

+ 6 - 5
src/business/goods/index.ts

@@ -33,7 +33,7 @@ export function useDiamond() {
     const { UserID } = sessionData.getValue('loginInfo')
     const { UserID } = sessionData.getValue('loginInfo')
     const { dataList, total, pageIndex, pageSize, inputList, selectList, buttonList, getQueryParam } = useDataTable<Ermcp.MyWRPositionRsp>()
     const { dataList, total, pageIndex, pageSize, inputList, selectList, buttonList, getQueryParam } = useDataTable<Ermcp.MyWRPositionRsp>()
     const loading = shallowRef(false)
     const loading = shallowRef(false)
-    const columns = getTableColumns('warehousingDiamond')
+    const columns = shallowRef(getTableColumns('warehousing_diamond'))
 
 
     selectList.value = [
     selectList.value = [
         {
         {
@@ -69,9 +69,6 @@ export function useDiamond() {
                 total.value = res.total
                 total.value = res.total
                 dataList.value = res.data
                 dataList.value = res.data
             },
             },
-            fail: () => {
-                dataList.value = []
-            },
             complete: () => {
             complete: () => {
                 loading.value = false
                 loading.value = false
             }
             }
@@ -80,6 +77,7 @@ export function useDiamond() {
 
 
     const [reset, search] = buttonList.value
     const [reset, search] = buttonList.value
     reset.onClick = () => {
     reset.onClick = () => {
+        pageIndex.value = 1
         selectList.value.forEach((e, i) => {
         selectList.value.forEach((e, i) => {
             if (i) {
             if (i) {
                 e.selectedValue = undefined
                 e.selectedValue = undefined
@@ -88,7 +86,10 @@ export function useDiamond() {
         inputList.value.forEach((e) => e.value = undefined)
         inputList.value.forEach((e) => e.value = undefined)
         getDiamondList()
         getDiamondList()
     }
     }
-    search.onClick = getDiamondList
+    search.onClick = () => {
+        pageIndex.value = 1
+        getDiamondList()
+    }
 
 
     // 获取仓库列表
     // 获取仓库列表
     queryWarehouseInfo({
     queryWarehouseInfo({

+ 2 - 28
src/business/menu/index.ts

@@ -1,37 +1,11 @@
 import { ref, reactive, computed } from 'vue'
 import { ref, reactive, computed } from 'vue'
+import { getTableColumns } from '@/business/table'
 import { queryNewFuncmenu, insertNewFuncmenu } from '@/services/api/common'
 import { queryNewFuncmenu, insertNewFuncmenu } from '@/services/api/common'
 
 
 export function useMenu() {
 export function useMenu() {
     const loading = ref(false)
     const loading = ref(false)
     const dataList = ref<Ermcp.NewFuncmenuRsp[]>([])
     const dataList = ref<Ermcp.NewFuncmenuRsp[]>([])
-
-    const columns = ref<Ermcp.TableColumn[]>([
-        {
-            prop: 'resourcename',
-            label: '菜单',
-            show: true,
-        },
-        {
-            prop: 'resourcecode',
-            label: '代码',
-            show: true,
-        },
-        {
-            prop: 'component',
-            label: '组件',
-            show: true,
-        },
-        {
-            prop: 'iconame',
-            label: '图标',
-            show: true,
-        },
-        {
-            prop: 'operate',
-            label: '操作',
-            show: true,
-        }
-    ])
+    const columns = ref(getTableColumns('system_menu'))
 
 
     // 扁平列表树形化
     // 扁平列表树形化
     const arrayToTree = (list: Ermcp.NewFuncmenuRsp[]) => {
     const arrayToTree = (list: Ermcp.NewFuncmenuRsp[]) => {

+ 67 - 534
src/business/order/list.ts

@@ -1,5 +1,6 @@
 import { shallowRef } from 'vue'
 import { shallowRef } from 'vue'
 import { useDataTable } from '@/hooks/datatable'
 import { useDataTable } from '@/hooks/datatable'
+import { getTableColumns } from '@/business/table'
 import { queryBuyOrder, querySellOrder, queryMyBuyOrder, queryMySellOrder, queryMyDeListing, queryMyBargainApply, queryMyDelistingApply } from '@/services/api/order'
 import { queryBuyOrder, querySellOrder, queryMyBuyOrder, queryMySellOrder, queryMyDeListing, queryMyBargainApply, queryMyDelistingApply } from '@/services/api/order'
 import { sessionData } from '@/stores'
 import { sessionData } from '@/stores'
 import { Category, getCategoryList } from '@/constants/diamond'
 import { Category, getCategoryList } from '@/constants/diamond'
@@ -11,54 +12,21 @@ import { Category, getCategoryList } from '@/constants/diamond'
 export function useBuyOrder() {
 export function useBuyOrder() {
     const { dataList, total, pageIndex, pageSize, inputList, selectList, buttonList, getQueryParam, resetFilter } = useDataTable<Ermcp.BuyOrderRsp>()
     const { dataList, total, pageIndex, pageSize, inputList, selectList, buttonList, getQueryParam, resetFilter } = useDataTable<Ermcp.BuyOrderRsp>()
     const loading = shallowRef(false)
     const loading = shallowRef(false)
+    const columns = shallowRef(getTableColumns('listing_buyorder'))
 
 
-    const columns = shallowRef<Ermcp.TableColumn[]>([
-        {
-            prop: 'wrtradeorderid',
-            label: '委托单号',
-            width: 200,
-            show: true,
-        },
-        {
-            prop: 'buyusername',
-            label: '买方',
-            show: true,
-        },
+    selectList.value = [
         {
         {
-            prop: 'zscategorydisplay',
             label: '商品分类',
             label: '商品分类',
-            show: true,
-        },
-        {
-            prop: 'zstabledisplay',
-            label: '求购信息',
-            show: true,
-        },
-        {
-            prop: 'wrtradeorderstatus',
-            label: '状态',
-            show: true,
-        },
-        {
-            prop: 'validtime',
-            label: '有效日期',
-            width: 180,
-            show: true,
-        },
-        {
-            prop: 'ordertime',
-            label: '委托时间',
-            width: 180,
-            show: true,
+            key: 'zscategory',
+            options: getCategoryList(),
         },
         },
-        {
-            prop: 'operate',
-            label: '操作',
-            show: true,
-            fixed: 'right',
-            width: 180,
-        }
-    ])
+    ]
+
+    inputList.value = [
+        { label: '单号', keys: ['wrtradeorderid'], type: 'number' },
+        { label: '买方', keys: ['buyusername'] },
+        { label: '商品', keys: ['zstabledisplay'] },
+    ]
 
 
     // 获取求购大厅委托单
     // 获取求购大厅委托单
     const getBuyOrderList = () => {
     const getBuyOrderList = () => {
@@ -77,35 +45,21 @@ export function useBuyOrder() {
                 total.value = res.total
                 total.value = res.total
                 dataList.value = res.data
                 dataList.value = res.data
             },
             },
-            fail: () => {
-                dataList.value = []
-            },
             complete: () => {
             complete: () => {
                 loading.value = false
                 loading.value = false
             }
             }
         })
         })
     }
     }
 
 
-    selectList.value = [
-        {
-            label: '商品分类',
-            key: 'zscategory',
-            options: getCategoryList(),
-        },
-    ]
-
-    inputList.value = [
-        { label: '单号', keys: ['wrtradeorderid'], type: 'number' },
-        { label: '买方', keys: ['buyusername'] },
-        { label: '商品', keys: ['zstabledisplay'] },
-    ]
-
     const [reset, search] = buttonList.value
     const [reset, search] = buttonList.value
     reset.onClick = () => {
     reset.onClick = () => {
         resetFilter()
         resetFilter()
         getBuyOrderList()
         getBuyOrderList()
     }
     }
-    search.onClick = getBuyOrderList
+    search.onClick = () => {
+        pageIndex.value = 1
+        getBuyOrderList()
+    }
 
 
     return {
     return {
         loading,
         loading,
@@ -128,81 +82,21 @@ export function useBuyOrder() {
 export function useSellOrder() {
 export function useSellOrder() {
     const { dataList, total, pageIndex, pageSize, inputList, selectList, buttonList, getQueryParam, resetFilter } = useDataTable<Ermcp.SellOrderRsp>()
     const { dataList, total, pageIndex, pageSize, inputList, selectList, buttonList, getQueryParam, resetFilter } = useDataTable<Ermcp.SellOrderRsp>()
     const loading = shallowRef(false)
     const loading = shallowRef(false)
+    const columns = shallowRef(getTableColumns('listing_sellorder'))
 
 
-    const columns = shallowRef<Ermcp.TableColumn[]>([
-        {
-            prop: 'wrtradeorderid',
-            label: '卖方',
-            show: true,
-        },
-        {
-            prop: 'sellusername',
-            label: '仓库',
-            show: true,
-        },
-        {
-            prop: 'zscategorydisplay',
-            label: '形状',
-            show: true,
-        },
-        {
-            prop: 'goodsno',
-            label: '颜色',
-            show: true,
-        },
-        {
-            prop: 'totalqty',
-            label: '净度',
-            show: true,
-        },
-        {
-            prop: 'fixedprice',
-            label: '切工',
-            show: true,
-        },
-        {
-            prop: 'remainqty',
-            label: '抛光',
-            show: true,
-        },
-        {
-            prop: 'wrtradeorderstatus',
-            label: '对称',
-            show: true,
-        },
-        {
-            prop: 'ordertime',
-            label: '荧光',
-            show: true,
-        },
-        {
-            prop: 'tradedate',
-            label: '尺寸',
-            show: true,
-        },
-        {
-            prop: 'tradedate',
-            label: '价格',
-            show: true,
-        },
-        {
-            prop: 'tradedate',
-            label: '克拉重量',
-            show: true,
-        },
+    selectList.value = [
         {
         {
-            prop: 'tradedate',
-            label: '克拉单价',
-            show: true,
+            label: '商品分类',
+            key: 'zscategory',
+            options: getCategoryList(),
         },
         },
-        {
-            prop: 'operate',
-            label: '操作',
-            show: true,
-            fixed: 'right',
-            width: 180
-        }
-    ])
+    ]
+
+    inputList.value = [
+        { label: '单号', keys: ['wrtradeorderid'], type: 'number' },
+        { label: '卖方', keys: ['sellusername'] },
+        { label: '商品', keys: ['goodsno'] },
+    ]
 
 
     // 获取出售大厅委托单
     // 获取出售大厅委托单
     const getSellOrderList = () => {
     const getSellOrderList = () => {
@@ -221,35 +115,21 @@ export function useSellOrder() {
                 total.value = res.total
                 total.value = res.total
                 dataList.value = res.data
                 dataList.value = res.data
             },
             },
-            fail: () => {
-                dataList.value = []
-            },
             complete: () => {
             complete: () => {
                 loading.value = false
                 loading.value = false
             }
             }
         })
         })
     }
     }
 
 
-    selectList.value = [
-        {
-            label: '商品分类',
-            key: 'zscategory',
-            options: getCategoryList(),
-        },
-    ]
-
-    inputList.value = [
-        { label: '单号', keys: ['wrtradeorderid'], type: 'number' },
-        { label: '卖方', keys: ['sellusername'] },
-        { label: '商品', keys: ['goodsno'] },
-    ]
-
     const [reset, search] = buttonList.value
     const [reset, search] = buttonList.value
     reset.onClick = () => {
     reset.onClick = () => {
         resetFilter()
         resetFilter()
         getSellOrderList()
         getSellOrderList()
     }
     }
-    search.onClick = getSellOrderList
+    search.onClick = () => {
+        pageIndex.value = 1
+        getSellOrderList()
+    }
 
 
     return {
     return {
         loading,
         loading,
@@ -271,57 +151,20 @@ export function useSellOrder() {
 export function useSaleOrder() {
 export function useSaleOrder() {
     const { dataList, total, pageIndex, pageSize, inputList, selectList, buttonList, getQueryParam, resetFilter } = useDataTable<Ermcp.MySellOrderRsp>()
     const { dataList, total, pageIndex, pageSize, inputList, selectList, buttonList, getQueryParam, resetFilter } = useDataTable<Ermcp.MySellOrderRsp>()
     const loading = shallowRef(false)
     const loading = shallowRef(false)
+    const columns = shallowRef(getTableColumns('listing_saleorder'))
 
 
-    const columns = shallowRef<Ermcp.TableColumn[]>([
-        {
-            prop: 'wrtradeorderid',
-            label: '委托单号',
-            width: 200,
-            show: true,
-        },
+    selectList.value = [
         {
         {
-            prop: 'zscategorydisplay',
             label: '商品分类',
             label: '商品分类',
-            show: true,
-        },
-        {
-            prop: 'goodsno',
-            label: '商品编号',
-            show: true,
-        },
-        {
-            prop: 'totalqty',
-            label: '委托重量',
-            show: true,
-        },
-        {
-            prop: 'fixedprice',
-            label: '克拉单价',
-            show: true,
-        },
-        {
-            prop: 'selledqty',
-            label: '成交重量',
-            show: true,
-        },
-        {
-            prop: 'wrtradeorderstatus',
-            label: '委托状态',
-            show: true,
-        },
-        {
-            prop: 'ordertime',
-            label: '委托时间',
-            width: 180,
-            show: true,
+            key: 'zscategory',
+            options: getCategoryList(),
         },
         },
-        {
-            prop: 'operate',
-            label: '操作',
-            show: true,
-            fixed: 'right',
-        }
-    ])
+    ]
+
+    inputList.value = [
+        { label: '单号', keys: ['wrtradeorderid'], type: 'number' },
+        { label: '商品', keys: ['goodsno'] },
+    ]
 
 
     // 获取我的出售列表
     // 获取我的出售列表
     const getSaleOrderList = () => {
     const getSaleOrderList = () => {
@@ -340,34 +183,21 @@ export function useSaleOrder() {
                 total.value = res.total
                 total.value = res.total
                 dataList.value = res.data
                 dataList.value = res.data
             },
             },
-            fail: () => {
-                dataList.value = []
-            },
             complete: () => {
             complete: () => {
                 loading.value = false
                 loading.value = false
             }
             }
         })
         })
     }
     }
 
 
-    selectList.value = [
-        {
-            label: '商品分类',
-            key: 'zscategory',
-            options: getCategoryList(),
-        },
-    ]
-
-    inputList.value = [
-        { label: '单号', keys: ['wrtradeorderid'], type: 'number' },
-        { label: '商品', keys: ['goodsno'] },
-    ]
-
     const [reset, search] = buttonList.value
     const [reset, search] = buttonList.value
     reset.onClick = () => {
     reset.onClick = () => {
         resetFilter()
         resetFilter()
         getSaleOrderList()
         getSaleOrderList()
     }
     }
-    search.onClick = getSaleOrderList
+    search.onClick = () => {
+        pageIndex.value = 1
+        getSaleOrderList()
+    }
 
 
     return {
     return {
         loading,
         loading,
@@ -389,48 +219,20 @@ export function useSaleOrder() {
 export function usePurchaseOrder() {
 export function usePurchaseOrder() {
     const { dataList, total, pageIndex, pageSize, inputList, selectList, buttonList, getQueryParam, resetFilter } = useDataTable<Ermcp.MyBuyOrderRsp>()
     const { dataList, total, pageIndex, pageSize, inputList, selectList, buttonList, getQueryParam, resetFilter } = useDataTable<Ermcp.MyBuyOrderRsp>()
     const loading = shallowRef(false)
     const loading = shallowRef(false)
+    const columns = shallowRef(getTableColumns('listing_purchaseorder'))
 
 
-    const columns = shallowRef<Ermcp.TableColumn[]>([
-        {
-            prop: 'wrtradeorderid',
-            label: '委托单号',
-            width: 200,
-            show: true,
-        },
+    selectList.value = [
         {
         {
-            prop: 'zscategorydisplay',
             label: '商品分类',
             label: '商品分类',
-            show: true,
-        },
-        {
-            prop: 'zstabledisplay',
-            label: '求购信息',
-            show: true,
-        },
-        {
-            prop: 'wrtradeorderstatus',
-            label: '状态',
-            show: true,
-        },
-        {
-            prop: 'validtime',
-            label: '有效日期',
-            width: 180,
-            show: true,
-        },
-        {
-            prop: 'ordertime',
-            label: '委托时间',
-            width: 180,
-            show: true,
+            key: 'zscategory',
+            options: getCategoryList(),
         },
         },
-        {
-            prop: 'operate',
-            label: '操作',
-            show: true,
-            fixed: 'right',
-        }
-    ])
+    ]
+
+    inputList.value = [
+        { label: '单号', keys: ['wrtradeorderid'], type: 'number' },
+        { label: '商品', keys: ['zstabledisplay'] },
+    ]
 
 
     // 获取我的求购列表
     // 获取我的求购列表
     const getPurchaseOrderList = () => {
     const getPurchaseOrderList = () => {
@@ -449,34 +251,21 @@ export function usePurchaseOrder() {
                 total.value = res.total
                 total.value = res.total
                 dataList.value = res.data
                 dataList.value = res.data
             },
             },
-            fail: () => {
-                dataList.value = []
-            },
             complete: () => {
             complete: () => {
                 loading.value = false
                 loading.value = false
             }
             }
         })
         })
     }
     }
 
 
-    selectList.value = [
-        {
-            label: '商品分类',
-            key: 'zscategory',
-            options: getCategoryList(),
-        },
-    ]
-
-    inputList.value = [
-        { label: '单号', keys: ['wrtradeorderid'], type: 'number' },
-        { label: '商品', keys: ['zstabledisplay'] },
-    ]
-
     const [reset, search] = buttonList.value
     const [reset, search] = buttonList.value
     reset.onClick = () => {
     reset.onClick = () => {
         resetFilter()
         resetFilter()
         getPurchaseOrderList()
         getPurchaseOrderList()
     }
     }
-    search.onClick = getPurchaseOrderList
+    search.onClick = () => {
+        pageIndex.value = 1
+        getPurchaseOrderList()
+    }
 
 
     return {
     return {
         loading,
         loading,
@@ -498,91 +287,7 @@ export function usePurchaseOrder() {
 export function useDelistingOrder() {
 export function useDelistingOrder() {
     const { dataList, total, pageIndex, pageSize, inputList, selectList, buttonList, getQueryParam, resetFilter } = useDataTable<Ermcp.MyDeListingRsp>()
     const { dataList, total, pageIndex, pageSize, inputList, selectList, buttonList, getQueryParam, resetFilter } = useDataTable<Ermcp.MyDeListingRsp>()
     const loading = shallowRef(false)
     const loading = shallowRef(false)
-
-    const columns = shallowRef<Ermcp.TableColumn[]>([
-        {
-            prop: 'buyorsell',
-            label: '类型',
-            show: true,
-        },
-        {
-            prop: 'matchusername',
-            label: '对手方',
-            show: true,
-        },
-        {
-            prop: 'zsshapetypedisplay',
-            label: '形状',
-            show: true,
-        },
-        {
-            prop: 'zscolortype1display',
-            label: '颜色',
-            show: true,
-        },
-        {
-            prop: 'zsclaritytype1display',
-            label: '净度',
-            show: true,
-        },
-        {
-            prop: 'zscuttype1display',
-            label: '切工',
-            show: true,
-        },
-        {
-            prop: 'zspolishtype1display',
-            label: '抛光',
-            show: true,
-        },
-        {
-            prop: 'zssymmetrytype1display',
-            label: '对称',
-            show: true,
-        },
-        {
-            prop: 'zsfluorescencetype1display',
-            label: '荧光',
-            show: true,
-        },
-        {
-            prop: 'ordertime',
-            label: '尺寸',
-            show: true,
-        },
-        {
-            prop: 'qty',
-            label: '重量',
-            show: true,
-        },
-        {
-            prop: 'ordertime',
-            label: '价格',
-            show: true,
-        },
-        {
-            prop: 'exchangerate',
-            label: '汇率',
-            show: true,
-        },
-        {
-            prop: 'tradeprice',
-            label: '成交价格',
-            show: true,
-        },
-        {
-            prop: 'tradetime',
-            label: '成交时间',
-            width: 200,
-            show: true,
-        },
-        {
-            prop: 'operate',
-            label: '操作',
-            show: true,
-            fixed: 'right',
-        }
-    ])
+    const columns = shallowRef(getTableColumns('listing_delisting'))
 
 
     const categoryList = [
     const categoryList = [
         { label: '单颗裸钻', value: Category.Diamond },
         { label: '单颗裸钻', value: Category.Diamond },
@@ -622,9 +327,6 @@ export function useDelistingOrder() {
                 total.value = res.total
                 total.value = res.total
                 dataList.value = res.data
                 dataList.value = res.data
             },
             },
-            fail: () => {
-                dataList.value = []
-            },
             complete: () => {
             complete: () => {
                 loading.value = false
                 loading.value = false
             }
             }
@@ -636,7 +338,10 @@ export function useDelistingOrder() {
         resetFilter()
         resetFilter()
         getDelistingOrderList()
         getDelistingOrderList()
     }
     }
-    search.onClick = getDelistingOrderList
+    search.onClick = () => {
+        pageIndex.value = 1
+        getDelistingOrderList()
+    }
 
 
     return {
     return {
         loading,
         loading,
@@ -690,197 +395,25 @@ export function useInquireOrder() {
         }
         }
 
 
         if (selectedBuyOrSell.value) {
         if (selectedBuyOrSell.value) {
-            columns.value = [
-                {
-                    prop: 'buyorsell',
-                    label: '类型',
-                    show: true,
-                },
-                {
-                    prop: 'matchusername',
-                    label: '对手方',
-                    show: true,
-                },
-                {
-                    prop: 'zstabledisplay',
-                    label: '形状',
-                    show: true,
-                },
-                {
-                    prop: 'wrtradeorderstatus',
-                    label: '颜色',
-                    show: true,
-                },
-                {
-                    prop: 'validtime',
-                    label: '净度',
-                    show: true,
-                },
-                {
-                    prop: 'ordertime',
-                    label: '切工',
-                    show: true,
-                },
-                {
-                    prop: 'ordertime',
-                    label: '抛光',
-                    show: true,
-                },
-                {
-                    prop: 'ordertime',
-                    label: '对称',
-                    show: true,
-                },
-                {
-                    prop: 'ordertime',
-                    label: '荧光',
-                    show: true,
-                },
-                {
-                    prop: 'ordertime',
-                    label: '尺寸',
-                    show: true,
-                },
-                {
-                    prop: 'qty',
-                    label: '重量',
-                    show: true,
-                },
-                {
-                    prop: 'ordertime',
-                    label: '价格',
-                    show: true,
-                },
-                {
-                    prop: 'exchangerate',
-                    label: '汇率',
-                    show: true,
-                },
-                {
-                    prop: 'tradeprice',
-                    label: '成交价格',
-                    show: true,
-                },
-                {
-                    prop: 'tradetime',
-                    label: '成交时间',
-                    width: 200,
-                    show: true,
-                },
-                {
-                    prop: 'operate',
-                    label: '操作',
-                    show: true,
-                    fixed: 'right',
-                }
-            ]
+            columns.value = getTableColumns('listing_inquire_sell')
             return queryMyDelistingApply({
             return queryMyDelistingApply({
                 data: param,
                 data: param,
                 success: (res) => {
                 success: (res) => {
                     total.value = res.total
                     total.value = res.total
                     dataList.value = res.data
                     dataList.value = res.data
                 },
                 },
-                fail: () => {
-                    dataList.value = []
-                },
                 complete: () => {
                 complete: () => {
                     loading.value = false
                     loading.value = false
                 }
                 }
             })
             })
         } else {
         } else {
-            columns.value = [
-                {
-                    prop: 'buyorsell',
-                    label: '类型',
-                    show: true,
-                },
-                {
-                    prop: 'matchusername',
-                    label: '对手方',
-                    show: true,
-                },
-                {
-                    prop: 'zstabledisplay',
-                    label: '形状',
-                    show: true,
-                },
-                {
-                    prop: 'wrtradeorderstatus',
-                    label: '颜色',
-                    show: true,
-                },
-                {
-                    prop: 'validtime',
-                    label: '净度',
-                    show: true,
-                },
-                {
-                    prop: 'ordertime',
-                    label: '切工',
-                    show: true,
-                },
-                {
-                    prop: 'ordertime',
-                    label: '抛光',
-                    show: true,
-                },
-                {
-                    prop: 'ordertime',
-                    label: '对称',
-                    show: true,
-                },
-                {
-                    prop: 'ordertime',
-                    label: '荧光',
-                    show: true,
-                },
-                {
-                    prop: 'ordertime',
-                    label: '尺寸',
-                    show: true,
-                },
-                {
-                    prop: 'qty',
-                    label: '重量',
-                    show: true,
-                },
-                {
-                    prop: 'ordertime',
-                    label: '价格',
-                    show: true,
-                },
-                {
-                    prop: 'exchangerate',
-                    label: '汇率',
-                    show: true,
-                },
-                {
-                    prop: 'tradeprice',
-                    label: '成交价格',
-                    show: true,
-                },
-                {
-                    prop: 'tradetime',
-                    label: '成交时间',
-                    width: 200,
-                    show: true,
-                },
-                {
-                    prop: 'operate',
-                    label: '操作',
-                    show: true,
-                    fixed: 'right',
-                }
-            ]
+            columns.value = getTableColumns('listing_inquire_buy')
             return queryMyBargainApply({
             return queryMyBargainApply({
                 data: param,
                 data: param,
                 success: (res) => {
                 success: (res) => {
                     total.value = res.total
                     total.value = res.total
                     dataList.value = res.data
                     dataList.value = res.data
                 },
                 },
-                fail: () => {
-                    dataList.value = []
-                },
                 complete: () => {
                 complete: () => {
                     loading.value = false
                     loading.value = false
                 }
                 }

+ 43 - 222
src/business/order/listing.ts

@@ -157,248 +157,69 @@ export function useSellOrderListing() {
         switch (selectedCategoryId.value) {
         switch (selectedCategoryId.value) {
             case Category.Diamonds: {
             case Category.Diamonds: {
                 columns.value = [
                 columns.value = [
-                    {
-                        prop: 'goodsno',
-                        label: '商品编号',
-                        show: true,
-                    },
-                    {
-                        prop: 'price',
-                        label: '总价',
-                        show: true,
-                    },
-                    {
-                        prop: 'weight',
-                        label: '总重量',
-                        show: true,
-                    },
-                    {
-                        prop: 'weightavg',
-                        label: '平均单颗重量',
-                        show: true,
-                    },
-                    {
-                        prop: 'priceper',
-                        label: '克拉单位',
-                        show: true,
-                    },
-                    {
-                        prop: 'ftotalqty',
-                        label: '库存重量',
-                        show: true,
-                    },
-                    {
-                        prop: 'remainqty',
-                        label: '剩余重量',
-                        show: true,
-                    },
-                    {
-                        prop: 'zsshapetypedisplay',
-                        label: '形状',
-                        show: true,
-                        width: 200,
-                    },
-                    {
-                        prop: 'zscolortype',
-                        label: '颜色',
-                        show: true,
-                    },
-                    {
-                        prop: 'zsclaritytype',
-                        label: '净度',
-                        show: true,
-                    }
+                    { prop: 'goodsno', label: '商品编号', show: true, },
+                    { prop: 'price', label: '总价', show: true, },
+                    { prop: 'weight', label: '总重量', show: true, },
+                    { prop: 'weightavg', label: '平均单颗重量', show: true, },
+                    { prop: 'priceper', label: '克拉单位', show: true, },
+                    { prop: 'ftotalqty', label: '库存重量', show: true, },
+                    { prop: 'remainqty', label: '剩余重量', show: true, },
+                    { prop: 'zsshapetypedisplay', label: '形状', show: true, width: 200, },
+                    { prop: 'zscolortype', label: '颜色', show: true, },
+                    { prop: 'zsclaritytype', label: '净度', show: true, }
                 ]
                 ]
                 break
                 break
             }
             }
             case Category.Diamond: {
             case Category.Diamond: {
                 columns.value = [
                 columns.value = [
-                    {
-                        prop: 'goodsno',
-                        label: '商品编号',
-                        show: true,
-                    },
-                    {
-                        prop: 'price',
-                        label: '价格',
-                        show: true,
-                    },
-                    {
-                        prop: 'weight',
-                        label: '克拉重量',
-                        show: true,
-                    },
-                    {
-                        prop: 'priceper',
-                        label: '克拉单位',
-                        show: true,
-                    },
-                    {
-                        prop: 'zsshapetypedisplay',
-                        label: '形状',
-                        width: 200,
-                        show: true,
-                    },
-                    {
-                        prop: 'zscolortype1display',
-                        label: '颜色',
-                        show: true,
-                    },
-                    {
-                        prop: 'zsclaritytype1display',
-                        label: '净度',
-                        show: true,
-                    }
+                    { prop: 'goodsno', label: '商品编号', show: true, },
+                    { prop: 'price', label: '价格', show: true, },
+                    { prop: 'weight', label: '克拉重量', show: true, },
+                    { prop: 'priceper', label: '克拉单位', show: true, },
+                    { prop: 'zsshapetypedisplay', label: '形状', width: 200, show: true, },
+                    { prop: 'zscolortype1display', label: '颜色', show: true, },
+                    { prop: 'zsclaritytype1display', label: '净度', show: true, }
                 ]
                 ]
                 break
                 break
             }
             }
             case Category.Rough: {
             case Category.Rough: {
                 columns.value = [
                 columns.value = [
-                    {
-                        prop: 'goodsno',
-                        label: '商品编号',
-                        show: true,
-                    },
-                    {
-                        prop: 'price',
-                        label: '总价',
-                        show: true,
-                    },
-                    {
-                        prop: 'weight',
-                        label: '总重量',
-                        show: true,
-                    },
-                    {
-                        prop: 'weightavg',
-                        label: '平均单颗重量',
-                        show: true,
-                    },
-                    {
-                        prop: 'priceper',
-                        label: '克拉单位',
-                        show: true,
-                    },
-                    {
-                        prop: 'ftotalqty',
-                        label: '库存重量',
-                        show: true,
-                    },
-                    {
-                        prop: 'remainqty',
-                        label: '剩余重量',
-                        show: true,
-                    },
-                    {
-                        prop: 'zscrystaltypedisplay',
-                        label: '晶型',
-                        width: 200,
-                        show: true,
-                    },
-                    {
-                        prop: 'zscolortype',
-                        label: '颜色',
-                        show: true,
-                    },
-                    {
-                        prop: 'zsclaritytype',
-                        label: '净度',
-                        show: true,
-                    }
+                    { prop: 'goodsno', label: '商品编号', show: true, },
+                    { prop: 'price', label: '总价', show: true, },
+                    { prop: 'weight', label: '总重量', show: true, },
+                    { prop: 'weightavg', label: '平均单颗重量', show: true, },
+                    { prop: 'priceper', label: '克拉单位', show: true, },
+                    { prop: 'ftotalqty', label: '库存重量', show: true, },
+                    { prop: 'remainqty', label: '剩余重量', show: true, },
+                    { prop: 'zscrystaltypedisplay', label: '晶型', width: 200, show: true, },
+                    { prop: 'zscolortype', label: '颜色', show: true, },
+                    { prop: 'zsclaritytype', label: '净度', show: true, }
                 ]
                 ]
                 break
                 break
             }
             }
             case Category.Jewelry: {
             case Category.Jewelry: {
                 columns.value = [
                 columns.value = [
-                    {
-                        prop: 'goodsno',
-                        label: '商品编号',
-                        show: true,
-                    },
-                    {
-                        prop: 'price',
-                        label: '价格',
-                        show: true,
-                    },
-                    {
-                        prop: 'weight',
-                        label: '主石重量',
-                        show: true,
-                    },
-                    {
-                        prop: 'priceper',
-                        label: '克拉单位',
-                        show: true,
-                    },
-                    {
-                        prop: 'zsstyletypedisplay',
-                        label: '款式',
-                        width: 200,
-                        show: true,
-                    },
-                    {
-                        prop: 'zsstyletypedisplay',
-                        label: '主石形状',
-                        width: 200,
-                        show: true,
-                    },
-                    {
-                        prop: 'zsclaritytype1display',
-                        label: '主石净度',
-                        show: true,
-                    },
-                    {
-                        prop: 'zscuttype1display',
-                        label: '主石切工',
-                        show: true,
-                    },
-                    {
-                        prop: 'zssymmetrytype1display',
-                        label: '主石对称度',
-                        show: true,
-                    }
+                    { prop: 'goodsno', label: '商品编号', show: true, },
+                    { prop: 'price', label: '价格', show: true, },
+                    { prop: 'weight', label: '主石重量', show: true, },
+                    { prop: 'priceper', label: '克拉单位', show: true, },
+                    { prop: 'zsstyletypedisplay', label: '款式', width: 200, show: true, },
+                    { prop: 'zsstyletypedisplay', label: '主石形状', width: 200, show: true, },
+                    { prop: 'zsclaritytype1display', label: '主石净度', show: true, },
+                    { prop: 'zscuttype1display', label: '主石切工', show: true, },
+                    { prop: 'zssymmetrytype1display', label: '主石对称度', show: true, }
                 ]
                 ]
                 break
                 break
             }
             }
             case Category.Fancy: {
             case Category.Fancy: {
                 columns.value = [
                 columns.value = [
-                    {
-                        prop: 'goodsno',
-                        label: '商品编号',
-                        show: true,
-                    },
-                    {
-                        prop: 'price',
-                        label: '价格',
-                        show: true,
-                    },
-                    {
-                        prop: 'weight',
-                        label: '克拉重量',
-                        show: true,
-                    },
-                    {
-                        prop: 'priceper',
-                        label: '克拉单位',
-                        show: true,
-                    },
-                    {
-                        prop: 'zsshapetypedisplay',
-                        label: '形状',
-                        width: 200,
-                        show: true,
-                    },
-                    {
-                        prop: 'zsczcolortype',
-                        label: '颜色',
-                        width: 200,
-                        show: true,
-                    },
-                    {
-                        prop: 'zsclaritytype1display',
-                        label: '净度',
-                        show: true,
-                    }
+                    { prop: 'goodsno', label: '商品编号', show: true, },
+                    { prop: 'price', label: '价格', show: true, },
+                    { prop: 'weight', label: '克拉重量', show: true, },
+                    { prop: 'priceper', label: '克拉单位', show: true, },
+                    { prop: 'zsshapetypedisplay', label: '形状', width: 200, show: true, },
+                    { prop: 'zsczcolortype', label: '颜色', width: 200, show: true, },
+                    { prop: 'zsclaritytype1display', label: '净度', show: true, }
                 ]
                 ]
                 break
                 break
             }
             }

+ 58 - 85
src/business/search/index.ts

@@ -1,6 +1,9 @@
-import { shallowRef } from 'vue'
+import { ref, shallowRef } from 'vue'
 import { useDataTable } from '@/hooks/datatable'
 import { useDataTable } from '@/hooks/datatable'
+import { getTableColumns } from '@/business/table'
+import { sessionData } from '@/stores'
 import { searchSellOrder } from '@/services/api/order'
 import { searchSellOrder } from '@/services/api/order'
+import { queryWarehouseInfo } from '@/services/api/warehouse'
 import {
 import {
     Category,
     Category,
     getCurrencyTypeList,
     getCurrencyTypeList,
@@ -17,8 +20,18 @@ import {
 export function useSearch(category: Category) {
 export function useSearch(category: Category) {
     const { dataList, total, pageIndex, pageSize } = useDataTable<Ermcp.SellOrderRsp>()
     const { dataList, total, pageIndex, pageSize } = useDataTable<Ermcp.SellOrderRsp>()
     const loading = shallowRef(false)
     const loading = shallowRef(false)
-    const formData = shallowRef<Ermcp.SellOrderSearchReq>({
-        zscategory: category
+    const columns = shallowRef(getTableColumns('listing_sellorder'))
+    const warehouseList = shallowRef<Ermcp.WarehouseInfoRsp[]>([]) // 仓库列表
+
+    // 部分请求参数类型重定义
+    type SellOrderSearchReq = Omit<Ermcp.SellOrderSearchReq, 'zsshapetype' | 'zscurrencytype' | 'zscerttype'> & {
+        zsshapetype?: number[],
+        zscurrencytype?: number[],
+        zscerttype?: number[],
+    }
+
+    const formData = ref<SellOrderSearchReq>({
+        zscategory: category,
     })
     })
 
 
     const enums = {
     const enums = {
@@ -33,99 +46,57 @@ export function useSearch(category: Category) {
         certTypeList: getCertTypeList(),
         certTypeList: getCertTypeList(),
     }
     }
 
 
-    const columns = shallowRef<Ermcp.TableColumn[]>([
-        {
-            prop: 'wrtradeorderid',
-            label: '卖方',
-            show: true,
-        },
-        {
-            prop: 'sellusername',
-            label: '仓库',
-            show: true,
-        },
-        {
-            prop: 'zscategorydisplay',
-            label: '形状',
-            show: true,
-        },
-        {
-            prop: 'goodsno',
-            label: '颜色',
-            show: true,
-        },
-        {
-            prop: 'totalqty',
-            label: '净度',
-            show: true,
-        },
-        {
-            prop: 'fixedprice',
-            label: '切工',
-            show: true,
-        },
-        {
-            prop: 'remainqty',
-            label: '抛光',
-            show: true,
-        },
-        {
-            prop: 'wrtradeorderstatus',
-            label: '对称',
-            show: true,
-        },
-        {
-            prop: 'ordertime',
-            label: '荧光',
-            show: true,
-        },
-        {
-            prop: 'tradedate',
-            label: '尺寸',
-            show: true,
-        },
-        {
-            prop: 'tradedate',
-            label: '价格',
-            show: true,
-        },
-        {
-            prop: 'tradedate',
-            label: '克拉重量',
-            show: true,
-        },
-        {
-            prop: 'tradedate',
-            label: '克拉单价',
-            show: true,
-        },
-        {
-            prop: 'operate',
-            label: '操作',
-            show: true,
-            fixed: 'right',
-            width: 180
-        }
-    ])
-
-    const onSearch = () => {
+    // 获取出售大厅委托单
+    const getSellOrderList = () => {
+        const { zsshapetype, zscurrencytype, zscerttype, warehouseid, ...param } = formData.value
         loading.value = true
         loading.value = true
-        searchSellOrder({
-            data: formData.value,
+        return searchSellOrder({
+            data: {
+                ...param,
+                page: pageIndex.value,
+                pagesize: pageSize.value,
+                warehouseid: warehouseid || undefined,
+                zsshapetype: zsshapetype?.map((val) => val.toString()),
+                zscurrencytype: zscurrencytype?.map((val) => val.toString()),
+                zscerttype: zscerttype?.map((val) => val.toString())
+            },
             success: (res) => {
             success: (res) => {
                 dataList.value = res.data
                 dataList.value = res.data
             },
             },
-            fail: () => {
-                dataList.value = []
-            },
             complete: () => {
             complete: () => {
                 loading.value = false
                 loading.value = false
             }
             }
         })
         })
     }
     }
 
 
+    const onSearch = () => {
+        pageIndex.value = 1
+        getSellOrderList()
+    }
+
+    const onReset = () => {
+        pageIndex.value = 1
+        formData.value = {
+            zscategory: category
+        }
+        getSellOrderList()
+    }
+
+    // 获取仓库列表
+    queryWarehouseInfo({
+        data: {
+            userid: sessionData.getLoginInfo('UserID'),
+            status: 1,
+            isincludeexchange: true,
+        },
+        success: (res) => {
+            warehouseList.value = res.data
+        }
+    })
+
     return {
     return {
         loading,
         loading,
+        warehouseList,
         formData,
         formData,
         enums,
         enums,
         dataList,
         dataList,
@@ -133,6 +104,8 @@ export function useSearch(category: Category) {
         total,
         total,
         pageIndex,
         pageIndex,
         pageSize,
         pageSize,
-        onSearch
+        getSellOrderList,
+        onSearch,
+        onReset,
     }
     }
 }
 }

+ 205 - 39
src/business/table/index.ts

@@ -1,6 +1,210 @@
 import { shallowRef } from 'vue'
 import { shallowRef } from 'vue'
 import { sessionData } from '@/stores'
 import { sessionData } from '@/stores'
 
 
+type TableColumnKey = typeof tableColumnKeys[number]
+const tableColumnKeys = ['system_menu', 'system_role', 'warehousing_diamond', 'warehousing_warehouse', 'mine_capital', 'listing_sellorder', 'listing_buyorder', 'listing_saleorder', 'listing_purchaseorder', 'listing_delisting', 'listing_inquire_buy', 'listing_inquire_sell', 'mine_address', 'mine_invoice'] as const
+
+/**
+ * PC端表格列
+ */
+const pcTableColumnMap = new Map<TableColumnKey, Ermcp.TableColumn[]>([
+    // 系统管理-菜单管理
+    ['system_menu', [
+        { prop: 'resourcename', label: '菜单' },
+        { prop: 'resourcecode', label: '代码' },
+        { prop: 'component', label: '组件' },
+        { prop: 'iconame', label: '图标' },
+        { prop: 'operate', label: '操作' }
+    ]],
+    // 系统管理-角色管理
+    ['system_role', [
+        { prop: 'id', label: '序号', width: 100 },
+        { prop: 'roleName', label: '角色名称' },
+        { prop: 'createdAt', label: '创建时间' },
+        { prop: 'updatedAt', label: '更新时间' },
+        { prop: 'operate', label: '操作', width: 300 }
+    ]],
+    // 我的仓储-我的库存
+    ['warehousing_diamond', [
+        { prop: 'goodsno', label: '商品编号' },
+        { prop: 'price', label: '总价' },
+        { prop: 'weight', label: '总重量' },
+        { prop: 'weightavg', label: '平均单颗重量' },
+        { prop: 'priceper', label: '克拉单位' },
+        { prop: 'ftotalqty', label: '库存重量' },
+        { prop: 'ffreezeqty', label: '冻结重量' },
+        { prop: 'warehousenamedisplay', label: '仓库', width: 180 },
+        { prop: 'zsshapetypedisplay', label: '形状', width: 200 },
+        { prop: 'zscolortype', label: '颜色' },
+        { prop: 'zsclaritytype', label: '净度' },
+        { prop: 'operate', label: '操作' }
+    ]],
+    // 我的仓储-我的仓库
+    ['warehousing_warehouse', [
+        { prop: 'warehousecode', label: '仓库代码' },
+        { prop: 'warehousename', label: '仓库名称' },
+        { prop: 'address', label: '仓库地址' },
+        { prop: 'contactname', label: '联系人' },
+        { prop: 'contactnum', label: '联系电话' },
+        { prop: 'createtime', label: '创建时间' },
+        { prop: 'operate', label: '操作' }
+    ]],
+    // 挂牌大厅-出售大厅
+    ['listing_sellorder', [
+        { prop: 'wrtradeorderid', label: '卖方' },
+        { prop: 'sellusername', label: '仓库' },
+        { prop: 'zscategorydisplay', label: '形状' },
+        { prop: 'goodsno', label: '颜色' },
+        { prop: 'totalqty', label: '净度' },
+        { prop: 'fixedprice', label: '切工' },
+        { prop: 'remainqty', label: '抛光' },
+        { prop: 'wrtradeorderstatus', label: '对称' },
+        { prop: 'ordertime', label: '荧光' },
+        { prop: 'tradedate', label: '尺寸' },
+        { prop: 'tradedate', label: '价格' },
+        { prop: 'tradedate', label: '克拉重量' },
+        { prop: 'tradedate', label: '克拉单价' },
+        { prop: 'operate', label: '操作', width: 180 }
+    ]],
+    // 挂牌大厅-求购大厅
+    ['listing_buyorder', [
+        { prop: 'wrtradeorderid', label: '委托单号', width: 200 },
+        { prop: 'buyusername', label: '买方' },
+        { prop: 'zscategorydisplay', label: '商品分类' },
+        { prop: 'zstabledisplay', label: '求购信息' },
+        { prop: 'wrtradeorderstatus', label: '状态' },
+        { prop: 'validtime', label: '有效日期', width: 180 },
+        { prop: 'ordertime', label: '委托时间', width: 180 },
+        { prop: 'operate', label: '操作' }
+    ]],
+    // 挂牌大厅-我的出售
+    ['listing_saleorder', [
+        { prop: 'wrtradeorderid', label: '委托单号', width: 200 },
+        { prop: 'zscategorydisplay', label: '商品分类' },
+        { prop: 'goodsno', label: '商品编号' },
+        { prop: 'totalqty', label: '委托重量' },
+        { prop: 'fixedprice', label: '克拉单价' },
+        { prop: 'selledqty', label: '成交重量' },
+        { prop: 'wrtradeorderstatus', label: '委托状态' },
+        { prop: 'ordertime', label: '委托时间', width: 180 },
+        { prop: 'operate', label: '操作' }
+    ]],
+    // 挂牌大厅-我的求购
+    ['listing_purchaseorder', [
+        { prop: 'wrtradeorderid', label: '委托单号', width: 200 },
+        { prop: 'zscategorydisplay', label: '商品分类' },
+        { prop: 'zstabledisplay', label: '求购信息' },
+        { prop: 'wrtradeorderstatus', label: '状态' },
+        { prop: 'validtime', label: '有效日期', width: 180 },
+        { prop: 'ordertime', label: '委托时间', width: 180 },
+        { prop: 'operate', label: '操作' }
+    ]],
+    // 挂牌大厅-我的摘牌
+    ['listing_delisting', [
+        { prop: 'buyorsell', label: '类型' },
+        { prop: 'matchusername', label: '对手方' },
+        { prop: 'zsshapetypedisplay', label: '形状' },
+        { prop: 'zscolortype1display', label: '颜色' },
+        { prop: 'zsclaritytype1display', label: '净度' },
+        { prop: 'zscuttype1display', label: '切工' },
+        { prop: 'zspolishtype1display', label: '抛光' },
+        { prop: 'zssymmetrytype1display', label: '对称' },
+        { prop: 'zsfluorescencetype1display', label: '荧光' },
+        { prop: 'ordertime', label: '尺寸' },
+        { prop: 'qty', label: '重量' },
+        { prop: 'ordertime', label: '价格' },
+        { prop: 'exchangerate', label: '汇率' },
+        { prop: 'tradeprice', label: '成交价格' },
+        { prop: 'tradetime', label: '成交时间', width: 200 },
+        { prop: 'operate', label: '操作' }
+    ]],
+    // 挂牌大厅-我的询价-求购
+    ['listing_inquire_buy', [
+        { prop: 'buyorsell', label: '类型' },
+        { prop: 'matchusername', label: '对手方' },
+        { prop: 'zstabledisplay', label: '形状' },
+        { prop: 'wrtradeorderstatus', label: '颜色' },
+        { prop: 'validtime', label: '净度' },
+        { prop: 'ordertime', label: '切工' },
+        { prop: 'ordertime', label: '抛光' },
+        { prop: 'ordertime', label: '对称' },
+        { prop: 'ordertime', label: '荧光' },
+        { prop: 'ordertime', label: '尺寸' },
+        { prop: 'qty', label: '重量' },
+        { prop: 'ordertime', label: '价格' },
+        { prop: 'exchangerate', label: '汇率' },
+        { prop: 'tradeprice', label: '成交价格' },
+        { prop: 'tradetime', label: '成交时间', width: 200 },
+        { prop: 'operate', label: '操作' }
+    ]],
+    // 挂牌大厅-我的询价-出售
+    ['listing_inquire_sell', [
+        { prop: 'buyorsell', label: '类型' },
+        { prop: 'matchusername', label: '对手方' },
+        { prop: 'zstabledisplay', label: '形状' },
+        { prop: 'wrtradeorderstatus', label: '颜色' },
+        { prop: 'validtime', label: '净度' },
+        { prop: 'ordertime', label: '切工' },
+        { prop: 'ordertime', label: '抛光' },
+        { prop: 'ordertime', label: '对称' },
+        { prop: 'ordertime', label: '荧光' },
+        { prop: 'ordertime', label: '尺寸' },
+        { prop: 'qty', label: '重量' },
+        { prop: 'ordertime', label: '价格' },
+        { prop: 'exchangerate', label: '汇率' },
+        { prop: 'tradeprice', label: '成交价格' },
+        { prop: 'tradetime', label: '成交时间', width: 200 },
+        { prop: 'operate', label: '操作' }
+    ]],
+    // 会员中心-我的出入金
+    ['mine_capital', [
+        { prop: 'logincode', label: '资金账户' },
+        { prop: 'branchbankname', label: '托管银行' },
+        { prop: 'executetype', label: '申请类型' },
+        { prop: 'amount', label: '金额' },
+        { prop: 'charge', label: '服务费' },
+        { prop: 'updatetime', label: '申请时间' },
+        { prop: 'applystatus', label: '状态' },
+        { prop: 'operate', label: '操作' }
+    ]],
+    // 会员中心-我的地址
+    ['mine_address', [
+        { prop: 'receivername', label: '收货人' },
+        { prop: 'cardtypeid', label: '证件类型' },
+        { prop: 'cardnum', label: '证件号码' },
+        { prop: 'phonenum', label: '联系电话' },
+        { prop: 'address', label: '收货地址' },
+        { prop: 'isdefault', label: '是否默认' },
+        { prop: 'operate', label: '操作', width: 250 }
+    ]],
+    // 会员中心-我的发票
+    ['mine_invoice', [
+        { prop: 'receipttype', label: '发票类型' },
+        { prop: 'username', label: '发票抬头' },
+        { prop: 'taxpayerid', label: '税号' },
+        { prop: 'contactinfo', label: '企业电话' },
+        { prop: 'information', label: '企业信息' },
+        { prop: 'operate', label: '操作' }
+    ]],
+])
+
+/**
+ * 获取表格列数据
+ * @param tableKey 
+ * @returns 
+ */
+export function getTableColumns(tableKey: TableColumnKey) {
+    const tableColumns = pcTableColumnMap.get(tableKey) ?? [] // *这里应该判断终端类型,有空再处理*
+
+    return tableColumns.map((e) => {
+        e.show = true
+        if (e.prop === 'operate') {
+            e.fixed = 'right'
+        }
+        return e
+    })
+}
+
 export function useTableColumns(tableKey: string, operateColumn = true) {
 export function useTableColumns(tableKey: string, operateColumn = true) {
     const tableColumns = sessionData.getValue('tableColumns')
     const tableColumns = sessionData.getValue('tableColumns')
 
 
@@ -34,42 +238,4 @@ export function useTableColumns(tableKey: string, operateColumn = true) {
         columns,
         columns,
         updateColumns,
         updateColumns,
     }
     }
-}
-
-/**
- * 获取表格列数据
- * @param tableKey 
- * @returns 
- */
-export function getTableColumns(tableKey: string) {
-    const tableColumns = tableColumnMap.get(tableKey) ?? []
-    const columns = tableColumns.map((e) => {
-        e.show = true
-        if (e.prop === 'operate') {
-            e.fixed = 'right'
-        }
-        return e
-    })
-    return shallowRef(columns)
-}
-
-const tableColumnMap = new Map<string, Ermcp.TableColumn[]>([
-    // 我的仓储-我的库存
-    ['warehousingDiamond', [
-        { prop: 'goodsno', label: '商品编号' },
-        { prop: 'price', label: '总价' },
-        { prop: 'weight', label: '总重量' },
-        { prop: 'weightavg', label: '平均单颗重量' },
-        { prop: 'priceper', label: '克拉单位' },
-        { prop: 'ftotalqty', label: '库存重量' },
-        { prop: 'ffreezeqty', label: '冻结重量' },
-        { prop: 'warehousenamedisplay', label: '仓库', width: 180 },
-        { prop: 'zsshapetypedisplay', label: '形状', width: 200 },
-        { prop: 'zscolortype', label: '颜色' },
-        { prop: 'zsclaritytype', label: '净度' },
-        { prop: 'operate', label: '操作' }
-    ]],
-    ['aa', [
-        { prop: 'wrtradeorderid', label: '卖方' },
-    ]]
-])
+}

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

@@ -0,0 +1,114 @@
+import { shallowRef, reactive } from 'vue'
+import { useDataTable } from '@/hooks/datatable'
+import { getTableColumns } from '@/business/table'
+import { queryUserReceiveInfo, queryWrUserReceiptInfo, userReceiveInfo } from '@/services/api/user'
+import { sessionData } from '@/stores'
+
+export function useAddress() {
+    const { dataList, total, pageIndex, pageSize } = useDataTable<Ermcp.UserReceiveInfoRsp>()
+    const loading = shallowRef(false)
+    const columns = shallowRef(getTableColumns('mine_address'))
+
+    const getUserAddressList = () => {
+        loading.value = true
+        return queryUserReceiveInfo({
+            data: {
+                userid: sessionData.getLoginInfo('UserID'),
+            },
+            success: (res) => {
+                total.value = res.total
+                dataList.value = res.data
+            },
+            complete: () => {
+                loading.value = false
+            }
+        })
+    }
+
+    return {
+        loading,
+        dataList,
+        columns,
+        total,
+        pageIndex,
+        pageSize,
+        getUserAddressList,
+    }
+}
+
+export function useAddressForm(selectedRow?: Ermcp.UserReceiveInfoRsp) {
+    const loading = shallowRef(false)
+    const formData = reactive<Proto.UserReceiveInfoReq>({
+        ClientSerialID: 0,
+        UserID: sessionData.getLoginInfo('UserID'),
+        ReceiverName: '',
+        CardNum: '',
+        PhoneNum: '',
+        CountryID: 0,
+        Address: '',
+        TakeRemark: '',
+    })
+
+    if (selectedRow?.autoid) {
+        ({
+            userid: formData.UserID,
+            receivername: formData.ReceiverName,
+            cardtypeid: formData.CardTypeID,
+            cardnum: formData.CardNum,
+            countryid: formData.CountryID,
+            provinceid: formData.ProvinceID,
+            cityid: formData.CityID,
+            districtid: formData.DistrictID,
+            address: formData.Address,
+            takeremark: formData.TakeRemark,
+        } = selectedRow)
+    }
+
+    const formSubmit = () => {
+        loading.value = true
+        return userReceiveInfo({
+            data: formData,
+            complete: () => {
+                loading.value = false
+            }
+        })
+    }
+
+    return {
+        loading,
+        formData,
+        formSubmit,
+    }
+}
+
+export function useInvoice() {
+    const { dataList, total, pageIndex, pageSize } = useDataTable<Ermcp.WrUserReceiptInfoRsp>()
+    const loading = shallowRef(false)
+    const columns = shallowRef(getTableColumns('mine_invoice'))
+
+    const getUserInvoiceList = () => {
+        loading.value = true
+        return queryWrUserReceiptInfo({
+            data: {
+                userid: sessionData.getLoginInfo('UserID'),
+            },
+            success: (res) => {
+                total.value = res.total
+                dataList.value = res.data
+            },
+            complete: () => {
+                loading.value = false
+            }
+        })
+    }
+
+    return {
+        loading,
+        dataList,
+        columns,
+        total,
+        pageIndex,
+        pageSize,
+        getUserInvoiceList,
+    }
+}

+ 6 - 43
src/business/warehouse/index.ts

@@ -1,51 +1,13 @@
 import { shallowRef, reactive } from 'vue'
 import { shallowRef, reactive } from 'vue'
 import { useDataTable } from '@/hooks/datatable'
 import { useDataTable } from '@/hooks/datatable'
+import { getTableColumns } from '@/business/table'
 import { queryWarehouseInfo, warehouseApply } from '@/services/api/warehouse'
 import { queryWarehouseInfo, warehouseApply } from '@/services/api/warehouse'
 import { commonStore, sessionData } from '@/stores'
 import { commonStore, sessionData } from '@/stores'
-//import { useTableColumns } from '../table'
 
 
 export function useWarehouse() {
 export function useWarehouse() {
     const { dataList, total, pageIndex, pageSize } = useDataTable<Ermcp.WarehouseInfoRsp>()
     const { dataList, total, pageIndex, pageSize } = useDataTable<Ermcp.WarehouseInfoRsp>()
     const loading = shallowRef(false)
     const loading = shallowRef(false)
-
-    const columns = shallowRef<Ermcp.TableColumn[]>([
-        {
-            prop: 'warehousecode',
-            label: '仓库代码',
-            show: true,
-        },
-        {
-            prop: 'warehousename',
-            label: '仓库名称',
-            show: true,
-        },
-        {
-            prop: 'address',
-            label: '仓库地址',
-            show: true,
-        },
-        {
-            prop: 'contactname',
-            label: '联系人',
-            show: true,
-        },
-        {
-            prop: 'contactnum',
-            label: '联系电话',
-            show: true,
-        },
-        {
-            prop: 'createtime',
-            label: '创建时间',
-            show: true,
-        },
-        {
-            prop: 'operate',
-            label: '操作',
-            show: true,
-            fixed: 'right',
-        }
-    ])
+    const columns = shallowRef(getTableColumns('warehousing_warehouse'))
 
 
     const getWarehouseList = () => {
     const getWarehouseList = () => {
         loading.value = true
         loading.value = true
@@ -66,6 +28,7 @@ export function useWarehouse() {
     }
     }
 
 
     return {
     return {
+        loading,
         dataList,
         dataList,
         columns,
         columns,
         total,
         total,
@@ -88,7 +51,7 @@ export function useWarehouseForm(selectedRow?: Ermcp.WarehouseInfoRsp) {
         contactnum: '',
         contactnum: '',
     })
     })
 
 
-    if (selectedRow) {
+    if (selectedRow?.warehousecode) {
         ({
         ({
             autoid: formData.warehouseid,
             autoid: formData.warehouseid,
             warehousecode: formData.warehousecode,
             warehousecode: formData.warehousecode,
@@ -102,7 +65,7 @@ export function useWarehouseForm(selectedRow?: Ermcp.WarehouseInfoRsp) {
         } = selectedRow)
         } = selectedRow)
     }
     }
 
 
-    const warehouseOperate = () => {
+    const formSubmit = () => {
         loading.value = true
         loading.value = true
         return warehouseApply({
         return warehouseApply({
             data: formData,
             data: formData,
@@ -116,6 +79,6 @@ export function useWarehouseForm(selectedRow?: Ermcp.WarehouseInfoRsp) {
         loading,
         loading,
         accountName,
         accountName,
         formData,
         formData,
-        warehouseOperate,
+        formSubmit,
     }
     }
 }
 }

+ 3 - 2
src/constants/client.ts

@@ -17,12 +17,13 @@ export enum ClientType {
     TradeInterface = 10 // 交易接口
     TradeInterface = 10 // 交易接口
 }
 }
 
 
-const clientTypes = getEnumTypes('ZSCategory') // 客户端类型
+const enumKeys = ['clientType'] as const
+const enumMap = getEnumTypes(...enumKeys)
 
 
 /**
 /**
  * 获取客户端类型列表
  * 获取客户端类型列表
  * @returns 
  * @returns 
  */
  */
 export function getClientTypeList() {
 export function getClientTypeList() {
-    return getEnumTypeList(clientTypes)
+    return getEnumTypeList(enumMap.get('clientType'))
 }
 }

+ 18 - 31
src/constants/diamond.ts

@@ -11,28 +11,15 @@ export enum Category {
     Fancy = 5, // 彩色钻石
     Fancy = 5, // 彩色钻石
 }
 }
 
 
-const categoryTypes = getEnumTypes('ZSCategory') // 钻石类型
-const currencyTypes = getEnumTypes('ZSCurrencyType') // 货币类型
-const colorTypes = getEnumTypes('ZSColorType') // 颜色类型
-const clarityTypes = getEnumTypes('ZSClarityType') // 净度类型
-const cutTypes = getEnumTypes('ZSCutType') // 切工类型
-const shapeTypes = getEnumTypes('ZSShapeType') // 形状类型
-const symmetryTypes = getEnumTypes('ZSSymmetryType') // 对称类型
-const polishTypes = getEnumTypes('ZSPolishType') // 抛光类型
-const fluorescenceTypes = getEnumTypes('ZSFluorescenceType') // 荧光类型
-const certTypes = getEnumTypes('ZSCertType') // 证书类型
-const crystalTypes = getEnumTypes('ZSCrystalType') // 晶型类型
-const fancyColorTypes1 = getEnumTypes('ZSCZColor1Type') // 彩钻类型1
-const fancyColorTypes2 = getEnumTypes('ZSCZColor2Type') // 彩钻类型2
-const fancyColorTypes3 = getEnumTypes('ZSCZColor3Type') // 彩钻类型3
-const styleTypes = getEnumTypes('ZSStyleType') // 款式类型
+const enumKeys = ['ZSCategory', 'ZSCurrencyType', 'ZSCurrencyType', 'ZSColorType', 'ZSClarityType', 'ZSCutType', 'ZSShapeType', 'ZSSymmetryType', 'ZSPolishType', 'ZSFluorescenceType', 'ZSCertType', 'ZSCrystalType', 'ZSCZColor1Type', 'ZSCZColor2Type', 'ZSCZColor3Type', 'ZSStyleType'] as const
+const enumMap = getEnumTypes(...enumKeys)
 
 
 /**
 /**
  * 获取钻石分类列表
  * 获取钻石分类列表
  * @returns 
  * @returns 
  */
  */
 export function getCategoryList() {
 export function getCategoryList() {
-    return getEnumTypeList(categoryTypes)
+    return getEnumTypeList(enumMap.get('ZSCategory'))
 }
 }
 
 
 /**
 /**
@@ -40,7 +27,7 @@ export function getCategoryList() {
  * @returns 
  * @returns 
  */
  */
 export function getCurrencyTypeList() {
 export function getCurrencyTypeList() {
-    return getEnumTypeList(currencyTypes)
+    return getEnumTypeList(enumMap.get('ZSCurrencyType'))
 }
 }
 
 
 /**
 /**
@@ -49,7 +36,7 @@ export function getCurrencyTypeList() {
  * @returns 
  * @returns 
  */
  */
 export function getCurrencyTypeInfo(value: number) {
 export function getCurrencyTypeInfo(value: number) {
-    return getEnumTypeInfo(currencyTypes, value)
+    return getEnumTypeInfo(enumMap.get('ZSCurrencyType') ?? [], value)
 }
 }
 
 
 /**
 /**
@@ -57,7 +44,7 @@ export function getCurrencyTypeInfo(value: number) {
  * @returns 
  * @returns 
  */
  */
 export function getColorTypeList() {
 export function getColorTypeList() {
-    return getEnumTypeList(colorTypes)
+    return getEnumTypeList(enumMap.get('ZSColorType'))
 }
 }
 
 
 /**
 /**
@@ -65,7 +52,7 @@ export function getColorTypeList() {
  * @returns 
  * @returns 
  */
  */
 export function getClarityTypeList() {
 export function getClarityTypeList() {
-    return getEnumTypeList(clarityTypes)
+    return getEnumTypeList(enumMap.get('ZSClarityType'))
 }
 }
 
 
 /**
 /**
@@ -73,7 +60,7 @@ export function getClarityTypeList() {
  * @returns 
  * @returns 
  */
  */
 export function getCutTypeList() {
 export function getCutTypeList() {
-    return getEnumTypeList(cutTypes)
+    return getEnumTypeList(enumMap.get('ZSCutType'))
 }
 }
 
 
 /**
 /**
@@ -81,7 +68,7 @@ export function getCutTypeList() {
  * @returns 
  * @returns 
  */
  */
 export function getShapeTypeList() {
 export function getShapeTypeList() {
-    return getEnumTypeList(shapeTypes)
+    return getEnumTypeList(enumMap.get('ZSShapeType'))
 }
 }
 
 
 /**
 /**
@@ -89,7 +76,7 @@ export function getShapeTypeList() {
  * @returns 
  * @returns 
  */
  */
 export function getSymmetryTypeList() {
 export function getSymmetryTypeList() {
-    return getEnumTypeList(symmetryTypes)
+    return getEnumTypeList(enumMap.get('ZSSymmetryType'))
 }
 }
 
 
 /**
 /**
@@ -97,7 +84,7 @@ export function getSymmetryTypeList() {
  * @returns 
  * @returns 
  */
  */
 export function getPolishTypeList() {
 export function getPolishTypeList() {
-    return getEnumTypeList(polishTypes)
+    return getEnumTypeList(enumMap.get('ZSPolishType'))
 }
 }
 
 
 /**
 /**
@@ -105,7 +92,7 @@ export function getPolishTypeList() {
  * @returns 
  * @returns 
  */
  */
 export function getFluorescenceTypeList() {
 export function getFluorescenceTypeList() {
-    return getEnumTypeList(fluorescenceTypes)
+    return getEnumTypeList(enumMap.get('ZSFluorescenceType'))
 }
 }
 
 
 /**
 /**
@@ -113,7 +100,7 @@ export function getFluorescenceTypeList() {
  * @returns 
  * @returns 
  */
  */
 export function getCertTypeList() {
 export function getCertTypeList() {
-    return getEnumTypeList(certTypes)
+    return getEnumTypeList(enumMap.get('ZSCertType'))
 }
 }
 
 
 /**
 /**
@@ -121,7 +108,7 @@ export function getCertTypeList() {
  * @returns 
  * @returns 
  */
  */
 export function getCrystalTypeList() {
 export function getCrystalTypeList() {
-    return getEnumTypeList(crystalTypes)
+    return getEnumTypeList(enumMap.get('ZSCrystalType'))
 }
 }
 
 
 /**
 /**
@@ -129,7 +116,7 @@ export function getCrystalTypeList() {
  * @returns 
  * @returns 
  */
  */
 export function getFancyColorType1List() {
 export function getFancyColorType1List() {
-    return getEnumTypeList(fancyColorTypes1)
+    return getEnumTypeList(enumMap.get('ZSCZColor1Type'))
 }
 }
 
 
 /**
 /**
@@ -137,7 +124,7 @@ export function getFancyColorType1List() {
  * @returns 
  * @returns 
  */
  */
 export function getFancyColorType2List() {
 export function getFancyColorType2List() {
-    return getEnumTypeList(fancyColorTypes2)
+    return getEnumTypeList(enumMap.get('ZSCZColor2Type'))
 }
 }
 
 
 /**
 /**
@@ -145,7 +132,7 @@ export function getFancyColorType2List() {
  * @returns 
  * @returns 
  */
  */
 export function getFancyColorType3List() {
 export function getFancyColorType3List() {
-    return getEnumTypeList(fancyColorTypes3)
+    return getEnumTypeList(enumMap.get('ZSCZColor3Type'))
 }
 }
 
 
 /**
 /**
@@ -153,5 +140,5 @@ export function getFancyColorType3List() {
  * @returns 
  * @returns 
  */
  */
 export function getStyleTypeList() {
 export function getStyleTypeList() {
-    return getEnumTypeList(styleTypes)
+    return getEnumTypeList(enumMap.get('ZSStyleType'))
 }
 }

+ 12 - 0
src/constants/funcode.ts

@@ -41,4 +41,16 @@ export enum FunCode {
     ZSBuyOrderDestingNegPriceRsp = 1441834, // 买摘牌询价接口应答
     ZSBuyOrderDestingNegPriceRsp = 1441834, // 买摘牌询价接口应答
     ZSBuyOrderDestingNegPriceOperateReq = 1441835, // 买摘牌询价操作接口请求
     ZSBuyOrderDestingNegPriceOperateReq = 1441835, // 买摘牌询价操作接口请求
     ZSBuyOrderDestingNegPriceOperateRsp = 1441836, // 买摘牌询价操作接口应答
     ZSBuyOrderDestingNegPriceOperateRsp = 1441836, // 买摘牌询价操作接口应答
+
+    UserReceiveInfoReq = 1900545, // 新增修改收货地址请求
+    UserReceiveInfoRsp = 1900546, // 新增修改收货地址请求响应
+    DelUserReceiveInfoReq = 1900547, // 删除收货地址请求
+    DelUserReceiveInfoRsp = 1900548, // 删除收货地址请求响应
+    UserReceiveIsDefaultReq = 1900570, // 设置默认收货地址请求
+    UserReceiveIsDefaultRsp = 1900571, // 设置默认收货地址应答
+
+    UserReceiptInfoReq = 1900549, // 新增修改用户发票信息请求
+    UserReceiptInfoRsp = 1900550, // 新增修改用户发票信息响应
+    DelUserReceiptInfoReq = 1900551, // 删除用户发票信息请求
+    DelUserReceiptInfoRsp = 1900552, // 删除用户发票信息请求响应
 }
 }

+ 22 - 9
src/constants/index.ts

@@ -11,12 +11,22 @@ export interface EnumType {
 
 
 /**
 /**
  * 获取枚举类型
  * 获取枚举类型
- * @param code 
+ * @param args 
  * @returns 
  * @returns 
  */
  */
-export function getEnumTypes(code: string) {
-    const enums = sessionData.getValue('allEnums')
-    return enums.filter((e) => e.enumdiccode.toLowerCase() === code.toLowerCase() && e.enumitemstatus === 1)
+export function getEnumTypes<T extends string[]>(...args: T) {
+    const enumMap = new Map<typeof args[number], Ermcp.EnumRsp[]>()
+    sessionData.getValue('allEnums').forEach((e) => {
+        if (args.some((code) => code.toLowerCase() === e.enumdiccode.toLowerCase())) {
+            const enums = enumMap.get(e.enumdiccode)
+            if (enums) {
+                enums.push(e)
+            } else {
+                enumMap.set(e.enumdiccode, [e])
+            }
+        }
+    })
+    return enumMap
 }
 }
 
 
 /**
 /**
@@ -34,11 +44,14 @@ export function getEnumTypeInfo(enums: Ermcp.EnumRsp[], value: number) {
  * @param enums 
  * @param enums 
  * @returns 
  * @returns 
  */
  */
-export function getEnumTypeList(enums: Ermcp.EnumRsp[]): EnumType[] {
-    return enums.map((e) => ({
-        label: e.enumdicname,
-        value: e.enumitemname,
-    }))
+export function getEnumTypeList(enums?: Ermcp.EnumRsp[]): EnumType[] {
+    if (enums) {
+        return enums.map((e) => ({
+            label: e.enumdicname,
+            value: e.enumitemname,
+        }))
+    }
+    return []
 }
 }
 
 
 /**
 /**

+ 1 - 0
src/hooks/datatable/index.ts

@@ -93,6 +93,7 @@ export function useDataTable<T>() {
 
 
     // 重置过滤项
     // 重置过滤项
     const resetFilter = () => {
     const resetFilter = () => {
+        pageIndex.value = 1
         filters.value = []
         filters.value = []
         filterOptons.selectList.forEach((e) => e.selectedValue = undefined)
         filterOptons.selectList.forEach((e) => e.selectedValue = undefined)
         filterOptons.inputList.forEach((e) => e.value = undefined)
         filterOptons.inputList.forEach((e) => e.value = undefined)

+ 68 - 6
src/mock/router.ts

@@ -228,7 +228,7 @@ const appmenu = {
                             },
                             },
                             {
                             {
                                 authType: 3,
                                 authType: 3,
-                                title: '修改仓库',
+                                title: '修改',
                                 code: 'warehousing_warehouse_edit',
                                 code: 'warehousing_warehouse_edit',
                                 component: 'views/warehousing/warehouse/components/edit/index.vue',
                                 component: 'views/warehousing/warehouse/components/edit/index.vue',
                                 buttonName: 'edit',
                                 buttonName: 'edit',
@@ -252,19 +252,19 @@ const appmenu = {
                         authType: 1,
                         authType: 1,
                         sort: 1,
                         sort: 1,
                         title: '会员信息',
                         title: '会员信息',
-                        code: 'mine_info',
+                        code: 'mine_account',
                         url: '',
                         url: '',
                         urlType: 1,
                         urlType: 1,
-                        component: 'views/mine/info/index.vue',
+                        component: 'views/mine/account/index.vue',
                     },
                     },
                     {
                     {
                         authType: 1,
                         authType: 1,
                         sort: 2,
                         sort: 2,
                         title: '我的出入金',
                         title: '我的出入金',
-                        code: 'mine_account',
-                        url: 'account',
+                        code: 'mine_capital',
+                        url: 'capital',
                         urlType: 1,
                         urlType: 1,
-                        component: 'views/mine/account/index.vue',
+                        component: 'views/mine/capital/index.vue',
                     },
                     },
                     {
                     {
                         authType: 1,
                         authType: 1,
@@ -274,6 +274,41 @@ const appmenu = {
                         url: 'address',
                         url: 'address',
                         urlType: 1,
                         urlType: 1,
                         component: 'views/mine/address/index.vue',
                         component: 'views/mine/address/index.vue',
+                        children: [
+                            {
+                                authType: 3,
+                                title: '新增地址',
+                                code: 'mine_address_add',
+                                component: 'views/mine/address/components/edit/index.vue',
+                                buttonName: 'add',
+                                buttonType: 'primary',
+
+                            },
+                            {
+                                authType: 3,
+                                title: '修改',
+                                code: 'mine_address_edit',
+                                component: 'views/mine/address/components/edit/index.vue',
+                                buttonName: 'edit',
+                                buttonType: 'primary',
+                            },
+                            {
+                                authType: 3,
+                                title: '删除',
+                                code: 'mine_address_delete',
+                                component: 'views/mine/address/components/delete/index.vue',
+                                buttonName: 'delete',
+                                buttonType: 'primary',
+                            },
+                            {
+                                authType: 3,
+                                title: '默认',
+                                code: 'mine_address_default',
+                                component: 'views/mine/address/components/default/index.vue',
+                                buttonName: 'default',
+                                buttonType: 'primary',
+                            }
+                        ]
                     },
                     },
                     {
                     {
                         authType: 1,
                         authType: 1,
@@ -283,6 +318,33 @@ const appmenu = {
                         url: 'invoice',
                         url: 'invoice',
                         urlType: 1,
                         urlType: 1,
                         component: 'views/mine/invoice/index.vue',
                         component: 'views/mine/invoice/index.vue',
+                        children: [
+                            {
+                                authType: 3,
+                                title: '新增发票',
+                                code: 'mine_invoice_add',
+                                component: 'views/mine/invoice/components/edit/index.vue',
+                                buttonName: 'add',
+                                buttonType: 'primary',
+
+                            },
+                            {
+                                authType: 3,
+                                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: 'primary',
+                            }
+                        ]
                     },
                     },
                 ]
                 ]
             },
             },

+ 5 - 2
src/packages/pc/components/base/pagination/index.vue

@@ -8,7 +8,7 @@
 </template>
 </template>
 
 
 <script lang="ts" setup>
 <script lang="ts" setup>
-import { reactive } from 'vue'
+import { reactive, watch } from 'vue'
 
 
 const emit = defineEmits(['update:pageSize', 'update:pageIndex', 'change'])
 const emit = defineEmits(['update:pageSize', 'update:pageIndex', 'change'])
 const props = defineProps({
 const props = defineProps({
@@ -37,7 +37,7 @@ const page = reactive({
 const handleSizeChange = (val: number) => {
 const handleSizeChange = (val: number) => {
     page.size = val;
     page.size = val;
     emit('update:pageSize', val);
     emit('update:pageSize', val);
-    emit('change');
+    handleCurrentChange(1);
 }
 }
 
 
 const handleCurrentChange = (val: number) => {
 const handleCurrentChange = (val: number) => {
@@ -45,6 +45,9 @@ const handleCurrentChange = (val: number) => {
     emit('update:pageIndex', val);
     emit('update:pageIndex', val);
     emit('change');
     emit('change');
 }
 }
+
+watch(() => props.pageSize, (val) => page.size = val)
+watch(() => props.pageIndex, (val) => page.index = val)
 </script>
 </script>
 
 
 <style lang="less">
 <style lang="less">

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

@@ -15,7 +15,7 @@
       <slot name="after"></slot>
       <slot name="after"></slot>
     </el-form-item>
     </el-form-item>
     <el-form-item>
     <el-form-item>
-      <el-button :class="item.className" v-for="(item, i) in buttonList" :key="i" :loading="loading"
+      <el-button :class="item.className" v-for="(item, i) in buttonList" :key="i" :disabled="loading"
         @click="item.onClick">{{ item.lable }}
         @click="item.onClick">{{ item.lable }}
       </el-button>
       </el-button>
     </el-form-item>
     </el-form-item>

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

@@ -1,5 +1,5 @@
 <template>
 <template>
-  <div class="app-table">
+  <div class="app-table" v-loading="loading">
     <div class="app-table__header" v-if="showHeader">
     <div class="app-table__header" v-if="showHeader">
       <div>
       <div>
         <slot name="header"></slot>
         <slot name="header"></slot>
@@ -12,8 +12,8 @@
       </div>
       </div>
     </div>
     </div>
     <div class="app-table__container">
     <div class="app-table__container">
-      <el-table ref="tableRef" :header-cell-class-name="selectionType" v-bind="$attrs" v-loading="loading"
-        highlight-current-row scrollbar-always-on @row-click="onRowClick" @select="onSelect">
+      <el-table ref="tableRef" :header-cell-class-name="selectionType" v-bind="$attrs" highlight-current-row
+        scrollbar-always-on @row-click="onRowClick" @select="onSelect">
         <!-- 展开行 -->
         <!-- 展开行 -->
         <el-table-column type="expand" v-if="$slots.expand">
         <el-table-column type="expand" v-if="$slots.expand">
           <template #default="{ row, $index }">
           <template #default="{ row, $index }">

+ 4 - 4
src/packages/pc/views/listing/buy/components/add/index.vue

@@ -20,9 +20,9 @@
             </el-form-item>
             </el-form-item>
             <el-form-item label="尺寸" prop="Size">
             <el-form-item label="尺寸" prop="Size">
                 <div class="el-form-item--col">
                 <div class="el-form-item--col">
-                    <el-input-number type="number" v-model="formData.Size[0]" :precision="2" :controls="false" />
+                    <el-input-number v-model="formData.Size[0]" :precision="2" :controls="false" />
                     <span>-</span>
                     <span>-</span>
-                    <el-input-number type="number" v-model="formData.Size[1]" :precision="2" :controls="false" />
+                    <el-input-number v-model="formData.Size[1]" :precision="2" :controls="false" />
                 </div>
                 </div>
             </el-form-item>
             </el-form-item>
             <el-form-item class="el-form-item--row" label="晶型" prop="ZSCrystalType"
             <el-form-item class="el-form-item--row" label="晶型" prop="ZSCrystalType"
@@ -127,12 +127,12 @@ const formRules: FormRules = {
                 callback()
                 callback()
             } else if (size.every((val: number) => val)) {
             } else if (size.every((val: number) => val)) {
                 if (size[0] > size[1]) {
                 if (size[0] > size[1]) {
-                    callback(new Error('范围应该从小到大'))
+                    callback(new Error('尺寸应该从小到大'))
                 } else {
                 } else {
                     callback()
                     callback()
                 }
                 }
             } else {
             } else {
-                callback(new Error('范围不能小于 0'))
+                callback(new Error('尺寸不能小于 0'))
             }
             }
         }
         }
     }],
     }],

+ 22 - 16
src/packages/pc/views/mine/account/index.vue

@@ -1,24 +1,30 @@
 <template>
 <template>
     <app-view>
     <app-view>
-        <template #header>
-            <app-filter v-bind="{ selectList, buttonList }" />
-        </template>
-        <app-table :data="dataList" v-model:columns="columns" :loading="loading">
-            <template #header>
-                <el-button type="primary">入金申请</el-button>
-                <el-button type="primary">出金申请</el-button>
-            </template>
-        </app-table>
+        <el-descriptions title="会员信息" :column="2" style="padding:20px" v-if="userInfo">
+            <el-descriptions-item label="登录代码">{{ userInfo.postalcode }}</el-descriptions-item>
+            <el-descriptions-item label="企业名称">{{ userInfo.customername }}</el-descriptions-item>
+            <el-descriptions-item label="登录账号">{{ userInfo.customername }}</el-descriptions-item>
+            <el-descriptions-item label="手机号">{{ userInfo.mobile2 }}</el-descriptions-item>
+            <el-descriptions-item label="机构代码"></el-descriptions-item>
+            <el-descriptions-item label="法人姓名"></el-descriptions-item>
+            <el-descriptions-item label="证件类型"></el-descriptions-item>
+            <el-descriptions-item label="企业地址"></el-descriptions-item>
+            <el-descriptions-item label="证件号码"></el-descriptions-item>
+            <el-descriptions-item label="联系人"></el-descriptions-item>
+            <el-descriptions-item label="联系电话"></el-descriptions-item>
+        </el-descriptions>
+        <el-divider />
+        <el-descriptions title="签约信息" :column="2" style="padding:20px" v-if="accountInfo">
+            <el-descriptions-item label="资金账号">{{ accountInfo.accountid }}</el-descriptions-item>
+            <el-descriptions-item label="余额">{{ accountInfo.balance }}</el-descriptions-item>
+            <el-descriptions-item label="冻结资金">{{ accountInfo.freezemargin }}</el-descriptions-item>
+            <el-descriptions-item label="可用资金">{{ accountInfo.usedmargin }}</el-descriptions-item>
+        </el-descriptions>
     </app-view>
     </app-view>
 </template>
 </template>
 
 
 <script lang="ts" setup>
 <script lang="ts" setup>
-import { ElMessage } from 'element-plus'
-import { useAccountInOut } from '@/business/account'
-import AppTable from '@pc/components/base/table/index.vue'
-import AppFilter from '@pc/components/base/table-filter/index.vue'
+import { useAccount } from '@/business/account'
 
 
-const { dataList, columns, selectList, buttonList, loading, getAccountInOutApply } = useAccountInOut()
-
-getAccountInOutApply().catch((err) => ElMessage.error(err))
+const { accountInfo, userInfo } = useAccount()
 </script>
 </script>

+ 92 - 0
src/packages/pc/views/mine/address/components/edit/index.vue

@@ -0,0 +1,92 @@
+<!-- 会员中心-我的地址-编辑 -->
+<template>
+    <app-drawer :title="selectedRow?.autoid ? '修改地址' : '新增地址'" :width="880" v-model:show="show" :loading="loading"
+        :refresh="refresh">
+        <el-form ref="formRef" class="el-form--horizontal" label-width="100px" :model="formData" :rules="formRules">
+            <el-form-item label="收货人" prop="ReceiverName">
+                <el-input placeholder="请输入" v-model="formData.ReceiverName" />
+            </el-form-item>
+            <el-form-item label="证件类型" prop="CardTypeID">
+                <el-select v-model="formData.CardTypeID">
+
+                </el-select>
+            </el-form-item>
+            <el-form-item label="联系电话" prop="PhoneNum">
+                <el-input placeholder="请输入" v-model="formData.PhoneNum" />
+            </el-form-item>
+            <el-form-item label="证件号码" prop="CardNum">
+                <el-input placeholder="请输入" v-model="formData.CardNum" />
+            </el-form-item>
+            <el-form-item class="el-form-item--row" label="收货地址" prop="area">
+                <app-region class="el-form-item--col" v-model:province="formData.ProvinceID"
+                    v-model:city="formData.CityID" v-model:district="formData.DistrictID" />
+            </el-form-item>
+            <el-form-item class="el-form-item--row" prop="Address">
+                <el-input placeholder="请输入" v-model="formData.Address" />
+            </el-form-item>
+        </el-form>
+        <template #footer>
+            <el-button @click="onCancel(false)" plain>取消</el-button>
+            <el-button type="primary" @click="onSubmit">提交</el-button>
+        </template>
+    </app-drawer>
+</template>
+
+<script lang="ts" setup>
+import { ref, PropType } from 'vue'
+import { ElMessage } from 'element-plus'
+import type { FormInstance, FormRules } from 'element-plus'
+import { useAddressForm } from '@/business/user'
+import AppDrawer from '@pc/components/base/drawer/index.vue'
+import AppRegion from '@pc/components/base/region/index.vue'
+
+const props = defineProps({
+    selectedRow: {
+        type: Object as PropType<Ermcp.UserReceiveInfoRsp>,
+        default: () => ({})
+    }
+})
+
+const { loading, formData, formSubmit } = useAddressForm(props.selectedRow)
+const show = ref(true)
+const refresh = ref(false)
+const formRef = ref<FormInstance>()
+
+const formRules: FormRules = {
+    ReceiverName: [{ required: true, message: '请输入收货人', trigger: 'blur' }],
+    CardTypeID: [{ required: true, message: '请选择证件类型' }],
+    PhoneNum: [{ required: true, message: '请输入联系电话', trigger: 'blur' }],
+    CardNum: [{ required: true, message: '请输入证件号码', trigger: 'blur' }],
+    Address: [{ required: true, message: '请输入详细地址', trigger: 'blur' }],
+    area: [
+        {
+            required: true,
+            validator: (rule, value, callback) => {
+                if (formData.ProvinceID && formData.CityID && formData.DistrictID) {
+                    callback()
+                } else {
+                    callback(new Error('请选择收货地区'))
+                }
+            }
+        }
+    ],
+}
+
+const onCancel = (isRefresh = false) => {
+    show.value = false
+    refresh.value = isRefresh
+}
+
+const onSubmit = () => {
+    formRef.value?.validate((valid) => {
+        if (valid) {
+            formSubmit().then(() => {
+                ElMessage.success('提交成功')
+                onCancel(true)
+            }).catch((err) => {
+                ElMessage.error('提交失败:' + err)
+            })
+        }
+    })
+}
+</script>

+ 25 - 1
src/packages/pc/views/mine/address/index.vue

@@ -1,6 +1,30 @@
+<!-- 我的仓储-我的地址 -->
 <template>
 <template>
-    <app-view>地址</app-view>
+    <app-view>
+        <app-table :data="dataList" v-model:columns="columns" :loading="loading">
+            <template #header>
+                <app-auth-operation :menus="['add']" @closed="getUserAddressList" />
+            </template>
+            <template #operate="{ row }">
+                <app-auth-operation :menus="['edit', 'default', 'delete']" :options="{ selectedRow: row }"
+                    @closed="getUserAddressList" />
+            </template>
+            <template #footer>
+                <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
+                    @change="getUserAddressList" />
+            </template>
+        </app-table>
+    </app-view>
 </template>
 </template>
 
 
 <script lang="ts" setup>
 <script lang="ts" setup>
+import { ElMessage } from 'element-plus'
+import { useAddress } from '@/business/user'
+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()
+
+getUserAddressList().catch((err) => ElMessage.error(err))
 </script>
 </script>

+ 24 - 0
src/packages/pc/views/mine/capital/index.vue

@@ -0,0 +1,24 @@
+<template>
+    <app-view>
+        <template #header>
+            <app-filter v-bind="{ selectList, buttonList }" />
+        </template>
+        <app-table :data="dataList" v-model:columns="columns" :loading="loading">
+            <template #header>
+                <el-button type="primary">入金申请</el-button>
+                <el-button type="primary">出金申请</el-button>
+            </template>
+        </app-table>
+    </app-view>
+</template>
+
+<script lang="ts" setup>
+import { ElMessage } from 'element-plus'
+import { useAccountInOut } from '@/business/account'
+import AppTable from '@pc/components/base/table/index.vue'
+import AppFilter from '@pc/components/base/table-filter/index.vue'
+
+const { dataList, columns, selectList, buttonList, loading, getAccountInOutApply } = useAccountInOut()
+
+getAccountInOutApply().catch((err) => ElMessage.error(err))
+</script>

+ 0 - 30
src/packages/pc/views/mine/info/index.vue

@@ -1,30 +0,0 @@
-<template>
-    <app-view>
-        <el-descriptions title="会员信息" :column="2" style="padding:20px" v-if="userInfo">
-            <el-descriptions-item label="登录代码">{{ userInfo.postalcode }}</el-descriptions-item>
-            <el-descriptions-item label="企业名称">{{ userInfo.customername }}</el-descriptions-item>
-            <el-descriptions-item label="登录账号">{{ userInfo.customername }}</el-descriptions-item>
-            <el-descriptions-item label="手机号">{{ userInfo.mobile2 }}</el-descriptions-item>
-            <el-descriptions-item label="机构代码"></el-descriptions-item>
-            <el-descriptions-item label="法人姓名"></el-descriptions-item>
-            <el-descriptions-item label="证件类型"></el-descriptions-item>
-            <el-descriptions-item label="企业地址"></el-descriptions-item>
-            <el-descriptions-item label="证件号码"></el-descriptions-item>
-            <el-descriptions-item label="联系人"></el-descriptions-item>
-            <el-descriptions-item label="联系电话"></el-descriptions-item>
-        </el-descriptions>
-        <el-divider />
-        <el-descriptions title="签约信息" :column="2" style="padding:20px" v-if="accountInfo">
-            <el-descriptions-item label="资金账号">{{ accountInfo.accountid }}</el-descriptions-item>
-            <el-descriptions-item label="余额">{{ accountInfo.balance }}</el-descriptions-item>
-            <el-descriptions-item label="冻结资金">{{ accountInfo.freezemargin }}</el-descriptions-item>
-            <el-descriptions-item label="可用资金">{{ accountInfo.usedmargin }}</el-descriptions-item>
-        </el-descriptions>
-    </app-view>
-</template>
-
-<script lang="ts" setup>
-import { useAccount } from '@/business/account'
-
-const { accountInfo, userInfo } = useAccount()
-</script>

+ 25 - 1
src/packages/pc/views/mine/invoice/index.vue

@@ -1,6 +1,30 @@
+<!-- 我的仓储-我的发票 -->
 <template>
 <template>
-    <app-view>发票</app-view>
+    <app-view>
+        <app-table :data="dataList" v-model:columns="columns" :loading="loading">
+            <template #header>
+                <app-auth-operation :menus="['add']" @closed="getUserInvoiceList" />
+            </template>
+            <template #operate="{ row }">
+                <app-auth-operation :menus="['edit', 'delete']" :options="{ selectedRow: row }"
+                    @closed="getUserInvoiceList" />
+            </template>
+            <template #footer>
+                <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
+                    @change="getUserInvoiceList" />
+            </template>
+        </app-table>
+    </app-view>
 </template>
 </template>
 
 
 <script lang="ts" setup>
 <script lang="ts" setup>
+import { ElMessage } from 'element-plus'
+import { useInvoice } from '@/business/user'
+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()
+
+getUserInvoiceList().catch((err) => ElMessage.error(err))
 </script>
 </script>

+ 42 - 17
src/packages/pc/views/search/diamond/index.vue

@@ -2,9 +2,9 @@
 <template>
 <template>
     <app-view>
     <app-view>
         <template #header>
         <template #header>
-            <el-form label-width="80px">
+            <el-form ref="formRef" label-width="80px" :rules="formRules">
                 <el-form-item label="形状">
                 <el-form-item label="形状">
-                    <app-multiple :data-list="enums.shapeTypeList" checkbox />
+                    <app-multiple :data-list="enums.shapeTypeList" v-model="formData.zsshapetype" checkbox />
                 </el-form-item>
                 </el-form-item>
                 <el-form-item label="颜色">
                 <el-form-item label="颜色">
                     <app-multiple :data-list="enums.colorTypeList" v-model="formData.zscolortype" checkbox />
                     <app-multiple :data-list="enums.colorTypeList" v-model="formData.zscolortype" checkbox />
@@ -25,44 +25,47 @@
                     <app-multiple :data-list="enums.fluorescenceTypeList" v-model="formData.zsfluorescencetype"
                     <app-multiple :data-list="enums.fluorescenceTypeList" v-model="formData.zsfluorescencetype"
                         checkbox />
                         checkbox />
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="证书">
-                    <app-multiple :data-list="enums.certTypeList" checkbox />
-                </el-form-item>
                 <el-form-item label="仓库">
                 <el-form-item label="仓库">
-                    <el-select placeholder="请选择">
-                        <el-option label="Zone one" value="shanghai" />
-                        <el-option label="Zone two" value="beijing" />
+                    <el-select v-model="formData.warehouseid" clearable>
+                        <el-option :label="item.warehousename" :value="item.autoid"
+                            v-for="(item, index) in warehouseList" :key="index" />
                     </el-select>
                     </el-select>
                 </el-form-item>
                 </el-form-item>
                 <el-form-item label="货币">
                 <el-form-item label="货币">
-                    <app-multiple :data-list="enums.currencyTypeList" checkbox />
+                    <app-multiple :data-list="enums.currencyTypeList" v-model="formData.zscurrencytype" checkbox />
                 </el-form-item>
                 </el-form-item>
-                <el-form-item label="克拉重量">
+                <el-form-item label="证书">
+                    <app-multiple :data-list="enums.certTypeList" v-model="formData.zscerttype" checkbox />
+                </el-form-item>
+                <el-form-item label="克拉重量" prop="weight">
                     <div class="el-form-item--col">
                     <div class="el-form-item--col">
-                        <el-input placeholder="从" style="width:160px" />
+                        <el-input-number placeholder="从" v-model="formData.weight1" :precision="2" :controls="false" />
                         <span>-</span>
                         <span>-</span>
-                        <el-input placeholder="至" style="width:160px" />
+                        <el-input-number placeholder="至" v-model="formData.weight2" :precision="2" :controls="false" />
                     </div>
                     </div>
                 </el-form-item>
                 </el-form-item>
                 <el-form-item>
                 <el-form-item>
                     <el-button type="primary" :loading="loading" @click="onSearch">搜索</el-button>
                     <el-button type="primary" :loading="loading" @click="onSearch">搜索</el-button>
-                    <el-button :disabled="loading">重置</el-button>
+                    <el-button :disabled="loading" @click="onReset">重置</el-button>
                 </el-form-item>
                 </el-form-item>
             </el-form>
             </el-form>
         </template>
         </template>
         <app-table :data="dataList" v-model:columns="columns" :show-header="false" :loading="loading">
         <app-table :data="dataList" v-model:columns="columns" :show-header="false" :loading="loading">
             <template #operate="{ row }">
             <template #operate="{ row }">
-                <app-auth-operation :options="{ selectedRow: row }" @closed="onSearch" />
+                <app-auth-operation :options="{ selectedRow: row }" @closed="getSellOrderList" />
             </template>
             </template>
             <template #footer>
             <template #footer>
                 <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
                 <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
-                    @change="onSearch" />
+                    @change="getSellOrderList" />
             </template>
             </template>
         </app-table>
         </app-table>
     </app-view>
     </app-view>
 </template>
 </template>
 
 
 <script lang="ts" setup>
 <script lang="ts" setup>
+import { ref } from 'vue'
+import { ElMessage } from 'element-plus'
+import type { FormInstance, FormRules } from 'element-plus'
 import { useSearch } from '@/business/search'
 import { useSearch } from '@/business/search'
 import { Category } from '@/constants/diamond'
 import { Category } from '@/constants/diamond'
 import AppMultiple from '@pc/components/base/multiple/index.vue'
 import AppMultiple from '@pc/components/base/multiple/index.vue'
@@ -70,7 +73,29 @@ import AppTable from '@pc/components/base/table/index.vue'
 import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 import AppPagination from '@pc/components/base/pagination/index.vue'
 import AppPagination from '@pc/components/base/pagination/index.vue'
 
 
-const { loading, dataList, columns, total, pageIndex, pageSize, formData, enums, onSearch } = useSearch(Category.Diamond)
+const { loading, warehouseList, dataList, columns, total, pageIndex, pageSize, formData, enums, getSellOrderList, onSearch, onReset } = useSearch(Category.Diamond)
+const formRef = ref<FormInstance>()
+
+const formRules: FormRules = {
+    weight: [{
+        validator: (rule, value, callback) => {
+            const { weight1 = 0, weight2 = 0 } = formData.value
+            if (weight1 && weight2) {
+                if (weight1 > weight2) {
+                    callback(new Error('克拉重量应该从小到大'))
+                } else {
+                    callback()
+                }
+            } else {
+                if ((!weight1 || !weight2) && (weight1 || weight2)) {
+                    callback(new Error('克拉重量不能小于 0'))
+                } else {
+                    callback()
+                }
+            }
+        }
+    }],
+}
 
 
-onSearch()
+getSellOrderList().catch((err) => ElMessage.error(err))
 </script>
 </script>

+ 91 - 1
src/packages/pc/views/search/fancy/index.vue

@@ -1,7 +1,97 @@
 <!-- 钻石搜索-单颗彩钻 -->
 <!-- 钻石搜索-单颗彩钻 -->
 <template>
 <template>
-    <app-view>单颗彩钻</app-view>
+    <app-view>
+        <template #header>
+            <el-form ref="formRef" label-width="80px" :rules="formRules">
+                <el-form-item label="形状">
+                    <app-multiple :data-list="enums.shapeTypeList" v-model="formData.zsshapetype" checkbox />
+                </el-form-item>
+                <el-form-item label="颜色">
+                    <app-multiple :data-list="enums.colorTypeList" v-model="formData.zscolortype" checkbox />
+                </el-form-item>
+                <el-form-item label="净度">
+                    <app-multiple :data-list="enums.clarityTypeList" v-model="formData.zsclaritytype" checkbox />
+                </el-form-item>
+                <el-form-item label="对称">
+                    <app-multiple :data-list="enums.symmetryTypeList" v-model="formData.zssymmetrytype" checkbox />
+                </el-form-item>
+                <el-form-item label="抛光">
+                    <app-multiple :data-list="enums.polishTypeList" v-model="formData.zspolishtype" checkbox />
+                </el-form-item>
+                <el-form-item label="荧光">
+                    <app-multiple :data-list="enums.fluorescenceTypeList" v-model="formData.zsfluorescencetype"
+                        checkbox />
+                </el-form-item>
+                <el-form-item label="仓库">
+                    <el-select v-model="formData.warehouseid" clearable>
+                        <el-option :label="item.warehousename" :value="item.autoid"
+                            v-for="(item, index) in warehouseList" :key="index" />
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="货币">
+                    <app-multiple :data-list="enums.currencyTypeList" v-model="formData.zscurrencytype" checkbox />
+                </el-form-item>
+                <el-form-item label="证书">
+                    <app-multiple :data-list="enums.certTypeList" v-model="formData.zscerttype" checkbox />
+                </el-form-item>
+                <el-form-item label="克拉重量" prop="weight">
+                    <div class="el-form-item--col">
+                        <el-input-number placeholder="从" v-model="formData.weight1" :precision="2" :controls="false" />
+                        <span>-</span>
+                        <el-input-number placeholder="至" v-model="formData.weight2" :precision="2" :controls="false" />
+                    </div>
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="primary" :loading="loading" @click="onSearch">搜索</el-button>
+                    <el-button :disabled="loading" @click="onReset">重置</el-button>
+                </el-form-item>
+            </el-form>
+        </template>
+        <app-table :data="dataList" v-model:columns="columns" :show-header="false" :loading="loading">
+            <template #operate="{ row }">
+                <app-auth-operation :options="{ selectedRow: row }" @closed="getSellOrderList" />
+            </template>
+            <template #footer>
+                <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
+                    @change="getSellOrderList" />
+            </template>
+        </app-table>
+    </app-view>
 </template>
 </template>
 
 
 <script lang="ts" setup>
 <script lang="ts" setup>
+import { ref } from 'vue'
+import type { FormInstance, FormRules } from 'element-plus'
+import { useSearch } from '@/business/search'
+import { Category } from '@/constants/diamond'
+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'
+import AppPagination from '@pc/components/base/pagination/index.vue'
+
+const { loading, warehouseList, dataList, columns, total, pageIndex, pageSize, formData, enums, getSellOrderList, onSearch, onReset } = useSearch(Category.Diamond)
+const formRef = ref<FormInstance>()
+
+const formRules: FormRules = {
+    weight: [{
+        validator: (rule, value, callback) => {
+            const { weight1 = 0, weight2 = 0 } = formData.value
+            if (weight1 && weight2) {
+                if (weight1 > weight2) {
+                    callback(new Error('克拉重量应该从小到大'))
+                } else {
+                    callback()
+                }
+            } else {
+                if ((!weight1 || !weight2) && (weight1 || weight2)) {
+                    callback(new Error('克拉重量不能小于 0'))
+                } else {
+                    callback()
+                }
+            }
+        }
+    }],
+}
+
+getSellOrderList()
 </script>
 </script>

+ 0 - 1
src/packages/pc/views/search/index.vue

@@ -4,5 +4,4 @@
 </template>
 </template>
 
 
 <script lang="ts" setup>
 <script lang="ts" setup>
-import { getCategoryList, Category } from '@/constants/diamond'
 </script>
 </script>

+ 3 - 30
src/packages/pc/views/system/role/index.vue

@@ -13,42 +13,15 @@
 </template>
 </template>
 
 
 <script lang="ts" setup>
 <script lang="ts" setup>
-import { ref } from 'vue'
+import { shallowRef } from 'vue'
 import { useDataTable } from '@/hooks/datatable'
 import { useDataTable } from '@/hooks/datatable'
+import { getTableColumns } from '@/business/table'
 import { queryAccountRole } from '@/services/api/account'
 import { queryAccountRole } from '@/services/api/account'
 import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppTable from '@pc/components/base/table/index.vue'
 
 
 const { dataList } = useDataTable<Ermcp.UserRole>()
 const { dataList } = useDataTable<Ermcp.UserRole>()
-
-const columns = ref([
-    {
-        prop: 'id',
-        label: '序号',
-        width: 100,
-        show: true,
-    },
-    {
-        prop: 'roleName',
-        label: '角色名称',
-        show: true,
-    },
-    {
-        prop: 'createdAt',
-        label: '创建时间',
-        show: true,
-    },
-    {
-        prop: 'updatedAt',
-        label: '更新时间',
-        show: true,
-    },
-    {
-        prop: 'operate',
-        label: '操作',
-        show: true,
-    }
-])
+const columns = shallowRef(getTableColumns('system_role'))
 
 
 queryAccountRole({
 queryAccountRole({
     success: (res) => {
     success: (res) => {

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

@@ -35,11 +35,11 @@
         </el-form-item>
         </el-form-item>
         <el-form-item label="尺寸" prop="Size">
         <el-form-item label="尺寸" prop="Size">
             <div class="el-form-item--col">
             <div class="el-form-item--col">
-                <el-input-number type="number" v-model="formData.Size1" :controls="false" />
+                <el-input-number v-model="formData.Size1" :controls="false" />
                 <span>×</span>
                 <span>×</span>
-                <el-input-number type="number" v-model="formData.Size2" :controls="false" />
+                <el-input-number v-model="formData.Size2" :controls="false" />
                 <span>×</span>
                 <span>×</span>
-                <el-input-number type="number" v-model="formData.Size3" :controls="false" />
+                <el-input-number v-model="formData.Size3" :controls="false" />
             </div>
             </div>
         </el-form-item>
         </el-form-item>
         <el-form-item label="颜色" prop="ZSColorType1">
         <el-form-item label="颜色" prop="ZSColorType1">

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

@@ -29,11 +29,11 @@
         </el-form-item>
         </el-form-item>
         <el-form-item label="尺寸" prop="Size">
         <el-form-item label="尺寸" prop="Size">
             <div class="el-form-item--col">
             <div class="el-form-item--col">
-                <el-input-number type="number" v-model="formData.Size1" :controls="false" />
+                <el-input-number v-model="formData.Size1" :controls="false" />
                 <span>×</span>
                 <span>×</span>
-                <el-input-number type="number" v-model="formData.Size2" :controls="false" />
+                <el-input-number v-model="formData.Size2" :controls="false" />
                 <span>×</span>
                 <span>×</span>
-                <el-input-number type="number" v-model="formData.Size3" :controls="false" />
+                <el-input-number v-model="formData.Size3" :controls="false" />
             </div>
             </div>
         </el-form-item>
         </el-form-item>
         <el-form-item label="形状" prop="ZSShapeType">
         <el-form-item label="形状" prop="ZSShapeType">

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

@@ -32,11 +32,11 @@
         </el-form-item>
         </el-form-item>
         <el-form-item label="尺寸" prop="Size">
         <el-form-item label="尺寸" prop="Size">
             <div class="el-form-item--col">
             <div class="el-form-item--col">
-                <el-input-number type="number" v-model="formData.Size1" :controls="false" />
+                <el-input-number v-model="formData.Size1" :controls="false" />
                 <span>×</span>
                 <span>×</span>
-                <el-input-number type="number" v-model="formData.Size2" :controls="false" />
+                <el-input-number v-model="formData.Size2" :controls="false" />
                 <span>×</span>
                 <span>×</span>
-                <el-input-number type="number" v-model="formData.Size3" :controls="false" />
+                <el-input-number v-model="formData.Size3" :controls="false" />
             </div>
             </div>
         </el-form-item>
         </el-form-item>
         <el-form-item label="形状" prop="ZSShapeType">
         <el-form-item label="形状" prop="ZSShapeType">

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

@@ -1,7 +1,7 @@
 <!-- 我的仓库-编辑仓库 -->
 <!-- 我的仓库-编辑仓库 -->
 <template>
 <template>
-    <app-drawer :title="selectedRow.warehousecode ? '修改仓库' : '新增仓库'" :width="880" v-model:show="show" :loading="loading"
-        :refresh="refresh">
+    <app-drawer :title="selectedRow?.warehousecode ? '修改仓库' : '新增仓库'" :width="880" v-model:show="show"
+        :loading="loading" :refresh="refresh">
         <el-form ref="formRef" class="el-form--horizontal" label-width="100px" :model="formData" :rules="formRules">
         <el-form ref="formRef" class="el-form--horizontal" label-width="100px" :model="formData" :rules="formRules">
             <el-form-item label="仓库代码" prop="warehousecode">
             <el-form-item label="仓库代码" prop="warehousecode">
                 <el-input placeholder="请输入" v-model="formData.warehousecode" />
                 <el-input placeholder="请输入" v-model="formData.warehousecode" />
@@ -51,7 +51,7 @@ const props = defineProps({
     }
     }
 })
 })
 
 
-const { loading, formData, accountName, warehouseOperate } = useWarehouseForm(props.selectedRow)
+const { loading, formData, accountName, formSubmit } = useWarehouseForm(props.selectedRow)
 const show = ref(true)
 const show = ref(true)
 const refresh = ref(false)
 const refresh = ref(false)
 const formRef = ref<FormInstance>()
 const formRef = ref<FormInstance>()
@@ -84,7 +84,7 @@ const onCancel = (isRefresh = false) => {
 const onSubmit = () => {
 const onSubmit = () => {
     formRef.value?.validate((valid) => {
     formRef.value?.validate((valid) => {
         if (valid) {
         if (valid) {
-            warehouseOperate().then(() => {
+            formSubmit().then(() => {
                 ElMessage.success('提交成功')
                 ElMessage.success('提交成功')
                 onCancel(true)
                 onCancel(true)
             }).catch((err) => {
             }).catch((err) => {

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

@@ -1,7 +1,7 @@
 <!-- 我的仓储-我的仓库 -->
 <!-- 我的仓储-我的仓库 -->
 <template>
 <template>
     <app-view>
     <app-view>
-        <app-table :data="dataList" v-model:columns="columns">
+        <app-table :data="dataList" v-model:columns="columns" :loading="loading">
             <template #header>
             <template #header>
                 <app-auth-operation :menus="['add']" @closed="getWarehouseList" />
                 <app-auth-operation :menus="['add']" @closed="getWarehouseList" />
             </template>
             </template>
@@ -23,7 +23,7 @@ import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppTable from '@pc/components/base/table/index.vue'
 import AppPagination from '@pc/components/base/pagination/index.vue'
 import AppPagination from '@pc/components/base/pagination/index.vue'
 
 
-const { dataList, columns, total, pageIndex, pageSize, getWarehouseList } = useWarehouse()
+const { loading, dataList, columns, total, pageIndex, pageSize, getWarehouseList } = useWarehouse()
 
 
 getWarehouseList().catch((err) => ElMessage.error(err))
 getWarehouseList().catch((err) => ElMessage.error(err))
 </script>
 </script>

+ 53 - 0
src/services/api/user/index.ts

@@ -0,0 +1,53 @@
+import { httpRequest } from '@/services/http'
+import { HttpRequest } from '@/services/http/interface'
+import { tradeServerRequest } from '@/services/socket/trade'
+import { TradeRequest } from '@/services/socket/trade/interface'
+
+/**
+ * 查询收货地址信息
+ */
+export function queryUserReceiveInfo(params: HttpRequest<{ req: Ermcp.UserReceiveInfoReq, rsp: Ermcp.UserReceiveInfoRsp[] }>) {
+    return httpRequest('/Qhj/QueryUserReceiveInfo', 'get', params);
+}
+
+/**
+ * 查询发票信息
+ */
+export function queryWrUserReceiptInfo(params: HttpRequest<{ req: Ermcp.WrUserReceiptInfoReq, rsp: Ermcp.WrUserReceiptInfoRsp[] }>) {
+    return httpRequest('/WrTrade2/QueryWrUserReceiptInfo', 'get', params);
+}
+
+/**
+ * 新增修改收货地址
+ */
+export function userReceiveInfo(params: TradeRequest<Proto.UserReceiveInfoReq, Proto.UserReceiveInfoRsp>) {
+    return tradeServerRequest('UserReceiveInfoReq', 'UserReceiveInfoRsp', params);
+}
+
+/**
+ * 删除收货地址
+ */
+export function delUserReceiveInfo(params: TradeRequest<Proto.DelUserReceiveInfoReq, Proto.DelUserReceiveInfoRsp>) {
+    return tradeServerRequest('DelUserReceiveInfoReq', 'DelUserReceiveInfoRsp', params);
+}
+
+/**
+ * 设置默认收货地址
+ */
+export function userReceiveIsDefault(params: TradeRequest<Proto.UserReceiveIsDefaultReq, Proto.UserReceiveIsDefaultRsp>) {
+    return tradeServerRequest('UserReceiveIsDefaultReq', 'UserReceiveIsDefaultRsp', params);
+}
+
+/**
+ * 新增修改用户发票信息
+ */
+export function userReceiptInfo(params: TradeRequest<Proto.UserReceiptInfoReq, Proto.UserReceiptInfoRsp>) {
+    return tradeServerRequest('UserReceiptInfoReq', 'UserReceiptInfoRsp', params);
+}
+
+/**
+ * 删除用户发票信息
+ */
+export function delUserReceiptInfo(params: TradeRequest<Proto.DelUserReceiptInfoReq, Proto.DelUserReceiptInfoRsp>) {
+    return tradeServerRequest('DelUserReceiptInfoReq', 'DelUserReceiptInfoRsp', params);
+}

+ 50 - 0
src/types/ermcp/user.d.ts

@@ -0,0 +1,50 @@
+/** 企业风管 */
+declare namespace Ermcp {
+    /** 查询收货地址信息 请求 */
+    interface UserReceiveInfoReq {
+        userid: number; // 用户ID
+    }
+
+    /** 查询收货地址信息 响应 */
+    interface UserReceiveInfoRsp {
+        address: string; // 提货人详细地址
+        autoid: number; // AutoID
+        cardnum: string; // 证件号码(加密存储)
+        cardtypeid: number; // 证件类型
+        cityid: number; // 市
+        cityname: string; // 城市名称
+        countryid: number; // 国家
+        countryname: string; // 国家名称
+        districtid: number; // 地区
+        districtname: string; // 地区名称
+        hasencrypt: number; // 数据是否已加密 - 0:未加密 1:已加密
+        isdefault: number; // 是否默认地址 - 0:否 1:是
+        phonenum: string; // 提货人联系方式(加密存储)
+        provinceid: number; // 省
+        provincename: string; // 省名称
+        receivername: string; // 提货人姓名
+        takeremark: string; // 提货备注
+        userid: number; // 用户ID
+    }
+
+    /** 查询发票信息 请求 */
+    interface WrUserReceiptInfoReq {
+        userid: number; // 用户ID
+        receipttype?: number; // 发票类型 - 1:个人 2:企业
+    }
+
+    /** 查询发票信息 响应 */
+    interface WrUserReceiptInfoRsp {
+        address: string; // 地址[发票类型:企业]
+        autoid: number; // AutoID
+        contactinfo: string; // 联系方式
+        idnum: string; // 身份证号码[发票类型:个人]
+        isdefault: number; // 是否默认地址 - 0:否 1:是
+        receiptaccount: string; // 发票帐号[发票类型:企业]
+        receiptbank: string; // 发票开户行[发票类型:企业]
+        receipttype: number; // 发票类型 - 1:个人 2:企业
+        taxpayerid: string; // 纳税人识别号
+        userid: number; // 用户ID
+        username: string; // 户名(个人姓名或企业名称)
+    }
+}

+ 96 - 0
src/types/proto/user.d.ts

@@ -0,0 +1,96 @@
+import { IMessageHead } from '@/services/socket/trade/protobuf/proto'
+
+declare global {
+    namespace Proto {
+        /** 新增修改收货地址请求 */
+        interface UserReceiveInfoReq {
+            Header?: IMessageHead;
+            ClientSerialID: number; // 客户端唯一ID
+            UserID: number; // 用户ID
+            ReceiverName: string; // 提货人姓名
+            CardTypeID?: number; // 证件类型
+            CardNum: string; // 证件号码
+            PhoneNum: string; // 提货人联系方式
+            CountryID: number; // 国家
+            ProvinceID?: number; // 省
+            CityID?: number; // 市
+            DistrictID?: number; // 地区
+            Address: string; // 提货人详细地址
+            TakeRemark: string; // 提货备注
+            ReceiveInfoId?: number; // 修改时填收货地址id
+        }
+
+        /** 新增修改收货地址请求响应 */
+        interface UserReceiveInfoRsp {
+            Header?: IMessageHead;
+            RetCode: number; // 返回码
+            RetDesc: string; // 描述信息
+            ReceiveInfoId: number; // 响应返回autoid
+        }
+
+        /** 删除收货地址请求 */
+        interface DelUserReceiveInfoReq {
+            Header?: IMessageHead;
+            ReceiveInfoId: number; // 收货地址id
+        }
+
+        /** 删除收货地址请求响应 */
+        interface DelUserReceiveInfoRsp {
+            Header?: IMessageHead;
+            RetCode: number; // 返回码
+            RetDesc: string; // 描述信息
+        }
+
+        /** 设置默认收货地址请求 */
+        interface UserReceiveIsDefaultReq {
+            Header?: IMessageHead;
+            AutoId: number; // 提货地址ID
+            UserId: number; // 用户ID
+        }
+
+        /** 设置默认收货地址应答 */
+        interface UserReceiveIsDefaultRsp {
+            Header?: IMessageHead;
+            RetCode: number; // 返回码
+            RetDesc: string; // 描述信息
+            AutoId: number; // 提货地址ID
+        }
+
+        /** 新增修改用户发票信息请求 */
+        interface UserReceiptInfoReq {
+            Header?: IMessageHead;
+            ClientSerialID: number; // 客户端唯一ID
+            UserID: number; // 用户ID
+            UserName: string; // 发票抬头姓名
+            ReceiptType: number; // 发票类型
+            TaxpayerID: string; // 纳税人识别号
+            ContactInfo: string; // 联系方式
+            ReceiptInfoId: number; // 修改时填用户发票信息id
+            ReceiptBank: string; // 发票开户行[发票类型:企业]
+            ReceiptAccount: string; // 发票帐号[发票类型:企业]
+            Address: string; // 地址[发票类型:企业]
+            IDNum: string; // 身份证号码[发票类型:个人]
+        }
+
+        /** 新增修改用户发票信息响应 */
+        interface UserReceiptInfoRsp {
+            Header?: IMessageHead;
+            RetCode: number; // 返回码
+            RetDesc: string; // 描述信息
+            ReceiptInfoId: number; // 响应返回发票信息id
+        }
+
+        /** 删除用户发票信息请求 */
+        interface DelUserReceiptInfoReq {
+            Header?: IMessageHead;
+            ReceiptInfoId: number; // 删除发票信息id
+        }
+
+        /** 删除用户发票信息请求响应 */
+        interface DelUserReceiptInfoRsp {
+            Header?: IMessageHead;
+            RetCode: number; // 返回码
+            RetDesc: string; // 描述信息
+        }
+    }
+}