addRoleCom.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <template>
  2. <el-dialog
  3. :title="dialogTitle"
  4. v-model="dialogVisible"
  5. width="400px"
  6. @close="closeDialog()"
  7. @open="open"
  8. >
  9. <el-form
  10. ref="formInfo"
  11. :model="form"
  12. class="demo-form-inline"
  13. label-width="100px"
  14. :rules="rules"
  15. >
  16. <el-form-item label="角色名称:" prop="roleName">
  17. <el-input v-model="form.roleName"></el-input>
  18. </el-form-item>
  19. <el-form-item label="角色权限:" prop="roleKey">
  20. <el-input v-model="form.roleKey"></el-input>
  21. </el-form-item>
  22. <el-form-item label="角色状态:" prop="status">
  23. <el-radio-group v-model="form.status">
  24. <el-radio label="0" value="0">正常</el-radio>
  25. <el-radio label="1" value="1">停用</el-radio>
  26. </el-radio-group>
  27. </el-form-item>
  28. <el-form-item label="角色排序:" prop="roleSort">
  29. <el-input-number
  30. v-model="form.roleSort"
  31. controls-position="right"
  32. :min="0"
  33. :max="255"
  34. ></el-input-number>
  35. </el-form-item>
  36. <div style="text-align: right">
  37. <el-button type="primary" @click="submitForm('formInfo')">
  38. 保存
  39. </el-button>
  40. </div>
  41. </el-form>
  42. </el-dialog>
  43. </template>
  44. <script>
  45. import { defineComponent, ref, watchEffect } from 'vue'
  46. import * as api from '@/api/systemManage/rolePermission.js'
  47. import { ElMessage } from 'element-plus'
  48. export default defineComponent({
  49. name: 'AddRoleCom',
  50. emits: ['closeDialog'],
  51. props: {
  52. flag: Boolean,
  53. dialogTitle: String,
  54. itemInfo: Object,
  55. },
  56. setup(props, context) {
  57. context
  58. const dialogVisible = ref(false)
  59. const formInfo = ref(null)
  60. const form = ref([])
  61. // open(): Dialog弹窗打开之前做的事
  62. const open = () => {
  63. console.log('')
  64. form.value = props.itemInfo.value
  65. console.log()
  66. }
  67. // 关闭弹框
  68. const closeDialog = () => {
  69. context.emit('closeDialog', false)
  70. dialogVisible.value = false
  71. }
  72. watchEffect((fn) => {
  73. fn
  74. dialogVisible.value = props.flag
  75. })
  76. const roleValid = (rule, value, callback) => {
  77. rule
  78. if (value.length === 0) {
  79. callback(new Error('角色不能为空'))
  80. } else {
  81. callback()
  82. }
  83. }
  84. // 保存-修改操作
  85. const submitForm = () => {
  86. console.log(formInfo)
  87. formInfo.value.validate((valid) => {
  88. if (valid) {
  89. // 走保存请求
  90. if (props.dialogTitle === '角色新增') {
  91. api.roleAdd(form.value).then((requset) => {
  92. if (requset.status === 'SUCCESS') {
  93. ElMessage.success({
  94. message: '新增成功',
  95. type: 'success',
  96. })
  97. closeDialog()
  98. //角色新增成功后,提交全选按钮权限给后台
  99. } else {
  100. ElMessage.error(requset.msg)
  101. }
  102. })
  103. } else {
  104. // alert('修改')
  105. api.roleUpdate(form.value).then((requset) => {
  106. if (requset.status === 'SUCCESS') {
  107. ElMessage.success({
  108. message: '修改成功',
  109. type: 'success',
  110. })
  111. closeDialog()
  112. } else {
  113. ElMessage.error(requset.msg)
  114. }
  115. })
  116. }
  117. } else {
  118. console.log('error submit!!')
  119. return false
  120. }
  121. })
  122. }
  123. return {
  124. closeDialog,
  125. dialogVisible,
  126. roleValid,
  127. formInfo,
  128. form,
  129. open,
  130. submitForm,
  131. rules: {
  132. roleName: [
  133. { required: true, message: '请输入角色名称', trigger: 'blur' },
  134. ],
  135. roleKey: [
  136. { required: true, message: '请输入角色权限', trigger: 'blur' },
  137. ],
  138. status: [
  139. { required: true, message: '请选择角色状态', trigger: 'change' },
  140. ],
  141. },
  142. }
  143. },
  144. })
  145. </script>
  146. <style scoped lang="scss">
  147. </style>