luke 6 éve
szülő
commit
f1ef2eae31

+ 33 - 0
service/package-lock.json

@@ -1814,6 +1814,16 @@
       "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==",
       "dev": true
     },
+    "clipboard": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npm.taobao.org/clipboard/download/clipboard-2.0.4.tgz",
+      "integrity": "sha1-g22v1mzw/qXXHOXVsL9ulYAJES0=",
+      "requires": {
+        "good-listener": "^1.2.2",
+        "select": "^1.1.2",
+        "tiny-emitter": "^2.0.0"
+      }
+    },
     "cliui": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
@@ -3271,6 +3281,11 @@
       "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
       "optional": true
     },
+    "delegate": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npm.taobao.org/delegate/download/delegate-3.2.0.tgz",
+      "integrity": "sha1-tmtxwxWFIuirV0T3INjKDCr1kWY="
+    },
     "depd": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
@@ -4878,6 +4893,14 @@
         "slash": "^1.0.0"
       }
     },
+    "good-listener": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npm.taobao.org/good-listener/download/good-listener-1.2.2.tgz",
+      "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
+      "requires": {
+        "delegate": "^3.1.2"
+      }
+    },
     "graceful-fs": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
@@ -10000,6 +10023,11 @@
         "ajv": "^5.0.0"
       }
     },
+    "select": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/select/download/select-1.1.2.tgz",
+      "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0="
+    },
     "select-hose": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
@@ -10884,6 +10912,11 @@
       "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
       "dev": true
     },
+    "tiny-emitter": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npm.taobao.org/tiny-emitter/download/tiny-emitter-2.1.0.tgz",
+      "integrity": "sha1-HRpW7fxRxD6GPLtTgqcjMONVVCM="
+    },
     "to-arraybuffer": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",

+ 54 - 27
service/src/components/historicalRecord.vue

@@ -13,8 +13,11 @@
                         <div class="u_name">
                             <span>{{user_name}}</span>
                         </div>
-                        <div class="btn_untreated">
-                            <!-- <span>未处理</span> -->
+                        <div v-if="getMore" class="btn_untreated" @click="getMoreList" >
+                             <span>更多消息</span>
+                        </div>
+                        <div v-if="!getMore" class="btn_untreated_off">
+                            <span>更多消息</span>
                         </div>
                     <!-- </div> -->
                 </div>
@@ -91,26 +94,23 @@
             <div style=" padding: 20px;">
                 <ul style="padding-inline-start:0px; margin-block-start: 0;">
                     <li style="font-weight:bold;font-weight:bold; color:#666666;">用户信息</li>
-                    <li> 姓名:麦丽素</li>
-                    <li>手机:1982720473</li>
-                    <li>邮箱:3ds47287@qq.com</li>
-                    <li>地址:地球</li>
+                    <li>姓名:{{account.account_name ? account.account_name : "暂无"}}</li>
+                    <li>手机:{{account.account_phone ? account.account_phone : "暂无"}}</li>
+                    <li>邮箱:{{account.account_email ? account.account_email : "暂无"}}</li>
+                    <li>地址:{{account.address ?account.address : "暂无"}}</li>
                 </ul>
                 <div>
                     <span>访客备注:</span>
                     <div class="margin_t">
-                        <el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="textarea">
+                        <el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="account.remark">
                         </el-input>
                     </div>
-                    <div class="bt_save margin_t">
-                        <span>保存</span>
-                    </div>
                 </div>
                 <ul style="padding-inline-start:0px; margin-block-start:0; margin-top:40px;">
                     <li style="font-weight:bold;font-weight:bold; color:#666666;">访问信息</li>
                     <li>来源渠道:直接访问</li>
-                    <li>IP地址:118.2.3.45</li>
-                    <li>来源终端:windows10 - chrome</li>
+                    <li>IP地址:{{account.user_ip ?account.user_ip : "暂无"}}</li>
+                    <li>来源终端:{{account.system  +"-"+ account.browse ? account.system +"-"+ account.browse : "暂无"}}</li>
                 </ul>
             </div>
         </div>
