crud.ts 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. import type { CreateCrudOptionsRet, CreateCrudOptionsProps } from '@fast-crud/fast-crud';
  2. import dayjs from 'dayjs';
  3. import { queryScore } from '../api';
  4. export default function createCrudOptions(crudOptionsProps: CreateCrudOptionsProps): CreateCrudOptionsRet {
  5. return {
  6. crudOptions: {
  7. request: {
  8. pageRequest: async ({ page, query }) => {
  9. query.subjectId = crudOptionsProps.context?.subjectId;
  10. const { total, data } = await queryScore(page.offset + 1, page.limit, query);
  11. return { records: data, total, currentPage: page.offset, pageSize: page.limit };
  12. },
  13. addRequest: () => {
  14. return Promise.resolve(true);
  15. },
  16. editRequest: () => {
  17. return Promise.resolve(true);
  18. },
  19. delRequest: () => {
  20. return Promise.resolve(true);
  21. }
  22. },
  23. rowHandle: {
  24. show: false
  25. },
  26. toolbar: {
  27. show: false
  28. },
  29. actionbar: {
  30. show: false
  31. },
  32. search: {
  33. show: true,
  34. buttons: {
  35. search: {
  36. show: true
  37. },
  38. reset: {
  39. show: true
  40. },
  41. custom: {
  42. show: true,
  43. text: '关闭',
  44. click: () => {
  45. crudOptionsProps.context?.viewActiveCloseFunc();
  46. }
  47. }
  48. }
  49. },
  50. columns: {
  51. studentNumber: {
  52. title: '学员编号',
  53. search: {
  54. show: true
  55. },
  56. type: 'text',
  57. column: {
  58. align: 'center',
  59. width: 240
  60. },
  61. form: {
  62. show: false
  63. }
  64. },
  65. testDate: {
  66. title: '考试日期',
  67. type: 'datetime',
  68. search: { show: false },
  69. column: {
  70. align: 'center'
  71. },
  72. form: {
  73. show: false
  74. },
  75. valueBuilder(context) {
  76. const { value, row, key } = context;
  77. if (value) {
  78. row[key] = dayjs(value).valueOf();
  79. }
  80. },
  81. valueResolve(context) {
  82. const { value, form, key } = context;
  83. if (value) {
  84. form[key] = dayjs(value).format('YYYY-MM-DD HH:mm:ss');
  85. }
  86. }
  87. },
  88. score: {
  89. title: '成绩',
  90. type: 'number',
  91. search: {
  92. show: false
  93. },
  94. form: {
  95. show: false
  96. },
  97. column: {
  98. align: 'center'
  99. }
  100. },
  101. createTime: {
  102. key: 'createTime',
  103. title: '创建时间',
  104. type: 'datetime',
  105. column: {
  106. width: 250,
  107. align: 'center'
  108. },
  109. search: { show: false },
  110. valueBuilder(context) {
  111. const { value, row, key } = context;
  112. if (value) {
  113. row[key] = dayjs(value).valueOf();
  114. }
  115. },
  116. valueResolve(context) {
  117. const { value, form, key } = context;
  118. if (value) {
  119. form[key] = dayjs(value).format('YYYY-MM-DD HH:mm:ss');
  120. }
  121. }
  122. },
  123. modifyTime: {
  124. title: '修改时间',
  125. key: 'modifyTime',
  126. type: 'datetime',
  127. align: 'center',
  128. column: {
  129. width: 250,
  130. align: 'center'
  131. },
  132. valueBuilder(context) {
  133. const { value, row, key } = context;
  134. if (value) {
  135. row[key] = dayjs(value).valueOf();
  136. }
  137. },
  138. valueResolve(context) {
  139. const { value, form, key } = context;
  140. if (value) {
  141. form[key] = dayjs(value).format('YYYY-MM-DD HH:mm:ss');
  142. }
  143. }
  144. },
  145. passRate: {
  146. title: '及格率',
  147. type: 'text',
  148. search: { show: false },
  149. column: {
  150. align: 'center'
  151. }
  152. },
  153. excelRate: {
  154. title: '通过率',
  155. type: 'text',
  156. search: { show: false },
  157. column: {
  158. align: 'center'
  159. }
  160. },
  161. comment: {
  162. title: '备注信息',
  163. type: 'text',
  164. search: { show: false },
  165. column: {
  166. align: 'center',
  167. width: 300
  168. }
  169. }
  170. }
  171. }
  172. };
  173. }