index.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <script setup lang="ts">
  2. import { ref } from "vue";
  3. import ReCol from "@/components/ReCol";
  4. import { formRules } from "../utils/rule";
  5. import { FormProps } from "../utils/types";
  6. import { usePublicHooks } from "../../hooks";
  7. import { ALLOW_ROLES } from "@/global/constDefine.js";
  8. const props = withDefaults(defineProps<FormProps>(), {
  9. formInline: () => ({
  10. title: "新增",
  11. nickname: "",
  12. username: "",
  13. password: "",
  14. password2: "",
  15. status: 0,
  16. roles: []
  17. })
  18. });
  19. const ruleFormRef = ref();
  20. const { switchStyle } = usePublicHooks();
  21. const newFormInline = ref(props.formInline);
  22. function getRef() {
  23. return ruleFormRef.value;
  24. }
  25. defineExpose({ getRef });
  26. </script>
  27. <template>
  28. <el-form
  29. ref="ruleFormRef"
  30. :model="newFormInline"
  31. :rules="formRules"
  32. label-width="82px"
  33. >
  34. <el-row :gutter="30">
  35. <re-col :value="24" :xs="24" :sm="24">
  36. <el-form-item label="用户名称" prop="username">
  37. <el-input
  38. v-model="newFormInline.username"
  39. clearable
  40. placeholder="请输入用户名称"
  41. :disabled="newFormInline.title == '修改'"
  42. />
  43. </el-form-item>
  44. </re-col>
  45. <re-col :value="24" :xs="24" :sm="24">
  46. <el-form-item label="用户昵称" prop="nickname">
  47. <el-input
  48. v-model="newFormInline.nickname"
  49. clearable
  50. placeholder="请输入用户昵称"
  51. />
  52. </el-form-item>
  53. </re-col>
  54. <re-col :value="24" :xs="24" :sm="24">
  55. <el-form-item label="用户密码" prop="password">
  56. <el-input
  57. v-model="newFormInline.password"
  58. clearable
  59. show-password
  60. placeholder="8位及以上,需要包含数字、大写英文、小写英文、特殊字符中的两种及以上"
  61. />
  62. </el-form-item>
  63. </re-col>
  64. <re-col :value="24" :xs="24" :sm="24">
  65. <el-form-item label="角色">
  66. <el-select
  67. v-model="newFormInline.roles"
  68. placeholder="请选择"
  69. class="w-full"
  70. clearable
  71. multiple
  72. >
  73. <el-option
  74. v-for="(item, index) in ALLOW_ROLES"
  75. :key="index"
  76. :value="item.name"
  77. :label="item.title"
  78. >
  79. {{ item.title }}
  80. </el-option>
  81. </el-select>
  82. </el-form-item>
  83. </re-col>
  84. <re-col :value="12" :xs="24" :sm="24">
  85. <el-form-item label="用户状态">
  86. <el-switch
  87. v-model="newFormInline.status"
  88. inline-prompt
  89. :active-value="1"
  90. :inactive-value="0"
  91. active-text="启用"
  92. inactive-text="停用"
  93. :style="switchStyle"
  94. />
  95. </el-form-item>
  96. </re-col>
  97. </el-row>
  98. </el-form>
  99. </template>