Harley 6 år sedan
förälder
incheckning
e6f3b6145b
42 ändrade filer med 637 tillägg och 621 borttagningar
  1. BIN
      .DS_Store
  2. 144 144
      chat/index.html
  3. 20 20
      chat/src/App.vue
  4. 62 62
      chat/src/api/https.js
  5. 0 0
      chat/src/assets/Satisfied2.png
  6. 0 0
      chat/src/assets/add.png
  7. 0 0
      chat/src/assets/advent.png
  8. 0 0
      chat/src/assets/back.png
  9. 0 0
      chat/src/assets/close.png
  10. 0 0
      chat/src/assets/comm.png
  11. 0 0
      chat/src/assets/comm2.png
  12. 0 0
      chat/src/assets/expression.png
  13. 0 0
      chat/src/assets/expressionHover.png
  14. 0 0
      chat/src/assets/headAdvent.png
  15. 0 0
      chat/src/assets/headPortrait.png
  16. 0 0
      chat/src/assets/jzsy.png
  17. 0 0
      chat/src/assets/jzsy2.png
  18. 0 0
      chat/src/assets/kf.png
  19. 0 0
      chat/src/assets/notSatisfied.png
  20. 0 0
      chat/src/assets/notSatisfied2.png
  21. 0 0
      chat/src/assets/off_icon.png
  22. 0 0
      chat/src/assets/on_icon.png
  23. 0 0
      chat/src/assets/photo.png
  24. 0 0
      chat/src/assets/photoHover.png
  25. 0 0
      chat/src/assets/pj.png
  26. 0 0
      chat/src/assets/pjhover.png
  27. 0 0
      chat/src/assets/retract.png
  28. 0 0
      chat/src/assets/retract2.png
  29. 0 0
      chat/src/assets/satisfied.png
  30. 0 0
      chat/src/assets/sq.png
  31. 0 0
      chat/src/assets/sq2.png
  32. 0 0
      chat/src/assets/sy.png
  33. 0 0
      chat/src/assets/sy2.png
  34. 0 0
      chat/src/assets/timg.jpg
  35. 0 0
      chat/src/assets/user.png
  36. 6 5
      chat/src/components/index.vue
  37. 59 43
      chat/src/components/knowledgeLibrary.vue
  38. 197 197
      chat/src/css/index.css
  39. 24 24
      chat/src/main.js
  40. 123 123
      chat/src/publicMethods.js
  41. 1 1
      service/index.html
  42. 1 2
      service/src/components/historicalRecord.vue

BIN
.DS_Store


+ 144 - 144
chat/index.html

