FeedbackManagement.vue 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. <template>
  2. <div class="app-container">
  3. <!-- <div class="filter-container">
  4. <el-form
  5. :model="filter"
  6. v-bind:inline="true"
  7. label-position="left"
  8. label-width="100px"
  9. style="width: 100%;">
  10. <el-row :gutter="20">
  11. <el-col :span="7">
  12. <el-form-item
  13. label=""
  14. class="flex-item">
  15. <el-input
  16. v-model="filter.criteria"
  17. placeholder="Search by Provider Name/Address/Contact"
  18. @keyup.enter.native="handleFilter" />
  19. </el-form-item>
  20. </el-col>
  21. <el-col :span="6">
  22. <el-button
  23. type="primary"
  24. icon="el-icon-search"
  25. @click="handleFilter">
  26. Search
  27. </el-button>
  28. </el-col>
  29. <el-col :span="6" :offset="3" style="text-align: right;">
  30. <el-button
  31. class="filter-item"
  32. type="primary"
  33. icon="el-icon-plus"
  34. @click="addProvider">
  35. Add Provider
  36. </el-button>
  37. </el-col>
  38. </el-row>
  39. </el-form>
  40. </div> -->
  41. <el-table
  42. v-loading="listLoading"
  43. :data="tableList"
  44. fit
  45. :row-class-name="({row})=>'read'+row.readStatus"
  46. style="width: 100%;">
  47. <el-table-column
  48. label="ID"
  49. align="center"
  50. class-name="fixed-width">
  51. <template slot-scope="{row}">
  52. <a class="link-detail" href="javascript:void(0);" @click="viewFeedback(row)">{{ row.feedbackPk }}</a>
  53. </template>
  54. </el-table-column>
  55. <el-table-column
  56. label="Type of Feedback"
  57. align="center"
  58. class-name="fixed-width">
  59. <template slot-scope="{row}">
  60. <span>{{ row.typeOfFeedback }}</span>
  61. </template>
  62. </el-table-column>
  63. <el-table-column
  64. label="Feedback"
  65. align="center"
  66. class-name="fixed-width">
  67. <template slot-scope="{row}">
  68. <span>{{ row.feedback }}</span>
  69. </template>
  70. </el-table-column>
  71. <el-table-column
  72. label="Status"
  73. align="center"
  74. class-name="fixed-width">
  75. <template slot-scope="{row}">
  76. <span>{{ row.readStatus ? "Read" : "Unread" }}</span>
  77. </template>
  78. </el-table-column>
  79. <el-table-column
  80. label="Reply Count"
  81. align="center"
  82. class-name="fixed-width">
  83. <template slot-scope="{row}">
  84. <span>{{ "0" }}</span>
  85. </template>
  86. </el-table-column>
  87. <el-table-column
  88. label="Feedback Time"
  89. align="center"
  90. class-name="fixed-width">
  91. <template slot-scope="{row}">
  92. <span>{{ row.feedbackTime }}</span>
  93. </template>
  94. </el-table-column>
  95. <el-table-column
  96. label="Action"
  97. align="center"
  98. class-name="fixed-width">
  99. <template slot-scope="{row}">
  100. <TableAction
  101. :showEdit="false"
  102. @delete="deleteFeedback(row)"/>
  103. </template>
  104. </el-table-column>
  105. </el-table>
  106. <div class="right">
  107. <Pagination
  108. v-show="total > 0"
  109. :total="total"
  110. :page.sync="listQuery.pageNo"
  111. :limit.sync="listQuery.pageSize"
  112. @pagination="handlePageChange" />
  113. </div>
  114. </div>
  115. </template>
  116. <script>
  117. import Pagination from '@/components/Pagination'
  118. import TableAction from '@/components/TableAction.vue'
  119. import feedback from '../../http/api/feedback'
  120. export default {
  121. components: { Pagination, TableAction },
  122. data() {
  123. return {
  124. listLoading: false,
  125. tableList: [],
  126. total: 0,
  127. listQuery: {
  128. pageNo: 1,
  129. pageSize: 10,
  130. pageVo: {
  131. criteria: ""
  132. }
  133. },
  134. }
  135. },
  136. created() {
  137. this.getList();
  138. },
  139. methods: {
  140. handleFilter() {
  141. this.listLoading = true;
  142. this.listQuery.page = 1;
  143. this.getList();
  144. },
  145. handlePageChange() {
  146. this.listLoading = true;
  147. this.getList();
  148. },
  149. getList() {
  150. feedback.getFeedbackPages(this.listQuery).then(res => {
  151. this.listLoading = false;
  152. this.total = res.total;
  153. this.tableList = res.data
  154. }).catch(err => {
  155. this.listLoading = false;
  156. })
  157. },
  158. viewFeedback(row) {
  159. //this.$store.commit('provider/SET_Feedback', row)
  160. this.$router.push({path: '/support-management/feedback/'+row.feedbackPk})
  161. },
  162. deleteFeedback(row) {
  163. this.$confirm('Are you sure you want to delete this feedback?', 'Delete', {
  164. confirmButtonText: 'OK',
  165. cancelButtonText: 'Cancel',
  166. type: 'warning'
  167. }).then(res => {
  168. this.handleDeleteFeedback(row.feedbackPk)
  169. })
  170. },
  171. handleDeleteFeedback(id) {
  172. feedback.deleteFeedback(id).then(res => {
  173. this.$message({
  174. message: 'Delete feedback successfully',
  175. type: 'success'
  176. });
  177. this.listLoading = true;
  178. this.getList();
  179. }).catch(err => {
  180. this.$message({
  181. message: err,
  182. type: 'error'
  183. })
  184. })
  185. }
  186. }
  187. }
  188. </script>
  189. <style scoped="scoped">
  190. .link-detail {
  191. color: #2370ff;
  192. margin-left: 4px;
  193. text-decoration: none;
  194. }
  195. .link-detail:active,
  196. .link-detail:hover {
  197. color: #ff5500;
  198. text-decoration: underline;
  199. }
  200. .el-table >>> .cell {
  201. color: #333;
  202. }
  203. .el-table >>> .readYes td {
  204. background-color: #eee !important;
  205. }
  206. .el-table >>> .readYes .cell {
  207. color: #999;
  208. }
  209. .el-table >>> .readYes .link-detail {
  210. color: #999;
  211. }
  212. </style>