ソースを参照

update service

luke 6 年 前
コミット
e3e81d36be
3 ファイル変更513 行追加454 行削除
  1. 2 1
      service/src/App.vue
  2. 51 7
      service/src/pages/login.vue
  3. 460 446
      service/static/publicMethods.js

+ 2 - 1
service/src/App.vue

@@ -26,7 +26,8 @@
 			//初始化weosocket
 			initWebSocket(apiToken) {
 				// 书写接口信息
-				const wsuri = "ws://103.108.43.176:9101?apiToken=" + apiToken;//www.service.com 线上
+				// http://stadmin.bocai108.com/
+				const wsuri = "ws://kfadmin.bocai186.com:9101?apiToken=" + apiToken;//www.service.com 线上
 				// const wsuri = "ws://192.168.2.187:9101?apiToken=" + apiToken;//www.service.com //192.168.2.186 本地
 				// 创建websocket实例
 				Vue.prototype.$websocket = new WebSocket(wsuri);

+ 51 - 7
service/src/pages/login.vue

@@ -19,11 +19,18 @@
 					</div>
 					<div class="box row center">
 						<div class="boxData" :class="0?'errBd':''">
-							<input @keyup.enter="loginBtn()" type="password" v-model="password" placeholder="密码">
+							<input  type="password" v-model="password" placeholder="密码">
 							<img src="@/assets/img/password.png">
 							<p v-if="0" style="color:#f60;font-size:14px;margin-top:5px;margin-left:3px;">密码错误,请重新输入</p>
 						</div>
 					</div>
+					<div class="box row center" v-if="showSecurityCode">
+						<div class="boxData" :class="0?'errBd':''">
+							<input maxlength="6" @keyup.enter="loginBtn()" @blur="testCode()" type="text" v-model="securityCode" placeholder="验证码">
+							<img src="@/assets/img/password.png">
+							<p v-if="0" style="color:#f60;font-size:14px;margin-top:5px;margin-left:3px;">验证码错误,请重新输入</p>
+						</div>
+					</div>
 					<div class="box row center">
 						<div class="btn row center" @click="loginBtn()">登录</div>
 					</div>
@@ -43,14 +50,26 @@
 			return {
 				account:'',//账号
 				password:'',//密码
+				securityCode: '', // 验证码
 				time:'',
 				loading:false,
+				showSecurityCode:false,
 				logo: '',
+				verifySystem:"",
+				verifySystemId:"",
 				img_http:'http://kfadmin.bocai186.com',//图片路径域
 				// img_http: 'http://192.168.2.187:8090',//图片路径域
 			}
 		},
 		methods:{
+			testCode(){
+				if(this.showSecurityCode){
+					if (!(/^[0-9]+$/.test(this.securityCode))) {
+						this.$message.error('验证码错误!')
+						this.securityCode = '';
+					}
+				}
+			},
 			loginBtn(){
 				this.time = sessionStorage.getItem('time');
 				if(this.$store.getters.get_socket_open){
@@ -64,11 +83,26 @@
 							spinner: 'el-icon-loading',
 							background: 'rgba(0, 0, 0, 0.7)'
 						});
-						// if(1) return false
-						this.$http.post(this.$ports.login,{
-							username:this.account,
-							password:this.password
-						}).then((res)=>{
+
+						console.log(this.verifySystemId)
+						console.log(this.verifySystem)
+						console.log(this.securityCode)
+						let parmas;
+						if(this.securityCode){
+							 parmas = {
+								username:this.account,
+								password:this.password,
+								securityCode:this.securityCode,
+							}
+						}else {
+							parmas = {
+								username:this.account,
+								password:this.password,
+								verifySystemId:this.verifySystemId,
+								verifySystem:this.verifySystem,
+							}
+						}
+						this.$http.post(this.$ports.login, parmas).then((res)=>{
 							if(res.data.code == 1){
 								this.$store.dispatch("SET_USER",res.data.data.user);
 								this.$store.dispatch("SET_IS_INIT",true);
@@ -134,6 +168,16 @@
 			},
 		},
 		mounted(){
+			// 判断验证码参数
+			let SystemId = this.$public.getQueryString("id");
+			let System = this.$public.getQueryString("code");
+			if( !SystemId && !System ){
+				this.showSecurityCode = true;
+			}else {
+				this.showSecurityCode = false;
+				this.verifySystemId = SystemId
+				this.verifySystem = System
+			}
 
 			this.$http.get(this.$ports.TIME).then(res => {
 				if (res.data.code == 1) {
@@ -185,7 +229,7 @@
 	}
 	.box{
 		/* margin-top: 40px; */
-		height: 60px;
+		height: 50px;
 	}
 	.boxData{
 		width: 200px;

+ 460 - 446
service/static/publicMethods.js

@@ -1,467 +1,481 @@
 import frceArr from './frce';
+
 export default {
-    //获取图片
-    imgPreview(file, callback) {
-      let self = this;
-      let name = file.name.split('.')[0]
-      //判断支不支持FileReader
-      if (!file || !window.FileReader) return;
-      if (/^image/.test(file.type)) {
-          //创建一个reader
-          let reader = new FileReader();
-          //将图片转成base64格式
-          reader.readAsDataURL(file);
-          //读取成功后的回调
-          reader.onloadend = function() {
-              let result = this.result;
-              let img = new Image();
-              let formData = new FormData();
-              img.src = result;
-              img.onload = function() {
-                  let data = self.compress(img);
-                  let blob = self.dataURItoBlob(data);
-                  formData.append("file", blob,name+'.jpeg');
-                  //图片预览,配置文件,formData数据;
-                  callback && callback(data,formData);
-              };
-          };
-      }
-  },
-  // 压缩图片
-  compress(img) {
-      let canvas = document.createElement("canvas");
-      let ctx = canvas.getContext("2d");
-      // let initSize = img.src.length;
-      let width = img.width;
-      let height = img.height;
-      canvas.width = width;
-      canvas.height = height;
-      // 铺底色
-      ctx.fillStyle = "#fff";
-      ctx.fillRect(0, 0, canvas.width, canvas.height);
-      ctx.drawImage(img, 0, 0, width, height);
+	//获取图片
+	imgPreview(file, callback) {
+		let self = this;
+		let name = file.name.split('.')[0]
+		//判断支不支持FileReader
+		if (!file || !window.FileReader) return;
+		if (/^image/.test(file.type)) {
+			//创建一个reader
+			let reader = new FileReader();
+			//将图片转成base64格式
+			reader.readAsDataURL(file);
+			//读取成功后的回调
+			reader.onloadend = function () {
+				let result = this.result;
+				let img = new Image();
+				let formData = new FormData();
+				img.src = result;
+				img.onload = function () {
+					let data = self.compress(img);
+					let blob = self.dataURItoBlob(data);
+					formData.append("file", blob, name + '.jpeg');
+					//图片预览,配置文件,formData数据;
+					callback && callback(data, formData);
+				};
+			};
+		}
+	},
+	// 压缩图片
+	compress(img) {
+		let canvas = document.createElement("canvas");
+		let ctx = canvas.getContext("2d");
+		// let initSize = img.src.length;
+		let width = img.width;
+		let height = img.height;
+		canvas.width = width;
+		canvas.height = height;
+		// 铺底色
+		ctx.fillStyle = "#fff";
+		ctx.fillRect(0, 0, canvas.width, canvas.height);
+		ctx.drawImage(img, 0, 0, width, height);
+
+		//进行压缩
+		let ndata = canvas.toDataURL("image/jpeg", 0.4);
+		// console.log("*******压缩后的图片大小*******");
+		// console.log(ndata)
+		return ndata;
+	},
+
+	// base64转成bolb对象
+	dataURItoBlob(base64Data) {
+		var byteString;
+		if (base64Data.split(",")[0].indexOf("base64") >= 0)
+			byteString = atob(base64Data.split(",")[1]);
+		else byteString = unescape(base64Data.split(",")[1]);
+		var mimeString = base64Data
+			.split(",")[0]
+			.split(":")[1]
+			.split(";")[0];
+		var ia = new Uint8Array(byteString.length);
+		for (var i = 0; i < byteString.length; i++) {
+			ia[i] = byteString.charCodeAt(i);
+		}
+		return new Blob([ia], {type: mimeString});
+	},
+
+
+	//
+	setApiToken(name, controller, time, modules) {
+		let str = name + 'customer-service' + controller + time + modules
+		return str.toLocaleLowerCase()
+	},
+
+	/**
+	 * 时间戳转日期自定义时间格式
+	 * timeStamp:时间戳
+	 * custom:转换日期时定义年月日用是什么符号隔开
+	 * isDtae:0=月份、1=日期、3=时间
+	 */
+	customFormatDateTime(timeStamp, custom, isDtae) {
+		var date = new Date();
+		date.setTime(timeStamp * 1000);
+		var y = date.getFullYear();
+		var m = date.getMonth() + 1;
+		m = m < 10 ? ('0' + m) : m;
+		var d = date.getDate();
+		d = d < 10 ? ('0' + d) : d;
+		var h = date.getHours();
+		h = h < 10 ? ('0' + h) : h;
+		var minute = date.getMinutes();
+		var second = date.getSeconds();
+		minute = minute < 10 ? ('0' + minute) : minute;
+		second = second < 10 ? ('0' + second) : second;
+		if (isDtae == 0) {
+			return y + custom + m //+'student';
+		} else if (isDtae == 1) {
+			return y + custom + m + custom + d;
+		} else if (isDtae == 3) {
+			return h + ':' + minute //+ ':' + second;
+		} else {
+			return y + '-' + m + '-' + d + ' ' + h + ':' + minute //+ ':' + second;
+		}
+	},
 
-      //进行压缩
-      let ndata = canvas.toDataURL("image/jpeg", 0.4);
-      // console.log("*******压缩后的图片大小*******");
-      // console.log(ndata)
-      return ndata;
-  },
+	/*****************提示关键字及记录次数******************/
+	/**
+	 *
+	 * @param {*} data
+	 * @param {*} sensitive
+	 * @param {*}
+	 */
+	shieldingKeyword(data, sensitive) {
+		//将敏感词组用|转换字符串
+		let snstive = sensitive.join('|');
+		let num = 0, text = '';
+		//匹配出会话中的敏感词
+		data.replace(eval('/' + snstive + '/g'), (res) => {
+			text += ',' + res;
+			num++;
+		})
+		return {
+			text,
+			num
+		}
+	},
 
-  // base64转成bolb对象
-  dataURItoBlob(base64Data) {
-      var byteString;
-      if (base64Data.split(",")[0].indexOf("base64") >= 0)
-          byteString = atob(base64Data.split(",")[1]);
-      else byteString = unescape(base64Data.split(",")[1]);
-      var mimeString = base64Data
-          .split(",")[0]
-          .split(":")[1]
-          .split(";")[0];
-      var ia = new Uint8Array(byteString.length);
-      for (var i = 0; i < byteString.length; i++) {
-          ia[i] = byteString.charCodeAt(i);
-      }
-      return new Blob([ia], { type: mimeString});
-    },
+	/*****************用户屏蔽关键字******************/
+	/**
+	 *
+	 * @param {*} data
+	 * @param {*} sensitive
+	 * @param {*}
+	 */
+	userShieldingKeyword(data, sensitive) {
+		//将敏感词组用|转换字符串
+		let snstive = sensitive.join('|');
+		let num = 0, text = '';
+		//匹配出会话中的敏感词
+		return data.replace(eval('/' + snstive + '/g'), (res) => {
+			var str = '';
+			for (var i = 0; i < res.length; i++) {
+				str += '*';
+			}
+			return str;
+		})
+	},
 
 
-    //
-    setApiToken(name, controller, time, modules) {
-        let str = name + 'customer-service' + controller + time + modules
-        return str.toLocaleLowerCase()
-    },
+	/******************访客接入*********************/
+	/**
+	 *
+	 * @param {object} redata  接收消息源
+	 * @param {Array} offlineList  访客离线列表
+	 * @param {Array} sessionList  访客会话列表
+	 * @param {int} sessionType 选择列表状态默认未1(1是会话中,2是离线)
+	 * @param {int} dataIndex  定位当前会话,默认是0
+	 * @param {Array} dataList 当前会话信息列表
+	 * @param {string} user_name 当前会话访客名
+	 * @param {function} callback   访客匹配离线列表处理后链接回调方法
+	 * @param {function} callback1   访客正常链接回调方法
+	 */
+	visitorsConnect([redata, offlineList, sessionList, sessionType, dataIndex, dataList, user_name], callback, callback1) {
+		// console.log('将会话工单写入访客信息',redata);
+		// console.log('访客信息评价',evaluate);
+		if (redata.evaluate_id > 0) {
+			redata.user_info.isEva = 10;
+		}
+		//将会话工单写入访客信息
+		redata.user_info.conversationId = redata.conversationId;
+		//默认离线列表没有访客信息
+		let isTrue = true;
+		let name = '';
+		let sessionInfo = '';
 
-    /**
-     * 时间戳转日期自定义时间格式
-     * timeStamp:时间戳
-     * custom:转换日期时定义年月日用是什么符号隔开
-     * isDtae:0=月份、1=日期、3=时间
-     */
-    customFormatDateTime(timeStamp,custom,isDtae) {
-        var date = new Date();
-        date.setTime(timeStamp * 1000);
-        var y = date.getFullYear();
-        var m = date.getMonth() + 1;
-        m = m < 10 ? ('0' + m) : m;
-        var d = date.getDate();
-        d = d < 10 ? ('0' + d) : d;
-        var h = date.getHours();
-        h = h < 10 ? ('0' + h) : h;
-        var minute = date.getMinutes();
-        var second = date.getSeconds();
-        minute = minute < 10 ? ('0' + minute) : minute;
-        second = second < 10 ? ('0' + second) : second;
-        if (isDtae == 0){
-            return y + custom + m //+'student';
-        }else if (isDtae ==1){
-            return y + custom + m + custom + d;
-        }else if(isDtae == 3){
-            return  h + ':' + minute //+ ':' + second;
-        }else{
-            return y + '-' + m + '-' + d + ' ' + h + ':' + minute //+ ':' + second;
-        }
-    },
+		//匹配是否是离线用户上线
+		if (offlineList.length > 0) {
+			for (let i = 0; i < offlineList.length; i++) {
+				//匹配离线列表是否有这个用户
+				if (offlineList[i].id == redata.user_info.id) {
+					//查询离线列表是否有此用户会话工单未结束
+					if (offlineList[i].conversationId == redata.conversationId) {
+						// console.log(sessionType,offlineList);
+						//工单号未结束的数据获取历史聊天消息和对象名字
+						if (sessionType == 2 && i == dataIndex) {//客服选中离线重新链接访客
+							dataList = [];
+							dataList = offlineList[i].data;
+							name = offlineList[i].nick_name ? offlineList[i].nick_name : offlineList[i].name;
+							sessionType = 1;
+							dataIndex = sessionList.length == 0 ? 0 : sessionList.length - 1;
+						} else if (sessionType == 2 && i < dataIndex) {//客服选中离线列表重新链接访客后面的访客
+							if (i > 0) {
+								dataList = offlineList[i].data;
+								name = offlineList[i].nick_name ? offlineList[i].nick_name : offlineList[i].name;
+							}
+						} else {
+							name = redata.user_info.nick_name ? redata.user_info.nick_name : redata.user_info.name;
+						}
+						//将掉线前聊天消息写入到用户对象里面
+						redata.user_info.data = offlineList[i].data;
+					} else {
+						//工单号已结束数据处理
+						if (dataIndex == 0 && sessionList.length == 0) {
+							name = redata.user_info.nick_name ? redata.user_info.nick_name : redata.user_info.name;
+							dataList = [];
+						}
+						redata.user_info.data = [];
+					}
+					//获取离线列表数据
+					sessionInfo = offlineList[i]
+					//将离线状态用户删除
+					offlineList.splice(i, 1);
 
-    /*****************提示关键字及记录次数******************/
-    /**
-     * 
-     * @param {*} data 
-     * @param {*} sensitive 
-     * @param {*} 
-     */
-    shieldingKeyword(data,sensitive) {
-        //将敏感词组用|转换字符串
-        let snstive = sensitive.join('|');
-        let num = 0,text='';
-        //匹配出会话中的敏感词
-         data.replace(eval('/' + snstive + '/g'), (res) => {
-            text +=','+res;
-            num ++;
-        })
-        return {
-            text,
-            num
-        }
-    },
+					isTrue = false;
+					//回调
+					callback && callback(offlineList);
+					break;
+				}
+			}
+		}
 
-    /*****************用户屏蔽关键字******************/
-    /**
-     * 
-     * @param {*} data 
-     * @param {*} sensitive 
-     * @param {*} 
-     */
-    userShieldingKeyword(data,sensitive) {
-        //将敏感词组用|转换字符串
-        let snstive = sensitive.join('|');
-        let num = 0,text='';
-        //匹配出会话中的敏感词
-        return data.replace(eval('/' + snstive + '/g'), (res) => {
-            var str = '';
-            for (var i = 0; i < res.length; i++) {
-                str += '*';
-            }
-            return str;
-        })
-    },
+		//新访客链接
+		if (isTrue) {
+			if (sessionList.length == 0) {
+				//判断是否选离线用户列表
+				if (offlineList.length > 0 && sessionType == 2) {
+					//不做处理
 
+				} else {
+					dataIndex = 0;
+					sessionType = 1;
+					// console.log(redata.user_info.nick_name,redata.user_info.name);
+					name = redata.user_info.nick_name ? redata.user_info.nick_name : redata.user_info.name;
+					dataList = [];
+				}
+			} else {
+				for (let i = 0; i < sessionList.length; i++) {
+					//匹配离线列表是否有这个用户
+					if (sessionList[i].id == redata.user_info.id) {
+						sessionList.splice(i, 1);
+						break;
+					}
+				}
 
-    /******************访客接入*********************/
-   /**
-    * 
-    * @param {object} redata  接收消息源
-    * @param {Array} offlineList  访客离线列表
-    * @param {Array} sessionList  访客会话列表
-    * @param {int} sessionType 选择列表状态默认未1(1是会话中,2是离线)
-    * @param {int} dataIndex  定位当前会话,默认是0
-    * @param {Array} dataList 当前会话信息列表
-    * @param {string} user_name 当前会话访客名
-    * @param {function} callback   访客匹配离线列表处理后链接回调方法
-    * @param {function} callback1   访客正常链接回调方法
-    */
-   visitorsConnect([redata,offlineList,sessionList,sessionType,dataIndex,dataList,user_name],callback,callback1){
-        // console.log('将会话工单写入访客信息',redata);
-        // console.log('访客信息评价',evaluate);
-        if(redata.evaluate_id > 0){
-            redata.user_info.isEva = 10;
-        }
-        //将会话工单写入访客信息
-        redata.user_info.conversationId = redata.conversationId;
-        //默认离线列表没有访客信息
-        let isTrue = true;
-        let name ='';
-        let sessionInfo  = '';
+				//判断接入用户是否有昵称展示
+				redata.user_info.name = redata.user_info.nick_name ? redata.user_info.nick_name : redata.user_info.name;
+			}
+			//历史会话消息
+			if (redata.history.length > 0) {
+				let chatData = [];
+				redata.history.forEach(e => {
+					let content = JSON.parse(e.content);
+					let obj = {
+						text: this.turnFace(content.text, frceArr.frce),
+						img: content.img,
+						type: false,
+					};
+					if (e.from_id.startsWith("KF")) {
+						//this.turnFace(redata.content.text,frceArr.frce);
+						chatData.push({
+							type: 'service',
+							content: obj,
+							time: this.customFormatDateTime(e.time_line, '', 3)
+						})
+					} else {
+						chatData.push({type: 'user', content: obj, time: this.customFormatDateTime(e.time_line, '', 3)})
+					}
+				})
+				redata.user_info.data = chatData;
+				dataList = chatData;
+			} else {
+				redata.user_info.data = [];
+			}
+		} else {
+			redata.user_info.data = sessionInfo.data
+		}
+		// console.log(name);
+		//回调
+		callback1 && callback1(redata, sessionList, offlineList, sessionType, dataIndex, dataList, name);
+	},
 
-        //匹配是否是离线用户上线
-        if(offlineList.length > 0){
-            for(let i = 0; i < offlineList.length; i++){
-                //匹配离线列表是否有这个用户
-                if(offlineList[i].id == redata.user_info.id  ){
-                    //查询离线列表是否有此用户会话工单未结束
-                    if(offlineList[i].conversationId  ==  redata.conversationId){
-                        // console.log(sessionType,offlineList);
-                        //工单号未结束的数据获取历史聊天消息和对象名字
-                        if(sessionType == 2 && i == dataIndex){//客服选中离线重新链接访客
-                            dataList = [];
-                            dataList = offlineList[i].data;
-                            name  =  offlineList[i].nick_name ? offlineList[i].nick_name : offlineList[i].name;
-                            sessionType = 1;
-                            dataIndex = sessionList.length == 0 ? 0 : sessionList.length-1;
-                        }else if(sessionType == 2 && i < dataIndex){//客服选中离线列表重新链接访客后面的访客
-                            if(i > 0){
-                                dataList = offlineList[i].data;
-                                name  = offlineList[i].nick_name ? offlineList[i].nick_name : offlineList[i].name;
-                            }
-                        }else {
-                            name = redata.user_info.nick_name ? redata.user_info.nick_name : redata.user_info.name;
-                        }
-                        //将掉线前聊天消息写入到用户对象里面
-                        redata.user_info.data = offlineList[i].data;
-                    }else{
-                        //工单号已结束数据处理
-                        if(dataIndex == 0 && sessionList.length  == 0){
-                            name =redata.user_info.nick_name ? redata.user_info.nick_name : redata.user_info.name;
-                            dataList = [];
-                        }
-                        redata.user_info.data = [];
-                    }
-                    //获取离线列表数据
-                    sessionInfo = offlineList[i]
-                    //将离线状态用户删除
-                    offlineList.splice(i,1);
-                    
-                    isTrue = false;
-                    //回调
-                    callback && callback(offlineList);
-                    break;
-                }
-            }
-        }
+	/*****************用户会话离线及相关数据*********************/
+	/**
+	 * @param {object} redata  接收消息源
+	 * @param {Array} sessionList  访客会话列表
+	 * @param {Array} offlineList  访客离线列表
+	 * @param {int} sessionType 选择列表状态默认未1(1是会话中,2是离线)
+	 * @param {int} dataIndex  定位当前会话,默认是0
+	 * @param {string} user_name 当前会话访客名
+	 * @param {Array} dataList 当前会话信息列表
+	 * @param {*} callback  回调函数
+	 */
+	userOffline([redata, sessionList, offlineList, sessionType, dataIndex, user_name, dataList], callback) {
+		let userInfo = [];
+		for (let i = 0; i < sessionList.length; i++) {
+			//匹配会话中离线用户
+			if (sessionList[i].id == redata.id) {
+				//把数据添加到离线列表
+				offlineList.push(sessionList[i]);
+				//用户选中状态会话中处理
+				if (sessionType == 1) {
+					//判断会话中列表长度
+					if (sessionList.length > 1) {
+						//判断是否离线用户是当前选中状态
+						if (dataIndex == i) {
+							dataIndex = 0;
+							user_name = sessionList[0].name;
+							dataList = sessionList[0].data;
+							userInfo = sessionList;
+						}
+						//删除会话列表离线用户
+						sessionList.splice(i, 1);
+					} else {
+						sessionType = 2;
+						dataIndex = 0;
+						user_name = offlineList[0].name;
+						dataList = offlineList[0].data;
+						userInfo = offlineList;
+						sessionList.splice(i, 1);
+					}
+				}
+				callback && callback(sessionList, offlineList, sessionType, dataIndex, user_name, dataList, userInfo);
+				break;
+			}
+		}
+	},
 
-        //新访客链接
-        if(isTrue){
-            if(sessionList.length  == 0){
-                //判断是否选离线用户列表
-                if(offlineList.length > 0 && sessionType ==2){
-                    //不做处理
-                    
-                }else{
-                    dataIndex = 0;
-                    sessionType = 1;
-                    // console.log(redata.user_info.nick_name,redata.user_info.name);
-                    name = redata.user_info.nick_name ? redata.user_info.nick_name : redata.user_info.name ;
-                    dataList = [];
-                }
-            }else{ 
-                for(let i = 0; i < sessionList.length; i++){
-                    //匹配离线列表是否有这个用户
-                    if(sessionList[i].id == redata.user_info.id  ){
-                        sessionList.splice(i,1);
-                        break;
-                    }
-                }
+	/**************删除会话中离线用户及相关数据**************/
+	/**
+	 * @param {object} redata  接收消息源
+	 * @param {Array} sessionList  访客会话列表
+	 * @param {Array} offlineList  访客离线列表
+	 * @param {int} sessionType 选择列表状态默认未1(1是会话中,2是离线)
+	 * @param {int} dataIndex  定位当前会话,默认是0
+	 * @param {string} user_name 当前会话访客名
+	 * @param {Array} dataList 当前会话信息列表
+	 * @param {*} callback  回调函数
+	 */
 
-                //判断接入用户是否有昵称展示
-                redata.user_info.name = redata.user_info.nick_name ? redata.user_info.nick_name : redata.user_info.name ;
-            }
-            //历史会话消息
-            if(redata.history.length > 0){
-                let chatData= [];
-                redata.history.forEach(e=>{
-                    let content = JSON.parse(e.content);
-                    let obj = {
-                        text:this.turnFace(content.text,frceArr.frce) ,
-                        img: content.img,
-                        type: false,
-                    };
-                    if( e.from_id.startsWith("KF")){
-                        //this.turnFace(redata.content.text,frceArr.frce);
-                        chatData.push({type: 'service', content: obj, time:this.customFormatDateTime(e.time_line,'',3)})
-                    }else{
-                        chatData.push({type: 'user', content: obj, time:this.customFormatDateTime(e.time_line,'',3)})
-                    }
-                })           
-                redata.user_info.data = chatData;
-                dataList = chatData;
-            }else{
-                redata.user_info.data = [];
-            }
-        }else{
-            redata.user_info.data = sessionInfo.data
-        }
-        // console.log(name);
-        //回调
-        callback1 && callback1(redata,sessionList,offlineList,sessionType,dataIndex,dataList,name);
-    },
+	sessionEnd([redata, sessionList, offlineList, sessionType, dataIndex, user_name, dataList], callback) {
+		let isTrue = true;
+		let userInfo = [];
+		// console.log('哈哈',sessionList);
+		//会话中列表匹配
+		if (sessionList.length > 0) {
+			for (let i = 0; i < sessionList.length; i++) {
+				//检测会话列表中是否有结束的会话对象
+				if (sessionList[i].id == redata.id) {
+					//删除会话列表中结束的会话对象用户信息
+					sessionList.splice(i, 1);
+					// this.$store.dispatch("SET_SESSION",sessionList);
+					if (sessionType == 1) {
+						if (sessionList.length > 1) {
+							//处理会话显现状态
+							if (dataIndex == i) {
+								user_name = sessionList[0].name;
+								dataList = sessionList[0].data;
+								userInfo = sessionList;
+							}
+						} else {
+							if (offlineList.length > 0) {
+								sessionType = 2;
+								dataIndex = 0;
+								userInfo = offlineList;
+							} else {
+								user_name = '';
+								dataList = [];
+								userInfo = '';
+							}
+						}
+					}
+					isTrue = false;
+					break;
+				}
+			}
+		}
+		//离线列表查询
+		if (isTrue) {
+			for (let i = 0; i < offlineList.length; i++) {
+				//判断离线列表是否结束会话
+				if (offlineList[i].id == redata.id) {
+					//删除离线列表中结束会话的用户信息
+					offlineList.splice(i, 1);
+					// this.$store.dispatch("SET_OFFLINE",offlineList);
+					if (sessionType == 2) {
+						if (dataIndex == i) {
+							if (offlineList.length > 1) {
+								if (sessionList.length > 0) {
+									dataList = sessionList[0].data;
+									user_name = sessionList[0].name;
+									userInfo = sessionList;
+								} else {
+									dataList = offlineList[0].data;
+									user_name = offlineList[0].name;
+									userInfo = offlineList;
+								}
+							} else {
+								if (sessionList.length > 0) {
+									dataList = sessionList[0].data;
+									user_name = sessionList[0].name;
+									userInfo = sessionList;
+								} else {
+									dataList = [];
+									user_name = '';
+									userInfo = '';
+								}
+							}
+						}
+					}
+					break;
+				}
+			}
+		}
+		console.log('测试掉线', sessionList);
+		//回调
+		callback && callback(sessionList, offlineList, sessionType, dataIndex, user_name, dataList, userInfo);
 
-    /*****************用户会话离线及相关数据*********************/
-    /**
-     * @param {object} redata  接收消息源
-     * @param {Array} sessionList  访客会话列表
-     * @param {Array} offlineList  访客离线列表
-     * @param {int} sessionType 选择列表状态默认未1(1是会话中,2是离线)
-     * @param {int} dataIndex  定位当前会话,默认是0
-     * @param {string} user_name 当前会话访客名
-     * @param {Array} dataList 当前会话信息列表
-     * @param {*} callback  回调函数
-     */
-    userOffline([redata,sessionList,offlineList,sessionType,dataIndex,user_name,dataList],callback){
-        let userInfo = [];
-        for(let i = 0 ; i < sessionList.length; i++){
-            //匹配会话中离线用户
-            if(sessionList[i].id  == redata.id ){
-                //把数据添加到离线列表
-                offlineList.push(sessionList[i]);
-                //用户选中状态会话中处理
-                if(sessionType == 1){
-                    //判断会话中列表长度
-                    if(sessionList.length > 1){
-                        //判断是否离线用户是当前选中状态
-                        if( dataIndex == i){
-                            dataIndex = 0;
-                            user_name = sessionList[0].name;
-                            dataList = sessionList[0].data;
-                            userInfo = sessionList;
-                        }
-                        //删除会话列表离线用户
-                        sessionList.splice(i,1);
-                    }else{
-                        sessionType = 2;
-                        dataIndex = 0;
-                        user_name =offlineList[0].name;
-                        dataList = offlineList[0].data;
-                        userInfo = offlineList ;
-                        sessionList.splice(i,1);
-                    }
-                }
-                callback && callback(sessionList,offlineList,sessionType,dataIndex,user_name,dataList,userInfo);     
-                break;
-            }
-        }
-    },
+	},
 
-    /**************删除会话中离线用户及相关数据**************/
-    /**
-     * @param {object} redata  接收消息源
-     * @param {Array} sessionList  访客会话列表
-     * @param {Array} offlineList  访客离线列表
-     * @param {int} sessionType 选择列表状态默认未1(1是会话中,2是离线)
-     * @param {int} dataIndex  定位当前会话,默认是0
-     * @param {string} user_name 当前会话访客名
-     * @param {Array} dataList 当前会话信息列表
-     * @param {*} callback  回调函数
-     */
 
-    sessionEnd([redata,sessionList,offlineList,sessionType,dataIndex,user_name,dataList],callback){
-        let isTrue = true;
-        let userInfo = [];
-        // console.log('哈哈',sessionList);
-        //会话中列表匹配
-        if(sessionList.length > 0){
-            for(let i = 0 ; i < sessionList.length; i++){
-                //检测会话列表中是否有结束的会话对象
-                if(sessionList[i].id  ==  redata.id){
-                    //删除会话列表中结束的会话对象用户信息
-                    sessionList.splice(i,1);
-                    // this.$store.dispatch("SET_SESSION",sessionList);
-                    if(sessionType == 1){
-                        if(sessionList.length >1){
-                            //处理会话显现状态
-                            if(dataIndex == i){
-                                user_name = sessionList[0].name;
-                                dataList = sessionList[0].data;
-                                userInfo = sessionList;
-                            }
-                        }else{
-                            if(offlineList.length > 0 ){
-                                sessionType = 2;
-                                dataIndex = 0;
-                                userInfo = offlineList;
-                            }else{
-                                user_name = '';
-                                dataList = [];
-                                userInfo = '';
-                            }
-                        }
-                    }
-                    isTrue = false;
-                    break;
-                }
-            }
-        }
-        //离线列表查询
-        if(isTrue){
-            for(let i = 0 ; i < offlineList.length; i++){
-                //判断离线列表是否结束会话
-                if(offlineList[i].id ==  redata.id){
-                    //删除离线列表中结束会话的用户信息
-                    offlineList.splice(i,1);
-                    // this.$store.dispatch("SET_OFFLINE",offlineList);
-                    if(sessionType == 2){
-                        if(dataIndex == i){
-                            if(offlineList.length > 1){
-                                if(sessionList.length >0){
-                                    dataList = sessionList[0].data;
-                                    user_name = sessionList[0].name;
-                                    userInfo = sessionList;
-                                }else{
-                                    dataList = offlineList[0].data;
-                                    user_name = offlineList[0].name;
-                                    userInfo = offlineList;
-                                }
-                            }else{
-                                if(sessionList.length >0){
-                                    dataList = sessionList[0].data;
-                                    user_name = sessionList[0].name;
-                                    userInfo = sessionList;
-                                }else{
-                                    dataList = [];
-                                    user_name = '';
-                                    userInfo = '';
-                                }
-                            }
-                        }
-                    }
-                    break;
-                }
-            }
-        }
-        console.log('测试掉线',sessionList);
-        //回调
-        callback && callback(sessionList,offlineList,sessionType,dataIndex,user_name,dataList,userInfo);
-        
-    },
+	/*****************接收用户会话消息***************/
+	/**
+	 *
+	 * @param {*} redata 数据源
+	 * @param {*} sessionList 会话列表
+	 * @param {*} frce 表情数据源
+	 * @param {*} callback  回调
+	 */
+	receivesMessage(redata, sessionList, frce, callback) {
+		let dataIndex = 0;
+		//匹配是那个用户回的消息
+		for (let i = 0; i < sessionList.length; i++) {
+			if (sessionList[i].id == redata.id) {
+				dataIndex = i;
+				break;
+			}
+		}
 
+		//获取当前回复消息对象
+		let chatList = sessionList[dataIndex]
+		redata.type = 'user';
+		redata.content = JSON.parse(redata.content);
+		//这个地方转
+		redata.content.text = this.turnFace(redata.content.text, frce);
+		//将消息添加对应的会话列表中
+		chatList.data.push(redata);
+		callback && callback(redata, chatList, dataIndex);
+	},
 
-    /*****************接收用户会话消息***************/
-    /**
-     * 
-     * @param {*} redata 数据源
-     * @param {*} sessionList 会话列表
-     * @param {*} frce 表情数据源
-     * @param {*} callback  回调
-     */
-    receivesMessage(redata,sessionList,frce,callback){
-        let dataIndex = 0;
-        //匹配是那个用户回的消息
-        for(let i = 0 ; i < sessionList.length ; i++){
-            if(sessionList[i].id == redata.id ){
-                dataIndex = i;
-                break;
-            }
-        }
-        
-        //获取当前回复消息对象
-        let chatList = sessionList[dataIndex]
-        redata.type = 'user';
-        redata.content = JSON.parse(redata.content);
-        //这个地方转
-        redata.content.text = this.turnFace(redata.content.text,frce);
-        //将消息添加对应的会话列表中
-        chatList.data.push(redata);
-        callback && callback(redata,chatList,dataIndex);
-    },
+	/******************文字信息转表情******************/
+	/**
+	 * @param {*} data
+	 * @param {*} frce
+	 */
+	turnFace(data, frce) {
+		let str = data.match(/\#\[.*?\]\//g);
+		let arr = Array.from(new Set(str));
+		arr.forEach(e => {
+			let imgsrc = '';
+			for (let i = 0; i < frce.length; i++) {
+				let expText = e.slice(1, e.length - 1);
+				if (expText == frce[i]) {
+					imgsrc = '<img class="hover" src="' + require(`@/assets/img/${i}.gif`) + '"/>'
+					break;
+				}
+			}
+			data = data.replace(new RegExp(`\\#\\[${e.substring(2, e.length - 2)}\\]\\/`, 'g'), imgsrc);
+		})
+		return data;
+	},
 
-    /******************文字信息转表情******************/
-    /**
-     * @param {*} data 
-     * @param {*} frce 
-     */
-    turnFace(data,frce){
-        let str = data.match(/\#\[.*?\]\//g);
-        let arr =Array.from(new Set(str));
-        arr.forEach(e=>{
-            let imgsrc = '';
-            for(let i = 0 ; i < frce.length ; i++){
-                let expText = e.slice(1,e.length-1);
-                if(expText == frce[i]){
-                    imgsrc = '<img class="hover" src="'+require(`@/assets/img/${i}.gif`)+'"/>'
-                    break;
-                }
-            }
-            data = data.replace(new RegExp(`\\#\\[${e.substring(2,e.length-2)}\\]\\/`,'g'),imgsrc);
-        })
-        return data;
-    },
+	getQueryString(name) {
+		var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
+		var r = window.location.search.substr(1).match(reg);
+		if (r != null) {
+			return unescape(r[2]);
+		}
+		return null;
+	}
 }