@@ -1,144 +1,144 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<meta charset="utf-8">
-	<meta name="browsermode" content="application">
-	<meta name="full-screen" content="yes"/>
-	<meta name="x5-fullscreen" content="true"/>
-	<meta name="x5-page-mode" content="app"/>
-	<meta name="360-fullscreen" content="true"/>
-	<meta name="apple-mobile-web-app-capable" content="yes"/>
-	<!-- <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" name="viewport"/> -->
-	<meta name="viewport"
-		  content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=no,width=device-width,initial-scale=1.0"/>
-	<!-- <script src="//unpkg.com/vue-ydui/dist/ydui.flexible.js"></script> -->
-	<!--<link rel ="shortcut icon" type="image/x-icon" href="static/logo.gif"> -->
-	<title>智能客服系统</title>
-</head>
-<!-- <script src="./url_config.js"></script> -->
-<script>
-	window.url_https_ajax = 'https://manage.281570.com';
-	window.url_https_wss = 'link.281570.com';
-</script>
-<body>
-<div id="app"></div>
-<!-- built files will be auto injected -->
-</body>
-<!-- <script src="http://wechatfe.github.io/vconsole/lib/vconsole.min.js?v=3.2.0"></script> -->
-
-<script>
-
-	let name = getQueryString('pid');
-	// console.log(name)
-	if (unescape(name) == "这就是一个编码没有什么用啊") {
-		// console.log(name)
-	} else {
-		document.getElementById("app").remove();
-		var parent = document.body;
-		var div = document.createElement("div");
-		parent.appendChild(div)
-		div.innerHTML = "无效访问地址";
-	}
-
-	function 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;
-	}
-
-	// //调试打印工具
-	// var vConsole = new VConsole();
-
-
-	/**
-	 * YDUI 可伸缩布局方案
-	 * rem计算方式:设计图尺寸px / 100 = 实际rem  【例: 100px = 1rem,32px = .32rem】
-	 */
-	!function (window) {
-		/* 设计图文档宽度 */
-		var docWidth = 750;
-		var doc = window.document,
-			docEl = doc.documentElement,
-			resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize';
-
-		var recalc = (function refreshRem() {
-			var clientWidth = docEl.getBoundingClientRect().width;
-			/* 8.55:小于320px不再缩小,11.2:大于420px不再放大 */
-			docEl.style.fontSize = Math.max(Math.min(20 * (clientWidth / docWidth), 11.2), 8.55) * 5 + 'px';
-
-			return refreshRem;
-		})();
-
-		/* 添加倍屏标识,安卓为1 */
-		docEl.setAttribute('data-dpr', window.navigator.appVersion.match(/iphone/gi) ? window.devicePixelRatio : 1);
-
-		if (/iP(hone|od|ad)/.test(window.navigator.userAgent)) {
-			/* 添加IOS标识 */
-			doc.documentElement.classList.add('ios');
-			/* IOS8以上给html添加hairline样式,以便特殊处理 */
-			if (parseInt(window.navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/)[1], 10) >= 8)
-				doc.documentElement.classList.add('hairline');
-		}
-
-		if (!doc.addEventListener) return;
-		window.addEventListener(resizeEvt, recalc, false);
-		doc.addEventListener('DOMContentLoaded', recalc, false);
-	}(window);
-
-	//阻止苹果浏览器缩放
-	window.onload = function () {
-		var lastTouchEnd = 0;
-		document.addEventListener('touchstart', function (event) {
-			if (event.touches.length > 1) {
-				event.preventDefault();
-			}
-		});
-		document.addEventListener('touchend', function (event) {
-			var now = (new Date()).getTime();
-			if (now - lastTouchEnd <= 300) {
-				event.preventDefault();
-			}
-			lastTouchEnd = now;
-		}, false);
-		document.addEventListener('gesturestart', function (event) {
-			event.preventDefault();
-		});
-		document.addEventListener('dblclick', function (event) {
-			event.preventDefault();
-		})
-	}
-
-	// //进入全屏
-	// function requestFullScreen() {
-	//   var de = document.documentElement;
-	//   if (de.requestFullscreen) {
-	//      de.requestFullscreen();
-	//   } else if (de.mozRequestFullScreen) {
-	//     de.mozRequestFullScreen();
-	//   } else if (de.webkitRequestFullScreen) {
-	//     de.webkitRequestFullScreen();
-	//   }
-	// }
-
-	// //退出全屏
-	// function exitFullscreen() {
-	//   var de = document;
-	//   if (de.exitFullscreen) {
-	//     de.exitFullscreen();
-	//   } else if (de.mozCancelFullScreen) {
-	//     de.mozCancelFullScreen();
-	//   } else if (de.webkitCancelFullScreen) {
-	//     de.webkitCancelFullScreen();
-	//   }
-	// }
-	// document.body.addEventListener('click', function () {
-	//   requestFullScreen();
-	//        //exitFullscreen();
-	// }, false);
-
-	//
-</script>
-</html>
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<meta name="browsermode" content="application">
+	<meta name="full-screen" content="yes"/>
+	<meta name="x5-fullscreen" content="true"/>
+	<meta name="x5-page-mode" content="app"/>
+	<meta name="360-fullscreen" content="true"/>
+	<meta name="apple-mobile-web-app-capable" content="yes"/>
+	<!-- <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" name="viewport"/> -->
+	<meta name="viewport"
+		  content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=no,width=device-width,initial-scale=1.0"/>
+	<!-- <script src="//unpkg.com/vue-ydui/dist/ydui.flexible.js"></script> -->
+	<!--<link rel ="shortcut icon" type="image/x-icon" href="static/logo.gif"> -->
+	<title>智能客服系统</title>
+</head>
+<!-- <script src="./url_config.js"></script> -->
+<script>
+	window.url_https_ajax = 'https://manage.281570.com';
+	window.url_https_wss = 'link.281570.com';
+</script>
+<body>
+<div id="app"></div>
+<!-- built files will be auto injected -->
+</body>
+<!-- <script src="http://wechatfe.github.io/vconsole/lib/vconsole.min.js?v=3.2.0"></script> -->
+
+<script>
+
+	let name = getQueryString('pid');
+	// console.log(name)
+	if (unescape(name) == "这就是一个编码没有什么用啊") {
+		// console.log(name)
+	} else {
+		document.getElementById("app").remove();
+		var parent = document.body;
+		var div = document.createElement("div");
+		parent.appendChild(div)
+		div.innerHTML = "无效访问地址";
+	}
+
+	function 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;
+	}
+
+	// //调试打印工具
+	// var vConsole = new VConsole();
+
+
+	/**
+	 * YDUI 可伸缩布局方案
+	 * rem计算方式:设计图尺寸px / 100 = 实际rem  【例: 100px = 1rem,32px = .32rem】
+	 */
+	!function (window) {
+		/* 设计图文档宽度 */
+		var docWidth = 750;
+		var doc = window.document,
+			docEl = doc.documentElement,
+			resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize';
+
+		var recalc = (function refreshRem() {
+			var clientWidth = docEl.getBoundingClientRect().width;
+			/* 8.55:小于320px不再缩小,11.2:大于420px不再放大 */
+			docEl.style.fontSize = Math.max(Math.min(20 * (clientWidth / docWidth), 11.2), 8.55) * 5 + 'px';
+
+			return refreshRem;
+		})();
+
+		/* 添加倍屏标识,安卓为1 */
+		docEl.setAttribute('data-dpr', window.navigator.appVersion.match(/iphone/gi) ? window.devicePixelRatio : 1);
+
+		if (/iP(hone|od|ad)/.test(window.navigator.userAgent)) {
+			/* 添加IOS标识 */
+			doc.documentElement.classList.add('ios');
+			/* IOS8以上给html添加hairline样式,以便特殊处理 */
+			if (parseInt(window.navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/)[1], 10) >= 8)
+				doc.documentElement.classList.add('hairline');
+		}
+
+		if (!doc.addEventListener) return;
+		window.addEventListener(resizeEvt, recalc, false);
+		doc.addEventListener('DOMContentLoaded', recalc, false);
+	}(window);
+
+	//阻止苹果浏览器缩放
+	window.onload = function () {
+		var lastTouchEnd = 0;
+		document.addEventListener('touchstart', function (event) {
+			if (event.touches.length > 1) {
+				event.preventDefault();
+			}
+		});
+		document.addEventListener('touchend', function (event) {
+			var now = (new Date()).getTime();
+			if (now - lastTouchEnd <= 300) {
+				event.preventDefault();
+			}
+			lastTouchEnd = now;
+		}, false);
+		document.addEventListener('gesturestart', function (event) {
+			event.preventDefault();
+		});
+		document.addEventListener('dblclick', function (event) {
+			event.preventDefault();
+		})
+	}
+
+	// //进入全屏
+	// function requestFullScreen() {
+	//   var de = document.documentElement;
+	//   if (de.requestFullscreen) {
+	//      de.requestFullscreen();
+	//   } else if (de.mozRequestFullScreen) {
+	//     de.mozRequestFullScreen();
+	//   } else if (de.webkitRequestFullScreen) {
+	//     de.webkitRequestFullScreen();
+	//   }
+	// }
+
+	// //退出全屏
+	// function exitFullscreen() {
+	//   var de = document;
+	//   if (de.exitFullscreen) {
+	//     de.exitFullscreen();
+	//   } else if (de.mozCancelFullScreen) {
+	//     de.mozCancelFullScreen();
+	//   } else if (de.webkitCancelFullScreen) {
+	//     de.webkitCancelFullScreen();
+	//   }
+	// }
+	// document.body.addEventListener('click', function () {
+	//   requestFullScreen();
+	//        //exitFullscreen();
+	// }, false);
+
+	//
+</script>
+</html>

