SessionHistory.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <template>
  2. <div>
  3. <div class="row allAlignment">
  4. <leftNav />
  5. <div>
  6. <hader />
  7. <messageCenter></messageCenter>
  8. <div class="column allAlignment div_box" style="background:#F6F8FF; ">
  9. <div style="height:8vh; background:#FFF; " class="row allAlignment">
  10. <div class="name_box row center">
  11. <span>历史会话</span>
  12. </div>
  13. <div style=" font-size: 0;" class="row center allAlignment">
  14. <el-select v-model="value" size="mini" style="width: 28%;" placeholder="请选择">
  15. <el-option
  16. v-for="item in options"
  17. :key="item.value"
  18. :label="item.label"
  19. :value="item.value"
  20. ></el-option>
  21. </el-select>
  22. <div style="font-size: 0;padding-right: 20px;">
  23. <el-input
  24. placeholder="请输入内容"
  25. size="mini"
  26. v-model="input3"
  27. class="input-with-select"
  28. >
  29. <el-button slot="append" icon="el-icon-search"></el-button>
  30. </el-input>
  31. </div>
  32. </div>
  33. </div>
  34. <div style="margin:0 20px;">
  35. <el-table
  36. v-loading="loading"
  37. element-loading-text="拼命加载中"
  38. element-loading-spinner="el-icon-loading"
  39. element-loading-background="rgba(0, 0, 0, 0.8)"
  40. :header-cell-style="{background:'#eef1f6',color:'#606266'}" :row-style="{background:'#ffffff',color:'#606266'}"
  41. :data="tableData" stripe @row-dblclick="click_row"style="width: 100%" >
  42. <el-table-column prop="servicelog_id" label="会话ID" width="100"></el-table-column>
  43. <el-table-column prop="intime" label="访客进线时间"></el-table-column>
  44. <!-- <el-table-column prop="name" label="接待客服"></el-table-column> -->
  45. <el-table-column prop="user_name" label="访客名"></el-table-column>
  46. <el-table-column prop="start_time" label="会话开始时间"></el-table-column>
  47. <el-table-column prop="end_time" label="会话结束时间"></el-table-column>
  48. <el-table-column prop="evaluate_id" label="满意度" width="80"></el-table-column>
  49. </el-table>
  50. </div>
  51. <div v-show="pages > 9 " style=" padding: 10px;">
  52. <el-pagination background layout="prev, pager, next" prev-text='上一页' next-text='下一页'
  53. @prev-click='upData' @next-click="downData" @current-change="current_page" :total="pages"></el-pagination>
  54. </div>
  55. <div class="right_box" v-show="isShow">
  56. <historicalRecord :show="isShow" :uid="uid" :user_name="user_name" v-on:childValue="childValue" />
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. </div>
  62. </template>
  63. <script>
  64. import "@/css/index.css";
  65. import leftNav from "@/components/leftNav";
  66. import hader from "@/components/hader";
  67. import historicalRecord from "@/components/historicalRecord";
  68. import messageCenter from "@/components/messageCenter";
  69. export default {
  70. name: "SessionHistory",
  71. data() {
  72. return {
  73. isShow: false,
  74. uid: "",
  75. user_name:'',
  76. pages: 0,
  77. tableData: [],
  78. options: [
  79. {
  80. value: "今日",
  81. label: "今日"
  82. },
  83. {
  84. value: "最近3天",
  85. label: "最近3天"
  86. },
  87. {
  88. value: "最近7天",
  89. label: "最近7天"
  90. },
  91. {
  92. value: "最近15天",
  93. label: "最近15天"
  94. },
  95. {
  96. value: "最近30天",
  97. label: "最近30天"
  98. }
  99. ],
  100. value: "",
  101. input3: "",
  102. token: "",
  103. time: "",
  104. loading: false,//加载条
  105. };
  106. },
  107. components: {
  108. leftNav,
  109. hader,
  110. historicalRecord,
  111. messageCenter
  112. },
  113. mounted() {
  114. this.value = this.options[2].value;
  115. this.token = this.$store.getters.get_user_info.token;
  116. this.time = JSON.parse(sessionStorage.getItem("time"));
  117. this.getSessionHistory(1);
  118. },
  119. methods: {
  120. // 获取会话记录
  121. getSessionHistory(page,size = 10) {
  122. let obj = {
  123. headers:{
  124. // "Content-Type": "application/json",
  125. 'apiToken': this.$md5("historylist" + "customer-service" + "history" + this.time[0] + "service"),
  126. 'userToken': this.token
  127. }
  128. }
  129. this.loading = true;
  130. this.post("api/service/history/historyList",{
  131. currentPage: page,
  132. pageSize: size
  133. },obj).then(res => {
  134. if(res.data.code == 1){
  135. //console.log(res.data.data.list);
  136. this.tableData = res.data.data.list;
  137. this.tableData.forEach(e=>{
  138. e.end_time = this.$public.customFormatDateTime(e.end_time);
  139. e.intime = this.$public.customFormatDateTime(e.intime);
  140. e.start_time = this.$public.customFormatDateTime(e.start_time);
  141. })
  142. this.pages = res.data.data.total;
  143. }
  144. this.loading =false;
  145. });
  146. },
  147. /******************************************/
  148. //查看详情会话记录
  149. click_row(row, column, event) {
  150. //console.log('1231',row, column, event);
  151. this.user_name = row.user_name;
  152. this.uid = row.servicelog_id;
  153. this.isShow = true;
  154. },
  155. /******************************************/
  156. //关闭会话详情记录
  157. childValue(e) {
  158. //console.log(e);
  159. this.isShow = e;
  160. },
  161. /******************上一页*****************/
  162. upData(e){
  163. this.getSessionHistory(e)
  164. },
  165. /*********************下一页******************/
  166. downData(e){
  167. this.getSessionHistory(e)
  168. },
  169. /*******************选择页数******************/
  170. current_page(e){
  171. this.getSessionHistory(e)
  172. }
  173. }
  174. };
  175. </script>
  176. <style scoped>
  177. .el-pagination .btn-next .el-icon{
  178. display: none;
  179. }
  180. .cell {
  181. text-align: center;
  182. }
  183. .el-pagination {
  184. text-align: center;
  185. font-size: 0;
  186. }
  187. .el-table::before {
  188. z-index: 0 !important;
  189. }
  190. /* .el-table td{
  191. padding: 12px 0;
  192. } */
  193. .input-with-select {
  194. width: 100%;
  195. }
  196. .name_box {
  197. margin-left: 20px;
  198. font-size: 14px;
  199. font-weight: bold;
  200. color: rgba(102, 102, 102, 1);
  201. }
  202. .div_box {
  203. width: 100%;
  204. }
  205. .right_box {
  206. position: fixed;
  207. top: 33px;
  208. right: 0;
  209. width: 100%;
  210. /* height: 100vh;
  211. background: red; */
  212. /* //background: rgba(255, 255, 255, 0.315); */
  213. }
  214. </style>