crud.tsx 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. import * as api from './api'
  2. import {AddReq, CreateCrudOptionsProps, CreateCrudOptionsRet, DelReq, EditReq, UserPageQuery} from '@fast-crud/fast-crud'
  3. import {inject} from 'vue'
  4. import {BaseColumn} from '/@/views/adManage/utils/commonTabColumn.js'
  5. import {parseQueryParams} from '/@/views/adManage/utils/tools'
  6. import XEUtils from 'xe-utils'
  7. export const createCrudOptions = function ({crudExpose, context}: CreateCrudOptionsProps): CreateCrudOptionsRet {
  8. const pageRequest = async (query: UserPageQuery) => {
  9. const params = parseQueryParams(context.value)
  10. XEUtils.assign(query, params)
  11. return await api.GetList(query)
  12. }
  13. const editRequest = async ({form, row}: EditReq) => {
  14. form.id = row.id
  15. return await api.UpdateObj(form)
  16. }
  17. const delRequest = async ({row}: DelReq) => {
  18. return await api.DelObj(row.id)
  19. }
  20. const addRequest = async ({form}: AddReq) => {
  21. return await api.AddObj(form)
  22. }
  23. //权限判定
  24. const hasPermissions = inject('$hasPermissions')
  25. return {
  26. crudOptions: {
  27. table: {
  28. height: 800,
  29. headerCellStyle: {
  30. backgroundColor: '#f6f7fa', // 直接设置背景颜色
  31. height: '20px',
  32. borderRight: 'none',
  33. },
  34. cellStyle: {
  35. border: 'none',
  36. borderBottom: '0.5px solid #ddd',
  37. },
  38. showSummary: true,
  39. stripe: false
  40. },
  41. container: {
  42. fixedHeight: false
  43. },
  44. actionbar: {
  45. show: false,
  46. buttons: {
  47. add: {
  48. show: false
  49. },
  50. }
  51. },
  52. search: {
  53. show: false
  54. },
  55. toolbar: {
  56. buttons: {
  57. search: {
  58. show: true
  59. },
  60. compact: {
  61. show: false
  62. }
  63. }
  64. },
  65. request: {
  66. pageRequest,
  67. addRequest,
  68. editRequest,
  69. delRequest,
  70. },
  71. rowHandle: {
  72. fixed: 'right',
  73. width: 80,
  74. buttons: {
  75. view: {
  76. show: false,
  77. },
  78. edit: {
  79. iconRight: 'Edit',
  80. type: 'text',
  81. text: null
  82. // show: hasPermissions('dictionary:Update'),
  83. },
  84. remove: {
  85. iconRight: 'Delete',
  86. type: 'text',
  87. text: null
  88. // show: hasPermissions('dictionary:Delete'),
  89. },
  90. },
  91. },
  92. columns: {
  93. id: {
  94. title: 'ID',
  95. column: {
  96. show: false
  97. },
  98. form: {
  99. show: false
  100. }
  101. },
  102. campaignName: {
  103. title: '广告活动',
  104. column: {
  105. width: '210px',
  106. fixed: 'left',
  107. align: 'center',
  108. },
  109. search: {
  110. show: true,
  111. component: {
  112. props: {
  113. clearable: true
  114. }
  115. }
  116. },
  117. form: {
  118. rules: [{required: true, message: '必填项'}]
  119. }
  120. },
  121. placement: {
  122. title: '广告位',
  123. column: {
  124. align: 'center',
  125. width: '160px',
  126. formatter: (row) => {
  127. switch (row.value) {
  128. case 'top':
  129. return '搜索结果顶部(首页)'
  130. case 'rest_of_search':
  131. return '搜索结果的其余位置'
  132. case 'product_page':
  133. return '商品页面'
  134. default:
  135. return '暂无数据'
  136. }
  137. }
  138. }
  139. },
  140. dynBidStrategy: {
  141. title: '竞价策略',
  142. column: {
  143. align: 'center',
  144. width: '160px',
  145. formatter: (row) => {
  146. switch (row.value) {
  147. case 'MANUAL':
  148. return '固定竞价'
  149. case 'AUTO_FOR_SALES':
  150. return '动态竞价-提高和降低'
  151. case 'LEGACY_FOR_SALES':
  152. return '动态竞价-仅降低'
  153. default:
  154. return '暂无数据'
  155. }
  156. }
  157. }
  158. },
  159. bidAdjustment: {
  160. title: '竞价调整',
  161. column: {
  162. align: 'right',
  163. width: '100px',
  164. formatter: (row) => {
  165. if (row.value != null) {
  166. return row.value
  167. } else {
  168. return '--'
  169. }
  170. }
  171. }
  172. },
  173. ...BaseColumn
  174. }
  175. }
  176. }
  177. }