suggestion.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. <template>
  2. <div class='m-container'>
  3. <h2>
  4. <div class="squrt"></div>意见反馈
  5. </h2>
  6. <div class="m-core">
  7. <save-form
  8. :inline="true"
  9. class="searchForm"
  10. save-key="Suggestion"
  11. @submit="search"
  12. @reset="onReSet"
  13. :model.sync="searchForm"
  14. ref="searchForm"
  15. >
  16. <el-form-item prop="clientType">
  17. <el-select
  18. clearable
  19. v-model="searchForm.clientType"
  20. placeholder="请选择客户端"
  21. >
  22. <el-option
  23. v-for="(item, index) in clientList"
  24. :key="index"
  25. :value="item.value"
  26. :label="item.label"
  27. ></el-option>
  28. </el-select>
  29. </el-form-item>
  30. <el-form-item prop="timer">
  31. <el-date-picker
  32. v-model.trim="searchForm.timer"
  33. style="width: 400px"
  34. type="daterange"
  35. :picker-options="{
  36. firstDayOfWeek: 1,
  37. }"
  38. value-format="yyyy-MM-dd"
  39. range-separator="至"
  40. start-placeholder="开始日期"
  41. end-placeholder="结束日期"
  42. ></el-date-picker>
  43. </el-form-item>
  44. <el-form-item>
  45. <el-button native-type="submit" type="danger">搜索</el-button>
  46. <el-button native-type="reset" type="primary">重置</el-button>
  47. </el-form-item>
  48. </save-form>
  49. <div class="tableWrap">
  50. <el-table
  51. :data="dataList"
  52. :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
  53. >
  54. <el-table-column align="center" label="反馈时间" prop="createTime">
  55. <template slot-scope="scope">
  56. {{ scope.row.createTime | dateForMinFormat }}
  57. </template>
  58. </el-table-column>
  59. <!-- <el-table-column align="center" prop="name" label="标题"> -->
  60. <!-- </el-table-column> -->
  61. <el-table-column align="center" label="内容" prop="content">
  62. <template slot-scope="scope">
  63. <tooltip :content="scope.row.content" />
  64. <!-- <el-popover placement="top-start"
  65. width="300"
  66. trigger="hover"
  67. :content="scope.row.content">
  68. <span slot="reference">{{ scope.row.content }}</span>
  69. </el-popover> -->
  70. <!-- <div :title="scope.row.content">{{ scope.row.content }}</div> -->
  71. </template>
  72. </el-table-column>
  73. <el-table-column
  74. align="center"
  75. label="用户"
  76. prop="username"
  77. ></el-table-column>
  78. <el-table-column align="center" prop="mobileNo" label="邮箱或手机号">
  79. </el-table-column>
  80. <el-table-column align="center" label="客户端" prop="clientType">
  81. <template slot-scope="scope">
  82. <div>
  83. {{ scope.row.clientType | clientTypeFilter }}
  84. </div>
  85. </template>
  86. </el-table-column>
  87. <el-table-column align="center" prop="url" label="反馈图片">
  88. <template slot-scope="scope">
  89. <el-image
  90. v-if="scope.row.url"
  91. style="width: 60px; height: 60px"
  92. fit="cover"
  93. :src="scope.row.url.split(',')[0]"
  94. :previewSrcList="scope.row.url.split(',')"
  95. >
  96. </el-image>
  97. </template>
  98. </el-table-column>
  99. <!-- <el-table-column align="center" prop="createTime" label="反馈时间">
  100. </el-table-column> -->
  101. <!-- <el-table-column align="center"
  102. label="操作">
  103. <template slot-scope="scope">
  104. <el-button type="text" v-permission="'/entryOperationLook'" @click="onChargeOperation('look', scope.row)">查看</el-button>
  105. </template>
  106. </el-table-column> -->
  107. </el-table>
  108. <pagination
  109. sync
  110. :total.sync="pageInfo.total"
  111. :page.sync="pageInfo.page"
  112. :limit.sync="pageInfo.limit"
  113. :page-sizes="pageInfo.page_size"
  114. @pagination="getList"
  115. save-key="Suggestion"
  116. />
  117. </div>
  118. </div>
  119. </div>
  120. </template>
  121. <script>
  122. import pagination from "@/components/Pagination/index";
  123. import { sysSuggestionList } from "@/api/appTenant";
  124. import { clientList } from "@/utils/searchArray";
  125. import { getTimes } from "@/utils";
  126. import Tooltip from "@/components/Tooltip/index";
  127. export default {
  128. components: { pagination, Tooltip },
  129. name: "chargesList",
  130. data() {
  131. return {
  132. clientList,
  133. id: null,
  134. dataList: [],
  135. pageInfo: {
  136. // 分页规则
  137. limit: 10, // 限制显示条数
  138. page: 1, // 当前页
  139. total: 0, // 总条数
  140. page_size: [10, 20, 40, 50], // 选择限制显示条数
  141. },
  142. searchForm: {
  143. timer: [],
  144. clientType:''
  145. },
  146. };
  147. },
  148. activated() {
  149. this.getList();
  150. },
  151. mounted() {
  152. this.getList();
  153. },
  154. methods: {
  155. getList() {
  156. let { timer, ...rest } = this.searchForm;
  157. let params = {
  158. rows: this.pageInfo.limit,
  159. page: this.pageInfo.page,
  160. type: "APP",
  161. ...rest,
  162. ...getTimes(timer, ["startTime", "endTime"]),
  163. };
  164. sysSuggestionList(params).then((res) => {
  165. if (res.code == 200) {
  166. this.dataList = res.data.rows;
  167. this.pageInfo.total = res.data.total;
  168. }
  169. });
  170. },
  171. onReSet() {
  172. this.$refs["searchForm"].resetFields();
  173. this.search();
  174. },
  175. search() {
  176. this.pageInfo.page = 1;
  177. this.getList();
  178. },
  179. },
  180. };
  181. </script>
  182. <style lang="scss" scoped>
  183. ::v-deep .el-table .cell {
  184. display: -webkit-box;
  185. overflow: hidden;
  186. text-overflow: ellipsis;
  187. -webkit-line-clamp: 3;
  188. -webkit-box-orient: vertical;
  189. }
  190. ::v-deep .el-date-editor.el-input {
  191. width: 100% !important;
  192. }
  193. ::v-deep .el-select {
  194. width: 98% !important;
  195. }
  196. ::v-deep .el-table {
  197. display: inline-block;
  198. }
  199. </style>