@@ -128,11 +128,15 @@ export default {
             stateType:'',
             frce:'',
             inputValse:'',
-            dataList:'',//会话记录
+            dataList:[],//会话记录
             alarm:'',//评价谢谢
 
             // imgsrc:'http://192.168.2.186:8090'
-            imgsrc:'http://kfadmin.bocai186.com',//图片路径域 
+            imgsrc:'http://kfadmin.bocai186.com',//图片路径域
+
+            account: [],
+            newpage: 1,
+            getMore:true,
         }
     },
     mounted() {
@@ -148,6 +152,10 @@ export default {
         },
     },
     methods:{
+        getMoreList(){
+            this.newpage++;
+            this.getRecordList();
+        },
         /*****************************************/
         //关闭会话详情记录
         shutDown(){
@@ -161,7 +169,7 @@ export default {
             this.get("api/service/history/historyInfo",{
             params:{
                 servicelog_id:this.uid,
-                currentPage: page,
+                currentPage: this.newpage,
                 pageSize: size
             },
             headers:{
@@ -172,20 +180,27 @@ export default {
             }).then(res => {
                 if(res.data.code == 1){
                     res.data.data.list = res.data.data.list.reverse();
-                    //console.log(res.data.data);
+                    this.account = res.data.data.account;
                     this.alarm = res.data.data.alarm;
+
                     res.data.data.list.forEach(e => {
-                        //reverse()
                         e.time_line = this.$public.customFormatDateTime(e.time_line);
-                        e.content =JSON.parse(e.content);
+                        e.content = JSON.parse(e.content);
                     });
-                    this.dataList = res.data.data.list;
-                    this.dataList.forEach(e=>{
-                        // console.log(e)
-                        e.content.text = this.turnFace(e.content.text);
-                        //this.turnFace()
-                    })
-                // this.pages = res.data.data.total;
+                    if(res.data.data.currentPage > res.data.data.countPage){
+                        this.getMore = false;
+                        return false
+                    }else {
+                        let newList =  res.data.data.list;
+                        console.log(res.data.data)
+                        newList.forEach(e=>{
+                            e.content.text = this.turnFace(e.content.text);
+                            //this.turnFace()
+                        })
+                        this.dataList =  newList.concat(this.dataList);
+                    }
+
+
                 }
             });
         },
@@ -217,6 +232,7 @@ export default {
     width: 855px;
     border: 1px solid #d5e5ff;
     z-index: 10 ;
+    margin-top: 18px !important;
 }
 .del{
     /* position:fixed;*/
@@ -266,16 +282,27 @@ export default {
     height: 160px;
     border-top: 1px solid #D5E5FF;
 }
+.btn_untreated_off {
+    width:70px;
+    line-height: 30px;
+    background: rgb(195, 195, 192);
+    border-radius:5px;
+    font-size:12px;
+    font-weight:400;
+    color:rgba(255,255,255,1);
+    text-align: center;
+    cursor: pointer;
+}
 .btn_untreated{
     width:70px;
     line-height: 30px;
-    background:rgba(255,102,0,1);
+    background: rgb(89, 115, 255);
     border-radius:5px;
     font-size:12px;
     font-weight:400;
     color:rgba(255,255,255,1);
     text-align: center;
-    
+    cursor: pointer;
 }
 .title_time{
     font-size:12px;

+ 3 - 0
service/src/components/leftNav.vue

@@ -135,4 +135,7 @@
 		color: #eaf3ff;
 		background: #0d1f47;
 	}
+	.nav p {
+		cursor: pointer;
+	}
 </style>

+ 46 - 39
service/src/components/messageCenter.vue

@@ -22,7 +22,8 @@
 
 				</div>
 				<ul class="message-list" v-if="switchMessageType == 'unread'">
-					<li class="list-item"  :class="{active:markupCode == index}"  v-for="(item,index) in unreadList" :key="item.id" @click="toReading(item,index)">
+					<li class="list-item" :class="{active:markupCode == index}" v-for="(item,index) in unreadList"
+						:key="item.id" @click="toReading(item,index)">
 						<p class="item-info">
 							<span class="name">{{item.title}}</span>
 							<span class="time">{{item.sendtime}}</span>
@@ -32,7 +33,8 @@
 				</ul>
 
 				<ul class="message-list" v-if="switchMessageType == 'read'">
-					<li class="list-item" :class="{active:markupCode == index}" v-for="(item,index) in readList" :key="item.id"  @click="toReading(item,index)">
+					<li class="list-item" :class="{active:markupCode == index}" v-for="(item,index) in readList"
+						:key="item.id" @click="toReading(item,index)">
 						<p class="item-info">
 							<span class="name">{{item.title}}</span>
 							<span class="time">{{item.sendtime}}</span>
@@ -46,12 +48,13 @@
 
 			<el-col :span="18">
 				<el-row class="title">
-					<strong>客服满意度调查!</strong>
+					<strong v-if="switchMessageType == 'unread'">客服满意度调查!</strong>
+					<strong v-if="switchMessageType == 'read'" v-html="messageBox.title"></strong>
 					<i @click="handleClose" class="el-icon-close"></i>
 				</el-row>
 				<el-row class="messageBox" v-if="switchMessageType == 'unread'">
 					<div v-if="unreadList.length > 0">
-						<ul >
+						<ul>
 							<li><p>发件人:{{unreadListOne.admin_name}}</p></li>
 							<li><p>收件人:{{userName}}</p></li>
 							<li><p>时 间:{{unreadListOne.sendtime}}</p></li>
@@ -60,7 +63,7 @@
 					</div>
 				</el-row>
 				<el-row class="messageBox" v-if="switchMessageType == 'read'">
-					<div  v-if="readList.length > 0">
+					<div v-if="readList.length > 0">
 						<ul>
 							<li><p>发件人:{{messageBox.admin_name}}</p></li>
 							<li><p>收件人:{{userName}}</p></li>
@@ -83,22 +86,22 @@
 				drawer: false,
 				switchMessageType: "unread",
 
-				nomessage:true,
+				nomessage: true,
 
-				userID:null,
-				userName:null,
+				userID: null,
+				userName: null,
 				//已读列表
-				readList:[],
+				readList: [],
 				//未读列表
-				unreadList:[],
+				unreadList: [],
 				//未读第一个
-				unreadListOne:{},
+				unreadListOne: {},
 				//未读数量
-				unreadNum:null,
+				unreadNum: null,
 				// 详情
-				messageBox:{},
+				messageBox: {},
 				//标记代码
-				markupCode:0,
+				markupCode: 0,
 
 			}
 		},
@@ -114,7 +117,7 @@
 				this.drawer = data;
 				this.userID = this.$store.getters.get_user_info.id;
 				this.userName = this.$store.getters.get_user_info.user_name;
-				if(data){
+				if (data) {
 					this.readnotice();
 					this.unreadnotice();
 				}
@@ -126,15 +129,15 @@
 			},
 			switchMessage(num) {
 				this.switchMessageType = num;
-				this.markupCode = 0 ;
-				if(this.switchMessageType == 'unread'){
+				this.markupCode = 0;
+				if (this.switchMessageType == 'unread') {
 					this.unreadnotice();
-				}else if(this.switchMessageType=='read'){
-					this.readnotice();	
+				} else if (this.switchMessageType == 'read') {
+					this.readnotice();
 				}
 			},
 			// 已读信息
-			readnotice(){
+			readnotice() {
 				let str = "readnotice" + "customer-service" + "index" + this.time + "service";
 				let obj = {
 					headers: {
@@ -146,17 +149,17 @@
 				};
 				this.post("api/service/index/readnotice", obj).then(res => {
 					// console.log(res)
-					if(res.data.code === 1){
-						console.log("已读",res.data.data)
-						this.readList =  res.data.data;
-						if(res.data.data.length > 0){
+					if (res.data.code === 1) {
+						console.log("已读", res.data.data)
+						this.readList = res.data.data;
+						if (res.data.data.length > 0) {
 							this.messageBox = res.data.data[0];
 						}
 					}
 				});
 			},
 			// 未读信息
-			unreadnotice(){
+			unreadnotice() {
 				let str = "unreadnotice" + "customer-service" + "index" + this.time + "service";
 				let obj = {
 					headers: {
@@ -168,12 +171,12 @@
 				};
 				this.post("api/service/index/unreadnotice", obj).then(res => {
 					console.log(res)
-					if(res.data.code === 1){
-						console.log("未读",res.data.data)
+					if (res.data.code === 1) {
+						console.log("未读", res.data.data)
 						this.unreadList = res.data.data;
 						// console.log(this.unreadListOne,'第一个')
-						this.unreadNum =res.data.data.length >0 ? res.data.data.length-1 : 0;
-						if(res.data.data.length > 0){
+						this.unreadNum = res.data.data.length > 0 ? res.data.data.length - 1 : 0;
+						if (res.data.data.length > 0) {
 							this.unreadListOne = res.data.data[0];
 							this.readInfo(res.data.data[0].id)
 						}
@@ -183,7 +186,7 @@
 			},
 
 			//读取信息
-			readInfo(id){
+			readInfo(id) {
 				//this.messageBox.id
 				let str = "updatenotice" + "customer-service" + "index" + this.time + "service";
 				let obj = {
@@ -196,8 +199,8 @@
 				};
 				this.post("api/service/index/updatenotice", obj).then(res => {
 					console.log(res)
-					if(res.data.code === 1){
-						console.log("已读",res.data.data)
+					if (res.data.code === 1) {
+						console.log("已读", res.data.data)
 						// this.unreadList = res.data.data;
 						// this.unreadListOne = res.data.data[0];
 						// // console.log(this.unreadListOne,'第一个')
@@ -206,16 +209,16 @@
 					}
 				});
 			},
-			
+
 
 			// 点击显示当前详细内容
-			toReading(item,index){
-				// console.log(item,index);
-				if( this.markupCode == index) return
+			toReading(item, index) {
+				// console.log(item,'击显示当前详细内容');
+				if (this.markupCode == index) return
 				this.markupCode = index;
 				this.nomessage = false;
 				this.messageBox = item;
-				if(this.switchMessageType == 'unread'){
+				if (this.switchMessageType == 'unread') {
 					this.readInfo(item.id)
 				}
 			}
@@ -258,9 +261,10 @@
 		// .list-item:nth-of-type(even) {
 		// 	background: #fff;
 		// }
-		.active{
+		.active {
 			background: #F6F8FF;
 		}
+
 		.list-item {
 			padding: 10px 20px;
 
@@ -268,7 +272,7 @@
 				color: #666;
 				font-size: 14px;
 				overflow: hidden;
-				text-overflow:ellipsis;
+				text-overflow: ellipsis;
 				white-space: nowrap;
 			}
 		}
@@ -305,8 +309,10 @@
 
 	.messageBox {
 		padding: 15px 20px;
+
 		li {
 			margin: 10px 0;
+
 			p {
 				font-size: 14px;
 				color: #999999;
@@ -331,6 +337,7 @@
 		top: 12px !important;
 		right: 10px !important;
 	}
+
 	.el-drawer__container {
 		outline: none !important;
 	}

+ 12 - 12
service/src/pages/PersonalInformation.vue

@@ -59,22 +59,22 @@
 
                   <div>
                     <p class="title_text">姓名</p>
-                    <input class="text_input" v-model="user_info.fullname" type="text" />
+                    <input readonly="readonly" class="text_input" v-model="user_info.fullname" type="text" />
                   </div>
                 </div>
 
                 <div style="margin-left:200px">
                   <div>
                     <p class="title_text">昵称</p>
-                    <input class="text_input" v-model="user_info.user_name" type="text" />
+                    <input readonly="readonly" class="text_input" v-model="user_info.user_name" type="text" />
                   </div>
                   <div>
                     <p class="title_text">手机</p>
-                    <input class="text_input" v-model="user_info.phone" type="text" />
+                    <input readonly="readonly" class="text_input" v-model="user_info.phone" type="text" />
                   </div>
                   <div>
                     <p class="title_text">邮箱</p>
-                    <input class="text_input" v-model="user_info.user_email" type="text" />
+                    <input readonly="readonly" class="text_input" v-model="user_info.user_email" type="text" />
                   </div>
                 </div>
               </div>
@@ -83,17 +83,17 @@
                   <div style="width:84px;">
                    <p class="title_text">个性签名</p>
                   </div>
-                  <input style="width:400px;height:40px;" v-model="user_info.signature" type="text"/>
-                </div>
-                <div @click="save_user_info()" class="user_btn">
-                  <span>保存</span>
+                  <input readonly="readonly" style="width:400px;height:40px;" v-model="user_info.signature" type="text"/>
                 </div>
+<!--                <div @click="save_user_info()" class="user_btn">-->
+<!--                  <span>保存</span>-->
+<!--                </div>-->
               </div>
             </div>
           </div>
 
           <!-- 密码模块 -->
-          <div class="userInfo">
+         <!-- <div class="userInfo">
             <div class="row item-center user_head" >密码设置</div>
             <div class="userInfoBox" >
               <div class="password_style">
@@ -101,7 +101,7 @@
                   <div class="title_text">
                     <span>原密码</span>
                   </div>
-                  <!-- @blur=" " -->
+                  &lt;!&ndash; @blur=" " &ndash;&gt;
                   <div>
                     <input class="text_input"  v-model="originalPwd"   type="password" />
                     <span v-if="errorPwdState == 1" style="margin-left:10px;color:#f60">原密码不能未空</span>
@@ -126,7 +126,7 @@
                       <input class="text_input" v-model="confirmPwd" type="password" />
                       <span v-if="errorPwdState ==2" style="margin-left: 10px;color:#f60">两次输入的新密码不相等,请重新输入</span>
                     </div>
-                    <!-- <span v-if="errorTo.affirmPasswordInfoB" style="color:#f60">请先输入密码再确认</span> -->
+                    &lt;!&ndash; <span v-if="errorTo.affirmPasswordInfoB" style="color:#f60">请先输入密码再确认</span> &ndash;&gt;
                   </div>
                    <div @click="change_password()" class="row center" style="width:80px;height: 40px;background:rgba(83,153,245,1);color: #fff;border-radius:5px;">
                     <span>修改</span>
@@ -134,7 +134,7 @@
                 </div>
               </div>
             </div>
-          </div>
+          </div>-->
         </div>
       </div>
     </div>

+ 3 - 6
service/src/pages/SessionHistory.vue

@@ -128,10 +128,6 @@
 			this.getSessionHistory(1);
 		},
 		methods: {
-			// filterEndTime(row, column){
-			// 	console.log(row)
-			// },
-
 			evaluateId(row, column) {
 				// console.log(row.evaluate_id)
 				if (row.evaluate_id == 0) {
@@ -236,7 +232,8 @@
 			/******************************************/
 			//查看详情会话记录
 			click_row(row, column, event) {
-				//console.log('1231',row, column, event);
+				// console.log(row, "历史记录");
+
 				this.user_name = row.user_name;
 				this.uid = row.servicelog_id;
 				this.isShow = true;
@@ -245,7 +242,7 @@
 			/******************************************/
 			//关闭会话详情记录
 			childValue(e) {
-				//console.log(e);
+				console.log(e);
 				this.isShow = e;
 			},