data.ts 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. import { FormProps, BasicColumn } from '/@/components/Table';
  2. import { FormSchema } from '/@/components/Form/index';
  3. import { adapt } from '/@/utils/adapt';
  4. import moment from 'moment';
  5. import { h } from 'vue';
  6. import YearPicker from './customCom/YearPicker.vue';
  7. const adaptWidth = adapt();
  8. export const columns: BasicColumn[] = [
  9. {
  10. title: 'ID',
  11. dataIndex: 'id',
  12. editComponentProps: {
  13. prefix: '$',
  14. },
  15. width: 80,
  16. sorter: true,
  17. },
  18. {
  19. title: '会费年份',
  20. dataIndex: 'year',
  21. width: 90,
  22. sorter: true,
  23. },
  24. {
  25. title: '会员职务',
  26. dataIndex: 'duty',
  27. width: 130,
  28. customRender({ record }) {
  29. const options = ['会长', '副会长', '秘书长', '副秘书长', '理事', '会员'];
  30. return options[record.duty];
  31. },
  32. sorter: true,
  33. },
  34. {
  35. title: '金额',
  36. dataIndex: 'money',
  37. width: 160,
  38. sorter: true,
  39. },
  40. {
  41. title: '操作员',
  42. dataIndex: 'manager',
  43. width: 150,
  44. sorter: true,
  45. },
  46. {
  47. title: '备注',
  48. dataIndex: 'remark',
  49. width: 160,
  50. sorter: true,
  51. },
  52. {
  53. title: '创建日期',
  54. dataIndex: 'createtime',
  55. width: 160,
  56. customRender({ record }) {
  57. return moment(record.createtime * 1000).format('YYYY-MM-DD HH:mm:ss');
  58. },
  59. sorter: true,
  60. },
  61. ];
  62. export function getFormConfig(): Partial<FormProps> {
  63. return {
  64. labelWidth: 100,
  65. schemas: [
  66. {
  67. field: `id`,
  68. label: `ID`,
  69. component: 'Input',
  70. componentProps: {
  71. placeholder: 'ID',
  72. },
  73. colProps: {
  74. xl: 12,
  75. xxl: 8,
  76. },
  77. },
  78. {
  79. field: `year`,
  80. label: `会费年份`,
  81. component: 'Input',
  82. render: ({ model, field }) => {
  83. return h(YearPicker, {
  84. value: model.year,
  85. onChange(value) {
  86. model[field] = value;
  87. },
  88. });
  89. },
  90. colProps: {
  91. xl: 12,
  92. xxl: 8,
  93. },
  94. },
  95. {
  96. field: `duty`,
  97. label: `会员职务`,
  98. component: 'Select',
  99. componentProps: {
  100. options: [
  101. {
  102. label: '会长',
  103. value: 0,
  104. },
  105. {
  106. label: '副会长',
  107. value: 1,
  108. },
  109. {
  110. label: '秘书长',
  111. value: 2,
  112. },
  113. {
  114. label: '副秘书长',
  115. value: 3,
  116. },
  117. {
  118. label: '理事',
  119. value: 4,
  120. },
  121. {
  122. label: '会员',
  123. value: 5,
  124. },
  125. ],
  126. },
  127. colProps: {
  128. xl: 12,
  129. xxl: 8,
  130. },
  131. },
  132. {
  133. field: `remark`,
  134. label: `备注`,
  135. component: 'Input',
  136. componentProps: {
  137. placeholder: '备注',
  138. },
  139. colProps: {
  140. xl: 12,
  141. xxl: 8,
  142. },
  143. },
  144. {
  145. field: `money`,
  146. label: `金额`,
  147. component: 'RangeNumber',
  148. componentProps: {
  149. placeholder: '金额',
  150. },
  151. defaultValue: '',
  152. colProps: {
  153. xl: 12,
  154. xxl: 8,
  155. },
  156. },
  157. {
  158. field: `createtime`,
  159. label: `创建日期`,
  160. component: 'RangePicker',
  161. componentProps: {
  162. placeholder: '创建日期',
  163. showTime: true,
  164. },
  165. colProps: {
  166. xl: 12,
  167. xxl: 8,
  168. },
  169. },
  170. ],
  171. };
  172. }
  173. // =================popup================================
  174. export const schemas: FormSchema[] = [
  175. {
  176. field: 'year',
  177. component: 'Input',
  178. label: '会费年份',
  179. labelWidth: adaptWidth.labelWidth,
  180. render: ({ model, field }) => {
  181. return h(YearPicker, {
  182. value: model.year,
  183. onChange(value) {
  184. model[field] = value;
  185. },
  186. });
  187. },
  188. colProps: {
  189. span: adaptWidth.elContainer,
  190. },
  191. required: true,
  192. },
  193. {
  194. field: 'duty',
  195. component: 'Select',
  196. label: '会员职务',
  197. labelWidth: adaptWidth.labelWidth,
  198. colProps: {
  199. span: adaptWidth.elContainer,
  200. },
  201. componentProps: {
  202. placeholder: '会员职务',
  203. options: [
  204. {
  205. label: '会长',
  206. value: 0,
  207. },
  208. {
  209. label: '副会长',
  210. value: 1,
  211. },
  212. {
  213. label: '秘书长',
  214. value: 2,
  215. },
  216. {
  217. label: '副秘书长',
  218. value: 3,
  219. },
  220. {
  221. label: '理事',
  222. value: 4,
  223. },
  224. {
  225. label: '会员',
  226. value: 5,
  227. },
  228. ],
  229. },
  230. required: true,
  231. },
  232. {
  233. field: 'money',
  234. component: 'Input',
  235. label: '金额',
  236. labelWidth: adaptWidth.labelWidth,
  237. colProps: {
  238. span: adaptWidth.elContainer,
  239. },
  240. componentProps: {
  241. type: 'number',
  242. placeholder: '金额',
  243. },
  244. rules: [
  245. {
  246. required: true,
  247. validator: async (_, value: any) => {
  248. let dealValue = '';
  249. if (value) {
  250. dealValue = value.replace(/\s*/g, '');
  251. }
  252. if (dealValue === '') {
  253. return Promise.reject('请输入金额');
  254. }
  255. if (value < 0) {
  256. return Promise.reject('金额不能小于0');
  257. }
  258. },
  259. trigger: 'blur',
  260. },
  261. ],
  262. required: true,
  263. },
  264. {
  265. field: 'remark',
  266. component: 'Input',
  267. label: '备注',
  268. labelWidth: adaptWidth.labelWidth,
  269. colProps: {
  270. span: adaptWidth.elContainer,
  271. },
  272. componentProps: {
  273. placeholder: '备注',
  274. },
  275. },
  276. ];