MessageTemplate.vue 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <template>
  2. <div class="MessageTemplate">
  3. <el-button @click="add" type="primary" icon="el-icon-document-add">添加</el-button>
  4. <el-table :data="tableData" border style="width: 80%">
  5. <el-table-column prop="id" label="序号" width="120"></el-table-column>
  6. <el-table-column prop="code" label="模板编码" width="120"></el-table-column>
  7. <el-table-column label="发送方式" width="100">
  8. <template slot-scope="scope">
  9. <!-- <p>{{scope.row.description}}</p> -->
  10. <span v-for="item in sendMethod" :key="item.code">
  11. <el-tag size="small" type="warning" v-if="scope.row.methodCode == item.code" >{{item.description}}</el-tag>
  12. </span>
  13. </template>
  14. </el-table-column>
  15. <el-table-column label="模板描述">
  16. <template slot-scope="scope">
  17. <p>{{scope.row.description}}</p>
  18. </template>
  19. </el-table-column>
  20. <el-table-column prop="content" label="模板内容"></el-table-column>
  21. <el-table-column prop="providerTemplateCode" label="服务商模板编码" width="150"></el-table-column>
  22. <el-table-column fixed="right" label="操作" width="150">
  23. <template slot-scope="scope">
  24. <el-button @click="edit(scope.row)" type="text" size="small">编辑</el-button>
  25. <el-popconfirm title="是否删除此设备的信息?" @onConfirm="del(scope.row)">
  26. <el-button slot="reference" type="text" size="small">删除</el-button>
  27. </el-popconfirm>
  28. </template>
  29. </el-table-column>
  30. </el-table>
  31. <el-dialog :title="isAdd?'添加消息模板':'编辑消息模板'" :visible.sync="showDialog">
  32. <el-row type="flex">
  33. <el-col :span="14">
  34. <el-form
  35. ref="dyForm"
  36. :model="dyForm"
  37. :rules="rules"
  38. label-width="100px"
  39. class="demo-dynamic"
  40. >
  41. <el-form-item label="模板编码:" prop="code">
  42. <el-input v-model="dyForm.code"></el-input>
  43. </el-form-item>
  44. <el-form-item label="模板描述:" prop="description">
  45. <el-input type="textarea" v-model="dyForm.description"></el-input>
  46. </el-form-item>
  47. <el-form-item label="模板内容:">
  48. <el-input type="textarea" v-model="dyForm.content"></el-input>
  49. </el-form-item>
  50. <el-form-item label="服务商模板编码:">
  51. <el-input v-model="dyForm.providerTemplateCode"></el-input>
  52. </el-form-item>
  53. <el-form-item label="发送方式" prop="region">
  54. <el-select v-model="dyForm.methodCode" placeholder="请选择发送方式">
  55. <el-option v-for="item in sendMethod" :label="item.description" :value="item.code" :key="item.code"></el-option>
  56. <!-- <el-option label="区域二" value="beijing"></el-option> -->
  57. </el-select>
  58. </el-form-item>
  59. <el-form-item>
  60. <el-button @click="showDialog=false">取 消</el-button>
  61. <el-button type="primary" @click="submitForm('dyForm')">保 存</el-button>
  62. </el-form-item>
  63. </el-form>
  64. </el-col>
  65. </el-row>
  66. </el-dialog>
  67. </div>
  68. </template>
  69. <script>
  70. import { mapActions } from "vuex";
  71. const rules = {
  72. code: [{ required: true, message: "请输入消息模板编码", trigger: "blur" }],
  73. description: [
  74. { required: true, message: "请输入消息点描述", trigger: "blur" }
  75. ]
  76. };
  77. export default {
  78. name: "MessageTemplate",
  79. data() {
  80. return {
  81. tableData: [],
  82. showDialog: false,
  83. dyForm: {
  84. code: "",
  85. description: "",
  86. content: "",
  87. providerTemplateCode: "",
  88. methodCode: ""
  89. },
  90. sendMethod: "",
  91. rules,
  92. isAdd: true
  93. };
  94. },
  95. mounted() {
  96. this.getMessageTemplate();
  97. this.getSendMethod();
  98. },
  99. methods: {
  100. ...mapActions(["fetch"]),
  101. // 获取消息点
  102. getMessageTemplate() {
  103. this.fetch({
  104. api: "/message/template/list",
  105. method: "GET",
  106. data: {},
  107. success: res => {
  108. this.tableData = res;
  109. },
  110. fail: err => {
  111. console.log(err);
  112. if (err.errMsg) this.$message.error(err.errMsg);
  113. else this.$message.error("服务器发生异常");
  114. }
  115. });
  116. },
  117. // 获取发送方式
  118. getSendMethod() {
  119. this.fetch({
  120. api: "/message/method/list",
  121. method: "GET",
  122. data: {},
  123. success: res => {
  124. this.sendMethod = res;
  125. this.dyForm.methodCode = res[0].code
  126. },
  127. fail: err => {
  128. console.log(err);
  129. if (err.errMsg) this.$message.error(err.errMsg);
  130. else this.$message.error("服务器发生异常");
  131. }
  132. });
  133. },
  134. add() {
  135. this.isAdd = true;
  136. this.showDialog = true;
  137. this.dyForm = {
  138. code: "",
  139. description: "",
  140. content: "",
  141. providerTemplateCode: "",
  142. methodCode: this.sendMethod[0].code
  143. }
  144. },
  145. edit(row) {
  146. console.log(row)
  147. this.isAdd = false;
  148. this.showDialog = true;
  149. this.dyForm = row
  150. },
  151. del(row) {
  152. this.fetch({
  153. api: "/message/template/delete",
  154. method: "POST",
  155. data: { id: row.id },
  156. success: res => {
  157. console.log(res);
  158. this.getMessageTemplate();
  159. this.$message, success("删除成功!");
  160. },
  161. fail: err => {
  162. console.log(err);
  163. if (err.errMsg) this.$message.error(err.errMsg);
  164. else this.$message.error("服务器发生异常");
  165. }
  166. });
  167. },
  168. submitForm(formName) {
  169. this.$refs[formName].validate(valid => {
  170. if (valid) {
  171. console.log(this.dyForm);
  172. this.isAdd
  173. ? this.reqSave("/message/template/add")
  174. : this.reqSave("/message/template/update");
  175. } else {
  176. return false;
  177. }
  178. });
  179. },
  180. // 请求 保存 (添加 和 更新)
  181. reqSave(api) {
  182. this.fetch({
  183. api,
  184. method: "POST",
  185. data: this.dyForm,
  186. success: res => {
  187. console.log(res);
  188. this.getMessageTemplate();
  189. this.$message.success("添加消息模板成功!");
  190. this.showDialog = false;
  191. },
  192. fail: err => {
  193. console.log(err);
  194. if (err.errMsg) this.$message.error(err.errMsg);
  195. else this.$message.error("服务器发生异常");
  196. }
  197. });
  198. }
  199. }
  200. };
  201. </script>