ruleDialog.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <template>
  2. <div>
  3. <el-dialog :title="exData.id ? '编辑': '新增'" :visible.sync="dialog" width="450px" :close-on-click-modal="false"
  4. top="50px">
  5. <el-form ref="form" :model="form" :rules="formRules" label-width="100px" class="bind-phone">
  6. <el-form-item label="项目名称:">
  7. {{exData.rule_project_name}}
  8. </el-form-item>
  9. <el-form-item label="权限类型:">
  10. <el-select v-model="form.rule_type" placeholder="">
  11. <el-option label="菜单类型" :value="0"></el-option>
  12. <el-option label="权限类型" :value="1"></el-option>
  13. </el-select>
  14. </el-form-item>
  15. <el-form-item label="权限标识:" prop="rule_code" :rules="formRules.required">
  16. <el-input v-model="form.rule_code" placeholder="请输入权限标识"></el-input>
  17. </el-form-item>
  18. <el-form-item label="权限名称:" prop="rule_title" :rules="formRules.required">
  19. <el-input v-model="form.rule_title" placeholder="请输入权限名称"></el-input>
  20. </el-form-item>
  21. <el-form-item label="权限路径:" prop="rule_url" :rules="formRules.required">
  22. <el-input v-model="form.rule_url" placeholder="请输入权限路径,没有填入#"></el-input>
  23. </el-form-item>
  24. </el-form>
  25. <div slot="footer" class="dialog-footer text-center">
  26. <el-button @click="dialog = false">取 消</el-button>
  27. <el-button type="danger" :disabled="booLock" @click="handleSubmit">确 定</el-button>
  28. </div>
  29. </el-dialog>
  30. </div>
  31. </template>
  32. <script>
  33. export default {
  34. props: {
  35. value: {
  36. type: Boolean,
  37. default: true
  38. },
  39. exData: {
  40. type: Object,
  41. default: function () {
  42. return {}
  43. }
  44. }
  45. },
  46. components: {
  47. // upload,
  48. },
  49. data () {
  50. return {
  51. dialog: !!this.value,
  52. form: {
  53. // id: undefined,
  54. rule_project_id: '',
  55. rule_type: 0,
  56. rule_code: '',
  57. rule_title: '',
  58. rule_url: '#',
  59. rule_pid: 0
  60. },
  61. booLock: false
  62. }
  63. },
  64. methods: {
  65. async handleSubmit () {
  66. this.$refs.form.validate(async valid => {
  67. if (valid) {
  68. let url = this.exData.id ? '/rule/edit' : '/rule/add'
  69. this.booLock = true
  70. const data = await this.$fetch('/api/auth' + url, { ...this.form })
  71. this.booLock = false
  72. if (data.code === 200) {
  73. this.$message.success('提交成功')
  74. this.$emit('success')
  75. this.dialog = false
  76. }
  77. }
  78. })
  79. }
  80. },
  81. mounted () {
  82. if (this.exData.id) {
  83. this.form.id = this.exData.id
  84. for (const key in this.form) {
  85. this.form[key] = this.exData[key]
  86. }
  87. } else {
  88. this.form.rule_project_id = this.exData.rule_project_id
  89. this.form.rule_pid = this.exData.rule_pid
  90. }
  91. },
  92. watch: {
  93. dialog (val) {
  94. if (!val) this.$emit('input', val)
  95. }
  96. }
  97. }
  98. </script>
  99. <style lang="scss" scoped>
  100. .top-tip {
  101. margin-top: -20px;
  102. margin-bottom: 20px;
  103. }
  104. </style>