+ 20 - 20
chat/src/App.vue

@@ -1,20 +1,20 @@
-<template>
-  <div id="app">
-    <index/>
-  </div>
-</template>
-
-<script>
-import index from './components/index'
-
-export default {
-  name: 'App',
-  components: {
-    index
-  }
-}
-</script>
-
-<style>
-
-</style>
+<template>
+  <div id="app">
+    <index/>
+  </div>
+</template>
+
+<script>
+import index from './components/index'
+
+export default {
+  name: 'App',
+  components: {
+    index
+  }
+}
+</script>
+
+<style>
+
+</style>

+ 62 - 62
chat/src/api/https.js

@@ -1,62 +1,62 @@
-import axios from 'axios';
-import $qs from 'qs';
-// 请求超时时间
-axios.defaults.timeout = 10000
-// 线上
-let Base = window.url_https_ajax;
-// 开发
-//let Base = 'https://sports.5gogo.com'
-function headerUrl (url) {
-    url = Base +  url
-    return url
-}
-// post请求头
-axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
-export default {
-    /**
-     * get方法对应get请求
-     * @param {String}url 请求地址
-     * @param {Object}params 携带参数
-     * @returns {Promise}
-     */
-    get (url, params) {
-        return new Promise((resolve, reject) => {
-            axios.get(headerUrl(url),params)
-                .then(res => {
-                    resolve(res)
-                })
-                .catch(err => {
-                    reject(err)
-                })
-        })
-    },
-    /**
-     * post方法对应post请求
-     * @param {String} url 请求地址
-     * @param {Object} params 携带参数
-     * @returns {Promise}
-     */
-    post (url, params,headers) {
-        return new Promise((resolve, reject) => {
-            axios.post(headerUrl(url), params ? $qs.stringify(params):'',headers)
-                .then(res => {
-                    resolve(res)
-                })
-                .catch(err => {
-                    reject(err)
-                })
-        })
-    },
-    uploadPost(url, params) {
-        return new Promise((resolve, reject) => {
-            // console.log(params);
-            axios.post(headerUrl(url), params)
-                .then(res => {
-                    resolve(res)
-                })
-                .catch(err => {
-                    reject(err)
-                })
-        })
-    }
-}
+import axios from 'axios';
+import $qs from 'qs';
+// 请求超时时间
+axios.defaults.timeout = 10000
+// 线上
+let Base = window.url_https_ajax;
+// 开发
+//let Base = 'https://sports.5gogo.com'
+function headerUrl (url) {
+    url = Base +  url
+    return url
+}
+// post请求头
+axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
+export default {
+    /**
+     * get方法对应get请求
+     * @param {String}url 请求地址
+     * @param {Object}params 携带参数
+     * @returns {Promise}
+     */
+    get (url, params) {
+        return new Promise((resolve, reject) => {
+            axios.get(headerUrl(url),params)
+                .then(res => {
+                    resolve(res)
+                })
+                .catch(err => {
+                    reject(err)
+                })
+        })
+    },
+    /**
+     * post方法对应post请求
+     * @param {String} url 请求地址
+     * @param {Object} params 携带参数
+     * @returns {Promise}
+     */
+    post (url, params,headers) {
+        return new Promise((resolve, reject) => {
+            axios.post(headerUrl(url), params ? $qs.stringify(params):'',headers)
+                .then(res => {
+                    resolve(res)
+                })
+                .catch(err => {
+                    reject(err)
+                })
+        })
+    },
+    uploadPost(url, params) {
+        return new Promise((resolve, reject) => {
+            // console.log(params);
+            axios.post(headerUrl(url), params)
+                .then(res => {
+                    resolve(res)
+                })
+                .catch(err => {
+                    reject(err)
+                })
+        })
+    }
+}

