com-comment.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. <style>
  2. .com-comment-body {
  3. padding: 20px;
  4. background-color: #fff;
  5. }
  6. .com-comment-body .el-button {
  7. padding: 0!important;
  8. border: 0;
  9. margin: 0 5px;
  10. }
  11. .com-comment-body .goods-info div{
  12. height: 50px;
  13. line-height: 50px;
  14. white-space: nowrap;
  15. overflow: hidden;
  16. text-overflow: ellipsis;
  17. }
  18. .com-comment-body .input-item {
  19. display: inline-block;
  20. width: 250px;
  21. margin: 0 0 20px;
  22. }
  23. .com-comment-body .input-item .el-input-group__prepend {
  24. background-color: #fff;
  25. }
  26. .com-comment-body .input-item .el-input__inner {
  27. border-right: 0;
  28. }
  29. .com-comment-body .input-item .el-input__inner:hover{
  30. border: 1px solid #dcdfe6;
  31. border-right: 0;
  32. outline: 0;
  33. }
  34. .com-comment-body .input-item .el-input__inner:focus{
  35. border: 1px solid #dcdfe6;
  36. border-right: 0;
  37. outline: 0;
  38. }
  39. .com-comment-body .input-item .el-input-group__append {
  40. background-color: #fff;
  41. border-left: 0;
  42. width: 10%;
  43. padding: 0;
  44. }
  45. .com-comment-body .input-item .el-input-group__append .el-button {
  46. padding: 15px;
  47. }
  48. .com-comment-body .select {
  49. float: left;
  50. width: 100px;
  51. margin-right: 10px;
  52. }
  53. .com-comment-body .open-img .el-dialog {
  54. margin-top: 0 !important;
  55. }
  56. .com-comment-body .click-img {
  57. width: 100%;
  58. }
  59. </style>
  60. <template id="com-comment">
  61. <el-card shadow="never" style="border:0" body-style="background-color: #f3f3f3;padding: 10px 0 0;">
  62. <div slot="header">
  63. <span>评价管理</span>
  64. <el-button style="float: right; margin: -5px 0" type="primary" size="small" @click="$navigate({r: edit_url})">添加客户评价</el-button>
  65. </div>
  66. <div class="com-comment-body">
  67. <el-select size="small" v-model="comment_type" class="select">
  68. <el-option key="1" label="全部评价" value="0"></el-option>
  69. <el-option key="2" label="好评" value="1"></el-option>
  70. <el-option key="3" label="中评" value="2"></el-option>
  71. <el-option key="4" label="差评" value="3"></el-option>
  72. </el-select>
  73. <div class="search-input-item">
  74. <el-input size="small" placeholder="请输入搜索内容" v-model="keyword">
  75. <el-button slot="append" icon="el-icon-search" @click="search"></el-button>
  76. </el-input>
  77. </div>
  78. <el-table :data="form" border style="width: 100%" v-loading="listLoading">
  79. <el-table-column prop="id" label="ID" width="80"></el-table-column>
  80. <el-table-column prop="nickname" label="用户" width="180"></el-table-column>
  81. <el-table-column prop="platform" align="center" label="平台" width="80">
  82. <template slot-scope="scope">
  83. <el-tooltip class="item" effect="dark" v-if="scope.row.platform == 'wxapp'" content="微信" placement="top">
  84. <img src="resources/img/mall/wx.png" alt="">
  85. </el-tooltip>
  86. <el-tooltip class="item" effect="dark" v-else-if="scope.row.platform == 'aliapp'" content="支付宝" placement="top">
  87. <img src="resources/img/mall/ali.png" alt="">
  88. </el-tooltip>
  89. <el-tooltip class="item" effect="dark" v-else content="后台" placement="top">
  90. <img src="resources/img/mall/site.png" alt="">
  91. </el-tooltip>
  92. </template>
  93. </el-table-column>
  94. <el-table-column prop="name" label="商品名称" width="300">
  95. <template slot-scope="scope">
  96. <div class="goods-info">
  97. <com-image mode="aspectFill" style="margin-right: 10px;float: left" :src="scope.row.cover_pic"></com-image>
  98. <div>
  99. {{scope.row.goods ? scope.row.goods.name : scope.row.name}}
  100. </div>
  101. </div>
  102. </template>
  103. </el-table-column>
  104. <el-table-column align="center" prop="score" label="评分" width="80">
  105. <template slot-scope="scope">
  106. <el-tooltip class="item" effect="dark" v-if="scope.row.score==3" content="好评" placement="top">
  107. <img src="resources/img/mall/good.png" alt="">
  108. </el-tooltip>
  109. <el-tooltip class="item" effect="dark" v-else-if="scope.row.score==2" content="中评" placement="top">
  110. <img src="resources/img/mall/normal.png" alt="">
  111. </el-tooltip>
  112. <el-tooltip class="item" effect="dark" v-else-if="scope.row.score==1" content="差评" placement="top">
  113. <img src="resources/img/mall/bad.png" alt="">
  114. </el-tooltip>
  115. </template>
  116. </el-table-column>
  117. <el-table-column prop="content" label="详情" width='300'>
  118. <template slot-scope="scope">
  119. <div v-text="scope.row.content"></div>
  120. <div>
  121. <div v-for="item in scope.row.pic_url" @click="openImg(item)" style="margin: 10px;display: inline-block;cursor: pointer" >
  122. <com-image mode="aspectFill" :key="item.id" :src="item"></com-image>
  123. </div>
  124. </div>
  125. </template>
  126. </el-table-column>
  127. <el-table-column prop="reply_content" label="评价回复"></el-table-column>
  128. <el-table-column prop="is_show" label="状态" width="80">
  129. <template slot-scope="scope">
  130. <el-switch active-value="1" inactive-value="0" @change="switchShow(scope.row)" v-model="scope.row.is_show"></el-switch>
  131. </template>
  132. </el-table-column>
  133. <el-table-column label="操作" width="180">
  134. <template slot-scope="scope">
  135. <el-button size="small" type="text" circle @click="reply(scope.row.id)">
  136. <el-tooltip class="item" effect="dark" content="评价回复" placement="top">
  137. <img src="resources/img/mall/reply.png" alt="">
  138. </el-tooltip>
  139. </el-button>
  140. <el-button size="small" type="text" v-if="scope.row.is_virtual == 1" @click="edit(scope.row.id)" circle>
  141. <el-tooltip class="item" effect="dark" content="编辑" placement="top">
  142. <img src="resources/img/mall/edit.png" alt="">
  143. </el-tooltip>
  144. </el-button>
  145. <el-button size="small" type="text" @click="destroy(scope.row)" circle>
  146. <el-tooltip class="item" effect="dark" content="删除" placement="top">
  147. <img src="resources/img/mall/del.png" alt="">
  148. </el-tooltip>
  149. </el-button>
  150. </template>
  151. </el-table-column>
  152. </el-table>
  153. <div style="text-align: right;margin: 20px 0;">
  154. <el-pagination @current-change="pagination" background layout="prev, pager, next" :page-count="pageCount"></el-pagination>
  155. </div>
  156. <el-dialog :visible.sync="dialogImg" class="open-img">
  157. <img :src="click_img" class="click-img" alt="">
  158. </el-dialog>
  159. </div>
  160. </el-card>
  161. </template>
  162. <script>
  163. Vue.component('com-comment', {
  164. template: '#com-comment',
  165. props: {
  166. sign: {
  167. type: String,
  168. default: ''
  169. },
  170. reply_url: {
  171. type: String,
  172. default: 'mall/order-comments/reply',
  173. },
  174. edit_url: {
  175. type: String,
  176. default: 'mall/order-comments/edit'
  177. }
  178. },
  179. data() {
  180. return {
  181. form: [],
  182. pageCount: 0,
  183. comment_type: '0',
  184. keyword: '',
  185. listLoading: false,
  186. btnLoading: false,
  187. dialogImg: false,
  188. click_img: null
  189. };
  190. },
  191. methods: {
  192. openImg(url) {
  193. console.log(url)
  194. this.click_img = url;
  195. this.dialogImg = true;
  196. },
  197. reply(id){
  198. navigateTo({r: this.reply_url, id:id});
  199. },
  200. edit(id) {
  201. navigateTo({r: this.edit_url, id:id});
  202. },
  203. pagination(currentPage) {
  204. this.page = currentPage;
  205. this.getList();
  206. },
  207. // 搜索
  208. search() {
  209. this.page = 1;
  210. this.getList();
  211. },
  212. //删除
  213. destroy: function(column) {
  214. this.$confirm('确认删除该记录吗?', '提示', {
  215. type: 'warning'
  216. }).then(() => {
  217. this.listLoading = true;
  218. request({
  219. params: {
  220. r: 'mall/order-comments/destroy'
  221. },
  222. data: { id: column.id },
  223. method: 'post'
  224. }).then(e => {
  225. location.reload();
  226. this.listLoading = false;
  227. }).catch(e => {
  228. this.listLoading = false;
  229. });
  230. });
  231. },
  232. // 状态切换
  233. switchShow(row) {
  234. let self = this;
  235. request({
  236. params: {
  237. r: 'mall/order-comments/show',
  238. },
  239. method: 'post',
  240. data: {
  241. is_show: row.is_show,
  242. id: row.id
  243. }
  244. }).then(e => {
  245. if (e.data.code === 0) {
  246. self.$message.success(e.data.msg);
  247. } else {
  248. self.$message.error(e.data.msg);
  249. }
  250. }).catch(e => {
  251. console.log(e);
  252. });
  253. },
  254. getList() {
  255. this.listLoading = true;
  256. this.form = [];
  257. request({
  258. params: {
  259. r: 'mall/order-comments/index',
  260. page: this.page,
  261. sign: this.sign,
  262. },
  263. }).then(e => {
  264. if (e.data.code === 0) {
  265. this.form = e.data.data.list;
  266. this.pageCount = e.data.data.pagination.page_count;
  267. } else {
  268. this.$message.error(e.data.msg);
  269. }
  270. this.listLoading = false;
  271. }).catch(e => {
  272. this.listLoading = false;
  273. });
  274. },
  275. },
  276. mounted: function() {
  277. this.getList();
  278. }
  279. });
  280. </script>