MessageList.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <template>
  2. <div class="message-list">
  3. <div class="table-content">
  4. <el-table :data="tableData" style="width: 100%">
  5. <el-table-column label="序号" type="index" width="180">
  6. </el-table-column>
  7. <el-table-column prop="userName" label="用户姓名" width="180">
  8. </el-table-column>
  9. <el-table-column prop="userTel" label="用户手机号" width="180">
  10. </el-table-column>
  11. <el-table-column prop="levelName" label="用户等级"> </el-table-column>
  12. <el-table-column prop="addressName" label="用户地址"> </el-table-column>
  13. <el-table-column label="操作">
  14. <template slot-scope="scope">
  15. <el-button
  16. size="mini"
  17. @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
  18. <el-button
  19. size="mini"
  20. type="danger"
  21. @click="handleDelete(scope.$index, scope.row)">删除</el-button>
  22. </template>
  23. </el-table-column>
  24. </el-table>
  25. </div>
  26. </div>
  27. </template>
  28. <script>
  29. // 引入axios
  30. import axios from "axios";
  31. export default {
  32. name: "MessageList",
  33. data() {
  34. return {
  35. // 用来存储页面中展示的消息列表数据
  36. tableData: [],
  37. // 存储获取来的消息列表
  38. messageList: [],
  39. // 存储获取来的等级列表
  40. levelList: [],
  41. // 存储获取来的地址列表
  42. addressList: [],
  43. };
  44. },
  45. // 调用生命周期函数 created 在组件创建之后执行
  46. created() {
  47. // 将获取信息列表的promise对象放到message变量中
  48. let message = this.getMessageList();
  49. // 将获取到的等级列表的promise对象放到level变量中
  50. let level = this.getLevelList();
  51. // 将获取到的地址列表的promise对象放到address变量中
  52. let address = this.getAddressList();
  53. Promise.all([message, level, address]).then(() => {
  54. this.handleData();
  55. });
  56. },
  57. // methods 内部放置都是事件处理函数、自定义函数
  58. methods: {
  59. // 通过等级ID获取等级名称
  60. getLevelById(id) {
  61. let levelName = "";
  62. this.levelList.map((item) => {
  63. if (item.jrid == id) {
  64. levelName = item.levelname;
  65. }
  66. });
  67. return levelName;
  68. },
  69. // 通过地址ID获取地址名称
  70. getAddressById(id) {
  71. let addressName = "";
  72. this.addressList.map((item) => {
  73. if (item.addressid == id) {
  74. addressName = item.addressname;
  75. }
  76. });
  77. return addressName;
  78. },
  79. // 处理数据函数
  80. // 将等级、地址ID换成等级名称、地址名称
  81. handleData() {
  82. // console.log(this.messageList);
  83. // console.log(this.levelList);
  84. let newList = this.messageList.map((item) => {
  85. item.jrname = "hello world";
  86. let levelName = this.getLevelById(item.jrlevel);
  87. let addressName = this.getAddressById(item.jraddressesid);
  88. let obj = {
  89. levelName: levelName,
  90. addressName: addressName,
  91. userName: item.jrname,
  92. userTel: item.jrtel,
  93. };
  94. return obj;
  95. });
  96. console.log(newList);
  97. this.tableData = newList;
  98. },
  99. // 获取消息列表
  100. getMessageList() {
  101. return new Promise((resolve, reject) => {
  102. // 通过axios 发送请求
  103. axios({
  104. method: "get",
  105. url: "http://39.105.160.25:18080/messageController/getMessage",
  106. })
  107. .then((res) => {
  108. // console.log(res.data.data.records);
  109. this.messageList = res.data.data.records;
  110. resolve();
  111. })
  112. .catch(() => {
  113. reject();
  114. });
  115. });
  116. },
  117. // 获取等级列表
  118. getLevelList() {
  119. return new Promise((resolve, reject) => {
  120. axios({
  121. method: "get",
  122. url: "http://39.105.160.25:18080/levelController/getLevel",
  123. })
  124. .then((res) => {
  125. // console.log(res.data.data.records);
  126. this.levelList = res.data.data.records;
  127. resolve();
  128. })
  129. .catch(() => {
  130. reject();
  131. });
  132. });
  133. },
  134. // 获取地址列表
  135. getAddressList() {
  136. return new Promise((resolve, reject) => {
  137. axios({
  138. method: "get",
  139. url: "http://39.105.160.25:18080/addressController/getAddress",
  140. })
  141. .then((res) => {
  142. this.addressList = res.data.data.records;
  143. resolve();
  144. })
  145. .catch(() => {
  146. reject();
  147. });
  148. });
  149. },
  150. },
  151. };
  152. // 获取信息列表流程
  153. // 1. 发送请求获取信息列表 但是发现获取到的信息列表中没有等级名称和地址名称只有ID
  154. // 2. 获取等级列表和地址列表 ,利用已知的等级ID和地址ID获取等级名称和地址名称
  155. // 3. 处理数据 ,将等级ID和地址ID换成等级名称和地址名称 将最终的结果拼接成一个新数组
  156. </script>
  157. <style scoped>
  158. .message-list{
  159. padding:30px;
  160. }
  161. </style>