+ 0 - 0
chat/src/assets/Satisfied2.png


+ 0 - 0
chat/src/assets/add.png


+ 0 - 0
chat/src/assets/advent.png


+ 0 - 0
chat/src/assets/back.png


+ 0 - 0
chat/src/assets/close.png


+ 0 - 0
chat/src/assets/comm.png


+ 0 - 0
chat/src/assets/comm2.png


+ 0 - 0
chat/src/assets/expression.png


+ 0 - 0
chat/src/assets/expressionHover.png


+ 0 - 0
chat/src/assets/headAdvent.png


+ 0 - 0
chat/src/assets/headPortrait.png


+ 0 - 0
chat/src/assets/jzsy.png


+ 0 - 0
chat/src/assets/jzsy2.png


+ 0 - 0
chat/src/assets/kf.png


+ 0 - 0
chat/src/assets/notSatisfied.png


+ 0 - 0
chat/src/assets/notSatisfied2.png


+ 0 - 0
chat/src/assets/off_icon.png


+ 0 - 0
chat/src/assets/on_icon.png


+ 0 - 0
chat/src/assets/photo.png


+ 0 - 0
chat/src/assets/photoHover.png


+ 0 - 0
chat/src/assets/pj.png


+ 0 - 0
chat/src/assets/pjhover.png


+ 0 - 0
chat/src/assets/retract.png


+ 0 - 0
chat/src/assets/retract2.png


+ 0 - 0
chat/src/assets/satisfied.png


+ 0 - 0
chat/src/assets/sq.png


+ 0 - 0
chat/src/assets/sq2.png


+ 0 - 0
chat/src/assets/sy.png


+ 0 - 0
chat/src/assets/sy2.png


+ 0 - 0
chat/src/assets/timg.jpg


+ 0 - 0
chat/src/assets/user.png


+ 6 - 5
chat/src/components/index.vue

@@ -74,7 +74,7 @@
 									<yd-lightbox-img :src=" img_http + item.content.img"></yd-lightbox-img>
 								  </yd-lightbox> -->
 								<div v-if="item.type == 'error'" class="customerService left">{{item.content.text}}
-									<div style="color:#5EA0F7;padding-left:.1rem;cursor:pointer;" @click="connectionService">转人工客服</div>
+									<div style="color:#5EA0F7;padding-left:.1rem;cursor:pointer;" @click="connectionService"> 人工客服 咨询</div>
 								</div>
 								<!-- </div> -->
 							</div>
@@ -333,7 +333,7 @@
 							<p>
 								<!-- 客服职务 -->
 								<span>职务:</span>
-								{{service_info.job_name}}
+								{{service_info.groupname}}
 							</p>
 						</div>
 						<div class="row center">
@@ -520,7 +520,8 @@
 					avatar: headPortrait,
 					job_name: '001',
 					name: '智能客服',
-					signature: ""
+					signature: "",
+					groupname:'咨询客服'
 				},
 				link_success: false,//人工链接成功
 				service_on: true,
