add.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <template>
  2. <div>
  3. <a-button type="primary" @click="showDrawer">新建</a-button>
  4. <a-drawer
  5. v-model:visible="visible"
  6. class="custom-class"
  7. title="创建角色"
  8. placement="right"
  9. width="600"
  10. :closable="false"
  11. @close="onClose"
  12. >
  13. <a-form ref="formRef" :model="form" size="small" layout="vertical">
  14. <a-row :gutter="16">
  15. <a-col :span="24">
  16. <a-form-item label="角色名称" name="rolename" :rules="[{ required: true, message: '请输入角色名称'}]">
  17. <a-input v-model:value="form.rolename" placeholder="角色名称" />
  18. </a-form-item>
  19. </a-col>
  20. <a-col :span="24">
  21. <a-form-item label="角色描述" name="remarks" :rules="[{ required: true, message: '请输入角色描述'}]">
  22. <a-input v-model:value="form.remarks" placeholder="输入角色描述" />
  23. </a-form-item>
  24. </a-col>
  25. <a-col :span="12">
  26. <a-form-item label="角色类型" name="usertype" :rules="[{ required: true, message: '请输入角色描述'}]">
  27. <a-select
  28. ref="select"
  29. v-model:value="form.usertype"
  30. placeholder="选择角色类型"
  31. style="width: 100%"
  32. >
  33. <a-select-option v-for="item in userTypeOptions" :key="item.value" :value="item.value">{{item.remarks}}</a-select-option>
  34. </a-select>
  35. </a-form-item>
  36. </a-col>
  37. <a-col :span="12">
  38. <a-form-item label="是否隐藏敏感信息">
  39. <a-select
  40. ref="select"
  41. v-model:value="form.isshieldinfo"
  42. placeholder="选择角色"
  43. style="width: 100%"
  44. >
  45. <a-select-option :value="1">是</a-select-option>
  46. <a-select-option :value="0">否</a-select-option>
  47. </a-select>
  48. </a-form-item>
  49. </a-col>
  50. </a-row>
  51. </a-form>
  52. <template #extra>
  53. <a-space>
  54. <a-button @click="onClose">关闭</a-button>
  55. <a-button type="primary" @click="submit">保存</a-button>
  56. </a-space>
  57. </template>
  58. </a-drawer>
  59. </div>
  60. </template>
  61. <script setup>
  62. import {ref,defineEmits} from 'vue'
  63. import Api from '@/api/api'
  64. import utils from '@/utils/utils'
  65. import { useRouter } from "vue-router";
  66. const router = useRouter()
  67. const emit = defineEmits(['onSuccess'])
  68. const visible = ref(false)
  69. const form = ref({
  70. roleid:0,
  71. userid: 0,
  72. isshieldinfo:0
  73. })
  74. const validatePhoneNumber = async (rule, value)=> {
  75. const phoneNumberPattern = /^1\d{10}$/;
  76. if (phoneNumberPattern.test(value)) {
  77. return Promise.resolve();
  78. }
  79. return Promise.reject('请输入有效的手机号码');
  80. }
  81. const showDrawer = ()=>{
  82. visible.value = true
  83. roles()
  84. }
  85. const onClose = () => {
  86. visible.value = false;
  87. formRef.value.resetFields();
  88. };
  89. const formRef = ref()
  90. const submit = async ()=>{
  91. try {
  92. const values = await formRef.value.validateFields();
  93. const res = await Api.requested({
  94. id:20230608102302,
  95. "content": form.value
  96. })
  97. utils.message(res,'创建成功',()=>{
  98. onClose()
  99. emit('onSuccess')
  100. router.push({path:'/roleManageDetail',query:{id:res.data.roleid}})
  101. })
  102. } catch (errorInfo) {
  103. console.log('Failed:', errorInfo);
  104. }
  105. }
  106. const userTypeOptions = ref([])
  107. const roles = async ()=>{
  108. const res = await Api.optionstype('usertype')
  109. userTypeOptions.value = res.data
  110. }
  111. </script>
  112. <style>
  113. </style>