index.ts 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. import { shallowRef } from 'vue'
  2. import { sessionData } from '@/stores'
  3. type TableColumnKey = typeof tableColumnKeys[number]
  4. 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
  5. /**
  6. * PC端表格列
  7. */
  8. const pcTableColumnMap = new Map<TableColumnKey, Ermcp.TableColumn[]>([
  9. // 系统管理-菜单管理
  10. ['system_menu', [
  11. { prop: 'resourcename', label: '菜单' },
  12. { prop: 'resourcecode', label: '代码' },
  13. { prop: 'component', label: '组件' },
  14. { prop: 'iconame', label: '图标' },
  15. { prop: 'operate', label: '操作' }
  16. ]],
  17. // 系统管理-角色管理
  18. ['system_role', [
  19. { prop: 'id', label: '序号', width: 100 },
  20. { prop: 'roleName', label: '角色名称' },
  21. { prop: 'createdAt', label: '创建时间' },
  22. { prop: 'updatedAt', label: '更新时间' },
  23. { prop: 'operate', label: '操作', width: 300 }
  24. ]],
  25. // 我的仓储-我的库存
  26. ['warehousing_diamond', [
  27. { prop: 'goodsno', label: '商品编号' },
  28. { prop: 'price', label: '总价' },
  29. { prop: 'weight', label: '总重量' },
  30. { prop: 'weightavg', label: '平均单颗重量' },
  31. { prop: 'priceper', label: '克拉单位' },
  32. { prop: 'ftotalqty', label: '库存重量' },
  33. { prop: 'ffreezeqty', label: '冻结重量' },
  34. { prop: 'warehousenamedisplay', label: '仓库', width: 180 },
  35. { prop: 'zsshapetypedisplay', label: '形状', width: 200 },
  36. { prop: 'zscolortype', label: '颜色' },
  37. { prop: 'zsclaritytype', label: '净度' },
  38. { prop: 'operate', label: '操作' }
  39. ]],
  40. // 我的仓储-我的仓库
  41. ['warehousing_warehouse', [
  42. { prop: 'warehousecode', label: '仓库代码' },
  43. { prop: 'warehousename', label: '仓库名称' },
  44. { prop: 'address', label: '仓库地址' },
  45. { prop: 'contactname', label: '联系人' },
  46. { prop: 'contactnum', label: '联系电话' },
  47. { prop: 'createtime', label: '创建时间' },
  48. { prop: 'operate', label: '操作' }
  49. ]],
  50. // 挂牌大厅-出售大厅
  51. ['listing_sellorder', [
  52. { prop: 'wrtradeorderid', label: '卖方' },
  53. { prop: 'sellusername', label: '仓库' },
  54. { prop: 'zscategorydisplay', label: '形状' },
  55. { prop: 'goodsno', label: '颜色' },
  56. { prop: 'totalqty', label: '净度' },
  57. { prop: 'fixedprice', label: '切工' },
  58. { prop: 'remainqty', label: '抛光' },
  59. { prop: 'wrtradeorderstatus', label: '对称' },
  60. { prop: 'ordertime', label: '荧光' },
  61. { prop: 'tradedate', label: '尺寸' },
  62. { prop: 'tradedate', label: '价格' },
  63. { prop: 'tradedate', label: '克拉重量' },
  64. { prop: 'tradedate', label: '克拉单价' },
  65. { prop: 'operate', label: '操作', width: 180 }
  66. ]],
  67. // 挂牌大厅-求购大厅
  68. ['listing_buyorder', [
  69. { prop: 'wrtradeorderid', label: '委托单号', width: 200 },
  70. { prop: 'buyusername', label: '买方' },
  71. { prop: 'zscategorydisplay', label: '商品分类' },
  72. { prop: 'zstabledisplay', label: '求购信息' },
  73. { prop: 'wrtradeorderstatus', label: '状态' },
  74. { prop: 'validtime', label: '有效日期', width: 180 },
  75. { prop: 'ordertime', label: '委托时间', width: 180 },
  76. { prop: 'operate', label: '操作' }
  77. ]],
  78. // 挂牌大厅-我的出售
  79. ['listing_saleorder', [
  80. { prop: 'wrtradeorderid', label: '委托单号', width: 200 },
  81. { prop: 'zscategorydisplay', label: '商品分类' },
  82. { prop: 'goodsno', label: '商品编号' },
  83. { prop: 'totalqty', label: '委托重量' },
  84. { prop: 'fixedprice', label: '克拉单价' },
  85. { prop: 'selledqty', label: '成交重量' },
  86. { prop: 'wrtradeorderstatus', label: '委托状态' },
  87. { prop: 'ordertime', label: '委托时间', width: 180 },
  88. { prop: 'operate', label: '操作' }
  89. ]],
  90. // 挂牌大厅-我的求购
  91. ['listing_purchaseorder', [
  92. { prop: 'wrtradeorderid', label: '委托单号', width: 200 },
  93. { prop: 'zscategorydisplay', label: '商品分类' },
  94. { prop: 'zstabledisplay', label: '求购信息' },
  95. { prop: 'wrtradeorderstatus', label: '状态' },
  96. { prop: 'validtime', label: '有效日期', width: 180 },
  97. { prop: 'ordertime', label: '委托时间', width: 180 },
  98. { prop: 'operate', label: '操作' }
  99. ]],
  100. // 挂牌大厅-我的摘牌
  101. ['listing_delisting', [
  102. { prop: 'buyorsell', label: '类型' },
  103. { prop: 'matchusername', label: '对手方' },
  104. { prop: 'zsshapetypedisplay', label: '形状' },
  105. { prop: 'zscolortype1display', label: '颜色' },
  106. { prop: 'zsclaritytype1display', label: '净度' },
  107. { prop: 'zscuttype1display', label: '切工' },
  108. { prop: 'zspolishtype1display', label: '抛光' },
  109. { prop: 'zssymmetrytype1display', label: '对称' },
  110. { prop: 'zsfluorescencetype1display', label: '荧光' },
  111. { prop: 'ordertime', label: '尺寸' },
  112. { prop: 'qty', label: '重量' },
  113. { prop: 'ordertime', label: '价格' },
  114. { prop: 'exchangerate', label: '汇率' },
  115. { prop: 'tradeprice', label: '成交价格' },
  116. { prop: 'tradetime', label: '成交时间', width: 200 },
  117. { prop: 'operate', label: '操作' }
  118. ]],
  119. // 挂牌大厅-我的询价-求购
  120. ['listing_inquire_buy', [
  121. { prop: 'buyorsell', label: '类型' },
  122. { prop: 'matchusername', label: '对手方' },
  123. { prop: 'zstabledisplay', label: '形状' },
  124. { prop: 'wrtradeorderstatus', label: '颜色' },
  125. { prop: 'validtime', label: '净度' },
  126. { prop: 'ordertime', label: '切工' },
  127. { prop: 'ordertime', label: '抛光' },
  128. { prop: 'ordertime', label: '对称' },
  129. { prop: 'ordertime', label: '荧光' },
  130. { prop: 'ordertime', label: '尺寸' },
  131. { prop: 'qty', label: '重量' },
  132. { prop: 'ordertime', label: '价格' },
  133. { prop: 'exchangerate', label: '汇率' },
  134. { prop: 'tradeprice', label: '成交价格' },
  135. { prop: 'tradetime', label: '成交时间', width: 200 },
  136. { prop: 'operate', label: '操作' }
  137. ]],
  138. // 挂牌大厅-我的询价-出售
  139. ['listing_inquire_sell', [
  140. { prop: 'buyorsell', label: '类型' },
  141. { prop: 'matchusername', label: '对手方' },
  142. { prop: 'zstabledisplay', label: '形状' },
  143. { prop: 'wrtradeorderstatus', label: '颜色' },
  144. { prop: 'validtime', label: '净度' },
  145. { prop: 'ordertime', label: '切工' },
  146. { prop: 'ordertime', label: '抛光' },
  147. { prop: 'ordertime', label: '对称' },
  148. { prop: 'ordertime', label: '荧光' },
  149. { prop: 'ordertime', label: '尺寸' },
  150. { prop: 'qty', label: '重量' },
  151. { prop: 'ordertime', label: '价格' },
  152. { prop: 'exchangerate', label: '汇率' },
  153. { prop: 'tradeprice', label: '成交价格' },
  154. { prop: 'tradetime', label: '成交时间', width: 200 },
  155. { prop: 'operate', label: '操作' }
  156. ]],
  157. // 会员中心-我的出入金
  158. ['mine_capital', [
  159. { prop: 'logincode', label: '资金账户' },
  160. { prop: 'branchbankname', label: '托管银行' },
  161. { prop: 'executetype', label: '申请类型' },
  162. { prop: 'amount', label: '金额' },
  163. { prop: 'charge', label: '服务费' },
  164. { prop: 'updatetime', label: '申请时间' },
  165. { prop: 'applystatus', label: '状态' },
  166. { prop: 'operate', label: '操作' }
  167. ]],
  168. // 会员中心-我的地址
  169. ['mine_address', [
  170. { prop: 'receivername', label: '收货人' },
  171. { prop: 'cardtypeid', label: '证件类型' },
  172. { prop: 'cardnum', label: '证件号码' },
  173. { prop: 'phonenum', label: '联系电话' },
  174. { prop: 'address', label: '收货地址' },
  175. { prop: 'isdefault', label: '是否默认' },
  176. { prop: 'operate', label: '操作', width: 250 }
  177. ]],
  178. // 会员中心-我的发票
  179. ['mine_invoice', [
  180. { prop: 'receipttype', label: '发票类型' },
  181. { prop: 'username', label: '发票抬头' },
  182. { prop: 'taxpayerid', label: '税号' },
  183. { prop: 'contactinfo', label: '企业电话' },
  184. { prop: 'information', label: '企业信息' },
  185. { prop: 'operate', label: '操作' }
  186. ]],
  187. ])
  188. /**
  189. * 获取表格列数据
  190. * @param tableKey
  191. * @returns
  192. */
  193. export function getTableColumns(tableKey: TableColumnKey) {
  194. const tableColumns = pcTableColumnMap.get(tableKey) ?? [] // *这里应该判断终端类型,有空再处理*
  195. return tableColumns.map((e) => {
  196. e.show = true
  197. if (e.prop === 'operate') {
  198. e.fixed = 'right'
  199. }
  200. return e
  201. })
  202. }
  203. export function useTableColumns(tableKey: string, operateColumn = true) {
  204. const tableColumns = sessionData.getValue('tableColumns')
  205. const columns = shallowRef(tableColumns.reduce((res, cur) => {
  206. if (cur.tablekey === tableKey) {
  207. cur.columns.forEach((e) => {
  208. res.push({
  209. prop: e.columnfield,
  210. label: e.columntitle,
  211. width: Number(e.columnwidth),
  212. show: e.isshow ? true : false,
  213. fixed: e.fixed,
  214. })
  215. })
  216. if (operateColumn) {
  217. res.push({
  218. prop: 'operate',
  219. label: '操作',
  220. show: true,
  221. })
  222. }
  223. }
  224. return res
  225. }, [] as Ermcp.TableColumn[]))
  226. const updateColumns = () => {
  227. console.log('更新表头列')
  228. }
  229. return {
  230. columns,
  231. updateColumns,
  232. }
  233. }