@@ -671,7 +672,7 @@
 					if (redata.data.content == "error") {
 						this.robot.push({
 							type: 'error',
-							content: {text: "您的问题暂无法处理"}
+							content: {text: "抱歉!您的问题《机器人》无法处理!"}
 						})
 						// this.error_num++;
 					} else {
@@ -721,6 +722,7 @@
 					// localStorage.getItem('comtSuccess',true)
 					this.$dialog.loading.close();
 					this.service_info = server.serverInfo;
+					console.log(server.serverInfo);
 					this.conversationId = server.conversationId;
 				}
 
@@ -840,7 +842,6 @@
 
 				//系统消息通转人工
 				if (redata.message_type == 'notice') {
-					console.log('人工');
 					this.$dialog.loading.close();
 					this.isTurnArtifcial = true;
 					let _this = this;

+ 59 - 43
chat/src/components/knowledgeLibrary.vue

@@ -42,7 +42,7 @@
 						v-for="(item) in typeList" :key="item.id"
 						class="main-title-list row center"
 						:class="mainTitle== item.name?'active':''"
-						@click="mainTitle =  item.name,getAjax(1)"
+						@click="mainTitle =  item.name,typeGetInfo(item.name)"
 					>{{item.name}}
 					</div>
 				</div>
@@ -129,7 +129,7 @@
 					<div style="height:2.2rem;margin-top:.3rem;overflow-x: hidden;overflow-y: auto;">
             <span style="color:#666;">
               您的图片预览
-              <i style="color:#F04992">*</i>
+              <!-- <i style="color:#F04992">*</i> -->
             </span>
 						<b style="color:#F04992">(单次最多4张图片)</b>
 						<br/>
@@ -236,7 +236,8 @@
 				filesImg: '',
 				showImg: false,
 				showImgs: false,
-				onSubmit:false
+				onSubmit:false,
+				typeName:'充值',
 			};
 		},
 		props: ["currentTime"],
@@ -309,6 +310,16 @@
 				this.valTime = val;
 				let a = document.querySelector("#lists .yd-accordion-content")
 				a.style.height = 0 + "px";
+				this.getAjax(1)
+			},
+
+
+			//类型选择
+			typeGetInfo(name){
+				if(name  != this.typeName){
+					this.getAjax(1);
+					this.typeName = name;
+				}
 			},
 
 			// 留言知识库数据获取
@@ -319,6 +330,7 @@
 						apiToken: this.setApiToken("index", "message", this.currentTime[0], "index")
 					}
 				};
+				this.$dialog.loading.open('数据加载中...');
 				this.$http.post("/index/Message/index", {
 						time: this.valTime,
 						key: this.serchInputValue,
@@ -350,6 +362,7 @@
 							this.$dialog.toast({mes: '当前没有你要的内容,请发起留言', timeout: 1500});
 						}
 					}
+					this.$dialog.loading.close();
 				});
 			},
 			// 留言知识库类型获取
@@ -378,49 +391,52 @@
 				} else if (this.leave.describe == '') {
 					this.$dialog.toast({mes: '请填写留言信息!', timeout: 1500});
 				} else {
+					if(this.imgSrcList.length > 0){
+						for (let i = 0; i < this.imgSrcList.length; i++) {
+							var formData = new FormData();
+							formData.append('file', this.imgSrcList[i]);
+							// 提交图片
+							this.$http.uploadPost('/index/upload/uploadImg', formData).then((res) => {
+								this.filesImg = this.filesImg ? this.filesImg + "," + res.data.data.src : res.data.data.src;
+								this.setTimeout()
+							})
+						}
+					}else{
+						this.setTimeout()
+					}
+				}
 
