messageSendCondition-detail.vue 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  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="true"
  11. append-to-body
  12. :close-on-click-modal="false"
  13. style="text-align: left"
  14. @close="closeDialog"
  15. >
  16. <div class="user-panel" v-loading="loading">
  17. <el-form
  18. ref="form"
  19. :model="formModel"
  20. :rules="ruleValidate"
  21. :label-width="'100px'"
  22. >
  23. <el-form-item label="所属单位" prop="companyId">
  24. <el-select-tree
  25. size="mini"
  26. :options="companyList"
  27. v-model="formModel.companyId"
  28. height="200"
  29. style="width:300px;"
  30. ></el-select-tree>
  31. </el-form-item>
  32. <el-form-item label="所属机构" prop="structureId">
  33. <el-select-tree
  34. size="mini"
  35. :props="structProps"
  36. :options="structureList"
  37. v-model="formModel.companyStructureId"
  38. height="200"
  39. style="width:300px;"
  40. placeholder="不选择则为全部"
  41. ></el-select-tree>
  42. </el-form-item>
  43. <el-form-item label="所属角色" prop="roleId">
  44. <el-select
  45. v-model="formModel.personRoleId"
  46. placeholder="不选择则为全部"
  47. clearable
  48. size="mini"
  49. style="width:300px;"
  50. >
  51. <el-option
  52. :value="item.id"
  53. v-for="item in roleList"
  54. :key="item.key"
  55. :label="item.personRoleName"
  56. ></el-option>
  57. </el-select>
  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 SelectTree from "@/components/SelectTree";
  71. import Constant from "@/constant";
  72. import messageSendConditionApi from "@/api/base/messageSendCondition";
  73. import companyInfoApi from "@/api/base/companyInfo";
  74. import companyStructureInfoApi from "@/api/base/companyStructureInfo";
  75. import personRoleInfoApi from "@/api/base/personRoleInfo";
  76. import dataDictionaryApi from "@/api/sys/dataDictionary";
  77. export default {
  78. props: ["businessKey", "title", "messageId"],
  79. data() {
  80. return {
  81. ruleValidate: {
  82. companyId: [
  83. { required: true, message: "单位不能为空", trigger: "blur" },
  84. ],
  85. },
  86. showDialog: true,
  87. loading: false,
  88. submitting: false,
  89. formModel: {
  90. companyId: "",
  91. },
  92. companyList: [],
  93. structureList: [],
  94. roleList: [],
  95. structProps: {
  96. // 配置项(必选)
  97. value: "id",
  98. label: "structureName",
  99. children: "children"
  100. }
  101. };
  102. },
  103. watch: {
  104. "formModel.companyId": function (newVal, oldVal) {
  105. var self = this;
  106. if(newVal!=null){
  107. var formData = new FormData();
  108. formData.append("companyId", newVal);
  109. //查询单位下机构
  110. companyStructureInfoApi.list(formData).then((response) => {
  111. var jsonData = response.data;
  112. if (jsonData.result) {
  113. self.structureList = jsonData.data;
  114. }
  115. });
  116. //查询单位下角色
  117. personRoleInfoApi.listByCompanyId(formData).then((response) => {
  118. var jsonData = response.data;
  119. if (jsonData.result) {
  120. self.roleList = jsonData.data;
  121. }
  122. });
  123. }
  124. },
  125. },
  126. methods: {
  127. closeDialog() {
  128. this.$emit("close", false);
  129. },
  130. handleSubmit() {
  131. var self = this;
  132. this.$refs["form"].validate((valid) => {
  133. if (valid) {
  134. (function () {
  135. var id = self.formModel.id;
  136. self.formModel.messageId = self.messageId;
  137. if (id == null || id.length == 0) {
  138. return messageSendConditionApi.add(self.formModel);
  139. } else {
  140. return messageSendConditionApi.update(self.formModel);
  141. }
  142. })().then(function (response) {
  143. var jsonData = response.data;
  144. if (jsonData.result) {
  145. self.$message({
  146. message: "保存成功!",
  147. type: "success",
  148. });
  149. self.$emit("close", true);
  150. } else {
  151. self.$message({
  152. message: jsonData.message + "",
  153. type: "warning",
  154. });
  155. self.$emit("close", false);
  156. }
  157. });
  158. }
  159. });
  160. },
  161. },
  162. mounted: function () {
  163. var self = this;
  164. companyInfoApi.list().then(function (response) {
  165. var jsonData = response.data;
  166. if (jsonData.result) {
  167. self.companyList = jsonData.data;
  168. }
  169. });
  170. (function () {
  171. if (self.businessKey.length == 0) {
  172. return messageSendConditionApi.create();
  173. } else {
  174. return messageSendConditionApi.edit(self.businessKey);
  175. }
  176. })()
  177. .then((response) => {
  178. var jsonData = response.data;
  179. self.loading = false;
  180. if (jsonData.result) {
  181. self.formModel = jsonData.data;
  182. } else {
  183. self.$message.error(jsonData.message + "");
  184. }
  185. })
  186. .catch((error) => {
  187. self.$message.error(error + "");
  188. });
  189. },
  190. components: {
  191. "el-select-tree": SelectTree
  192. }
  193. };
  194. </script>