user.vue 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <script setup lang="ts">
  2. import type { BasicForm } from '@/types/form'
  3. const CRUD = {
  4. create() {
  5. return Promise.resolve()
  6. },
  7. update() {
  8. return Promise.resolve()
  9. },
  10. getList() {
  11. return new Promise(resolve => {
  12. return resolve({
  13. data: [
  14. {
  15. id: 1,
  16. phone: '187',
  17. name: 'test',
  18. state: true,
  19. gender: '1'
  20. }
  21. ],
  22. total: 1
  23. })
  24. })
  25. }
  26. }
  27. const testGetRole = () => {
  28. Promise.resolve().then(() => {
  29. formConfig.formItems[3].options = [
  30. {
  31. label: '测试角色',
  32. value: '1'
  33. }
  34. ]
  35. })
  36. }
  37. testGetRole()
  38. const test = () => {
  39. console.log('object input')
  40. }
  41. const change = (e: any) => {
  42. console.log('focus')
  43. console.log(e)
  44. }
  45. const formConfig = reactive<BasicForm>({
  46. span: 12,
  47. formItems: [
  48. {
  49. label: '用户名',
  50. value: '',
  51. name: 'name',
  52. type: 'input',
  53. rules: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
  54. search: true,
  55. events: {
  56. input: test,
  57. focus: change
  58. }
  59. },
  60. {
  61. label: '密码',
  62. value: '',
  63. name: 'password',
  64. type: 'input',
  65. rules: [{ required: true, message: '请输入密码', trigger: 'blur' }]
  66. },
  67. {
  68. label: '手机号',
  69. value: '',
  70. name: 'phone',
  71. type: 'input',
  72. search: true,
  73. props: {
  74. maxlength: 11
  75. }
  76. },
  77. {
  78. label: '角色',
  79. value: '',
  80. name: 'role',
  81. type: 'select',
  82. options: []
  83. },
  84. // {
  85. // label: '性别',
  86. // value: '1',
  87. // name: 'gender',
  88. // type: 'radio-group',
  89. // options: [
  90. // {
  91. // label: '1',
  92. // value: '男'
  93. // },
  94. // {
  95. // label: '2',
  96. // value: '女'
  97. // }
  98. // ]
  99. // },
  100. {
  101. label: '启用',
  102. value: true,
  103. name: 'state',
  104. type: 'switch'
  105. }
  106. ]
  107. })
  108. </script>
  109. <template>
  110. <pro-table :crud="CRUD" :formConfig="formConfig">
  111. <el-table-column prop="name" label="用户名"></el-table-column>
  112. <el-table-column prop="phone" label="手机号"></el-table-column>
  113. <el-table-column prop="gender" label="性别"></el-table-column>
  114. </pro-table>
  115. </template>
  116. <style lang="scss" scoped></style>