-					for (let i = 0; i < this.imgSrcList.length; i++) {
-						var formData = new FormData();
-						formData.append('file', this.imgSrcList[i]);
-						// 提交图片
-						this.$http.uploadPost('/index/upload/uploadImg', formData).then((res) => {
+			},
 
-							this.filesImg = this.filesImg ? this.filesImg + "," + res.data.data.src : res.data.data.src;
-						})
+			// 提交表单
+			setTimeout(){
+				let obj = {
+					headers: {
+						apiToken: this.setApiToken("LeavingMessage", "User", this.currentTime[0], "index")
 					}
-
-					// 提交表单
-					setTimeout(() => {
-						let obj = {
-							headers: {
-								apiToken: this.setApiToken("LeavingMessage", "User", this.currentTime[0], "index")
-							}
-						}
-						let params = {
-							'nick_name': this.leave.call,
-							'email': this.leave.email,
-							'content': this.leave.describe,
-							'phone': this.leave.phone,
-							'file': this.filesImg,
-							'account_id': uid,
-						}
-						this.$http.post('/index/User/LeavingMessage', params, obj).then((res) => {
-							if (res.data.code == 1) {
-								this.onSubmit = false;
-								this.$dialog.toast({mes: "留言成功", timeout: 1500});
-							}
-						})
-						this.flag = false;
-						this.fileList = [];
-						this.leave.call = ''
-						this.leave.email = ''
-						this.leave.describe = ''
-						this.leave.phone = ''
-						this.leave.filesImg = ''
-						this.imgSrcList = []
-					}, 1000)
 				}
-
+				let params = {
+					'nick_name': this.leave.call,
+					'email': this.leave.email,
+					'content': this.leave.describe,
+					'phone': this.leave.phone,
+					'file': this.filesImg,
+					'account_id': uid,
+				}
+				this.$http.post('/index/User/LeavingMessage', params, obj).then((res) => {
+					if (res.data.code == 1) {
+						this.onSubmit = false;
+						this.$dialog.toast({mes: "留言成功", timeout: 1500});
+					}
+				})
+				this.flag = false;
+				this.fileList = [];
+				this.leave.call = ''
+				this.leave.email = ''
+				this.leave.describe = ''
+				this.leave.phone = ''
+				this.leave.filesImg = ''
+				this.imgSrcList = []
 			},
 			// 搜索按钮被点击
 			serchClick() {
@@ -449,7 +465,7 @@
 			}
 		},
 		mounted() {
-			this.url = window.url_https_wss
+			this.url = window.url_https_ajax
 			this.getAjaxType()
 			this.getAjax(1);
 		}

+ 197 - 197
chat/src/css/index.css

