messageList.vue 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. <template>
  2. <div class="levelList">
  3. <el-row>
  4. <el-form ref="form" :model="form" label-width="80px">
  5. <el-form-item label="地址筛选">
  6. <el-select v-model="form.region" placeholder="请选择地址名称">
  7. <el-option
  8. v-for="item in addressList"
  9. :key="item.addressid"
  10. :label="item.addressname"
  11. :value="item.addressid"
  12. ></el-option>
  13. </el-select>
  14. <el-button type="primary" @click="onSubmit" style="margin-left: 20px"
  15. >查询重置</el-button
  16. >
  17. </el-form-item>
  18. </el-form>
  19. </el-row>
  20. <el-row>
  21. <el-button type="primary" @click="goAddress">添加消息</el-button>
  22. <el-button type="danger" @click="delAll">全部删除</el-button>
  23. </el-row>
  24. <el-table
  25. :data="list"
  26. v-if="list.length > 0"
  27. style="width: 80%"
  28. height="600"
  29. >
  30. <el-table-column type="index" label="序号"> </el-table-column>
  31. <el-table-column label="消息ID" prop="jrid"> </el-table-column>
  32. <el-table-column label="人员名称" prop="jrname"> </el-table-column>
  33. <el-table-column label="人员手机号" prop="jrtel"> </el-table-column>
  34. <el-table-column label="地址名称" prop="addressname"> </el-table-column>
  35. <el-table-column label="等级名称" prop="levelname"> </el-table-column>
  36. <el-table-column label="操作" width="180">
  37. <template slot-scope="scope">
  38. <el-button size="mini" @click="handleEdit(scope.$index, scope.row)"
  39. >编辑</el-button
  40. >
  41. <el-button size="mini" type="danger" @click="handleDelete(scope.row)"
  42. >删除</el-button
  43. >
  44. </template>
  45. </el-table-column>
  46. </el-table>
  47. <div v-else>
  48. <h1>请添加数据</h1>
  49. </div>
  50. </div>
  51. </template>
  52. <script>
  53. import { getMessage, delMessage, searchAddress } from "@/api/message";
  54. import { getAddress } from "@/api/address";
  55. import { getLevel } from "@/api/level";
  56. export default {
  57. data() {
  58. return {
  59. list: [],
  60. addressList: [],
  61. levelList: [],
  62. form: {
  63. region: "",
  64. },
  65. };
  66. },
  67. created() {
  68. this.init();
  69. },
  70. methods: {
  71. onSubmit() {
  72. console.log("submit!", this.form.region);
  73. searchAddress({
  74. jraddressesid: this.form.region,
  75. })
  76. .then((res) => {
  77. console.log(res, "res");
  78. if (res.code == 200) {
  79. this.list = res.data;
  80. this.level();
  81. this.address();
  82. }
  83. })
  84. .catch((err) => {
  85. throw new Error("错误");
  86. });
  87. },
  88. async init() {
  89. const dataPromise = [this.part1(), this.part2(), this.part3()];
  90. let [data1, data2, data3] = await Promise.all(dataPromise);
  91. this.list = data3;
  92. this.levelList = data1;
  93. this.addressList = data2;
  94. this.level();
  95. this.address();
  96. },
  97. async part1() {
  98. const api = await getLevel();
  99. return api.data.records;
  100. },
  101. async part2() {
  102. const api = await getAddress();
  103. return api.data.records;
  104. },
  105. async part3() {
  106. const api = await getMessage();
  107. return api.data.records;
  108. },
  109. level() {
  110. this.list.forEach((item) => {
  111. const row = this.levelList.find((l) => l.jrid === item.jrlevel);
  112. row && (item.levelname = row.levelname);
  113. });
  114. },
  115. address() {
  116. this.list.forEach((item) => {
  117. const target = this.addressList.find(
  118. (a) => a.addressid === item.jraddressesid
  119. );
  120. if (target) item.addressname = target.addressname;
  121. });
  122. },
  123. goAddress() {
  124. this.$router.push("/message/messageAdd");
  125. },
  126. handleEdit(index, row) {
  127. console.log(index, row);
  128. this.$router.push({
  129. path: "/message/messageAdd",
  130. query: {
  131. obj: row,
  132. },
  133. });
  134. },
  135. handleDelete(row) {
  136. this.$confirm("此操作将永久删除该条数据, 是否继续?", "提示", {
  137. confirmButtonText: "确定",
  138. cancelButtonText: "取消",
  139. type: "warning",
  140. })
  141. .then(() => {
  142. delMessage([row.jrid])
  143. .then((res) => {
  144. if (res.code === 200) {
  145. this.$message({
  146. message: "恭喜你,删除数据成功",
  147. type: "success",
  148. });
  149. this.init();
  150. }
  151. })
  152. .catch((err) => {
  153. console.log(err);
  154. });
  155. })
  156. .catch(() => {
  157. this.$message({
  158. type: "info",
  159. message: "已取消删除",
  160. });
  161. });
  162. },
  163. delAll() {
  164. let newsId = this.list.map((item) => item.jrid);
  165. this.$confirm("此操作将永久删除所以数据, 是否继续?", "提示", {
  166. confirmButtonText: "确定",
  167. cancelButtonText: "取消",
  168. type: "warning",
  169. })
  170. .then(() => {
  171. delMessage(newsId)
  172. .then((res) => {
  173. if (res.code === 200) {
  174. this.$message({
  175. message: "恭喜你,删除数据成功",
  176. type: "success",
  177. });
  178. this.init();
  179. }
  180. })
  181. .catch((err) => {
  182. console.log(err);
  183. });
  184. })
  185. .catch(() => {
  186. this.$message({
  187. type: "info",
  188. message: "已取消删除",
  189. });
  190. });
  191. },
  192. },
  193. };
  194. </script>
  195. <style scoped lang="scss">
  196. .levelList {
  197. padding: 20px;
  198. }
  199. </style>