user.data.ts 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. import { reactive } from 'vue'
  2. import { required } from '@/utils/formRules'
  3. import { useI18n } from '@/hooks/web/useI18n'
  4. import { DICT_TYPE } from '@/utils/dict'
  5. import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas'
  6. // 国际化
  7. const { t } = useI18n()
  8. // 表单校验
  9. export const rules = reactive({
  10. username: [required],
  11. nickname: [required],
  12. email: [required],
  13. status: [required],
  14. mobile: [
  15. {
  16. pattern:
  17. /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/,
  18. trigger: 'blur',
  19. message: '请输入正确的手机号码'
  20. }
  21. ]
  22. })
  23. // crudSchemas
  24. const crudSchemas = reactive<CrudSchema[]>([
  25. {
  26. label: t('common.index'),
  27. field: 'id',
  28. type: 'index',
  29. form: {
  30. show: false
  31. },
  32. detail: {
  33. show: false
  34. }
  35. },
  36. {
  37. label: '用户账号',
  38. field: 'username',
  39. form: {
  40. show: false
  41. },
  42. search: {
  43. show: true
  44. }
  45. },
  46. {
  47. label: '用户昵称',
  48. field: 'nickname'
  49. },
  50. {
  51. label: '用户邮箱',
  52. field: 'email'
  53. },
  54. {
  55. label: '手机号码',
  56. field: 'mobile',
  57. search: {
  58. show: true
  59. }
  60. },
  61. {
  62. label: '用户性别',
  63. field: 'sex',
  64. dictType: DICT_TYPE.SYSTEM_USER_SEX
  65. },
  66. {
  67. label: '部门',
  68. field: 'deptId',
  69. table: {
  70. show: false
  71. }
  72. },
  73. {
  74. label: '岗位',
  75. field: 'postIds',
  76. table: {
  77. show: false
  78. }
  79. },
  80. {
  81. label: t('common.status'),
  82. field: 'status',
  83. dictType: DICT_TYPE.COMMON_STATUS,
  84. search: {
  85. show: true
  86. }
  87. },
  88. {
  89. label: '最后登录时间',
  90. field: 'loginDate',
  91. form: {
  92. show: false
  93. }
  94. },
  95. {
  96. label: '最后登录IP',
  97. field: 'loginIp',
  98. table: {
  99. show: false
  100. },
  101. form: {
  102. show: false
  103. }
  104. },
  105. {
  106. label: t('form.remark'),
  107. field: 'remark',
  108. table: {
  109. show: false
  110. }
  111. },
  112. {
  113. label: t('common.createTime'),
  114. field: 'createTime',
  115. table: {
  116. show: false
  117. },
  118. form: {
  119. show: false
  120. },
  121. detail: {
  122. show: false
  123. },
  124. search: {
  125. show: true,
  126. component: 'DatePicker',
  127. componentProps: {
  128. type: 'datetimerange',
  129. valueFormat: 'YYYY-MM-DD HH:mm:ss',
  130. defaultTime: [new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)],
  131. shortcuts: [
  132. {
  133. text: '近一周',
  134. value: () => {
  135. const end = new Date()
  136. const start = new Date()
  137. start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
  138. return [start, end]
  139. }
  140. },
  141. {
  142. text: '近一个月',
  143. value: () => {
  144. const end = new Date()
  145. const start = new Date()
  146. start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
  147. return [start, end]
  148. }
  149. },
  150. {
  151. text: '近三个月',
  152. value: () => {
  153. const end = new Date()
  154. const start = new Date()
  155. start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
  156. return [start, end]
  157. }
  158. }
  159. ]
  160. }
  161. }
  162. },
  163. {
  164. field: 'action',
  165. width: '400px',
  166. label: t('table.action'),
  167. form: {
  168. show: false
  169. },
  170. detail: {
  171. show: false
  172. }
  173. }
  174. ])
  175. export const { allSchemas } = useCrudSchemas(crudSchemas)