@@ -1,197 +1,197 @@
-input, textarea {
-  -webkit-user-select: auto !important;
-  -khtml-user-select: auto !important;
-  -moz-user-select: auto !important;
-  -ms-user-select: auto !important;
-  -o-user-select: auto !important;
-  user-select: auto !important;
-}
-
-p,img,h1,h2,h3,h4,h5,ul,li,ol,li,dl,dt,dd,body{
-  margin: 0;
-  padding: 0;
-  list-style: none;
-}
-/* Flex 布局 */
-/* 平行 */
-.row,
-.column {
-  display: flex;
-  flex-direction: row;
-}
-
-/* 垂直 */
-.column {
-  flex-direction: column;
-}
-
-/* 自动填充 */
-.col-w,
-.col-h {
-  flex: 1;
-}
-
-/* 横向 */
-.col-w {
-  width: 0;
-}
-
-/* 纵向 */
-.col-h {
-  height: 0;
-}
-
-/* 水平垂直居中 */
-.center {
-  justify-content: center;
-  align-items: center;
-}
-
-/* 垂直居中 */
-.item-center {
-  align-items: center;
-}
-
-/* 水平居中 */
-.vertical-center {
-  justify-content: center;
-}
-
-/* 上对齐 */
-.topAlignment {
-  align-items: flex-strat;
-}
-
-/* 右对齐 */
-.rightAlignment {
-  justify-content: flex-end;
-}
-
-/* 下对齐 */
-.bottomAlignment {
-  align-items: flex-end;
-}
-
-/* 左右对齐,项目之间的间隔都相等 */
-.allAlignment {
-  justify-content: space-between;
-}
-
-/* 每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍 */
-.average {
-  justify-content: space-around;
-}
-
-/* 项目的第一行文字的基线对齐 */
-.items-baseline {
-  align-items: baseline;
-}
-
-/*自动换行*/
-.wrap {
-  flex-wrap: wrap;
-}
-
-/* 省略号 */
-.ellipsis {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-/* 版心 */
-.middle {
-  width: 16rem;
-  height: 100%;
-  margin: 0 auto;
-}
-
-/* 三角 */
-.triangle {
-  position: relative;
-}
-
-.triangle::after {
-  position: absolute;
-  content: '';
-  display: inline-block;
-  width: 0;
-  height: 0;
-  border-style: solid;
-  border-right-color: transparent;
-  border-bottom-color: transparent;
-}
-
-/* 兼容版滚动条 */
-.scroll::-webkit-scrollbar {
-  border: .02rem solid #FFF;
-}
-
-.scroll::-webkit-scrollbar {
-  width: .1rem;
-  height: .04rem;
-}
-
-.scroll::-webkit-scrollbar-button {
-  width: 0px;
-  height: 0px;
-}
-
-.scroll::-webkit-scrollbar-thumb {
-  border-radius: .1rem;
-  box-shadow: inset 0 0 0 .04rem #aaa;
-  border: .02rem solid transparent;
-}
-
-.scroll::-webkit-scrollbar-track {
-  display: block;
-  background: rgba(0, 0, 0, 0.1);
-}
-
-body {
-  margin: 0;
-  padding: 0;
-}
-
-/* 取消苹果的safari浏览器下点击出现高亮效果 */
-* {
-  -webkit-tap-highlight-color: rgba(0, 0, 0, 0)
-}
-
-
-/* 里面用load  外面用loading*/
-.loading {
-  position: fixed;
-  z-index: 999;
-  width: 100%;
-}
-
-.load,
-.load .loading {
-  position: relative;
-  width: 100%;
-  height: 100%;
-}
-
-/* 赔率增高 */
-.rising {
-  background: Lightgreen !important;
-  color: #fff !important;
-  border-color: Lightgreen !important;
-}
-
-/* 赔率变低 */
-.falling {
-  background: #F76649 !important;
-  color: #fff !important;
-  border-color: #F76649 !important;
-}
-
-/*投注选择样式*/
-.chooseStyle{
-  /* border-radius: 2px; */
-  background: #f76649;
-  color: #fff;
-}
-
-
+input, textarea {
+  -webkit-user-select: auto !important;
+  -khtml-user-select: auto !important;
+  -moz-user-select: auto !important;
+  -ms-user-select: auto !important;
+  -o-user-select: auto !important;
+  user-select: auto !important;
+}
+
+p,img,h1,h2,h3,h4,h5,ul,li,ol,li,dl,dt,dd,body{
+  margin: 0;
+  padding: 0;
+  list-style: none;
+}
+/* Flex 布局 */
+/* 平行 */
+.row,
+.column {
+  display: flex;
+  flex-direction: row;
+}
+
+/* 垂直 */
+.column {
+  flex-direction: column;
+}
+
+/* 自动填充 */
+.col-w,
+.col-h {
+  flex: 1;
+}
+
+/* 横向 */
+.col-w {
+  width: 0;
+}
+
+/* 纵向 */
+.col-h {
+  height: 0;
+}
+
+/* 水平垂直居中 */
+.center {
+  justify-content: center;
+  align-items: center;
+}
+
+/* 垂直居中 */
+.item-center {
+  align-items: center;
+}
+
+/* 水平居中 */
+.vertical-center {
+  justify-content: center;
+}
+
+/* 上对齐 */
+.topAlignment {
+  align-items: flex-strat;
+}
+
+/* 右对齐 */
+.rightAlignment {
+  justify-content: flex-end;
+}
+
+/* 下对齐 */
+.bottomAlignment {
+  align-items: flex-end;
+}
+
+/* 左右对齐,项目之间的间隔都相等 */
+.allAlignment {
+  justify-content: space-between;
+}
+
+/* 每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍 */
+.average {
+  justify-content: space-around;
+}
+
+/* 项目的第一行文字的基线对齐 */
+.items-baseline {
+  align-items: baseline;
+}
+
+/*自动换行*/
+.wrap {
+  flex-wrap: wrap;
+}
+
+/* 省略号 */
+.ellipsis {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+/* 版心 */
+.middle {
+  width: 16rem;
+  height: 100%;
+  margin: 0 auto;
+}
+
+/* 三角 */
+.triangle {
+  position: relative;
+}
+
+.triangle::after {
+  position: absolute;
+  content: '';
+  display: inline-block;
+  width: 0;
+  height: 0;
+  border-style: solid;
+  border-right-color: transparent;
+  border-bottom-color: transparent;
+}
+
+/* 兼容版滚动条 */
+.scroll::-webkit-scrollbar {
+  border: .02rem solid #FFF;
+}
+
+.scroll::-webkit-scrollbar {
+  width: .1rem;
+  height: .04rem;
+}
+
+.scroll::-webkit-scrollbar-button {
+  width: 0px;
+  height: 0px;
+}
+
+.scroll::-webkit-scrollbar-thumb {
+  border-radius: .1rem;
+  box-shadow: inset 0 0 0 .04rem #aaa;
+  border: .02rem solid transparent;
+}
+
+.scroll::-webkit-scrollbar-track {
+  display: block;
+  background: rgba(0, 0, 0, 0.1);
+}
+
+body {
+  margin: 0;
+  padding: 0;
+}
+
+/* 取消苹果的safari浏览器下点击出现高亮效果 */
+* {
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0)
+}
+
+
+/* 里面用load  外面用loading*/
+.loading {
+  position: fixed;
+  z-index: 999;
+  width: 100%;
+}
+
+.load,
+.load .loading {
+  position: relative;
+  width: 100%;
+  height: 100%;
+}
+
+/* 赔率增高 */
+.rising {
+  background: Lightgreen !important;
+  color: #fff !important;
+  border-color: Lightgreen !important;
+}
+
+/* 赔率变低 */
+.falling {
+  background: #F76649 !important;
+  color: #fff !important;
+  border-color: #F76649 !important;
+}
+
+/*投注选择样式*/
+.chooseStyle{
+  /* border-radius: 2px; */
+  background: #f76649;
+  color: #fff;
+}
+
+

+ 24 - 24
chat/src/main.js

@@ -1,24 +1,24 @@
-// The Vue build version to load with the `import` command
-// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
-import Vue from 'vue'
-import App from './App'
-// import https from './api/https'
-import axios from 'axios';
-import publicMethods from './publicMethods';
-import md5 from 'js-md5';
-import YDUI from 'vue-ydui'; /* 相当于import YDUI from 'vue-ydui/ydui.rem.js' */
-import 'vue-ydui/dist/ydui.rem.css';
-import https from './api/https.js'; //api接口文档
-
-Vue.use(YDUI);
-Vue.config.productionTip = false;
-Vue.prototype.$public = publicMethods;
-Vue.prototype.$md5 = md5;
-Vue.prototype.$http = https;
-
-/* eslint-disable no-new */
-new Vue({
-  el: '#app',
-  components: { App },
-  template: '<App/>'
-});
+// The Vue build version to load with the `import` command
+// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
+import Vue from 'vue'
+import App from './App'
+// import https from './api/https'
+import axios from 'axios';
+import publicMethods from './publicMethods';
+import md5 from 'js-md5';
+import YDUI from 'vue-ydui'; /* 相当于import YDUI from 'vue-ydui/ydui.rem.js' */
+import 'vue-ydui/dist/ydui.rem.css';
+import https from './api/https.js'; //api接口文档
+
+Vue.use(YDUI);
+Vue.config.productionTip = false;
+Vue.prototype.$public = publicMethods;
+Vue.prototype.$md5 = md5;
+Vue.prototype.$http = https;
+
+/* eslint-disable no-new */
+new Vue({
+  el: '#app',
+  components: { App },
+  template: '<App/>'
+});

+ 123 - 123
chat/src/publicMethods.js

@@ -1,124 +1,124 @@
-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,name);
-                    let blob = self.dataURItoBlob(data);
-                    blob.name = name+'.jpeg'
-                    console.log(blob,blob.name);
-                    // blob.name = blob.name+'jpeg';
-                    formData.append("file", blob);
-                    //图片预览,配置文件,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);
-        }
-        console.log([ia]);
-        return new Blob([ia], { type: mimeString },);
-    },
-    /**
-     * 时间戳转日期自定义时间格式
-     * 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;
-        }
-    },
-
-    //检查字符串是否JSON格式
-    isJSON(str) {
-        if (typeof str == 'string') {
-            try {
-                JSON.parse(str);
-                return true;
-            } catch(e) {
-                //console.log(e);
-                return false;
-            }
-        } 
-    },
-
-    //获取url参数
-    getQueryString(name){
-        var reg = new RegExp('(^|&)'+name+'=([^&]*)(&|$)','i');
-        var res = window.location.search.substr(1).match(reg);
-        if(res != null){
-            return unescape(res[2]);
-        }
-        return null;
-    }
-
+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,name);
+                    let blob = self.dataURItoBlob(data);
+                    blob.name = name+'.jpeg'
+                    console.log(blob,blob.name);
+                    // blob.name = blob.name+'jpeg';
+                    formData.append("file", blob);
+                    //图片预览,配置文件,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);
+        }
+        console.log([ia]);
+        return new Blob([ia], { type: mimeString },);
+    },
+    /**
+     * 时间戳转日期自定义时间格式
+     * 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;
+        }
+    },
+
+    //检查字符串是否JSON格式
+    isJSON(str) {
+        if (typeof str == 'string') {
+            try {
+                JSON.parse(str);
+                return true;
+            } catch(e) {
+                //console.log(e);
+                return false;
+            }
+        } 
+    },
+
+    //获取url参数
+    getQueryString(name){
+        var reg = new RegExp('(^|&)'+name+'=([^&]*)(&|$)','i');
+        var res = window.location.search.substr(1).match(reg);
+        if(res != null){
+            return unescape(res[2]);
+        }
+        return null;
+    }
+
 }

+ 1 - 1
service/index.html

@@ -6,7 +6,7 @@
     <!-- <link rel ="shortcut icon" type="image/x-icon" href="static/logo.gif"> -->
 	  <title>智能客服系统</title>
   </head>
-  <!-- <script src="/url_config.js"></script> -->
+  <!-- <script src="./url_config.js"></script> -->
   <script>
       window.url_https_ajax = 'https://manage.281570.com';
       window.url_https_wss = 'link.281570.com';

+ 1 - 2
service/src/components/historicalRecord.vue

@@ -132,13 +132,12 @@ export default {
             dataList:[],//会话记录
             alarm:'',//评价谢谢
             account:'',//用户信息
-            imgsrc:'',//图片路径域 
+            imgsrc:window.url_https_ajax,//图片路径域 
             isShowBt:false,//显示加载按钮
             currentPage:'',//当前页数
         }
     },
     mounted() {
-        this.imgsrc = window.url_https_ajax;
         if(typeof this.$store.getters.get_user_info  != 'string'){
             this.token = this.$store.getters.get_user_info.token;
         }else if(this.$store.getters.get_user_info!= ""){