warningPusher-detail.vue 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  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 ref="form" :model="formModel" :rules="ruleValidate" :label-width="'100px'">
  17. <el-row>
  18. <el-col :span="12">
  19. <el-form-item label="单位" prop="companyId">
  20. <el-select
  21. v-model="formModel.companyId"
  22. filterable
  23. placeholder="请选择"
  24. style="width:240px"
  25. >
  26. <el-option
  27. v-for="company in companyResult"
  28. :key="company.id"
  29. :label="company.name"
  30. :value="company.id"
  31. ></el-option>
  32. </el-select>
  33. </el-form-item>
  34. </el-col>
  35. <el-col :span="12">
  36. <el-form-item label="现有人员查询">
  37. <el-select
  38. v-model="selectedPerson"
  39. filterable
  40. remote
  41. placeholder="请输入人员姓名"
  42. :remote-method="queryPersonList"
  43. @change="selectPerson"
  44. :loading="loading">
  45. <el-option
  46. v-for="person in personList"
  47. :key="person.id"
  48. :label="person.name + '-' + person.phone"
  49. :value="person">
  50. </el-option>
  51. </el-select>
  52. </el-form-item>
  53. </el-col>
  54. </el-row>
  55. <el-row>
  56. <el-col :span="12">
  57. <el-form-item label="姓名" prop="name">
  58. <el-input v-model="formModel.name" placeholder="请输入姓名"></el-input>
  59. </el-form-item>
  60. </el-col>
  61. <el-col :span="12">
  62. <el-form-item label="手机号" prop="phone">
  63. <el-input v-model="formModel.phone" placeholder="请输入手机号"></el-input>
  64. </el-form-item>
  65. </el-col>
  66. </el-row>
  67. <el-row>
  68. <el-col :span="24">
  69. <el-form-item label="openid" prop="name">
  70. <el-input v-model="formModel.openId" placeholder="请输入openid"></el-input>
  71. </el-form-item>
  72. </el-col>
  73. </el-row>
  74. <el-row>
  75. <el-col :span="24">
  76. <el-form-item label="备注" prop="remark">
  77. <el-input
  78. type="textarea"
  79. v-model="formModel.remark"
  80. :rows="2"
  81. placeholder="请输入备注"
  82. ></el-input>
  83. </el-form-item>
  84. </el-col>
  85. </el-row>
  86. <el-row>
  87. <el-col :span="12">
  88. <el-form-item label="预警温度" prop="temperature">
  89. <el-input v-model="formModel.temperature" placeholder="请输入预警温度"></el-input>
  90. </el-form-item>
  91. </el-col>
  92. <el-col :span="12">
  93. <el-form-item label="报警触发次数" prop="times">
  94. <el-input v-model="formModel.times" placeholder="请输入报警触发次数"></el-input>
  95. </el-form-item>
  96. </el-col>
  97. </el-row>
  98. <el-row>
  99. <el-col :span="24">
  100. <el-form-item label="未测温提醒" prop="missingNoticeEnabled">
  101. <el-radio v-model="formModel.missingNoticeEnabled" :label="true">开</el-radio>
  102. <el-radio v-model="formModel.missingNoticeEnabled" :label="false">关</el-radio>
  103. </el-form-item>
  104. </el-col>
  105. </el-row>
  106. </el-form>
  107. </div>
  108. <span slot="footer" class="dialog-footer">
  109. <el-button @click="closeDialog">取 消</el-button>
  110. <el-button type="primary" @click="handleSubmit" :loading="submitting">确 定</el-button>
  111. </span>
  112. </el-dialog>
  113. </template>
  114. <script>
  115. import Constant from "@/constant";
  116. import warningPusherApi from "@/api/base/warningPusher";
  117. import personInfoApi from "@/api/base/personInfo";
  118. export default {
  119. props: ["businessKey", "title", "companyResult"],
  120. data() {
  121. let checkPhone = (rule, value, callback) => {
  122. if (!value) {
  123. return callback(new Error("手机号不能为空"));
  124. } else {
  125. const reg = /^1[3|4|5|7|8][0-9]\d{8}$/;
  126. console.log(reg.test(value));
  127. if (reg.test(value)) {
  128. callback();
  129. } else {
  130. return callback(new Error("请输入正确的手机号"));
  131. }
  132. }
  133. };
  134. return {
  135. formModel: {},
  136. ruleValidate: {
  137. name: [{ required: true, message: "姓名不能为空", trigger: "blur" }],
  138. companyId: [
  139. {
  140. required: true,
  141. message: "单位不能为空",
  142. trigger: "change"
  143. }
  144. ],
  145. phone: [
  146. { required: true, message: "手机不能为空", trigger: "blur" },
  147. {
  148. validator: checkPhone,
  149. trigger: "blur"
  150. }
  151. ],
  152. temperature: [
  153. { required: true, message: "预警度数不能为空", trigger: "blur" },
  154. {
  155. type: "number",
  156. message: "请输入数字格式",
  157. trigger: "blur",
  158. transform(value) {
  159. return Number(value);
  160. }
  161. }
  162. ]
  163. },
  164. showDialog: true,
  165. loading: false,
  166. submitting: false,
  167. canQuery: true,
  168. personList:[],
  169. selectedPerson: {}
  170. };
  171. },
  172. methods: {
  173. closeDialog() {
  174. this.$emit("close", false);
  175. },
  176. handleSubmit() {
  177. var self = this;
  178. this.$refs["form"].validate(valid => {
  179. if (valid) {
  180. (function() {
  181. var id = self.formModel.id;
  182. if (id == null || id.length == 0) {
  183. return warningPusherApi.add(self.formModel);
  184. } else {
  185. return warningPusherApi.update(self.formModel);
  186. }
  187. })().then(function(response) {
  188. var jsonData = response.data;
  189. if (jsonData.result) {
  190. self.$message({
  191. message: "保存成功!",
  192. type: "success"
  193. });
  194. self.$emit("close", true);
  195. } else {
  196. self.$message({
  197. message: jsonData.message + "",
  198. type: "warning"
  199. });
  200. //self.$emit("close", false);
  201. }
  202. });
  203. }
  204. });
  205. },
  206. queryPersonList(query){
  207. var formData = new FormData();
  208. formData.append("companyId", this.formModel.companyId);
  209. formData.append("name", query);
  210. formData.append("pageIndex", 1);
  211. formData.append("pageSize", 20);
  212. personInfoApi
  213. .pageList(formData)
  214. .then(response=>{
  215. var jsonData = response.data;
  216. if(jsonData.result){
  217. this.personList = jsonData.data.data;
  218. }
  219. });
  220. },
  221. selectPerson(){
  222. this.formModel.name = this.selectedPerson.name;
  223. this.formModel.phone = this.selectedPerson.phone;
  224. this.formModel.openId = this.selectedPerson.openId;
  225. }
  226. },
  227. mounted: function() {
  228. var self = this;
  229. (function() {
  230. if (self.businessKey.length == 0) {
  231. return warningPusherApi.create();
  232. } else {
  233. return warningPusherApi.edit(self.businessKey);
  234. }
  235. })()
  236. .then(response => {
  237. var jsonData = response.data;
  238. self.loading = false;
  239. if (jsonData.result) {
  240. self.formModel = jsonData.data;
  241. } else {
  242. self.$message.error(jsonData.message + "");
  243. }
  244. })
  245. .catch(error => {
  246. self.$message.error(error + "");
  247. });
  248. }
  249. };
  250. </script>