personRoleInfo-detail.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <style scoped>
  2. .user-panel {
  3. margin: 10px auto;
  4. }
  5. </style>
  6. <template>
  7. <el-dialog
  8. :visible.sync="showDialog"
  9. :title="title"
  10. :modal-append-to-body="false"
  11. style="text-align: left"
  12. @close="closeDialog"
  13. :close-on-click-modal="false"
  14. >
  15. <div class="user-panel" v-loading="loading">
  16. <el-form
  17. ref="form"
  18. :model="formModel"
  19. :rules="ruleValidate"
  20. :label-width="'20%'"
  21. >
  22. <el-form-item label="用户身份名称" prop="personRoleName">
  23. <el-input
  24. v-model="formModel.personRoleName"
  25. placeholder="请输入用户身份名称"
  26. style="width: 300px"
  27. ></el-input>
  28. </el-form-item>
  29. <el-form-item label="上级身份" prop="parentId">
  30. <el-select
  31. v-model="formModel.parentId"
  32. filterable
  33. clearable
  34. placeholder="请选择"
  35. style="width: 300px"
  36. >
  37. <el-option
  38. v-for="result in personRoleList"
  39. :key="result.id"
  40. :label="result.personRoleName + '-' + result.sceneName"
  41. :value="result.id"
  42. ></el-option>
  43. </el-select>
  44. </el-form-item>
  45. <el-form-item label="适用于与场景" prop="sceneId">
  46. <el-select
  47. v-model="formModel.sceneId"
  48. filterable
  49. placeholder="请选择"
  50. style="width: 200px"
  51. >
  52. <el-option
  53. v-for="result in sceneData"
  54. :key="result.id"
  55. :label="result.sceneName"
  56. :value="result.id"
  57. ></el-option>
  58. </el-select>
  59. </el-form-item>
  60. <el-form-item label="是否启用" prop="useEnable">
  61. <el-switch
  62. v-model="formModel.useEnable"
  63. active-color="#13ce66"
  64. inactive-color="#ff4949"
  65. ></el-switch>
  66. </el-form-item>
  67. <el-form-item label="备注" prop="remark">
  68. <el-input
  69. v-model="formModel.remark"
  70. placeholder="请输入备注"
  71. style="width: 300px"
  72. ></el-input>
  73. </el-form-item>
  74. </el-form>
  75. </div>
  76. <span slot="footer" class="dialog-footer">
  77. <el-button @click="closeDialog">取 消</el-button>
  78. <el-button type="primary" @click="handleSubmit" :loading="submitting"
  79. >确 定</el-button
  80. >
  81. </span>
  82. </el-dialog>
  83. </template>
  84. <script>
  85. import Constant from "@/constant";
  86. import personRoleInfoApi from "@/api/base/personRoleInfo";
  87. export default {
  88. props: ["businessKey", "title", "sceneData"],
  89. data() {
  90. return {
  91. formModel: {},
  92. ruleValidate: {
  93. id: [{ required: true, message: "不能为空", trigger: "blur" }],
  94. personRoleName: [
  95. { required: true, message: "用户身份名称不能为空", trigger: "blur" },
  96. ],
  97. sceneId: [
  98. {
  99. required: true,
  100. message: "适用于与场景不能为空",
  101. trigger: "blur",
  102. },
  103. ],
  104. },
  105. showDialog: true,
  106. loading: false,
  107. submitting: false,
  108. personRoleList: []
  109. };
  110. },
  111. methods: {
  112. closeDialog() {
  113. this.$emit("close", false);
  114. },
  115. handleSubmit() {
  116. var self = this;
  117. this.$refs["form"].validate((valid) => {
  118. if (valid) {
  119. (function () {
  120. var id = self.formModel.id;
  121. if (id == null || id.length == 0) {
  122. return personRoleInfoApi.add(self.formModel);
  123. } else {
  124. return personRoleInfoApi.update(self.formModel);
  125. }
  126. })().then(function (response) {
  127. var jsonData = response.data;
  128. if (jsonData.result) {
  129. self.$message({
  130. message: "保存成功!",
  131. type: "success",
  132. });
  133. self.$emit("close", true);
  134. } else {
  135. self.$message({
  136. message: jsonData.message + "",
  137. type: "warning",
  138. });
  139. self.$emit("close", false);
  140. }
  141. });
  142. }
  143. });
  144. },
  145. },
  146. mounted: function () {
  147. var self = this;
  148. personRoleInfoApi.findAll()
  149. .then(response=>{
  150. var jsonData = response.data;
  151. if(jsonData.result){
  152. this.personRoleList = jsonData.data;
  153. }
  154. });
  155. (function () {
  156. if (self.formModel.useEnable == null) {
  157. self.formModel.useEnable = 0;
  158. }
  159. if (self.businessKey.length == 0) {
  160. return personRoleInfoApi.create();
  161. } else {
  162. return personRoleInfoApi.edit(self.businessKey);
  163. }
  164. })()
  165. .then((response) => {
  166. var jsonData = response.data;
  167. self.loading = false;
  168. if (jsonData.result) {
  169. self.formModel = jsonData.data;
  170. } else {
  171. self.$message.error(jsonData.message + "");
  172. }
  173. })
  174. .catch((error) => {
  175. self.$message.error(error + "");
  176. });
  177. },
  178. };
  179. </script>