personPopedom-detail.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  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. :append-to-body="true"
  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="'100px'"
  21. >
  22. <el-form-item label="公司" prop="companyId">
  23. <el-select-tree
  24. :props="props"
  25. :options="companyResult"
  26. v-model="formModel.companyId"
  27. height="200"
  28. ></el-select-tree>
  29. </el-form-item>
  30. <el-form-item label="角色" prop="personRoleId">
  31. <el-select
  32. v-model="formModel.personRoleId"
  33. filterable
  34. placeholder="请选择"
  35. style="width: 280px"
  36. >
  37. <el-option
  38. v-for="role in personRoleResult"
  39. :key="role.id"
  40. :label="role.personRoleName"
  41. :value="role.id"
  42. ></el-option>
  43. </el-select>
  44. </el-form-item>
  45. <el-form-item label="展示的图标" prop="showIconId">
  46. <el-input
  47. v-model="formModel.showIconId"
  48. placeholder="请输入展示的图标id"
  49. style="width: 300px"
  50. ></el-input>
  51. </el-form-item>
  52. <el-form-item label="备注信息" prop="remark">
  53. <el-input
  54. v-model="formModel.remark"
  55. placeholder="请输入备注信息"
  56. style="width: 300px"
  57. ></el-input>
  58. </el-form-item>
  59. </el-form>
  60. </div>
  61. <span slot="footer" class="dialog-footer">
  62. <el-button @click="closeDialog">取 消</el-button>
  63. <el-button type="primary" @click="handleSubmit" :loading="submitting"
  64. >确 定</el-button
  65. >
  66. </span>
  67. </el-dialog>
  68. </template>
  69. <script>
  70. import Constant from "@/constant";
  71. import personPopedomApi from "@/api/base/personPopedom";
  72. import personRoleInfoApi from "@/api/base/personRoleInfo";
  73. import companyInfoApi from "@/api/base/companyInfo";
  74. import deviceInfoApi from "@/api/base/deviceInfo";
  75. import SelectTree from "@/components/SelectTree";
  76. export default {
  77. components: {
  78. "el-select-tree": SelectTree,
  79. },
  80. props: ["businessKey", "title", "personId"],
  81. data() {
  82. return {
  83. formModel: { companyId: "" },
  84. ruleValidate: {
  85. companyId: [
  86. { required: true, message: "对应公司id不能为空", trigger: "blur" },
  87. ],
  88. personRoleId: [
  89. { required: true, message: "对应角色id不能为空", trigger: "blur" },
  90. ],
  91. },
  92. showDialog: true,
  93. loading: false,
  94. submitting: false,
  95. companyResult: [],
  96. treeData: [],
  97. props: {
  98. // 配置项(必选)
  99. value: "id",
  100. label: "name",
  101. children: "children",
  102. },
  103. personRoleResult: [],
  104. };
  105. },
  106. created() {
  107. var self = this;
  108. companyInfoApi.list().then(function (response) {
  109. var jsonData = response.data;
  110. if (jsonData.result) {
  111. if (jsonData.data != null && jsonData.data != "") {
  112. self.companyResult = jsonData.data;
  113. }
  114. }
  115. });
  116. // var formData = new FormData();
  117. // formData.append("companyId", "c52b03cb-7526-4e8b-8b90-4f7a6a37b586");
  118. // personRoleInfoApi.listByCompanyId(formData).then(function (response) {
  119. // var jsonData = response.data;
  120. // if (jsonData.result) {
  121. // if (jsonData.data != null && jsonData.data != "") {
  122. // self.personRoleResult = jsonData.data;
  123. // }
  124. // }
  125. // });
  126. this.loadTree();
  127. },
  128. watch: {
  129. "formModel.companyId": function (val, oldval) {
  130. if(val != null && val != ""){
  131. var self = this;
  132. self.formModel.personRoleId = "";
  133. var formData = new FormData();
  134. formData.append("companyId", val);
  135. personRoleInfoApi.listByCompanyId(formData).then(function (response) {
  136. var jsonData = response.data;
  137. if (jsonData.result) {
  138. if (jsonData.data != null && jsonData.data != "") {
  139. self.personRoleResult = jsonData.data;
  140. }
  141. }
  142. });
  143. }
  144. },
  145. },
  146. methods: {
  147. loadTree() {
  148. var formData = new FormData();
  149. companyInfoApi.loadChildren(formData).then((resp) => {
  150. var jsonData = resp.data;
  151. if (jsonData.result) {
  152. this.treeData = jsonData.data;
  153. } else {
  154. this.$message.error(jsonData.message + "");
  155. }
  156. });
  157. },
  158. closeDialog() {
  159. this.$emit("close", false);
  160. },
  161. handleSubmit() {
  162. var self = this;
  163. self.formModel.personId = self.personId;
  164. this.$refs["form"].validate((valid) => {
  165. if (valid) {
  166. (function () {
  167. var id = self.formModel.id;
  168. if (id == null || id.length == 0) {
  169. return personPopedomApi.add(self.formModel);
  170. } else {
  171. return personPopedomApi.update(self.formModel);
  172. }
  173. })().then(function (response) {
  174. var jsonData = response.data;
  175. if (jsonData.result) {
  176. self.$message({
  177. message: "保存成功!",
  178. type: "success",
  179. });
  180. self.$emit("close", true);
  181. } else {
  182. self.$message({
  183. message: jsonData.message + "",
  184. type: "warning",
  185. });
  186. self.$emit("close", false);
  187. }
  188. });
  189. }
  190. });
  191. },
  192. },
  193. mounted: function () {
  194. var self = this;
  195. (function () {
  196. if (self.businessKey.length == 0) {
  197. return personPopedomApi.create();
  198. } else {
  199. return personPopedomApi.edit(self.businessKey);
  200. }
  201. })()
  202. .then((response) => {
  203. var jsonData = response.data;
  204. self.loading = false;
  205. if (jsonData.result) {
  206. self.formModel = jsonData.data;
  207. } else {
  208. self.$message.error(jsonData.message + "");
  209. }
  210. })
  211. .catch((error) => {
  212. self.$message.error(error + "");
  213. });
  214. },
  215. };
  216. </script>