index.vue 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. <template>
  2. <div class="app-container">
  3. <!-- 搜索区域 -->
  4. <div class="filter-container">
  5. <span>机构名称:</span>
  6. <el-input
  7. v-model="listQuery.clubName"
  8. placeholder="机构名称"
  9. style="width: 200px"
  10. class="filter-item"
  11. @keyup.enter.native="getList"
  12. />
  13. <span>手机号:</span>
  14. <el-input v-model="listQuery.mobile" placeholder="手机号" style="width: 200px;" class="filter-item" @keyup.enter.native="handleFilter" />
  15. <span>处理状态:</span>
  16. <el-select
  17. v-model="listQuery.handleStatus"
  18. placeholder="处理状态"
  19. clearable
  20. style="width: 200px"
  21. class="filter-item"
  22. @change="getList"
  23. >
  24. <el-option label="全部" value="" />
  25. <el-option label="已处理" :value="1" />
  26. <el-option label="未处理" :value="0" />
  27. </el-select>
  28. <el-button type="primary" icon="el-icon-search" @click="getList">查询</el-button>
  29. </div>
  30. <!-- 搜索区域END -->
  31. <!-- 表格区域 -->
  32. <el-table
  33. v-loading="listLoading"
  34. :data="list"
  35. style="width: 100%"
  36. border
  37. fit
  38. highlight-current-row
  39. cell-class-name="table-cell"
  40. >
  41. <el-table-column label="序号" :index="indexMethod" type="index" width="80" align="center" />
  42. <el-table-column type="expand" width="50">
  43. <template slot-scope="{row}">
  44. <el-form label-position="left" class="table-expand" label-width="110px">
  45. <el-form-item label="机构名称:">
  46. <span>{{ row.clubName }}</span>
  47. </el-form-item>
  48. <el-form-item label="手机号:">
  49. <span>{{ row.mobile }}</span>
  50. </el-form-item>
  51. <el-form-item label="提交时间:">
  52. <span>{{ row.commitTime | formatTime }}</span>
  53. </el-form-item>
  54. <el-form-item label="处理状态:">
  55. <span>
  56. <el-tag v-if="row.handleStatus === 0" size="small" type="danger">未处理</el-tag>
  57. <el-tag v-if="row.handleStatus === 1" size="small" type="success">已处理</el-tag>
  58. </span>
  59. </el-form-item>
  60. <el-form-item label="反馈内容:">
  61. <span style="overflow-wrap:anywhere;text-align:justify">{{ row.content }}</span>
  62. </el-form-item>
  63. <el-form-item label="处理结果:">
  64. <span>{{ row.handleResult }}</span>
  65. </el-form-item>
  66. </el-form>
  67. </template>
  68. </el-table-column>
  69. <el-table-column label="机构名称" prop="clubName" align="center" />
  70. <el-table-column label="手机号" prop="mobile" width="120" align="center" />
  71. <el-table-column label="反馈内容" prop="content" align="center">
  72. <template slot-scope="{row}">
  73. <span class="content">{{ row.content }}</span>
  74. </template>
  75. </el-table-column>
  76. <el-table-column label="提交时间" width="180px" align="center">
  77. <template slot-scope="{row}">
  78. <span v-if="row.auditStatus!==2">{{ row.commitTime | formatTime }}</span>
  79. <span v-else>—</span>
  80. </template>
  81. </el-table-column>
  82. <el-table-column label="处理状态" width="100px" align="center">
  83. <template slot-scope="{ row }">
  84. <el-tag v-if="row.handleStatus === 0" size="small" type="danger">未处理</el-tag>
  85. <el-tag v-if="row.handleStatus === 1" size="small" type="success">已处理</el-tag>
  86. </template>
  87. </el-table-column>
  88. <el-table-column label="处理结果" prop="handleResult" align="center">
  89. <template slot-scope="{row}">
  90. <span v-if="row.handleStatus === 1" class="content">{{ row.handleResult }}</span>
  91. <span v-else>—</span>
  92. </template>
  93. </el-table-column>
  94. <el-table-column label="处理时间" width="180px" align="center">
  95. <template slot-scope="{row}">
  96. <span v-if="row.handleStatus === 1">{{ row.handleTime | formatTime }}</span>
  97. <span v-else>—</span>
  98. </template>
  99. </el-table-column>
  100. <el-table-column label="操作" width="120px" align="center">
  101. <template slot-scope="{row}">
  102. <el-button type="primary" size="mini" style="margin-right:5px" icon="el-icon-edit" @click="$_navigationTo(`/feedback/detail?feedbackId=${row.feedbackId}`)">处理</el-button>
  103. </template>
  104. </el-table-column>
  105. </el-table>
  106. <!-- 表格区域END -->
  107. <!-- 页码 -->
  108. <pagination v-show="total > 0" :total="total" :page.sync="listQuery.pageNum" :limit.sync="listQuery.pageSize" @pagination="getList(listQuery)" />
  109. </div>
  110. </template>
  111. <script>
  112. import Pagination from '@/components/Pagination'
  113. import { formatDate } from '@/utils'
  114. import { mapGetters } from 'vuex'
  115. import { getFeedbackList } from '@/api/auth'
  116. export default {
  117. components: { Pagination },
  118. filters: {
  119. formatTime(time) {
  120. if (!time) {
  121. return ''
  122. }
  123. return formatDate(time, 'yyyy-MM-DD HH:mm:ss')
  124. }
  125. },
  126. data() {
  127. return {
  128. listLoading: false,
  129. listQuery: {
  130. authUserId: '',
  131. clubName: '',
  132. handleStatus: '',
  133. mobile: '',
  134. pageNum: 1, // 页码
  135. pageSize: 10 // 分页大小
  136. },
  137. total: 0,
  138. list: []
  139. }
  140. },
  141. computed: {
  142. ...mapGetters(['authUserId', 'userIdentity', 'proxyInfo'])
  143. },
  144. created() {
  145. this.getList()
  146. },
  147. methods: {
  148. // 获取列表数据
  149. getList() {
  150. this.listQuery.authUserId = this.authUserId
  151. console.log(this.listQuery)
  152. getFeedbackList(this.listQuery).then(res => {
  153. console.log(res)
  154. if (res.code !== 0) return
  155. this.list = res.data.list
  156. this.total = res.data.total
  157. }).catch(err => {
  158. console.log(err)
  159. })
  160. },
  161. // 初始化预览图片列表
  162. initPreviewList(list) {
  163. list.forEach(item => this.srcList.push(item.articleCover))
  164. },
  165. indexMethod(index) {
  166. return index + this.listQuery.pageSize * (this.listQuery.pageNum - 1) + 1
  167. }
  168. }
  169. }
  170. </script>
  171. <style lang="scss" scoped>
  172. .filter-container {
  173. span {
  174. display: inline-block;
  175. margin-bottom: 10px;
  176. vertical-align: middle;
  177. font-size: 14px;
  178. }
  179. .el-button {
  180. display: inline-block;
  181. margin-bottom: 10px;
  182. vertical-align: middle;
  183. }
  184. .el-input,
  185. .el-select {
  186. margin-right: 10px;
  187. margin-left: 10px;
  188. }
  189. }
  190. .content{
  191. display: block;
  192. overflow: hidden !important;
  193. white-space: nowrap;
  194. text-overflow: ellipsis;
  195. }
  196. .el-table .cell {
  197. overflow: visible;
  198. }
  199. .el-badge{
  200. margin: 0 6px;
  201. }
  202. // .table-expand {
  203. // font-size: 0;
  204. // padding-left: 130px;
  205. // }
  206. // .table-expand label {
  207. // width: 90px;
  208. // color: #99a9bf;
  209. // }
  210. // .table-expand .el-form-item {
  211. // margin-right: 0;
  212. // margin-bottom: 0;
  213. // width: 30%;
  214. // }
  215. </style>