Przeglądaj źródła

安全漏洞审计报告-1 修复

三七 1 dzień temu
rodzic
commit
6589d699eb
100 zmienionych plików z 449 dodań i 798 usunięć
  1. 0 2
      build/index.js
  2. 1 0
      empty-module.js
  3. 6 1
      nginx.conf
  4. 11 7
      package.json
  5. 3 0
      public/index.html
  6. 1 3
      public/sdk.js
  7. 0 3
      src/api/aiSipCall/softPhone.js
  8. 0 44
      src/assets/callCenterPhoneBarSdk/ccPhoneBarSocket.js
  9. 5 37
      src/assets/callCenterPhoneBarSdk/phone-bar-ex.html
  10. 0 0
      src/assets/map/china.json
  11. 0 1
      src/components/Crontab/index.vue
  12. 133 134
      src/components/DeviceInfo/Report.vue
  13. 21 26
      src/components/Editor/wang.vue
  14. 0 1
      src/components/H5/FormWrapper.vue
  15. 1 1
      src/components/H5/config-item/common-config.vue
  16. 0 2
      src/components/H5/config-item/h5-chat-config-dialog.vue
  17. 0 1
      src/components/H5/config-item/h5-chat-config.vue
  18. 0 1
      src/components/H5/config-item/h5-text-config.vue
  19. 0 2
      src/components/H5/h5-chat.vue
  20. 0 4
      src/components/ImageUpload/index.vue
  21. 0 4
      src/components/LemonUI/components/chatmsg.vue
  22. 0 9
      src/components/LemonUI/components/chatrecords/basic.vue
  23. 0 8
      src/components/LemonUI/components/chatrecords/basic1.vue
  24. 0 6
      src/components/LemonUI/components/chatrecords/segrecords.vue
  25. 0 3
      src/components/LemonUI/components/index.vue
  26. 0 4
      src/components/LemonUI/components/records.vue
  27. 0 7
      src/components/LiveVideoUpload/index.vue
  28. 0 9
      src/components/LiveVideoUpload/single.vue
  29. 2 5
      src/components/Material/index.vue
  30. 0 3
      src/components/Material/single.vue
  31. 0 8
      src/components/VideoUpload/index.vue
  32. 0 2
      src/components/course/userCoursePeriod.vue
  33. 2 0
      src/components/iFrame/index.vue
  34. 2 0
      src/layout/components/InnerLink/index.vue
  35. 0 1
      src/layout/components/Navbar.vue
  36. 4 4
      src/store/modules/app.js
  37. 0 1
      src/store/modules/user.js
  38. 4 4
      src/store/store/modules/app.js
  39. 12 3
      src/utils/auth.js
  40. 5 9
      src/utils/call.js
  41. 0 12
      src/utils/cos.js
  42. 21 2
      src/utils/generator/js.js
  43. 2 1
      src/utils/jsencrypt.js
  44. 0 1
      src/utils/liveWS.js
  45. 0 2
      src/utils/obs.js
  46. 18 0
      src/utils/redirect.js
  47. 0 2
      src/utils/request.js
  48. 0 3
      src/utils/webSocket.js
  49. 0 1
      src/views/WechatLoginDialog.vue
  50. 0 56
      src/views/aiSipCall/aiSipCallManualOutbound.vue
  51. 0 1
      src/views/aiSipCall/aiSipCallOutboundCar.vue
  52. 0 1
      src/views/aiSipCall/aiSipCallPhone.vue
  53. 10 16
      src/views/calendar/myCalendar/index.vue
  54. 4 6
      src/views/chat/components/chatDatasetFile.vue
  55. 1 2
      src/views/company/aiModel/account/info.vue
  56. 14 15
      src/views/company/aiModel/inboundCallManage/index.vue
  57. 0 3
      src/views/company/companyConfig/miniappConfig.vue
  58. 0 2
      src/views/company/companyMoneyLogs/index.vue
  59. 0 1
      src/views/company/companyRecharge/doRecharge.vue
  60. 0 1
      src/views/company/companyRecharge/index.vue
  61. 5 6
      src/views/company/companySmsPackage/index.vue
  62. 6 9
      src/views/company/companyUser/card/addSms.vue
  63. 1 1
      src/views/company/companyUser/companyUserList.vue
  64. 0 10
      src/views/company/companyUser/index.vue
  65. 0 7
      src/views/company/companyUser/myCompanyUserIndex.vue
  66. 0 1
      src/views/company/companyUser/profile/index.vue
  67. 4 5
      src/views/company/companyVoiceCaller/index.vue
  68. 0 1
      src/views/company/companyVoicePackageOrder/buy.vue
  69. 0 7
      src/views/company/companyVoiceRobotic/index.vue
  70. 0 7
      src/views/company/companyVoiceRobotic/myIndex.vue
  71. 0 3
      src/views/company/companyWorkflow/design.vue
  72. 0 2
      src/views/company/companyWorkflow/index.vue
  73. 0 2
      src/views/company/companyWorkflow/myIndex.vue
  74. 0 2
      src/views/company/downloadAppCount/index.vue
  75. 1 5
      src/views/company/statistics/myVoiceLogs.vue
  76. 10 13
      src/views/company/statistics/smsLogs.vue
  77. 8 11
      src/views/company/statistics/voiceLogs.vue
  78. 93 106
      src/views/company/tcmScheduleReport/add.vue
  79. 19 25
      src/views/company/tcmScheduleReport/index.vue
  80. 5 9
      src/views/components/course/userCourseCatalogDetails.vue
  81. 0 1
      src/views/components/course/userCourseVideoDetails.vue
  82. 0 3
      src/views/course/Material/index.vue
  83. 0 5
      src/views/course/courseFinishTemp/index.vue
  84. 0 1
      src/views/course/courseRedPacketLog/index.vue
  85. 0 1
      src/views/course/courseRedPacketLog/myCourseRedPacketLog.vue
  86. 0 1
      src/views/course/courseUserStatistics/qw/index.vue
  87. 0 5
      src/views/course/courseWatchLog/index.vue
  88. 0 1
      src/views/course/courseWatchLog/qw/statistics.vue
  89. 0 1
      src/views/course/courseWatchLog/watchLog.vue
  90. 0 2
      src/views/course/sop/index.vue
  91. 0 6
      src/views/course/userCoursePeriod/index.vue
  92. 0 1
      src/views/course/userCoursePeriod/statistics.vue
  93. 0 1
      src/views/crm/components/AiTagPanel.vue
  94. 0 4
      src/views/crm/components/CustomerSelect.vue
  95. 0 5
      src/views/crm/components/CustomerSelectOlde.vue
  96. 4 7
      src/views/crm/components/addBatchSms.vue
  97. 0 14
      src/views/crm/components/addBusiness.vue
  98. 7 10
      src/views/crm/components/addSms.vue
  99. 3 5
      src/views/crm/components/aiCallVoiceLog.vue
  100. 0 4
      src/views/crm/components/assignUser.vue

+ 0 - 2
build/index.js

@@ -24,9 +24,7 @@ if (process.env.npm_config_preview || rawArgv.includes('--preview')) {
   )
 
   app.listen(port, function () {
-    console.log(chalk.green(`> Preview at  http://localhost:${port}${publicPath}`))
     if (report) {
-      console.log(chalk.green(`> Report at  http://localhost:${port}${publicPath}report.html`))
     }
 
   })

+ 1 - 0
empty-module.js

@@ -0,0 +1 @@
+module.exports = {}

+ 6 - 1
nginx.conf

@@ -20,6 +20,11 @@ http {
         root   /usr/share/nginx/html;
         index  index.html;
 
+        # 防点击劫持 / 基础安全响应头
+        add_header X-Frame-Options "SAMEORIGIN" always;
+        add_header Content-Security-Policy "frame-ancestors 'self';" always;
+        add_header X-Content-Type-Options "nosniff" always;
+
         # 关键:处理 VUE Router history 模式(避免刷新 404)
         location / {
             try_files $uri $uri/ /index.html;  # 所有路由指向 index.html
@@ -35,4 +40,4 @@ http {
         }
 
      }
-}
+}

+ 11 - 7
package.json

@@ -92,24 +92,27 @@
   "dependencies": {
     "@amap/amap-jsapi-loader": "^1.0.1",
     "@jridgewell/gen-mapping": "^0.3.5",
+    "@openim/wasm-client-sdk": "^3.8.3-patch.15.1",
     "@riophae/vue-treeselect": "0.4.0",
-    "axios": "0.18.1",
+    "axios": "1.8.2",
+    "browserify-zlib": "^0.2.0",
     "chart.js": "^2.9.4",
     "clipboard": "2.0.4",
     "compression-webpack-plugin": "^5.0.1",
     "core-js": "3.6.5",
     "cos-js-sdk-v5": "^1.10.1",
+    "crypto-browserify": "^3.12.1",
     "dayjs": "^1.11.13",
-    "echarts": "4.2.1",
-    "element-ui": "2.15.5",
+    "echarts": "5.5.1",
+    "element-ui": "2.15.14",
     "esdk-obs-browserjs": "^3.25.6",
     "file-saver": "2.0.1",
     "form-making": "^1.2.9",
     "fuse.js": "^3.4.4",
     "hls.js": "^1.6.13",
     "js-beautify": "1.10.2",
-    "js-cookie": "2.2.0",
-    "jsencrypt": "3.0.0-rc.1",
+    "js-cookie": "3.0.5",
+    "jsencrypt": "3.3.2",
     "lodash.clonedeep": "^4.5.0",
     "lodash.merge": "^4.6.2",
     "moment": "^2.29.4",
@@ -122,11 +125,12 @@
     "quill": "1.3.7",
     "screenfull": "4.2.0",
     "sortablejs": "1.8.4",
+    "stream-browserify": "^3.0.0",
     "stylus": "^0.54.7",
     "stylus-loader": "^3.0.2",
     "v-clipboard": "^2.2.3",
     "vod-js-sdk-v6": "^1.7.1-beta.1",
-    "vue": "2.6.10",
+    "vue": "2.7.16",
     "vue-clipboard2": "^0.3.1",
     "vue-count-to": "1.0.13",
     "vue-cropper": "0.4.9",
@@ -170,7 +174,7 @@
     "serve-static": "1.13.2",
     "svg-sprite-loader": "4.1.3",
     "svgo": "1.2.0",
-    "vue-template-compiler": "2.6.10"
+    "vue-template-compiler": "2.7.16"
   },
   "engines": {
     "node": ">=8.9",

+ 3 - 0
public/index.html

@@ -5,6 +5,9 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
     <meta name="renderer" content="webkit">
     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
+    <!-- 防点击劫持:优先以 nginx 响应头为准;此处作静态兜底 -->
+    <meta http-equiv="X-Frame-Options" content="SAMEORIGIN">
+    <meta http-equiv="Content-Security-Policy" content="frame-ancestors 'self'">
     <link rel="icon" href="<%= BASE_URL %>favicon.ico">
     <title><%= webpackConfig.name %></title>
     <script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&key=ONIBZ-44LLJ-QHYFI-KGG6Y-5ADJT-A7BIO&libraries=drawing"></script>

Plik diff jest za duży
+ 1 - 3
public/sdk.js


+ 0 - 3
src/api/aiSipCall/softPhone.js

@@ -532,7 +532,6 @@ export class WebPhone {
     this.emit('OnReconnectStatus', { isReconnecting: false, failed: false });
   }
   Start(reconnect, isReconnect = false) {
-    console.log(`[jsSip] 启动 ${reconnect ? '正常连接' : '禁用重连'} ${isReconnect ? '(重连模式)' : ''}`);
     this.reconnectEnabled = reconnect;
     if (this.ua) { try { if (this.ua.isRegistered()) this.ua.unregister(); this.ua.stop(); } catch (e) {} this.ua = null; }
     if (!isReconnect) this.resetReconnectState();
@@ -581,7 +580,6 @@ export class WebPhone {
       }
       interval = Math.min(interval, remainingTime);
     }
-    console.log(`[jsSip] ${Math.ceil(interval / 1000)}秒后重连 (第${this.reconnectAttempts}次)`);
     this.isReconnecting = true;
     this.emit('OnReconnectStatus', { isReconnecting: true, failed: false });
     this.reconnectTimerId = setTimeout(() => {
@@ -827,7 +825,6 @@ export class WebPhone {
       this._scheduleRemoteAudioSync();
     });
     session.on('ended', () => {
-      console.log('[SIP] session ended', session.direction);
       this.sessionClosed(true, '', session);
     });
     session.on('failed', (e) => {

+ 0 - 44
src/assets/callCenterPhoneBarSdk/ccPhoneBarSocket.js

@@ -223,7 +223,6 @@ function ccPhoneBarSocket() {
 			return;
 		}
 
-        console.log("callConfig:", JSON.stringify(this.callConfig));
         //线上enableWss: true 本地调试为false
         if(_cc.callConfig.enableWss){
             wsuri = 'wss://' + this.callConfig.ipccServer +
@@ -233,11 +232,9 @@ function ccPhoneBarSocket() {
             wsuri = 'ws://129.28.164.235:1081/call-center/websocketServer?' +
                 '&loginToken=' + this.callConfig.loginToken;
         }
-        console.log("ipccServer url: " + wsuri);
 	    var ipccServerIpAddr = this.callConfig.ipccServer.split(":");
 	    if(this.callConfig.enableWss &&  this.checkIP(ipccServerIpAddr)){
 	    	var tipsError = "ERROR! 启用了wss之后,必须使用域名访问websocketServer! " + this.callConfig.ipccServer;
-	    	console.log(tipsError);
 	    	alert(tipsError);
 		}
 	    if(this.callConfig.enableHeartBeat) {
@@ -265,7 +262,6 @@ function ccPhoneBarSocket() {
 	this.disconnect = function(){
 		// 检查 WebSocket 是否存在且连接正常
 		if (!ws || ws.readyState !== WebSocket.OPEN) {
-			console.log('WebSocket 未连接或已关闭,无需发送断开指令');
 			return;
 		}
 		var cmdInfo = {};
@@ -352,13 +348,11 @@ function ccPhoneBarSocket() {
 	this.connect = function() {
 		// 如果已经在连接中,直接返回
 		if (ws && ws.readyState === WebSocket.CONNECTING) {
-			console.log('[connect] WebSocket 正在连接中,请勿重复操作');
 			return;
 		}
 
 		// 先关闭旧的连接,避免重复登录
 		if (ws) {
-			console.log('[connect] 检测到旧连接存在,先关闭旧连接');
 			try {
 				ws.close();
 			} catch(e) {
@@ -370,14 +364,11 @@ function ccPhoneBarSocket() {
 		if ('WebSocket' in window)
 			ws = new WebSocket(wsuri);
 		else {
-			console.log('您的浏览器不支持 websocket,您无法使用本页面的功能!');
 			return;
 		}
 		//收到消息
 		ws.onmessage = function(evt) {
-			console.log("recv msg from websocket server: ", evt.data);
 			var msg = JSON.parse(evt.data);
-			console.log("parsed json data:", msg);
 			var resp_status = msg["status"];
 			switch(resp_status) {
 				case 200:
@@ -386,7 +377,6 @@ function ccPhoneBarSocket() {
 					_cc.callConfig.opnum = msg.object["opnum"];
 					_cc.callConfig.groupId = msg.object["groupId"];
 					_cc.callConfig.groups = msg.object["groups"];
-					console.log('ipcc 连接成功.', 'connected_ipcc_server');
 					// WebSocket 连接成功后自动设置为置忙状态,以便可以外呼
 					_cc.setStatus(ccPhoneBarSocket.agentStatusEnum.busy);
 					_cc.notifyAll(ccPhoneBarSocket.eventList.ws_connected, msg);
@@ -400,7 +390,6 @@ function ccPhoneBarSocket() {
 						_cc.unSubscribeAgentList();
 						// 重置呼叫标志
 						_cc.isCalling = false;
-						console.log("caller_hangup")
 					}
 					if (parseInt(resp_status) === parseInt(ccPhoneBarSocket.eventList.callee_hangup)) {
 						// 重置呼叫标志
@@ -408,23 +397,19 @@ function ccPhoneBarSocket() {
 					}
 					if (parseInt(resp_status) === parseInt(ccPhoneBarSocket.eventList.callee_answered)) {
 						_cc.setCallConnected(true);
-						console.log("callee_answered")
 					}
 					if (parseInt(resp_status) === parseInt(ccPhoneBarSocket.eventList.new_inbound_call)) {
 						_cc.setCallConnected(true);
-						console.log("new_inbound_call")
 					}
 					if (parseInt(resp_status) === parseInt(ccPhoneBarSocket.eventList.caller_answered) ||
 						parseInt(resp_status) === parseInt(ccPhoneBarSocket.eventList.callee_answered)) {
 						if (msg["object"]["callType"] === "audio") {
 							_cc.setCanSendVideoReInvite(true);
 							_cc.notifyAll(ccPhoneBarSocket.eventList.on_audio_call_connected, "audio call connected.")
-							console.log("current callType is audio.")
 						}
 						if (msg["object"]["callType"] === "video") {
 							_cc.setCanSendVideoReInvite(false);
 							_cc.notifyAll(ccPhoneBarSocket.eventList.on_video_call_connected, "video call connected.")
-							console.log("current callType is video.")
 						}
 					}
 
@@ -506,12 +491,9 @@ function ccPhoneBarSocket() {
 		ws.onclose = function(evt) {
 			isConnected = false;
 			_cc.notifyAll(ccPhoneBarSocket.eventList.ws_disconnected, "ipccserver 连接断开.");
-			console.log("ipcc连接断开.", "disconnected");
-			console.log(evt);
 			ws.close();
 		};
 		ws.onopen = function(evt) {
-			console.log("ipccserver websocket onopen...");
 		};
 	};
 
@@ -895,7 +877,6 @@ function ccPhoneBarSocket() {
 						   "&version=" + encodeURIComponent(_cc.callConfig["localHostProxyVersion"]) +
 						   "&webPhoneUrl=" + encodeURIComponent(_cc.callConfig["webPhoneUrl"]) +
 						   "";
-	  console.log("softPhoneUrl:", softPhoneUrl);
       _cc.iframe.src = softPhoneUrl;
 	};
 
@@ -1038,11 +1019,9 @@ function ccPhoneBarSocket() {
 
 	this.checkCallConfirmed = function () {
 		if(!_cc.getIsConnected()){
-			console.log('请先上线.');
 			return false;
 		}
 		if(!_cc.getCallConnected()){
-			console.log('当前没有通话.');
 			return false;
 		}
 		return true;
@@ -1056,7 +1035,6 @@ function ccPhoneBarSocket() {
 			return false;
 		}
 		if(typeof(mp4FilePath) == "undefined" || mp4FilePath.trim().length === 0){
-			console.log("Parameter mp4FilePath is missing!")
 			return false;
 		}
 		this.callControl(
@@ -1074,8 +1052,6 @@ function ccPhoneBarSocket() {
         	return false;
 		}
 		if(!_cc.getCanSendVideoReInvite()){
-			console.log('cant not send video reInvite. ',
-				'Precondition is:  Call is connected and  callType is audio.');
 			return false;
 		}
 		this.callControl(
@@ -1094,23 +1070,18 @@ function ccPhoneBarSocket() {
 	this.call = function(phoneNumber, callType, videoLevel){
 		// 防止重复调用
 		if(_cc.isCalling) {
-			console.log('正在呼叫中,请勿重复操作');
 			return;
 		}
 
 		if(typeof(videoLevel) == "undefined" || videoLevel.trim().length === 0){
 			videoLevel = ccPhoneBarSocket.videoLevels.HD.levelId;
-			console.log("auto default set videoLevel=", videoLevel);
 		}
 		if(typeof(callType) == "undefined" || callType.trim().length === 0){
 			callType = "audio";
-			console.log("auto default set callType=", callType);
 		}
 
-		console.log("call config videoLevel=" + videoLevel + ", callType=" + callType);
 
 		if(phoneNumber==null || phoneNumber.length===0) {
-			console.log('请输入外呼号码!');
 			return;
 		}
 		if(phoneNumber.trim().length < 3){
@@ -1118,7 +1089,6 @@ function ccPhoneBarSocket() {
 			return;
 		}
 		if(!_cc.getIsConnected()){
-			console.log('请先上线.');
 			return;
 		}
 		let outboundInfo = {
@@ -1139,7 +1109,6 @@ function ccPhoneBarSocket() {
 
 	this.callEx = function(phoneNumber){
 		if(phoneNumber == null || phoneNumber.length === 0) {
-			console.log('请输入外呼号码!');
 			return;
 		}
 		if(!_cc.getIsConnected()){
@@ -1252,7 +1221,6 @@ function ccPhoneBarSocket() {
 	// 更新状态显示
 	this.updatePhoneBar = function (msg, status_key) {
 		if(!_cc.callConfig.useDefaultUi){
-			console.log("callConfig.useDefaultUi = false , 已禁用默认ui工具条按钮.");
 			return;
 		}
 
@@ -1314,13 +1282,11 @@ function ccPhoneBarSocket() {
 		$("#unHoldBtnLi").hide();
 
 		if(!_cc.callConfig.useDefaultUi){
-			console.log("callConfig.useDefaultUi = false , 已禁用默认ui工具条按钮.");
 			return;
 		}
 
         $('#conferenceBtn').on('click', function () {
                 if(!_cc.getIsConnected()){
-                    console.log('请先上线.');
                     return;
                 }
                 var confObjId = document.getElementById("conference_area");
@@ -1353,7 +1319,6 @@ function ccPhoneBarSocket() {
 
 		$('#setBusySubList').on('change', function () {
 			 let itemValue = $('#setBusySubList').val();
-			 console.log('set busy subStatus', itemValue);
 			 _cc.setStatus(itemValue);
 		});
 
@@ -1415,7 +1380,6 @@ function ccPhoneBarSocket() {
 		$('#transferBtn').on('click', function () {
 			if ($(this).hasClass('on')) {
 				if(!_cc.getIsConnected()){
-					console.log('请先上线.');
 					return;
 				}
 				var transferArea = document.getElementById("transfer_area");
@@ -1441,7 +1405,6 @@ function ccPhoneBarSocket() {
 		$('#consultationBtn').on('click', function () {
 			if ($(this).hasClass('on')) {
 				if(!_cc.getIsConnected()){
-					console.log('请先上线.');
 					return;
 				}
 				var transferArea = document.getElementById("transfer_area");
@@ -1494,7 +1457,6 @@ function ccPhoneBarSocket() {
 		$(document).keyup(function (e) {
 			var key = e.which;
 			if (key === 27) {
-				console.log('按下了ESC键, 即将发送挂机指令.');
 				if(_cc.getIsConnected()){
 					if(_cc.callConfig["useDefaultUi"]) {
 						if ($('#hangUpBtn').hasClass('on')) {
@@ -1578,7 +1540,6 @@ function ccPhoneBarSocket() {
 
 		if(_cc.getCallConnected()) {
 			let tips = "是否把当前通话转换为会议 ?";
-			console.log(tips);
 			if(confirm(tips)) {
 				_cc.transferToConference(layOut, confTemplate, callType, customerName);
 			}else{
@@ -1701,7 +1662,6 @@ function ccPhoneBarSocket() {
 	 * @param customerName
 	 */
 	this.transferToConference = function (layOut, confTemplate, callType, customerName) {
-		console.log("try to transferToConference: ", layOut, confTemplate, callType, customerName);
 		_cc.callControl(
 			"transferToConference",
 			{
@@ -1721,7 +1681,6 @@ function ccPhoneBarSocket() {
 	 * @param callType 会议类型
 	 */
 	this.conferenceStart = function(layOut, confTemplate, callType) {
-		console.log("正常发起多方通话");
 		var cmd = {};
 		cmd.action = "conference";
 		cmd.body = {"method": "startconf", "args": {
@@ -1888,12 +1847,10 @@ function ccPhoneBarSocket() {
      */
     this.callMonitorStart = function(callId){
         if(callId == null || callId.length === 0) {
-            console.log('请提供待监听电话的 callId !');
             return;
         }
 
         if(!_cc.getIsConnected()){
-            console.log('请先上线.');
             return;
         }
 
@@ -1911,7 +1868,6 @@ function ccPhoneBarSocket() {
      */
     this.callMonitorEnd = function(){
         if(!_cc.getIsConnected()){
-            console.log('请先上线.');
             return;
         }
 

+ 5 - 37
src/assets/callCenterPhoneBarSdk/phone-bar-ex.html

@@ -8,7 +8,7 @@
     <link rel="stylesheet" href="page.css" />
     <script type="text/javascript" src="jquery-1.11.0.js"></script>
     <script type="text/javascript" src="ccPhoneBarSocket.js"></script>
-	  
+
     <script type="text/javascript">
         var _phoneBar = new ccPhoneBarSocket();
         var scriptServer = "192.168.67.217";
@@ -17,11 +17,9 @@
         var skillLevel = 9; //技能等级
         var groupId = 1; // 业务组id
         if(window.location.href.toString().indexOf("?") != -1){
-            console.log( ccPhoneBarSocket.utils );
             extnum = ccPhoneBarSocket.utils.getQueryParam("extNum");
             opnum = ccPhoneBarSocket.utils.getQueryParam("opNum");
             groupId = ccPhoneBarSocket.utils.getQueryParam("groupId");
-            console.log("extNum=", extnum, "opNum=", opnum);
         }
 
         function resetExtNumAndOpNum(ext, op, groupId) {
@@ -30,7 +28,7 @@
 
 		(function loadLoginToken(){
 
-             
+
             var getTokenUrl = "http://"+ scriptServer +":8880/call-center/create-token";
             var destUrl = getTokenUrl + "?extnum=" + extnum + "&opnum=" + opnum
             + "&groupId=" + groupId +"&skillLevel=" + skillLevel
@@ -78,7 +76,7 @@
 
 	</script>
 
-<script> 
+<script>
 var _callConfig = null;
 
 window.onload = function(){
@@ -125,17 +123,14 @@ window.onload = function(){
 
     // websocket通信对象断开事件;
     _phoneBar.on(ccPhoneBarSocket.eventListWithTextInfo.ws_disconnected.code, function(msg){
-        console.log(msg);
         _phoneBar.updatePhoneBar(msg, ccPhoneBarSocket.eventListWithTextInfo.ws_disconnected.code);
         $("#transfer_area").hide();
     });
 
     _phoneBar.on(ccPhoneBarSocket.eventList.OUTBOUND_START, function (msg) {
-        console.log('outbound_start',msg);
     });
 
     _phoneBar.on(ccPhoneBarSocket.eventListWithTextInfo.request_args_error.code, function(msg){
-        console.log(msg);
         _phoneBar.updatePhoneBar(msg, ccPhoneBarSocket.eventListWithTextInfo.request_args_error.code);
     });
 
@@ -147,22 +142,18 @@ window.onload = function(){
 
     //websocket连接成功
     _phoneBar.on(ccPhoneBarSocket.eventListWithTextInfo.ws_connected.code, function(msg){
-        console.log(msg);
         $("#loginTime").text(new Date().toLocaleTimeString());
         _phoneBar.updatePhoneBar(msg, ccPhoneBarSocket.eventListWithTextInfo.ws_connected.code);
     });
 
     _phoneBar.on(ccPhoneBarSocket.eventListWithTextInfo.callee_ringing.code, function(msg){
-        console.log(msg.content, "被叫振铃事件");
         _phoneBar.updatePhoneBar(msg, ccPhoneBarSocket.eventListWithTextInfo.callee_ringing.code);
     });
     _phoneBar.on(ccPhoneBarSocket.eventListWithTextInfo.caller_answered.code, function(msg){
-        console.log(msg, "主叫接通" );
         $("#agentStatus").text("通话中");
         _phoneBar.updatePhoneBar(msg, ccPhoneBarSocket.eventListWithTextInfo.caller_answered.code);
     });
     _phoneBar.on(ccPhoneBarSocket.eventListWithTextInfo.caller_hangup.code, function(msg){
-        console.log(msg, "主叫挂断");
         $("#agentStatus").text("通话结束");
         $("#reInviteVideoBtn").attr("disabled","disabled");
         $("#sendVideoFileBtn").attr("disabled","disabled");
@@ -171,43 +162,35 @@ window.onload = function(){
     });
 
     _phoneBar.on(ccPhoneBarSocket.eventListWithTextInfo.callee_answered.code, function(msg){
-        console.log(msg, "被叫接通");
         _phoneBar.updatePhoneBar(msg, ccPhoneBarSocket.eventListWithTextInfo.callee_answered.code);
     });
     _phoneBar.on(ccPhoneBarSocket.eventListWithTextInfo.callee_hangup.code, function(msg){
-        console.log(msg, "被叫挂断");
         $("#transfer_area").hide();
         _phoneBar.updatePhoneBar(msg, ccPhoneBarSocket.eventListWithTextInfo.callee_hangup.code);
     });
 
     _phoneBar.on(ccPhoneBarSocket.eventListWithTextInfo.status_changed.code, function(msg){
-        console.log("座席状态改变: " ,msg);
         $("#agentStatus").text(msg["object"]["text"]);
         _phoneBar.updatePhoneBar(msg, ccPhoneBarSocket.eventListWithTextInfo.status_changed.code);
     });
 
     _phoneBar.on(ccPhoneBarSocket.eventList.acd_group_queue_number, function(msg){
-        console.log("当前排队人数消息: " ,msg);
         $("#queueStat").text(msg["object"]["queue_number"]);
     });
 
     _phoneBar.on(ccPhoneBarSocket.eventList.on_audio_call_connected, function(msg){
-        console.log("音频通话已建立: " ,msg);
         $("#reInviteVideoBtn").removeAttr("disabled");
     });
 
     _phoneBar.on(ccPhoneBarSocket.eventList.customer_channel_hold, function (msg) {
-        console.log("客户通话已保持: " ,msg);
         $("#callStatus").text("通话已保持");
     });
 
     _phoneBar.on(ccPhoneBarSocket.eventList.customer_channel_unhold, function (msg) {
-        console.log("客户通话已接回." ,msg);
         $("#callStatus").text("客户通话已接回");
     });
 
     _phoneBar.on(ccPhoneBarSocket.eventList.on_video_call_connected, function(msg){
-        console.log("视频通话已建立: " ,msg);
         $("#sendVideoFileBtn").removeAttr("disabled");
     });
 
@@ -226,7 +209,6 @@ window.onload = function(){
 
     // 订阅的坐席状态列表发生改变
     _phoneBar.on(ccPhoneBarSocket.eventList.agent_status_data_changed, function (msg) {
-        console.log("agent_status_data_changed.");
         // 当 transfer_to_groupId 值改变时更新 transfer_to_member
         $(transferToGroupId).off("change");
         $(transferToGroupId).on("change", function () {
@@ -237,7 +219,6 @@ window.onload = function(){
 
     /* conference related events  */
     _phoneBar.on(ccPhoneBarSocket.eventList.CONFERENCE_MEMBER_ANSWERED, function (msg) {
-        console.log("会议成员已经接通.", msg);
         var memberPhone = $.trim(msg.object.phone);
         var memberItemId = "#conf_member_" + memberPhone;
 
@@ -249,7 +230,6 @@ window.onload = function(){
     });
 
     _phoneBar.on(ccPhoneBarSocket.eventList.CONFERENCE_MEMBER_VMUTED_SUCCESS, function (msg) {
-        console.log("会议成员已被禁用视频.", msg);
         var memberPhone = $.trim(msg.object.phone);
         var muteObj = $(".conf_vmute", $("#conf_member_" + memberPhone));
         muteObj.find("img")[0].src = "images/no_video.jpg";
@@ -260,7 +240,6 @@ window.onload = function(){
         } );
     });
     _phoneBar.on(ccPhoneBarSocket.eventList.CONFERENCE_MEMBER_UnVMUTED_SUCCESS, function (msg) {
-        console.log("会议成员启用视频成功.", msg);
         var memberPhone = $.trim(msg.object.phone);
         var muteObj = $(".conf_vmute", $("#conf_member_" + memberPhone));
         muteObj.find("img")[0].src = "images/video.jpg";
@@ -272,7 +251,6 @@ window.onload = function(){
     });
 
     _phoneBar.on(ccPhoneBarSocket.eventList.CONFERENCE_MEMBER_MUTED_SUCCESS, function (msg) {
-        console.log("会议成员已被禁言.", msg);
         var memberPhone = $.trim(msg.object.phone);
         var muteObj = $(".conf_mute", $("#conf_member_" + memberPhone));
         muteObj.find("img")[0].src = "images/unmute.jpg";
@@ -283,7 +261,6 @@ window.onload = function(){
         } );
     });
     _phoneBar.on(ccPhoneBarSocket.eventList.CONFERENCE_MEMBER_UNMUTED_SUCCESS, function (msg) {
-        console.log("会议成员解除禁言成功.", msg);
         var memberPhone = $.trim(msg.object.phone);
         var muteObj = $(".conf_mute", $("#conf_member_" + memberPhone));
         muteObj.find("img")[0].src = "images/mute.jpg";
@@ -295,7 +272,6 @@ window.onload = function(){
     });
 
     _phoneBar.on(ccPhoneBarSocket.eventList.CONFERENCE_MEMBER_HANGUP, function (msg) {
-        console.log("会议成员已经挂机.", msg);
         var memberPhone = $.trim(msg.object.phone);
         var memberItemId = "#conf_member_" + memberPhone;
 
@@ -313,24 +289,20 @@ window.onload = function(){
         }, 700); // 每0.5秒闪烁一次
 
         setTimeout(function () {
-            console.log("memberItemId=", memberItemId);
             clearInterval(blinkText);
             // $(memberItemId).remove(); //暂不自动移除参会者,由主持人手动操作处理;
         }, 5000);
     });
 
     _phoneBar.on(ccPhoneBarSocket.eventList.CONFERENCE_MODERATOR_ANSWERED, function (msg) {
-        console.log("电话会议开始,主持人已接通.", msg);
         onConferenceStart();
     });
 
     _phoneBar.on(ccPhoneBarSocket.eventList.CONFERENCE_MODERATOR_HANGUP, function (msg) {
-        console.log("电话会议结束,主持人已挂机.", msg);
         onConferenceEnd();
     });
 
     _phoneBar.on(ccPhoneBarSocket.eventList.CONFERENCE_TRANSFER_SUCCESS_FROM_EXISTED_CALL, function (msg) {
-        console.log("成功把通话转接到多人视频会议.", msg);
         onTransferToConferenceSuccess(msg);
     });
 
@@ -358,7 +330,6 @@ window.onload = function(){
 	//********************************************************************************************
     // 以下代码设置加密的参数: loginToken、extPassword、gatewayList;   在本页面的demo演示中需要调用服务器端接口获取密文字符串;
 
-	console.log('loginToken = ',loginToken);
 	if(typeof(loginToken) != "undefined") {
         _callConfig["loginToken"] = loginToken;
     } else{
@@ -366,7 +337,6 @@ window.onload = function(){
 	    return;
     }
 
-    console.log('_phoneEncryptPassword = ',_phoneEncryptPassword);
     if(typeof(_phoneEncryptPassword) != "undefined") {
         _callConfig["extPassword"] = _phoneEncryptPassword;
     } else{
@@ -374,7 +344,6 @@ window.onload = function(){
         return;
     }
 
-    console.log('_configGatewayList = ', _configGatewayList);
     if(typeof(_configGatewayList) != "undefined" && _callConfig["gatewayEncrypted"]) {
         //_callConfig["gatewayList"] = _configGatewayList;
     } else{
@@ -422,7 +391,6 @@ function onTransferToConferenceSuccess(msg) {
     //界面显示成功转接到视频会议电话
     var phone = msg.object.phone;
     var name = msg.object.phone;
-    console.log("onTransferToConferenceSuccess:", msg);
     _phoneBar.conferenceAddMemberFromExistCall(name, phone);
 }
 
@@ -447,7 +415,7 @@ function onTransferToConferenceSuccess(msg) {
 <td width="70%">
 <div>
     <div class="head_dial" style="padding-left: 10px; ">
-	     
+
         <dl class="dial">
             <dt>
                 <label for="ccphoneNumber"></label><input type="text" name="ccphoneNumber" id="ccphoneNumber" placeholder="输入电话号码" class="tel_txt" />
@@ -764,4 +732,4 @@ function onTransferToConferenceSuccess(msg) {
 </script>
 
 </body>
-</html>
+</html>

Plik diff jest za duży
+ 0 - 0
src/assets/map/china.json


+ 0 - 1
src/components/Crontab/index.vue

@@ -177,7 +177,6 @@ export default {
       "updateCrontabValue", name, value, from;
       this.crontabValueObj[name] = value;
       if (from && from !== name) {
-        console.log(`来自组件 ${from} 改变了 ${name} ${value}`);
         this.changeRadio(name, value);
       }
     },

+ 133 - 134
src/components/DeviceInfo/Report.vue

@@ -16,7 +16,7 @@
           ></el-date-picker>
         </div>
       </div>
-  
+
       <el-card class="report-card">
         <div class="progress-section">
           <div class="progress-container">
@@ -27,7 +27,7 @@
             <div class="health-status">{{ healthStatus }}</div>
             <div class="health-description">{{ healthDesc }}</div>
           </div>
-          
+
           <div class="health-metrics-container">
             <div class="health-metrics-row">
               <div class="metric-item">
@@ -49,7 +49,7 @@
                 </div>
               </div>
             </div>
-            
+
             <div class="health-metrics-row">
               <div class="metric-item">
                 <div class="metric-data">
@@ -70,7 +70,7 @@
                 </div>
               </div>
             </div>
-            
+
             <div class="health-metrics-row">
               <div class="metric-item">
                 <div class="metric-data">
@@ -93,11 +93,11 @@
             </div>
           </div>
         </div>
-  
+
         <!-- 健康数据 (Health Data) Section -->
         <div class="health-data-section">
           <div class="section-title">健康数据</div>
-          
+
           <!-- 血糖趋势 (Blood Sugar Trend) -->
           <div class="trend-chart">
             <div class="trend-title">血糖趋势</div>
@@ -106,7 +106,7 @@
             <div class="trend-advice">
             </div>
           </div>
-          
+
           <!-- 尿酸趋势 (Uric Acid Trend) -->
           <div class="trend-chart">
             <div class="trend-title">尿酸趋势</div>
@@ -183,11 +183,11 @@
               </div>
             </div>
           </div>
-          
-         
+
+
         </div>
-  
-        
+
+
         <div class="health-archive-section">
           <div class="section-title">健康档案</div>
           <div class="archive-items">
@@ -244,13 +244,13 @@
             </div>
           </div>
         </div>
-        
+
         <!-- AI舌诊 (AI Tongue Diagnosis) Section -->
         <div class="ai-diagnosis-section">
           <div class="section-title">AI舌诊</div>
           <div class="date-selector-tabs">
-            <div 
-              v-for="date in weekDates" 
+            <div
+              v-for="date in weekDates"
               :key="date"
               :class="['date-tab', selectedDiagnosisDate === date ? 'active' : '']"
               @click="selectedDiagnosisDate = date"
@@ -258,15 +258,15 @@
               {{ date }}
             </div>
           </div>
-          
+
           <div class="diagnosis-content" v-if="tongueData">
             <div class="diagnosis-time">检测时间 {{ tongueData.createTime || '未知时间' }}</div>
-            
+
             <div class="diagnosis-result">
               <div class="diagnosis-label">您属于</div>
               <div class="diagnosis-type">{{ tongueData.typeName || '未知体质' }}</div>
             </div>
-            
+
             <div class="diagnosis-section">
               <div class="diagnosis-section-title">舌苔特征</div>
               <div class="diagnosis-feature">
@@ -280,12 +280,12 @@
                 <div class="feature-description">{{ tongueData.shemianDesc || '未知' }}</div>
               </div>
             </div>
-            
+
             <div class="diagnosis-section">
               <!-- <div class="diagnosis-section-title">体质解析</div> -->
-              <div 
-                class="diagnosis-analysis" 
-                v-for="(item, index) in tongueData.typeJsonObj" 
+              <div
+                class="diagnosis-analysis"
+                v-for="(item, index) in tongueData.typeJsonObj"
                 :key="index"
               >
                 <div class="diagnosis-section-title">{{ item.name }}</div>
@@ -300,13 +300,13 @@
       </el-card>
     </div>
   </template>
-  
+
   <script>
   import * as echarts from 'echarts';
   import {getUserHealthInfoByDeviceId,queryHealthReport,queryGlucoseList,queryUaList,queryPressureList,queryHrList,querySpo2List,querySleepList,queryTongueList} from "@/api/watch/deviceInfo";
   export default {
     props: {
-        // detailsType: { 
+        // detailsType: {
         //     type: Boolean,
         //     default: false
         // },
@@ -366,7 +366,7 @@
         bloodSugarData: {
           values: []
         },
-       
+
         uricAcidData: {
           values: [
           ]
@@ -440,7 +440,7 @@
         endOfWeek.setDate(date.getDate() - (date.getDay() || 7) + 7); // 如果是周日,getDay() 返回 0,需要加 7
         // endOfWeek.setDate(date.getDate() - date.getDay() + 6);
         endOfWeek.setHours(23, 59, 59, 999);
-       
+
         this.startTime= startOfWeek,
         this.endTime=  endOfWeek
       },
@@ -450,7 +450,7 @@
           // 设置身高体重
           this.height = this.userInfo.height || '--';
           this.weight = this.userInfo.weight || '--';
-          
+
           // 计算BMI
           this.calculateBMI();}
       },
@@ -460,10 +460,10 @@
           // BMI = 体重(kg) / 身高(m)²
           const heightInMeters = parseFloat(this.height) / 100;
           const weightInKg = parseFloat(this.weight);
-          
+
           if (!isNaN(heightInMeters) && !isNaN(weightInKg) && heightInMeters > 0) {
             this.bmi = (weightInKg / (heightInMeters * heightInMeters)).toFixed(1);
-            
+
             // 设置BMI状态
             if (this.bmi < 18.5) {
               this.bmiStatus = '偏瘦';
@@ -530,7 +530,7 @@
             this.bloodSugarData = {
               values: values
             };
-        
+
           } else {
             this.bloodSugarData = {
               values: []
@@ -567,7 +567,7 @@
               return [timestamp, val, item.createTime,color];
             });
             this.uricAcidData.values = values;
-        
+
           } else {
             this.uricAcidChart.values = [];
           }
@@ -614,7 +614,7 @@
               return [timestamp, val, item.createTime,color];
             });
             this.bloodOxygenData.values = values;
-        
+
           } else {
             this.bloodOxygenData.values = [];
           }
@@ -640,7 +640,7 @@
             this.heartRateData = {
               values: values
             };
-           
+
           } else {
             this.heartRateData = {
               values: []
@@ -654,7 +654,7 @@
         }
       },
 
-      
+
       async queryPressureData() {
         try{
           const params = {
@@ -664,7 +664,7 @@
           };
           const response = await queryPressureList(params);
           if(response.data && response.data.length > 0){
-            
+
 
             const sbp = response.data.map((item) => ({
               value: [
@@ -727,12 +727,11 @@
             userId: this.userInfo.userId,
             createDay: this.formatCreateDay(this.selectedDiagnosisDate),
           };
-          
+
           const response = await queryTongueList(params);
           if(response && response.rows.length > 0){
             this.tongueData = response.rows[0]
             this.tongueData.typeJsonObj = JSON.parse(this.tongueData.typeJson || '[]')
-            console.log(this.tongueData)
           } else {
             this.tongueData = null;
           }
@@ -758,12 +757,12 @@
         }
       },
 
-        
+
       handleDateChange(date) {
         this.selectedDate = date || this.parseTime(new Date(), "{y}-{m}-{d}");
         this.getDetailsData();
       },
-     
+
       initBloodSugarChart() {
         const chartDom = this.$refs.bloodSugarChart;
         this.bloodSugarChart = echarts.init(chartDom);
@@ -856,9 +855,9 @@
             }
           ]
         };
-        
+
         this.bloodSugarChart.setOption(option);
-        
+
         // 响应式调整
         window.addEventListener('resize', () => {
           this.bloodSugarChart.resize();
@@ -925,7 +924,7 @@
                 show: false,
               },
           },
-          
+
           series: [
               {
                   name: 'sbp(mmgh)',
@@ -946,11 +945,11 @@
                   data: this.bloodPressureData.hr
               }
           ]
-          
+
         };
-        
+
         this.bloodPressureChart.setOption(option);
-        
+
         // 响应式调整
         window.addEventListener('resize', () => {
           this.bloodPressureChart.resize();
@@ -969,7 +968,7 @@
             time:item[2]
           };
         });
-        
+
         const option = {
           tooltip: {
             trigger: 'item',
@@ -1031,9 +1030,9 @@
             }
           ]
         };
-        
+
         this.uricAcidChart.setOption(option);
-        
+
         // 响应式调整
         window.addEventListener('resize', () => {
           if (this.uricAcidChart) {
@@ -1130,9 +1129,9 @@
             }
           ]
         };
-        
+
         this.heartRateChart.setOption(option);
-        
+
         // 响应式调整
         window.addEventListener('resize', () => {
           this.heartRateChart.resize();
@@ -1151,7 +1150,7 @@
             time:item[2]
           };
         });
-        
+
         const option = {
           tooltip: {
             trigger: 'item',
@@ -1210,9 +1209,9 @@
             }
           ]
         };
-        
+
         this.bloodOxygenChart.setOption(option);
-        
+
         // 响应式调整
         window.addEventListener('resize', () => {
           if (this.bloodOxygenChart) {
@@ -1294,9 +1293,9 @@
           },
           ]
         };
-        
+
         this.sleepChart.setOption(option);
-        
+
         // 响应式调整
         window.addEventListener('resize', () => {
           this.sleepChart.resize();
@@ -1346,7 +1345,7 @@
             },
           });
         }
-        
+
         if (this.uricAcidChart) {
           // 更新尿酸图表数据
           const data = this.uricAcidData.values.map((item, index) => {
@@ -1358,7 +1357,7 @@
               time:item[2]
             };
           });
-          
+
           this.uricAcidChart.setOption({
             series: [
               {
@@ -1395,7 +1394,7 @@
               time:item[2]
             };
           });
-          
+
           this.bloodOxygenChart.setOption({
             series: [
               {
@@ -1409,7 +1408,7 @@
             },
           });
         }
-       
+
         if (this.sleepChart) {
           const chartData = this.sleepData.map((item, index) => {
             return {
@@ -1443,7 +1442,7 @@
     beforeDestroy() {
       // 清除事件监听
       window.removeEventListener('resize', this.resizeHandler);
-      
+
       // 销毁图表实例
       if (this.bloodSugarChart) {
         this.bloodSugarChart.dispose();
@@ -1472,9 +1471,9 @@
     }
   };
   </script>
-  
+
   <style scoped lang="scss">
-  
+
   /* 确保内容不会因为隐藏滚动条而被截断 */
   .weekly-report {
     padding: 20px;
@@ -1483,82 +1482,82 @@
     overflow-y: auto;
     overflow-x: hidden;
   }
-  
+
   .report-header {
     display: flex;
     justify-content: space-between;
     align-items: center;
     margin-bottom: 20px;
   }
-  
+
   .report-title {
     display: flex;
     align-items: center;
     font-size: 18px;
     font-weight: bold;
     color: #2284ff;
-    
+
     .title-icon {
       width: 13px;
       height: 20px;
       margin-right: 10px;
     }
   }
-  
+
   .report-card {
     margin-bottom: 20px;
     border-radius: 8px;
     box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
     overflow: hidden; /* 确保内容不会溢出卡片 */
   }
-  
+
   .progress-section {
     display: flex;
     flex-direction: column;
     align-items: center;
     padding: 20px 0;
-    
+
     @media (min-width: 768px) {
       flex-direction: row;
       justify-content: space-around;
       align-items: flex-start;
     }
   }
-  
+
   .progress-container {
     position: relative;
     margin-bottom: 20px;
     display: flex;
     flex-direction: column;
     align-items: center;
-    
+
     @media (min-width: 768px) {
       margin-bottom: 0;
     }
-    
+
     .progress-info {
       position: absolute;
       top: 50%;
       left: 50%;
       transform: translate(-50%, -50%);
       text-align: center;
-      
+
       .progress-value {
         font-size: 24px;
         font-weight: bold;
         color: #FF9F43;
-        
+
         .progress-unit {
           font-size: 14px;
         }
       }
-      
+
       .progress-label {
         font-size: 12px;
         color: #606266;
       }
     }
-    
+
     .health-status {
       margin-top: 10px;
       font-size: 16px;
@@ -1575,23 +1574,23 @@
     padding: 0 10px;
   }
 }
-  
+
   .health-metrics-container {
     display: flex;
     flex-direction: column;
     width: 100%;
-    
+
     @media (min-width: 768px) {
       width: 60%;
     }
   }
-  
+
   .health-metrics-row {
     display: flex;
     justify-content: space-between;
     margin-bottom: 10px;
   }
-  
+
   .metric-item {
     display: flex;
     justify-content: space-between;
@@ -1601,24 +1600,24 @@
     padding: 10px 15px;
     width: 48%;
     box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.05);
-    
+
     .metric-data {
       .metric-value {
         font-size: 16px;
         font-weight: bold;
-        
+
         .metric-unit {
           font-size: 12px;
           font-weight: normal;
         }
       }
-      
+
       .metric-label {
         font-size: 12px;
         color: #606266;
       }
     }
-    
+
     .metric-icon {
       width: 32px;
       height: 32px;
@@ -1626,34 +1625,34 @@
       display: flex;
       justify-content: center;
       align-items: center;
-      
+
       i {
         font-size: 16px;
         color: white;
       }
-      
+
       &.green {
         background-color: #4CD964;
       }
-      
+
       &.blue {
         background-color: #2284FF;
       }
-      
+
       &.orange {
         background-color: #FF9F43;
       }
-      
+
       &.red {
         background-color: #FF6B6B;
       }
-      
+
       &.purple {
         background-color: #8A70D6;
       }
     }
   }
-  
+
   .section-title {
     font-size: 16px;
     font-weight: bold;
@@ -1661,12 +1660,12 @@
     color: #303133;
     padding-left: 10px;
   }
-  
+
   /* 健康数据部分 */
   .health-data-section {
     padding: 0 10px;
   }
-  
+
   .trend-chart {
     background-color: #fff;
     border-radius: 8px;
@@ -1674,25 +1673,25 @@
     margin-bottom: 20px;
     box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.05);
   }
-  
+
   .trend-title {
     font-size: 14px;
     font-weight: bold;
     color: #303133;
   }
-  
+
   .trend-subtitle {
     font-size: 12px;
     color: #909399;
     margin-bottom: 10px;
   }
-  
+
   .line-chart-container,
   .bar-chart-container {
     height: 250px;
     width: 100%;
   }
-  
+
   .trend-advice {
     font-size: 12px;
     color: #606266;
@@ -1701,13 +1700,13 @@
     border-radius: 4px;
     margin-top: 10px;
   }
-  
+
   .legend {
     display: flex;
     flex-wrap: wrap;
     margin-top: 10px;
   }
-  
+
   .legend-item {
     display: flex;
     align-items: center;
@@ -1715,7 +1714,7 @@
     font-size: 12px;
     color: #606266;
   }
-  
+
   .legend-color {
     display: inline-block;
     width: 12px;
@@ -1723,22 +1722,22 @@
     margin-right: 5px;
     border-radius: 2px;
   }
-  
+
   .health-tabs {
     margin-top: 20px;
   }
-  
+
   /* 健康档案部分 */
   .health-archive-section {
     padding: 0 10px;
   }
-  
+
   .archive-items {
     display: flex;
     flex-direction: column;
     gap: 15px;
   }
-  
+
   .archive-item {
     display: flex;
     background-color: #fff;
@@ -1746,7 +1745,7 @@
     padding: 15px;
     box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.05);
   }
-  
+
   .archive-icon {
     width: 36px;
     height: 36px;
@@ -1756,57 +1755,57 @@
     align-items: center;
     margin-right: 15px;
     flex-shrink: 0;
-    
+
     i {
       font-size: 18px;
       color: white;
     }
-    
+
     &.warning {
       background-color: #FF6B6B;
     }
-    
+
     &.analysis {
       background-color: #4CD964;
     }
-    
+
     &.suggestion {
       background-color: #2284FF;
     }
-    
+
     &.attention {
       background-color: #FF9F43;
     }
   }
-  
+
   .archive-content {
     flex: 1;
   }
-  
+
   .archive-title {
     font-size: 14px;
     font-weight: bold;
     color: #303133;
     margin-bottom: 5px;
   }
-  
+
   .archive-text {
     font-size: 12px;
     color: #606266;
     line-height: 1.5;
   }
-  
+
   /* AI舌诊部分 */
   .ai-diagnosis-section {
     padding: 0 10px 20px;
   }
-  
+
   .date-selector-tabs {
     display: flex;
     overflow-x: auto;
     margin-bottom: 15px;
   }
-  
+
   .date-tab {
     padding: 8px 15px;
     background-color: #f5f7fa;
@@ -1815,48 +1814,48 @@
     font-size: 14px;
     cursor: pointer;
     white-space: nowrap;
-    
+
     &.active {
       background-color: #FF9F43;
       color: white;
     }
   }
-  
+
   .diagnosis-content {
     background-color: #fff;
     border-radius: 8px;
     padding: 15px;
     box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.05);
   }
-  
+
   .diagnosis-time {
     text-align: center;
     font-size: 14px;
     color: #909399;
     margin-bottom: 15px;
   }
-  
+
   .diagnosis-result {
     text-align: center;
     margin-bottom: 20px;
   }
-  
+
   .diagnosis-label {
     font-size: 14px;
     color: #606266;
   }
-  
+
   .diagnosis-type {
     font-size: 20px;
     font-weight: bold;
     color: #FF6B6B;
     margin-top: 5px;
   }
-  
+
   .diagnosis-section {
     margin-bottom: 20px;
   }
-  
+
   .diagnosis-section-title {
     font-size: 16px;
     font-weight: bold;
@@ -1864,7 +1863,7 @@
     margin-bottom: 10px;
     position: relative;
     padding-left: 10px;
-    
+
     &:before {
       content: '';
       position: absolute;
@@ -1877,13 +1876,13 @@
       border-radius: 2px;
     }
   }
-  
+
   .diagnosis-feature {
     margin-bottom: 10px;
     display: flex;
     flex-wrap: wrap;
   }
-  
+
   .feature-dot {
     width: 8px;
     height: 8px;
@@ -1892,51 +1891,51 @@
     margin-right: 8px;
     margin-top: 6px;
   }
-  
+
   .feature-title {
     font-size: 14px;
     font-weight: bold;
     color: #303133;
     margin-right: 10px;
   }
-  
+
   .feature-description {
     font-size: 12px;
     color: #606266;
     flex: 1;
   }
-  
+
   .diagnosis-analysis {
     margin-bottom: 15px;
   }
-  
+
   .analysis-title {
     font-size: 14px;
     font-weight: bold;
     color: #303133;
     margin-bottom: 5px;
   }
-  
+
   .analysis-content {
     font-size: 12px;
     color: #606266;
     line-height: 1.5;
   }
-  
+
   .diagnosis-characteristics {
     margin-bottom: 10px;
   }
-  
+
   .characteristics-title {
     font-size: 13px;
     font-weight: bold;
     color: #303133;
     margin-bottom: 3px;
   }
-  
+
   .characteristics-content {
     font-size: 12px;
     color: #606266;
     line-height: 1.5;
   }
-  </style>
+  </style>

+ 21 - 26
src/components/Editor/wang.vue

@@ -1,22 +1,22 @@
-<template>  
+<template>
     <div>
       <div  ref='editor1' class="myedit"></div>
-    </div> 
-</template>  
-  
-<script>  
-  import E from 'wangeditor'  
-  export default {  
-    name: 'editoritem',  
-    data() {  
+    </div>
+</template>
+
+<script>
+  import E from 'wangeditor'
+  export default {
+    name: 'editoritem',
+    data() {
       return {
         uploadUrl:process.env.VUE_APP_BASE_API+"/common/uploadWang",
         editor: null
-      }  
+      }
     },
     created() {
-       
-      
+
+
     },
     beforeDestroy() {
       // 销毁编辑器
@@ -24,7 +24,7 @@
         this.editor.destroy()
         this.editor = null
       }
-      
+
     },
     methods:{
       initEditor(){
@@ -64,7 +64,6 @@
               'redo',
           ]
           this.editor.config.onchange = function (newHtml) {
-            console.log(newHtml)
             that.$emit("on-text-change", newHtml);
           }
           this.editor.config.pasteFilterStyle = false
@@ -74,7 +73,7 @@
                 // 上传图片之前
                 before: function(xhr) {
                     //console.log(xhr)
-                    
+
                 },
                 // 图片上传并返回了结果,图片插入已成功
                 success: function(xhr) {
@@ -82,11 +81,9 @@
                 },
                 // 图片上传并返回了结果,但图片插入时出错了
                 fail: function(xhr, editor, resData) {
-                    console.log('fail', resData)
                 },
                 // 上传图片出错,一般为 http 请求的错误
                 error: function(xhr, editor, resData) {
-                    console.log('error', xhr, resData)
                 },
                 // 上传图片超时
                 timeout: function(xhr) {
@@ -95,12 +92,10 @@
                 // 图片上传并返回了结果,想要自己把图片插入到编辑器中
                 // 例如服务器端返回的不是 { errno: 0, data: [...] } 这种格式,可使用 customInsert
                 customInsert: function(insertImg, result, editor) {
-                      console.log(result);
                       // 图片上传并返回结果,自定义插入图片的事件(而不是编辑器自动插入图片!!!)
                       // insertImg 是插入图片的函数,editor 是编辑器对象,result 是服务器端返回的结果
                       // 举例:假如上传图片成功后,服务器端返回的是 {url:'....'} 这种格式,即可这样插入图片:
                       var url =   result.data[0].url
-                      console.log(url);
                       insertImg(url)
                       // result 必须是一个 JSON 格式字符串!!!否则报错
                 }
@@ -119,13 +114,13 @@
         else{
           this.editor.txt.html(text);
         }
-        
+
       },
      }
-   
-  }  
-</script>  
-  
+
+  }
+</script>
+
 <style scoped>
 .toolbar {
   border: 1px solid #ccc;
@@ -140,5 +135,5 @@
 .w-e-text-container{
   z-index: 1 !important;
 }
- 
-</style>
+
+</style>

+ 0 - 1
src/components/H5/FormWrapper.vue

@@ -112,7 +112,6 @@ export default {
   },
   methods: {
     updateFormConfig(newConfig) {
-      console.log("更新表单配置...");
       // Update form config
       this.$emit('update:form', newConfig);
     },

+ 1 - 1
src/components/H5/config-item/common-config.vue

@@ -63,7 +63,7 @@ export default {
             }
           })
         })
-        .catch(err=>console.log(err));
+        .catch(err=>{});
     },
     updateConfig(key, value) {
       this.$emit('update:config', { ...this.config, [key]: value });

+ 0 - 2
src/components/H5/config-item/h5-chat-config-dialog.vue

@@ -82,7 +82,6 @@ export default {
       immediate: true,
       handler(newVal) {
         this.localDialog = { ...newVal }
-        console.log('localDialog', this.localDialog)
       }
     },
     visible: {
@@ -116,7 +115,6 @@ export default {
         this.$set(this.localDialog, 'options', []);
       }
       this.localDialog.options.push({ text: '', answer: '' ,id: this.localDialog.options.length});
-      console.log(this.localDialog)
     },
     saveAndReturn() {
       // this.$emit('update:dialog', this.localDialog);

+ 0 - 1
src/components/H5/config-item/h5-chat-config.vue

@@ -207,7 +207,6 @@ export default {
       this.currentMsg = this.localConfig.agentMsg[index]
       this.dialogConfigVisible = true
       this.$set(this.$data, index, this.currentMsg)
-      console.log(this.currentMsg)
     },
     updateDialogData(data) {
       this.localConfig.agentMsg[this.currentDialogIndex] = data

+ 0 - 1
src/components/H5/config-item/h5-text-config.vue

@@ -116,7 +116,6 @@ export default {
     'style.fontSize':{
       handler(val){
         if(val){
-          console.log(val)
           this.$set(this.config.style,'fontSize',val+'px');
         }
       },

+ 0 - 2
src/components/H5/h5-chat.vue

@@ -45,7 +45,6 @@ export default {
     }
   },
   created() {
-    console.log("Messages:", this.messages);
   },
   data() {
     return {
@@ -59,7 +58,6 @@ export default {
   watch: {
     config: {
       handler(newVal) {
-        console.log("Messages updated:", newVal);
         this.messages = newVal.messages;
       },
       deep: true

+ 0 - 4
src/components/ImageUpload/index.vue

@@ -136,7 +136,6 @@ export default {
     },
     // 上传成功回调
     handleUploadSuccess(res) {
-      console.log(res)
       this.fileList.push({ name: res.url, url: res.url });
       this.$emit("input", this.listToString(this.fileList));
       this.loading.close();
@@ -198,8 +197,6 @@ export default {
               if (compressedFile.size / 1024 / 1024 > maxMb) {
                 fail(`图片压缩后仍大于${maxMb}MB`);
               } else {
-                console.log(`图片压缩成功,最终质量为: ${this.finalQuality.toFixed(2)}`);
-                console.log(`最终内存大小为: ${(compressedFile.size/1024).toFixed(2)}KB`);
                 resolve(compressedFile);
               }
             }).catch((err) => {
@@ -319,7 +316,6 @@ export default {
     },
     // 预览
     handlePictureCardPreview(file) {
-      console.log(file)
       this.dialogImageUrl = file.url;
       this.dialogVisible = true;
     },

+ 0 - 4
src/components/LemonUI/components/chatmsg.vue

@@ -467,7 +467,6 @@ export default {
                   simple: true,
                 },
                 () => {
-                  console.log("qxj contact click");
                   this.currentNewContactId=contact.id;
                   //this.changeContact(contact.id);
                 },
@@ -638,7 +637,6 @@ export default {
       if (!Array.isArray(data)) data = [data];
       allMessages[contactId] = allMessages[contactId] || [];
       allMessages[contactId][type](...data);
-      console.log("qxj _addMessage type:"+type);
     },
     /**
      * 设置最新消息DOM
@@ -721,7 +719,6 @@ export default {
       const draft = this.CacheDraft.get(contactId);
       if (draft) {
         const currentContent = this.findConversation(contactId).lastContent;
-        console.log("qxj currentContent:"+currentContent+",lastContent:"+JSON.stringify(draft));
         //if (currentContent.indexOf('<span style="color:red;">[草稿]</span>') === 0) {
           this.updateContact({
             id: contactId,
@@ -994,7 +991,6 @@ export default {
             lastContent: "",
           },conversation
         );
-       console.log("qxj insConversation:"+JSON.stringify(insConversation));
        this.conversations.unshift(insConversation);
       //  this.updateContact(insConversation);
        //this.conversations.push(insConversation);

+ 0 - 9
src/components/LemonUI/components/chatrecords/basic.vue

@@ -140,7 +140,6 @@
        },
        methods: {
                 handleTabClick(tab, event){
-                    console.log(tab,tab.index);
                     const sIMUI = this.$refs["sIMUI"+tab.index];
                     sIMUI.open();
                 },
@@ -151,7 +150,6 @@
                         sIMUI.openSearch(value);
                    }else{
                    }
-                   console.log("qxj serchInput:"+JSON.stringify(value));
                 },
                 /** 搜索按钮操作 */
                 handleQuery() {
@@ -164,7 +162,6 @@
                     this.dialogContextVisible=true;
                     setTimeout(() => {
                          const sIMUI = this.$refs["sIMUI4"];
-                         console.log("点击了上下文", sIMUI);
                          sIMUI.openContextBox(message);
                     }, 50);
                 },
@@ -263,7 +260,6 @@
                     });
                 },
                 handleChangeConversation(conversation, instance) {
-                    console.log("qxj ChangeConversation:"+JSON.stringify(conversation));
                     if (!pages[conversation.conversationId]){
                         pages[conversation.conversationId] =1;
                     }
@@ -322,7 +318,6 @@
                     }
                 },
                 handleMenuAvatarClick() {
-                console.log("Event:menu-avatar-click");
                 },
                 //聊天工具栏点击图片
                 handleImageClick() {
@@ -330,7 +325,6 @@
                 },
                 //选择图片框确定按钮回调
                 handlePickImageDone(data){
-                    console.log("handlePickImageDone:"+JSON.stringify(data));
                     this.pickUploadImgData=data;
                     const IMUI = this.$refs.IMUI;
                     IMUI._handleRemoteImage(data.url);
@@ -343,7 +337,6 @@
                     player && player.play()
                 },
                 handleMessageClick(e, key, message, instance) {
-                    console.log("点击了消息", e, key, message);
                     //console.log("qxj message:"+JSON.stringify(message));
                     if(message.type=="image"){
                         var url=!!message.url?message.url:message.content;
@@ -434,7 +427,6 @@
                         ...this.user,
                     };
                     IMUI.appendMessage(message, true);
-                    console.log("🚀 ~ file: App.vue ~ line 1508 ~ appendMessage ~ message", message)
                 },
                 appendEventMessage() {
                     const { IMUI } = this.$refs;
@@ -470,7 +462,6 @@
                      });
                 },
                 handleChangeMenu() {
-                     console.log("Event:change-menu");
                 },
                 openCustomContainer() {
 

+ 0 - 8
src/components/LemonUI/components/chatrecords/basic1.vue

@@ -197,11 +197,9 @@
                 open(conversationId,conversationData){
                      this.conversationData=conversationData;
                      this.queryParams.conversationId=conversationId;
-                     console.log("qxj conversationId:"+conversationId);
                      this.dialogVisible=true;
                       setTimeout(() => {
                          const IMUI = this.$refs.IMUI;
-                         console.log("qxj records imui:"+IMUI);
                          this.init();
                     }, 500);
                 },
@@ -276,7 +274,6 @@
                     });
                 },
                 handleChangeConversation(conversation, instance) {
-                    console.log("qxj ChangeConversation:"+JSON.stringify(conversation));
                     if (!pages[conversation.conversationId]){
                         pages[conversation.conversationId] =1;
                     }
@@ -335,7 +332,6 @@
                     }
                 },
                 handleMenuAvatarClick() {
-                console.log("Event:menu-avatar-click");
                 },
                 //聊天工具栏点击图片
                 handleImageClick() {
@@ -343,7 +339,6 @@
                 },
                 //选择图片框确定按钮回调
                 handlePickImageDone(data){
-                    console.log("handlePickImageDone:"+JSON.stringify(data));
                     this.pickUploadImgData=data;
                     const IMUI = this.$refs.IMUI;
                     IMUI._handleRemoteImage(data.url);
@@ -356,7 +351,6 @@
                     player && player.play()
                 },
                 handleMessageClick(e, key, message, instance) {
-                    console.log("点击了消息", e, key, message);
                     //console.log("qxj message:"+JSON.stringify(message));
                     if(message.type=="image"){
                         var url=!!message.url?message.url:message.content;
@@ -447,7 +441,6 @@
                         ...this.user,
                     };
                     IMUI.appendMessage(message, true);
-                    console.log("🚀 ~ file: App.vue ~ line 1508 ~ appendMessage ~ message", message)
                 },
                 appendEventMessage() {
                     const { IMUI } = this.$refs;
@@ -483,7 +476,6 @@
                      });
                 },
                 handleChangeMenu() {
-                     console.log("Event:change-menu");
                 },
                 openCustomContainer() {
 

+ 0 - 6
src/components/LemonUI/components/chatrecords/segrecords.vue

@@ -233,7 +233,6 @@
                     if(this.isContext){
                          this.queryParams.pullAct=0;//下拉刷新
                     }
-                    console.log("qxj handlePullMessages:"+JSON.stringify(this.queryParams));
                     getMessageList(this.queryParams).then(response => {
                         if(response.code==200){
                             isEnd=response.data.isLastPage;
@@ -253,7 +252,6 @@
                 handleMoreMessages(contact, next,instance) {
                     const { IMUI } = this.$refs;
                     let isEnd = false;
-                    console.log("qxj handleMoreMessages:"+JSON.stringify(this.queryParams));
                      if(this.isContext){
                          this.queryParams.pullAct=1;//上拉加载更多
                     }
@@ -271,7 +269,6 @@
                 },
 
                 handleChangeConversation(conversation, instance) {
-                    console.log("qxj ChangeConversation:"+JSON.stringify(conversation));
                     if(this.isContext){
                         if (!pages[conversation.conversationId+this.queryParams.pullAct]){
                               pages[conversation.conversationId+this.queryParams.pullAct] =1;
@@ -296,7 +293,6 @@
                 },
 
                 handleMenuAvatarClick() {
-                   console.log("Event:menu-avatar-click");
                 },
                 tooglePlayVideo(data){
                     this.dialogVideoVisible=true;
@@ -306,7 +302,6 @@
                     player && player.play()
                 },
                 handleMessageClick(e, key, message, instance) {
-                    console.log("点击了消息", e, key, message);
                     //console.log("qxj message:"+JSON.stringify(message));
                     if(message.type=="image"){
                         var url=!!message.url?message.url:message.content;
@@ -359,7 +354,6 @@
                      });
                 },
                 handleChangeMenu() {
-                     console.log("Event:change-menu");
                 },
                 handlePicturePreview(url) {
                     this.dialogImageUrl = url;

+ 0 - 3
src/components/LemonUI/components/index.vue

@@ -459,7 +459,6 @@ export default {
                   simple: true,
                 },
                 () => {
-                  console.log("qxj contact click");
                   this.currentNewContactId=contact.id;
                   //this.changeContact(contact.id);
                 },
@@ -710,7 +709,6 @@ export default {
       const draft = this.CacheDraft.get(contactId);
       if (draft) {
         const currentContent = this.findConversation(contactId).lastContent;
-        console.log("qxj currentContent:"+currentContent+",lastContent:"+JSON.stringify(draft));
         //if (currentContent.indexOf('<span style="color:red;">[草稿]</span>') === 0) {
           this.updateContact({
             id: contactId,
@@ -983,7 +981,6 @@ export default {
             lastContent: "",
           },conversation
         );
-       console.log("qxj insConversation:"+JSON.stringify(insConversation));
        this.conversations.unshift(insConversation);
       //  this.updateContact(insConversation);
        //this.conversations.push(insConversation);

+ 0 - 4
src/components/LemonUI/components/records.vue

@@ -474,7 +474,6 @@ export default {
                   simple: true,
                 },
                 () => {
-                  console.log("qxj contact click");
                   this.currentNewContactId=contact.id;
                   //this.changeContact(contact.id);
                 },
@@ -716,7 +715,6 @@ export default {
       const draft = this.CacheDraft.get(contactId);
       if (draft) {
         const currentContent = this.findConversation(contactId).lastContent;
-        console.log("qxj currentContent:"+currentContent+",lastContent:"+JSON.stringify(draft));
         //if (currentContent.indexOf('<span style="color:red;">[草稿]</span>') === 0) {
           this.updateContact({
             id: contactId,
@@ -735,7 +733,6 @@ export default {
            this.changeMenu(menuName);
       } else {
         if (this._changeContactLock || this.currentContactId == contactId){
-           console.log("qxj _changeContactLock currentContactId:"+this.currentContactId+" contactId:"+contactId);
            return false;
         }
       }
@@ -989,7 +986,6 @@ export default {
             lastContent: "",
           },conversation
         );
-       console.log("qxj insConversation:"+JSON.stringify(insConversation));
        this.conversations.unshift(insConversation);
       //  this.updateContact(insConversation);
        //this.conversations.push(insConversation);

+ 0 - 7
src/components/LiveVideoUpload/index.vue

@@ -172,9 +172,7 @@ export default {
       video.onloadedmetadata = () => {
         window.URL.revokeObjectURL(video.src);
         this.duration = parseInt(video.duration.toFixed(2));
-        console.log("视频时长=========>",this.duration);
         this.$emit("video-duration", this.duration);
-        console.log("文件大小=====>",file.size);
         this.$emit("update:fileSize", file.size);
       };
       video.src = URL.createObjectURL(file);
@@ -201,8 +199,6 @@ export default {
       try {
         const file = this.fileList[0].raw;
         const data = await uploadObject(file, this.updateTxProgress,this.type);
-        console.log("腾讯COS返回========>",data);
-        console.log("isPrivate=======>",this.isPrivate)
         let line_1='' ;
         if (this.isPrivate===0){
           line_1 = `${process.env.VUE_APP_VIDEO_LINE_1}${data.urlPath}`;
@@ -214,8 +210,6 @@ export default {
         let urlPathWithoutFirstSlash = data.urlPath.substring(1);
         this.$emit("update:fileKey", urlPathWithoutFirstSlash);
 
-        console.log("文件key",urlPathWithoutFirstSlash);
-        console.log("组装URL========>",line_1);
         this.$emit("update:videoUrl", line_1);
         this.$emit("update:line_1", line_1);
         this.$emit("change", line_1,line_1);
@@ -245,7 +239,6 @@ export default {
     //   }
     // },
     handleRemove(file, fileList) {
-      console.log(file, fileList.length);
     },
   }
 };

+ 0 - 9
src/components/LiveVideoUpload/single.vue

@@ -261,9 +261,7 @@ export default {
       video.onloadedmetadata = () => {
         window.URL.revokeObjectURL(video.src);
         this.duration = parseInt(video.duration.toFixed(2));
-        console.log("视频时长=========>",this.duration);
         this.$emit("video-duration", this.duration);
-        console.log("文件大小=====>",file.size);
         this.$emit("update:fileSize", file.size);
       };
       video.src = URL.createObjectURL(file);
@@ -280,7 +278,6 @@ export default {
     async getFirstThumbnail(){
       const file = this.fileList[0].raw;
       getThumbnail(file).then(response => {
-        console.log("获取到第一帧为封面======>",response.url)
         this.$emit("update:thumbnail", response.url);
       })
     },
@@ -297,8 +294,6 @@ export default {
       try {
         const file = this.fileList[0].raw;
         const data = await uploadObject(file, this.updateTxProgress,this.type);
-        console.log("腾讯COS返回========>",data);
-        console.log("isPrivate=======>",this.isPrivate)
         let line_1='' ;
         if (this.isPrivate===0){
           line_1 = `${process.env.VUE_APP_VIDEO_LINE_1}${data.urlPath}`;
@@ -310,8 +305,6 @@ export default {
         let urlPathWithoutFirstSlash = data.urlPath.substring(1);
         this.$emit("update:fileKey", urlPathWithoutFirstSlash);
 
-        console.log("文件key",urlPathWithoutFirstSlash);
-        console.log("组装URL========>",line_1);
         this.$emit("update:videoUrl", line_1);
         this.$emit("update:line_1", line_1);
         this.$emit("change", line_1,line_1);
@@ -326,7 +319,6 @@ export default {
       try {
         const file = this.fileList[0].raw;
         const data = await uploadToOBS(file, this.updateHwProgress,this.type);
-        console.log("华为OBS返回========>",data);
         let line_2='' ;
         if (this.isPrivate===0){
           line_2 = `${process.env.VUE_APP_VIDEO_LINE_2}/${data.urlPath}`;
@@ -341,7 +333,6 @@ export default {
       }
     },
     handleRemove(file, fileList) {
-      console.log(file, fileList.length);
     },
     reset() {
       // 重置内部状态

+ 2 - 5
src/components/Material/index.vue

@@ -270,7 +270,6 @@ export default {
       this.materialGroupLoading = true;
       getAllMaterialGroup({}).then(response => {
         this.materialGroupList = response.data
-        console.log(this.materialGroupList)
         this.materialGroupLoading = false;
       });
     },
@@ -372,8 +371,6 @@ export default {
               reject();
             } else {
               // this.$message.success(`图片压缩成功,最终质量为: ${this.finalQuality.toFixed(2)}`);
-              console.log(`图片压缩成功,最终质量为: ${this.finalQuality.toFixed(2)}`);
-              console.log(`最终内存大小为: ${(compressedFile.size/1024).toFixed(2)}KB`);
               resolve(compressedFile);
             }
           }).catch((err) => {
@@ -409,14 +406,14 @@ export default {
 
             let quality = 1; // 初始压缩质量
             let dataURL = canvas.toDataURL('image/jpeg', quality);
-            
+
             // 逐步压缩,直到图片大小小于500KB并且压缩质量不再降低
             while (dataURL.length / 1024 > 500 && quality > 0.1) {
               quality -= 0.01;
               dataURL = canvas.toDataURL('image/jpeg', quality);
             }
             this.finalQuality = quality; // 存储最终的压缩质量
-            
+
             if (dataURL.length / 1024 > 500) {
               reject(new Error('压缩后图片仍然大于500KB'));
               return;

+ 0 - 3
src/components/Material/single.vue

@@ -261,7 +261,6 @@ export default {
       this.materialGroupLoading = true;
       getAllMaterialGroup({}).then(response => {
         this.materialGroupList = response.data
-        console.log(this.materialGroupList)
         this.materialGroupLoading = false;
       });
     },
@@ -347,8 +346,6 @@ export default {
               reject();
             } else {
               // this.$message.success(`图片压缩成功,最终质量为: ${this.finalQuality.toFixed(2)}`);
-              console.log(`图片压缩成功,最终质量为: ${this.finalQuality.toFixed(2)}`);
-              console.log(`最终内存大小为: ${(compressedFile.size/1024).toFixed(2)}KB`);
               resolve(compressedFile);
             }
           }).catch((err) => {

+ 0 - 8
src/components/VideoUpload/index.vue

@@ -244,9 +244,7 @@ export default {
       video.onloadedmetadata = () => {
         window.URL.revokeObjectURL(video.src);
         this.duration = parseInt(video.duration.toFixed(2));
-        console.log("视频时长=========>",this.duration);
         this.$emit("video-duration", this.duration);
-        console.log("文件大小=====>",file.size);
         this.$emit("update:fileSize", file.size);
       };
       video.src = URL.createObjectURL(file);
@@ -292,8 +290,6 @@ export default {
       try {
         const file = this.fileList[0].raw;
         const data = await uploadObject(file, this.updateTxProgress,this.type);
-        console.log("腾讯COS返回========>",data);
-        console.log("isPrivate=======>",this.isPrivate)
         let line_1='' ;
         if (this.isPrivate===0){
           line_1 = `${process.env.VUE_APP_VIDEO_LINE_1}${data.urlPath}`;
@@ -304,8 +300,6 @@ export default {
         let urlPathWithoutFirstSlash = data.urlPath.substring(1);
         this.$emit("update:fileKey", urlPathWithoutFirstSlash);
 
-        console.log("文件key",urlPathWithoutFirstSlash);
-        console.log("组装URL========>",line_1);
         this.$emit("update:videoUrl", line_1);
         this.$emit("update:line_1", line_1);
         // this.$emit("update:line_2", line_2);
@@ -321,7 +315,6 @@ export default {
       try {
         const file = this.fileList[0].raw;
         const data = await uploadToOBS(file, this.updateHwProgress,this.type);
-        console.log("华为OBS返回========>",data);
         let line_2='' ;
         if (this.isPrivate===0){
           line_2 = `${process.env.VUE_APP_VIDEO_LINE_2}/${data.urlPath}`;
@@ -337,7 +330,6 @@ export default {
       }
     },
     handleRemove(file, fileList) {
-      console.log(file, fileList.length);
     },
     resetUpload() {
       // 重置内部状态

+ 0 - 2
src/components/course/userCoursePeriod.vue

@@ -388,7 +388,6 @@ export default {
     },
     methods: {
         imSubmit() {
-            console.log("imSendForm:", this.imSendForm)
             this.$refs["imSendForm"].validate(valid => {
                 if (valid) {
                     batchSendCourse(this.imSendForm).then(res => {
@@ -725,7 +724,6 @@ export default {
 
 
         handlePeriodSettings(row) {
-            console.log("公司id:", this.companyId, this.companyUserId)
             this.periodSettingsData = row;
             this.periodSettingsVisible = true;
             // 初始化课程列表

+ 2 - 0
src/components/iFrame/index.vue

@@ -5,6 +5,8 @@
       frameborder="no"
       style="width: 100%; height: 100%"
       scrolling="auto"
+      sandbox="allow-scripts allow-same-origin allow-popups allow-forms"
+      referrerpolicy="no-referrer"
     />
   </div>
 </template>

+ 2 - 0
src/layout/components/InnerLink/index.vue

@@ -19,6 +19,8 @@ export default {
           frameborder="no"
           style="width: 100%; height: 100%"
           scrolling="auto"
+          sandbox="allow-scripts allow-same-origin allow-popups allow-forms"
+          referrerpolicy="no-referrer"
         ></iframe>
       </div>
     );

+ 0 - 1
src/layout/components/Navbar.vue

@@ -170,7 +170,6 @@ export default {
       });
     },
     openMsg(){
-      console.log(11);
       this.msg.open=true;
       // 每次打开消息界面时刷新数据
       if (this.$refs.msg) {

+ 4 - 4
src/store/modules/app.js

@@ -14,13 +14,13 @@ const mutations = {
     state.sidebar.opened = !state.sidebar.opened
     state.sidebar.withoutAnimation = false
     if (state.sidebar.opened) {
-      Cookies.set('sidebarStatus', 1)
+      Cookies.set('sidebarStatus', 1, { path: '/' })
     } else {
-      Cookies.set('sidebarStatus', 0)
+      Cookies.set('sidebarStatus', 0, { path: '/' })
     }
   },
   CLOSE_SIDEBAR: (state, withoutAnimation) => {
-    Cookies.set('sidebarStatus', 0)
+    Cookies.set('sidebarStatus', 0, { path: '/' })
     state.sidebar.opened = false
     state.sidebar.withoutAnimation = withoutAnimation
   },
@@ -29,7 +29,7 @@ const mutations = {
   },
   SET_SIZE: (state, size) => {
     state.size = size
-    Cookies.set('size', size)
+    Cookies.set('size', size, { path: '/' })
   }
 }
 

+ 0 - 1
src/store/modules/user.js

@@ -42,7 +42,6 @@ const user = {
       const uuid = userInfo.uuid
       return new Promise((resolve, reject) => {
         checkIsNeedCheck(username, password, code, uuid).then(resp => {
-          console.log("检查是否需要验证", resp)
           if (!resp) {
             // 不需要短信验证,直接登录
             login(username, password, code, uuid).then(res => {

+ 4 - 4
src/store/store/modules/app.js

@@ -14,13 +14,13 @@ const mutations = {
     state.sidebar.opened = !state.sidebar.opened
     state.sidebar.withoutAnimation = false
     if (state.sidebar.opened) {
-      Cookies.set('sidebarStatus', 1)
+      Cookies.set('sidebarStatus', 1, { path: '/' })
     } else {
-      Cookies.set('sidebarStatus', 0)
+      Cookies.set('sidebarStatus', 0, { path: '/' })
     }
   },
   CLOSE_SIDEBAR: (state, withoutAnimation) => {
-    Cookies.set('sidebarStatus', 0)
+    Cookies.set('sidebarStatus', 0, { path: '/' })
     state.sidebar.opened = false
     state.sidebar.withoutAnimation = withoutAnimation
   },
@@ -29,7 +29,7 @@ const mutations = {
   },
   SET_SIZE: (state, size) => {
     state.size = size
-    Cookies.set('size', size)
+    Cookies.set('size', size, { path: '/' })
   }
 }
 

+ 12 - 3
src/utils/auth.js

@@ -2,15 +2,24 @@ import Cookies from 'js-cookie'
 
 const TokenKey = 'Web-Token'
 
+/** Token Cookie 安全属性 */
+function getTokenCookieOptions() {
+  return {
+    expires: 1,
+    path: '/',
+    sameSite: 'strict',
+    secure: typeof location !== 'undefined' && location.protocol === 'https:'
+  }
+}
+
 export function getToken() {
   return Cookies.get(TokenKey)
 }
 
 export function setToken(token) {
-  return Cookies.set(TokenKey, token)
+  return Cookies.set(TokenKey, token, getTokenCookieOptions())
 }
 
-
 export function removeToken() {
-  return Cookies.remove(TokenKey)
+  return Cookies.remove(TokenKey, getTokenCookieOptions())
 }

+ 5 - 9
src/utils/call.js

@@ -1,14 +1,13 @@
 import store from '@/store'
 
 var _phone=null;
-var server = 'call.yjf.runtzh.com'; // OPEN的IP地址和端口 
+var server = 'call.yjf.runtzh.com'; // OPEN的IP地址和端口
 function webphoneHandle(type, data, options) {
-	console.log("sip:"+type, JSON.stringify(data), options);
 	if(type=="outgoing.connecting"){     //正在尝试呼出
-		 
+
 	}
 	else if(type=="outgoing.progress"){  //开始振铃了
-		 
+
 	}
 	else if(type=="outgoing.accecpted"){ //被接听
 		store.dispatch('CallStatus',{
@@ -27,12 +26,9 @@ export function callNumber(customerId,contactsId,orderId,packageOrderId){
 	const callRealm = store.getters && store.getters.callRealm
 	const callHa1 = store.getters && store.getters.callHa1
     JsSIP.C.SESSION_EXPIRES=120,JsSIP.C.MIN_SESSION_EXPIRES=360;
-	console.log("calluser:"+ callUser);
-	console.log("callRealm:"+callRealm);
-	console.log("callHa1:"+callHa1);
-	
+
 	if(_phone==null){
-		
+
 		_phone = new WebPhoneSDK({
 				lib: JsSIP,
 				debug: true,

+ 0 - 12
src/utils/cos.js

@@ -2,23 +2,16 @@ import COS from 'cos-js-sdk-v5';
 import { Message } from 'element-ui';
 import { getTmpSecretKey } from '@/api/common';
 
-console.log('环境变量:', process.env);
-console.log('NODE_ENV:', process.env.NODE_ENV);
-console.log('VUE_APP_COS_BUCKET:', process.env.VUE_APP_COS_BUCKET);
-console.log('VUE_APP_COS_REGION:', process.env.VUE_APP_COS_REGION);
 
 const config = {
   Bucket: process.env.VUE_APP_COS_BUCKET,
   Region: process.env.VUE_APP_COS_REGION,
 };
-console.log('COS配置:', config);
 
 // 上传到腾讯云cos
 export const uploadObject = async (file,onProgress,type,callBackUp) => {
     try {
-        console.log(type);
         const response = await getTmpSecretKey(); // 后台接口返回 密钥相关信息
-        console.log("Key  ",response);
         const data = response.data;
         const credentials = data && data.credentials;
 
@@ -40,7 +33,6 @@ export const uploadObject = async (file,onProgress,type,callBackUp) => {
             },
         });
 
-        console.log("初始化成功")
         let fileName = file.name || ""
         const upload_file_name = new Date().getTime() + '.' + fileName.split(".")[fileName.split(".").length - 1];
         let date =  new Date()
@@ -51,9 +43,7 @@ export const uploadObject = async (file,onProgress,type,callBackUp) => {
         let videoKey = `/userVideo/${uploadDay}/${upload_file_name}`
         let courseKey = `/live/${uploadDay}/${upload_file_name}`
         let key = type ===1 ? courseKey : videoKey;
-        console.log("开始上传")
         return new Promise((resolve, reject) => {
-            console.log("uploadFile")
             cos.uploadFile(
                 {
                     Bucket: config.Bucket, /* 必须 */
@@ -67,7 +57,6 @@ export const uploadObject = async (file,onProgress,type,callBackUp) => {
                     //     callBackUp && callBackUp({cos,taskId})
                     // },
                     onProgress: function (progressData) {
-                        console.log('COS上传进度=======>:', JSON.stringify(progressData));
                         onProgress(progressData);
                     },
                     // onFileFinish: function (err, data, options) {
@@ -83,7 +72,6 @@ export const uploadObject = async (file,onProgress,type,callBackUp) => {
                             ...data,
                             urlPath: key
                         };
-                        console.log('上传成功', result);
                         resolve(result);
                     }
                 }

+ 21 - 2
src/utils/generator/js.js

@@ -128,6 +128,21 @@ function buildData(conf, dataList) {
   dataList.push(`${conf.vModel}: ${defaultValue},`)
 }
 
+/** 将 '/pattern/flags' 字面量安全解析为 RegExp,避免 eval 执行任意代码 */
+function parseRegExpLiteral(str) {
+  const m = String(str).match(/^\/([\s\S]*)\/([gimsuy]*)$/)
+  if (!m) return null
+  try {
+    return new RegExp(m[1], m[2])
+  } catch (e) {
+    return null
+  }
+}
+
+function escapeJsSingleQuoted(str) {
+  return String(str == null ? '' : str).replace(/\\/g, '\\\\').replace(/'/g, "\\'")
+}
+
 function buildRules(conf, ruleList) {
   if (conf.vModel === undefined) return
   const rules = []
@@ -136,12 +151,16 @@ function buildRules(conf, ruleList) {
       const type = isArray(conf.defaultValue) ? 'type: \'array\',' : ''
       let message = isArray(conf.defaultValue) ? `请至少选择一个${conf.vModel}` : conf.placeholder
       if (message === undefined) message = `${conf.label}不能为空`
-      rules.push(`{ required: true, ${type} message: '${message}', trigger: '${trigger[conf.tag]}' }`)
+      rules.push(`{ required: true, ${type} message: '${escapeJsSingleQuoted(message)}', trigger: '${trigger[conf.tag]}' }`)
     }
     if (conf.regList && isArray(conf.regList)) {
       conf.regList.forEach(item => {
         if (item.pattern) {
-          rules.push(`{ pattern: ${eval(item.pattern)}, message: '${item.message}', trigger: '${trigger[conf.tag]}' }`)
+          // rules.push(`{ pattern: ${eval(item.pattern)}, message: '${item.message}', trigger: '${trigger[conf.tag]}' }`)
+          const re = parseRegExpLiteral(item.pattern)
+          if (re) {
+            rules.push(`{ pattern: ${re}, message: '${escapeJsSingleQuoted(item.message)}', trigger: '${trigger[conf.tag]}' }`)
+          }
         }
       })
     }

+ 2 - 1
src/utils/jsencrypt.js

@@ -1,4 +1,5 @@
-import JSEncrypt from 'jsencrypt/bin/jsencrypt'
+// import JSEncrypt from 'jsencrypt/bin/jsencrypt'
+import JSEncrypt from 'jsencrypt'
 
 // 密钥对生成 http://web.chacuo.net/netrsakeypair
 

+ 0 - 1
src/utils/liveWS.js

@@ -17,7 +17,6 @@ export class LiveWS {
       CryptoJS.enc.Utf8.parse('' + liveId + userId + userType + timestamp),
       CryptoJS.enc.Utf8.parse(adminSecret)).toString(CryptoJS.enc.Hex)
     this.url = url + `?liveId=${liveId}&userId=${userId}&userType=${userType}&timestamp=${timestamp}&signature=${signature}`;
-    console.log(this.url)
     this.liveId = liveId;
     this.userId = userId;
     this.checkInterval = checkInterval;

+ 0 - 2
src/utils/obs.js

@@ -33,7 +33,6 @@ export const uploadToOBS = async (file, progressCallback, type, cancelCallback)
       if (cancelCallback) {
         cancelCallback({
           cancel: () => {
-            console.log("Cancelling OBS upload")
             isCancelled = true
             reject(new Error("Upload cancelled by user"))
           },
@@ -60,7 +59,6 @@ export const uploadToOBS = async (file, progressCallback, type, cancelCallback)
               ...result,
               urlPath: key,
             }
-            console.log("上传成功", a)
             resolve(a)
           }
         },

+ 18 - 0
src/utils/redirect.js

@@ -0,0 +1,18 @@
+/**
+ * 登录后跳转路径校验,防止开放重定向钓鱼
+ * 仅允许站内相对路径:以单个 / 开头,且不以 // 开头
+ */
+export function getSafeRedirect(redirect, fallback = '/') {
+  if (redirect == null || redirect === '') {
+    return fallback
+  }
+  const path = String(redirect).trim()
+  if (!path.startsWith('/') || path.startsWith('//')) {
+    return fallback
+  }
+  // 拒绝带协议的绝对地址等
+  if (path.includes('://') || path.includes('\\')) {
+    return fallback
+  }
+  return path
+}

+ 0 - 2
src/utils/request.js

@@ -51,7 +51,6 @@ service.interceptors.request.use(config => {
   }
   return config
 }, error => {
-    console.log(error)
     Promise.reject(error)
 })
 
@@ -88,7 +87,6 @@ service.interceptors.response.use(res => {
     }
   },
   error => {
-    console.log('err' + error)
     let { message } = error;
     if (message == "Network Error") {
       message = "后端接口连接异常";

+ 0 - 3
src/utils/webSocket.js

@@ -13,12 +13,9 @@ export default {
     hasLogin:false,
     initSocket: function(appKey,reset) {
         if(typeof(WebSocket) === "undefined"){
-            console.log("您的浏览器不支持socket")
         }else{
             // 实例化socket
             if(!this.socket || reset){
-                console.log("实例化socket");
-                console.log("监听地址为:",server+appKey);
                 //this.socket = new WebSocket(server+uid);
                 this.socket=new WebsocketHeartbeat({
                     url: server+appKey,

+ 0 - 1
src/views/WechatLoginDialog.vue

@@ -50,7 +50,6 @@ export default {
             if (res.code === 200 && res.data) {
               this.status = "success";
               clearInterval(this.timer);
-              console.log("扫码成功,准备 emit 事件", res.data);
 
               this.$emit("update:visible", false);
               this.$emit("loginSuccess", res.data);

+ 0 - 56
src/views/aiSipCall/aiSipCallManualOutbound.vue

@@ -691,7 +691,6 @@ export default {
     beforeDestroy() {
         // 断开 WebSocket 连接
         if (this.phoneBar) {
-            console.log('[beforeDestroy] 断开 WebSocket 连接');
             this.phoneBar.disconnect();
         }
         // 移除键盘事件监听
@@ -738,13 +737,11 @@ export default {
         },
 
         loadWebsocketParam(){
-            console.log('开始用本地参数请求远端接口,分机号:', this.extNum + ",本地配置网关:" + this.myGateway);
             getToolbarBasicParam({ extNum:this.extNum, myGateway: this.myGateway }).then(response => {
                 if(response.code === 0) {
                     //设置登陆账号和用户名
                     this.opNum = response.data.opNum;
                     this.userName = response.data.userName;
-                    console.log('获取到远端 分机号:', this.extNum + ",登陆账号:" + this.opNum + ",用户名:" + this.userName);
                     // 构建配置对象
                     const callConfig = {
                         useDefaultUi: true,
@@ -755,7 +752,6 @@ export default {
                         extPassword: response.data.encryptPsw
                     };
 
-                    console.log('初始化工具条基础配置参数:', callConfig);
                     this.phoneBar.initConfig(callConfig);
                     // 建立 WebSocket 连接
                     this.phoneBar.connect();
@@ -778,7 +774,6 @@ export default {
             // 监听 ESC 键挂机
             this._escKeyHandler = (e) => {
                 if (e.which === 27) {
-                    console.log('按下了 ESC 键,即将发送挂机指令.');
                     if (this.phoneBar && this.phoneBar.getIsConnected()) {
                         const hangUpBtn = document.getElementById('hangUpBtn');
                         if (hangUpBtn && hangUpBtn.classList.contains('on')) {
@@ -813,7 +808,6 @@ export default {
         setupEventListeners() {
             // websocket 通信对象断开事件
             this.phoneBar.on(EventList.WS_DISCONNECTED, (msg) => {
-                console.log("websocket 通信对象断开事件:" + msg);
                 this.updatePhoneBar(msg, EventList.WS_DISCONNECTED);
                 this.showTransferArea = false;
                 this.showConferenceArea = false;
@@ -833,7 +827,6 @@ export default {
             });
 
             this.phoneBar.on(EventList.OUTBOUND_START, (msg) => {
-                console.log('outbound_start 事件:' + msg);
                 this.showChatContainer = true;
                 this.showCustomerForm = true;
                 this.loadCommunicationHistory();
@@ -841,7 +834,6 @@ export default {
             });
 
             this.phoneBar.on(EventList.REQUEST_ARGS_ERROR, (msg) => {
-                console.log('request_args_error事件:' + msg);
                 this.updatePhoneBar(msg, EventList.REQUEST_ARGS_ERROR);
                 this.callExecuteFailed = true;
                 this.callFailReason = '请求参数错误';
@@ -891,35 +883,29 @@ export default {
             });
 
             this.phoneBar.on(EventList.WS_CONNECTED, (msg) => {
-                console.log('WebSocket连接成功事件:' + msg);
                 this.loginTime = new Date().toLocaleTimeString();
                 this.callStatus = '已签入';
                 this.agentStatus = '忙碌';
                 this.updatePhoneBar(msg, EventList.WS_CONNECTED);
                 this.onlineButtonText = '签出';
                 if (this.allowAutoSignIn) {
-                    console.log('[自动签入] WebSocket 连接成功,自动签入完成');
                 }
             });
 
             this.phoneBar.on(EventList.CALLEE_RINGING, (msg) => {
-                console.log('被叫振铃事件:' + msg.content);
                 this.updatePhoneBar(msg, EventList.CALLEE_RINGING);
                 this.markExecuteSuccess();
             });
 
             this.phoneBar.on(EventList.CALLER_ANSWERED, (msg) => {
-                console.log('主叫接通事件:' + msg);
                 this.agentStatus = '通话中';
                 if (msg && msg.object && msg.object.uuid) {
                     this.currentCallUuid = msg.object.uuid;
-                    console.log('[主叫接通] 获取到通话 UUID:', this.currentCallUuid);
                 }
                 this.updatePhoneBar(msg, EventList.CALLER_ANSWERED);
             });
 
             this.phoneBar.on(EventList.CALLER_HANGUP, (msg) => {
-                console.log('主叫挂断事件:' + msg);
                 this.agentStatus = '通话结束';
                 this.canSendVideoReInvite = false;
                 this.canSendVideoFile = false;
@@ -936,16 +922,13 @@ export default {
             });
 
             this.phoneBar.on(EventList.CALLEE_ANSWERED, (msg) => {
-                console.log('被叫接通事件:' + msg);
                 if (msg && msg.object && msg.object.uuid) {
                     this.currentCallUuid = msg.object.uuid;
-                    console.log('[被叫接通] 获取到通话 UUID:', this.currentCallUuid);
                 }
                 this.updatePhoneBar(msg, EventList.CALLEE_ANSWERED);
             });
 
             this.phoneBar.on(EventList.CALLEE_HANGUP, (msg) => {
-                console.log('被叫挂断事件:' + msg);
                 this.showTransferArea = false;
                 this.showConferenceArea = false;
                 if (msg && msg.object && msg.object.uuid) {
@@ -959,7 +942,6 @@ export default {
             });
 
             this.phoneBar.on(EventList.STATUS_CHANGED, (msg) => {
-                console.log('座席状态改变事件:' + msg);
 
                 // 确保 msg.object 存在才设置
                 if (msg && msg.object) {
@@ -971,58 +953,48 @@ export default {
 
                 // 当状态变为忙碌时,表示可以外呼了
                 if (msg.object && msg.object.status === AgentStatusEnum.BUSY) {
-                    console.log('[状态就绪] 坐席已置忙,现在可以外呼了');
                 }
             });
 
             this.phoneBar.on(EventList.ACD_GROUP_QUEUE_NUMBER, (msg) => {
-                console.log('当前排队人数消息事件:' + msg);
                 this.queueNumber = msg.object.queue_number;
             });
 
             this.phoneBar.on(EventList.ON_AUDIO_CALL_CONNECTED, (msg) => {
-                console.log('音频通话已建立事件:' + msg);
                 this.canSendVideoReInvite = true;
             });
 
             this.phoneBar.on(EventList.CUSTOMER_CHANNEL_HOLD, (msg) => {
-                console.log('客户通话已保持事件:' + msg);
                 this.callStatus = '通话已保持';
                 this.showHoldBtn = false;
                 this.showUnHoldBtn = true;
             });
 
             this.phoneBar.on(EventList.CUSTOMER_CHANNEL_UNHOLD, (msg) => {
-                console.log('客户通话已接回事件:' + msg);
                 this.callStatus = '客户通话已接回';
                 this.showHoldBtn = true;
                 this.showUnHoldBtn = false;
             });
 
             this.phoneBar.on(EventList.CUSTOMER_ON_HOLD_HANGUP, (msg) => {
-                console.log('保持的通话已挂机事件:' + msg);
                 this.showHoldBtn = true;
                 this.showUnHoldBtn = false;
                 this.callStatus = '保持的通话已挂机.';
             });
 
             this.phoneBar.on(EventList.ON_VIDEO_CALL_CONNECTED, (msg) => {
-                console.log('视频通话已建立事件:' + msg);
                 this.canSendVideoFile = true;
             });
 
             this.phoneBar.on(EventList.INNER_CONSULTATION_START, (msg) => {
-                console.log('咨询开始事件:' + msg);
                 this.callStatus = '咨询开始.';
             });
 
             this.phoneBar.on(EventList.INNER_CONSULTATION_STOP, (msg) => {
-                console.log('咨询结束事件:' + msg);
                 this.callStatus = '咨询结束.';
             });
 
             this.phoneBar.on(EventList.TRANSFER_CALL_SUCCESS, (msg) => {
-                console.log('电话转接成功事件:' + msg);
                 // 转接成功后隐藏转接/咨询区域(与 source 一致)
                 this.showTransferArea = false;
                 this.callStatus = '电话转接成功.';
@@ -1030,7 +1002,6 @@ export default {
             });
 
             this.phoneBar.on(EventList.AGENT_STATUS_DATA_CHANGED, (msg) => {
-                console.log('agent_status_data_changed 事件:' + msg);
 
                 // 解析并更新坐席列表数据
                 if (msg && msg.object) {
@@ -1040,7 +1011,6 @@ export default {
                         if (Array.isArray(agentList)) {
                             // 直接复制完整数据,保留所有字段 (包括姓名、工号、状态等)
                             this.allMemberList = [...agentList];
-                            console.log('[坐席列表更新] 当前坐席数量:', this.allMemberList.length);
                         }
                     } catch (e) {
                         console.error('解析坐席列表失败:', e);
@@ -1055,7 +1025,6 @@ export default {
 
             // 客户通话等待相关事件
             this.phoneBar.on(EventList.CUSTOMER_CHANNEL_CALL_WAIT, (msg) => {
-                console.log('客户电话等待中事件:' + msg);
                 // 隐藏会议区域和客户信息表单(与 source 一致)
                 this.showConferenceArea = false;
                 this.showCustomerForm = false;
@@ -1067,7 +1036,6 @@ export default {
             });
 
             this.phoneBar.on(EventList.CUSTOMER_CHANNEL_OFF_CALL_WAIT, (msg) => {
-                console.log('等待的电话已接回事件:' + msg);
                 // 隐藏转接/咨询区域
                 this.showStopCallWait = false;
                 this.showTransferCallWait = false;
@@ -1076,7 +1044,6 @@ export default {
             });
 
             this.phoneBar.on(EventList.INNER_CONSULTATION_START, (msg) => {
-                console.log('咨询已开始事件:' + msg);
                 // 隐藏会议区域和客户信息表单(与 source 一致)
                 this.showConferenceArea = false;
                 this.showCustomerForm = false;
@@ -1087,7 +1054,6 @@ export default {
             });
 
             this.phoneBar.on(EventList.INNER_CONSULTATION_STOP, (msg) => {
-                console.log('咨询已结束事件:' + msg);
                 // 隐藏转接/咨询区域
                 this.showTransferCallWait = false;
                 this.showTransferArea = false;
@@ -1095,7 +1061,6 @@ export default {
             });
 
             this.phoneBar.on(EventList.CUSTOMER_ON_CALL_WAIT_HANGUP, (msg) => {
-                console.log('等待的客户已挂机事件:' + msg);
                 // 隐藏转接/咨询区域
                 this.showStopCallWait = false;
                 this.showTransferCallWait = false;
@@ -1105,17 +1070,14 @@ export default {
 
             // 会议相关事件
             this.phoneBar.on(EventList.CONFERENCE_MEMBER_ANSWERED, (msg) => {
-                console.log('会议成员已经接通事件:' + msg);
                 this.updateConferenceMemberStatus(msg.object.phone, '通话中', 'green');
             });
 
             this.phoneBar.on(EventList.CONFERENCE_MEMBER_HANGUP, (msg) => {
-                console.log('会议成员已经挂机事件:' + msg);
                 this.updateConferenceMemberHangup(msg.object.phone, msg.object);
             });
 
             this.phoneBar.on(EventList.CONFERENCE_MODERATOR_ANSWERED, (msg) => {
-                console.log('电话会议开始,主持人已接通事件:' + msg);
                 // 隐藏转接/咨询区域和客户信息表单(与 source 一致)
                 this.showTransferArea = false;
                 this.showCustomerForm = false;
@@ -1123,13 +1085,11 @@ export default {
             });
 
             this.phoneBar.on(EventList.CONFERENCE_MODERATOR_HANGUP, (msg) => {
-                console.log('电话会议结束,主持人已挂机事件:' + msg);
                 // 会议结束后隐藏会议区域
                 this.onConferenceEnd();
             });
 
             this.phoneBar.on(EventList.CONFERENCE_MEMBER_MUTED_SUCCESS, (msg) => {
-                console.log('会议成员已被禁言事件:' + msg);
                 const memberPhone = msg.object.phone;
                 const member = this.conferenceMembers.find(m => m.phone === memberPhone);
                 if (member) {
@@ -1138,7 +1098,6 @@ export default {
             });
 
             this.phoneBar.on(EventList.CONFERENCE_MEMBER_UNMUTED_SUCCESS, (msg) => {
-                console.log('会议成员解除禁言成功事件:' + msg);
                 const memberPhone = msg.object.phone;
                 const member = this.conferenceMembers.find(m => m.phone === memberPhone);
                 if (member) {
@@ -1147,7 +1106,6 @@ export default {
             });
 
             this.phoneBar.on(EventList.CONFERENCE_MEMBER_VMUTED_SUCCESS, (msg) => {
-                console.log('会议成员已被禁用视频事件:' + msg);
                 const memberPhone = msg.object.phone;
                 const member = this.conferenceMembers.find(m => m.phone === memberPhone);
                 if (member) {
@@ -1156,7 +1114,6 @@ export default {
             });
 
             this.phoneBar.on(EventList.CONFERENCE_MEMBER_UNVMUTED_SUCCESS, (msg) => {
-                console.log('会议成员启用视频成功事件:' + msg);
                 const memberPhone = msg.object.phone;
                 const member = this.conferenceMembers.find(m => m.phone === memberPhone);
                 if (member) {
@@ -1222,7 +1179,6 @@ export default {
                         msg.object.status === AgentStatusEnum.CONFERENCE) {
                         // 通话中状态,不需要更新按钮状态,保持当前状态即可
                     } else if (msg.object.status === AgentStatusEnum.JUST_LOGIN) {
-                        console.log('[DEBUG] Status is JUST_LOGIN');
                         // 刚登录,尚未就绪,自动设置为置忙状态以便外呼
                         this.agentStatus = '忙碌';
                         this.callStatus = '忙碌';
@@ -1332,7 +1288,6 @@ export default {
                 return;
             }
 
-            console.log('[开始外呼] 号码:', this.phoneNumber.trim(), '类型:', this.callType, '视频级别:', this.videoLevel);
 
             this.currentCallUuid = '';
             this.callFinishedAt = '';
@@ -1364,7 +1319,6 @@ export default {
 
         async triggerSyncByUuid(status, source, msg, delayMs = 0, failReason = '') {
             if (this.callResultRecorded) {
-                console.log('[syncByUuid] 已记录过,跳过。source =', source);
                 return;
             }
 
@@ -1401,19 +1355,11 @@ export default {
                     roboticId: this.roboticId
                 };
 
-                console.log('[syncByUuid] 准备调用后端记录:', {
-                    source,
-                    status,
-                    failReason,
-                    req,
-                    callFinishedAt: this.callFinishedAt
-                });
 
                 const res = await syncByUuid(req);
 
                 if (res && (res.code === 200 || res.code === 0)) {
                     this.callResultRecorded = true;
-                    console.log('[syncByUuid] 记录成功:', res);
                     this.$message.success(status === 2 ? '外呼执行成功已记录' : '外呼执行失败已记录');
                 } else {
                     console.error('[syncByUuid] 记录失败:', res);
@@ -1700,7 +1646,6 @@ export default {
             if (btn && btn.classList.contains('on')) {
                 if (this.phoneBar.getIsConnected()) {
                     // 已连接时执行签出操作
-                    console.log('[手动签出] 用户主动点击签出按钮');
                     // 设置不允许自动签入
                     this.allowAutoSignIn = false;
                     // 调用 SDK 的 disconnect 方法 (会自动关闭 WebSocket)
@@ -1711,7 +1656,6 @@ export default {
                     this.loginTime = '00:00:00';
                 } else {
                     // 未连接时执行签入操作
-                    console.log('[手动签入] 用户主动点击签入按钮');
                     // 允许自动签入
                     this.allowAutoSignIn = true;
                     // 建立 WebSocket 连接

+ 0 - 1
src/views/aiSipCall/aiSipCallOutboundCar.vue

@@ -406,7 +406,6 @@ export default {
       audio.type = 'audio/wav';
 
       audio.onloadedmetadata = () => {
-        console.log('音频加载成功,时长:', audio.duration, '秒');
       };
 
       audio.play().catch(err => {

+ 0 - 1
src/views/aiSipCall/aiSipCallPhone.vue

@@ -332,7 +332,6 @@ export default {
       audio.type = 'audio/wav';
 
       audio.onloadedmetadata = () => {
-        console.log('音频加载成功,时长:', audio.duration, '秒');
       };
 
       audio.play().catch(err => {

+ 10 - 16
src/views/calendar/myCalendar/index.vue

@@ -5,18 +5,18 @@
       <el-col :span="6">
          <div class="mydate">
            <div><span>我的日程</span></div>
-            <div class="mycate"> 
+            <div class="mycate">
               <el-checkbox-group v-model="checkedEvent" @change="handleCheckedChange">
                 <el-checkbox v-for="item in eventOptions" :label="item.dictValue" :key="item.dictValue">{{item.dictLabel}}</el-checkbox>
               </el-checkbox-group>
             </div>
-         
+
         </div>
       </el-col>
        <el-col :span="18">
          <div class="mycalendar">
             <full-calendar
-              @changeMonth="changeMonth"   
+              @changeMonth="changeMonth"
               :config="config"
               :events="events"
               ref="calendar"
@@ -45,7 +45,7 @@
               v-model="form.startTime"
               type="datetime"
               placeholder="选择开始时间">
-              
+
             </el-date-picker>
           </el-form-item>
           <el-form-item label="结束时间" prop="finishTime" >
@@ -89,21 +89,21 @@
             </el-select>
           </el-form-item>
           <el-form-item label="开始时间"  prop="startTime" >
-              <el-date-picker :disabled="true"  
+              <el-date-picker :disabled="true"
               v-model="event.startTime"
               type="datetime"
               placeholder="选择开始时间">
             </el-date-picker>
           </el-form-item>
           <el-form-item label="结束时间" prop="finishTime" >
-              <el-date-picker :disabled="true"  
+              <el-date-picker :disabled="true"
               v-model="event.finishTime"
               type="datetime"
               placeholder="选择结束时间">
             </el-date-picker>
           </el-form-item>
             <el-form-item label="提醒时间" prop="eventTime" >
-              <el-date-picker :disabled="true"  
+              <el-date-picker :disabled="true"
               v-model="event.eventTime"
               type="datetime"
               placeholder="选择提醒时间">
@@ -248,7 +248,6 @@ methods: {
     if(month<10){
       month="0"+month
     }
-    console.log(`${year}-${month}`);
     this.searchMonth=`${year}-${month}`
     this.getMyCrmEventList();
   },
@@ -304,7 +303,7 @@ methods: {
           //   title:'春游4',
           //   start: '2021-03-17 15:00:00',
           //   end: '2021-03-17 16:00:00',
-          //   color: '#ff0000' 
+          //   color: '#ff0000'
           // }
           for(var i=0;i<this.myEvents.length;i++){
               var item={};
@@ -322,12 +321,11 @@ methods: {
               this.events.push(item)
           }
         }
-        
+
         this.users = response.data;
       });
     },
     handleCheckedChange(value) {
-      console.log(value)
       this.form.eventTypes=value.toString()
       this.getMyCrmEventList();
     },
@@ -336,8 +334,6 @@ methods: {
       var that=this;
       that.showEvent.open=true;
       this.myEvents.forEach(function(element) {
-        console.log(event.id)
-        console.log(element)
         if(element.eventId==event.id){
           that.event=element
           that.event.eventType=that.event.eventType.toString();
@@ -348,7 +344,6 @@ methods: {
     dayClick (day, jsEvent) {
       this.addEvent.open=true;
       var d = day._i
-      console.log(day._i)
       this.form.eventId=undefined;
       this.form.eventType="1";
       this.form.title="";
@@ -358,7 +353,6 @@ methods: {
       }
     },
     eventRender:function (event, element) {
-      console.log(event)
       element.find('.fc-title').attr('title',event.title)
     }
 }
@@ -375,7 +369,7 @@ methods: {
  height: 100%;
  background-color:#ffffff;
  padding: 15px;
- 
+
 }
 .fc th{
  font-weight: normal;

+ 4 - 6
src/views/chat/components/chatDatasetFile.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-     
+
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button
@@ -12,7 +12,7 @@
           v-hasPermi="['chat:chatDatasetFile:add']"
         >新增</el-button>
       </el-col>
-       
+
       <el-col :span="1.5">
         <el-button
           type="danger"
@@ -42,7 +42,7 @@
         </template>
       </el-table-column>
     </el-table>
-    
+
     <pagination
       v-show="total>0"
       :total="total"
@@ -127,7 +127,7 @@ export default {
     };
   },
   created() {
-     
+
   },
   methods: {
     beforeUpload(file){
@@ -151,13 +151,11 @@ export default {
 
     },
     handleRemove(file, fileList) {
-      console.log(this.fileList);
       this.form.url=null;
 
     },
     handlePreview(file) {
 
-      console.log(file);
     },
     handleExceed(files, fileList) {
       this.$message.warning(`当前限制选择 1 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);

+ 1 - 2
src/views/company/aiModel/account/info.vue

@@ -335,7 +335,6 @@ export default {
     methods: {
         initCidConfData(){
             getCidConfig().then(res=>{
-            console.log(JSON.parse(res.data));
             this.cidConf = JSON.parse(res.data);
         }).catch(res=>{})
         },
@@ -500,7 +499,7 @@ export default {
             this.form.accountJson = {
                 ...newAccountJson,
                 ...this.form.accountJson
-            }   
+            }
 
             //默认跟上配置值
             if('DeepSeekChat' === providerClassName && !!this.cidConf && !!!isUpdate){

+ 14 - 15
src/views/company/aiModel/inboundCallManage/index.vue

@@ -151,7 +151,7 @@
             style="width: 400px;"
           />
         </el-form-item>
-        
+
         <!-- 被叫号码 -->
         <el-form-item label="被叫号码" prop="callee">
           <el-input
@@ -160,7 +160,7 @@
             style="width: 400px;"
           />
         </el-form-item>
-        
+
         <!-- 服务类型 -->
         <el-form-item label="服务类型" prop="serviceType">
           <el-select
@@ -174,7 +174,7 @@
             <el-option label="IVR" value="ivr" />
           </el-select>
         </el-form-item>
-        
+
         <!-- 大模型底座 (AI可见) -->
         <el-form-item v-if="form.serviceType === 'ai'" label="大模型底座" prop="llmAccountId">
           <el-select
@@ -190,7 +190,7 @@
             />
           </el-select>
         </el-form-item>
-        
+
         <!-- ASR提供商 (AI可见) -->
         <el-form-item v-if="form.serviceType === 'ai'" label="ASR提供商" prop="asrProvider">
           <el-select
@@ -206,7 +206,7 @@
             />
           </el-select>
         </el-form-item>
-        
+
         <!-- 音色来源 (AI可见) -->
         <el-form-item v-if="form.serviceType === 'ai'" label="音色来源" prop="voiceSource">
           <el-select
@@ -223,7 +223,7 @@
             />
           </el-select>
         </el-form-item>
-        
+
         <!-- 音色 (AI可见) -->
         <el-form-item v-if="form.serviceType === 'ai'" label="音色" prop="voiceCode">
           <el-select
@@ -239,7 +239,7 @@
             />
           </el-select>
         </el-form-item>
-        
+
         <!-- AI转接类型 (AI可见) -->
         <el-form-item v-if="form.serviceType === 'ai'" label="AI转接类型" prop="aiTransferType">
           <el-select
@@ -253,7 +253,7 @@
             <el-option label="网关" value="gateway" />
           </el-select>
         </el-form-item>
-        
+
         <!-- IVR下拉 (IVR可见) -->
         <el-form-item v-if="form.serviceType === 'ivr'" label="IVR" prop="ivrId">
           <el-select
@@ -269,7 +269,7 @@
             />
           </el-select>
         </el-form-item>
-        
+
         <!-- 业务组 (ACD/AI+ACD可见) -->
         <el-form-item v-if="showBizGroup" label="业务组" prop="aiTransferGroupId">
           <el-select
@@ -285,7 +285,7 @@
             />
           </el-select>
         </el-form-item>
-        
+
         <!-- 网关 (AI+Gateway可见) -->
         <el-form-item v-if="showGateway" label="网关" prop="aiTransferGatewayId">
           <el-select
@@ -301,7 +301,7 @@
             />
           </el-select>
         </el-form-item>
-        
+
         <!-- 网关目标号码 (AI+Gateway可见) -->
         <el-form-item v-if="showGateway" label="网关目标号码" prop="aiTransferGatewayDestNumber">
           <el-input
@@ -310,7 +310,7 @@
             style="width: 400px;"
           />
         </el-form-item>
-        
+
         <!-- 分机号 (AI+Extension可见) -->
         <el-form-item v-if="showExtension" label="分机号" prop="aiTransferExtNumber">
           <el-input
@@ -319,7 +319,7 @@
             style="width: 400px;"
           />
         </el-form-item>
-        
+
         <!-- 服务评价 -->
         <el-form-item label="服务评价" prop="satisfSurveyIvrId">
           <el-select
@@ -486,7 +486,6 @@ export default {
     this.loadDropdownData()
     this.getDicts("task_scene_type").then((response) => {
         this.sceneList = response.data;
-        console.log(this.sceneList);
     });
   },
   methods: {
@@ -673,7 +672,7 @@ export default {
           } else if (submitData.serviceType === 'acd') {
             submitData.aiTransferData = submitData.aiTransferGroupId
           }
-          
+
           if (submitData.id) {
             updateInboundLlm(submitData).then(response => {
               if (response.code === 200) {

+ 0 - 3
src/views/company/companyConfig/miniappConfig.vue

@@ -69,7 +69,6 @@ export default {
   methods: {
     initMimiAppList(){
         getCompanyMiniAppList().then(res=>{
-        console.log(res.data);
         this.companyMiniAppList = res.data;
         let current = res.current;
         if(!!current){
@@ -77,12 +76,10 @@ export default {
             this.queryParams.backupMiniAppId =  current.backupMiniAppId;
         }
         }).catch(res=>{
-          console.log(res);
         })
     },
     //保存配置
     onSubmit1() {
-        console.log(this.queryParams);
         saveCompanyMiniApp(this.queryParams).then(res=>{
             this.msgSuccess("修改成功");
         }).catch(res=>{

+ 0 - 2
src/views/company/companyMoneyLogs/index.vue

@@ -221,9 +221,7 @@ export default {
     handleDetails(row){
       this.show.open=true;
       var that=this;
-      console.log(row)
       const orderId = row.businessId ;
-      console.log("订单id", orderId)
       setTimeout(() => {
         this.$refs.order.getDetails(orderId);
       }, 500);

+ 0 - 1
src/views/company/companyRecharge/doRecharge.vue

@@ -162,7 +162,6 @@ export default {
               colorLight: '#ffffff',
               correctLevel: QRCode.CorrectLevel.H
             });
-            console.log('二维码创建成功');
           } else {
             console.error('二维码容器不存在');
             this.$message.error('二维码生成失败:容器不存在');

+ 0 - 1
src/views/company/companyRecharge/index.vue

@@ -456,7 +456,6 @@ export default {
     /** 红包充值按钮*/
     handleRedRecharge(){
       getCompanyRedPacketBalance().then(response => {
-        console.log(response.data);
         const data = response.data;
         this.redSubmit=false
         this.redRechargeForm.companyId = data.companyId

+ 5 - 6
src/views/company/companySmsPackage/index.vue

@@ -83,7 +83,6 @@ export default {
   methods: {
     selectItem(item){
       this.form.packageId=item.packageId;
-      console.log(this.form.packageId)
     },
     getCompanyInfo(){
       getCompanyInfo().then(response => {
@@ -119,11 +118,11 @@ export default {
             that.getCompanySms()
           }).catch(function(error) {
           });
-           
+
         }
       });
     },
-     
+
   }
 };
 </script>
@@ -135,7 +134,7 @@ export default {
     width:200px;
     margin: 0px 10px;
     cursor: pointer;
-    
+
   }
   .active{
     border: 1px solid #13c2c2;;
@@ -143,14 +142,14 @@ export default {
 
 
 }
- 
+
 .footer-btn{
   padding-top: 30px;
   border-top: 1px solid #eee;
   display: flex;
   justify-content: flex-end;
 }
- 
+
 .counts{
   padding: 15px;
   border: 1px solid #ddd;

+ 6 - 9
src/views/company/companyUser/card/addSms.vue

@@ -59,7 +59,7 @@
                                         type="text"
                                         icon="el-icon-delete"
                                         @click="handleDelCustomer(scope.row)"
-                                        >删除</el-button>   
+                                        >删除</el-button>
                                 </template>
                             </el-table-column>
                     </el-table>
@@ -94,7 +94,7 @@
 
     </div>
 </template>
-  
+
 <script>
     import { getSmsTempList } from "@/api/company/companySmsTemp";
     import { getCompanySmsCount } from "@/api/company/companySms";
@@ -110,7 +110,7 @@
                 sexOptions:[],
                 tagsOptions:[],
                 smsTemps:[],
-                smsCount:0, 
+                smsCount:0,
                 form: {
                     tempId:null,
                     tempCode:null,
@@ -159,11 +159,10 @@
                 this.smsTemps = response.data;
             });
             this.getCompanySmsCount()
-            
+
         },
         methods: {
             selectCustomer(row){
-                console.log(row);
                 for(var i=0;i<this.customerList.length;i++){
                     if(this.customerList[i].customerId==row.customerId){
                        return;
@@ -171,7 +170,7 @@
                 }
                 this.customerList.push(row);
             },
-           
+
             handleAddCustomer(){
                 this.$emit('handleAddCustomer');
             },
@@ -188,7 +187,6 @@
             },
             smsChange(e){
                 var v=this.smsTemps.find(value=>value.tempId==e);
-                console.log(v)
                 this.form.content=v.content
                 this.form.tempCode=v.tempCode
             },
@@ -232,7 +230,7 @@
     height: 100%;
     background-color: #fff;
     padding: 20px;
-        
+
 }
 .footer{
     display: flex;
@@ -243,4 +241,3 @@
 
 
 
- 

+ 1 - 1
src/views/company/companyUser/companyUserList.vue

@@ -66,7 +66,7 @@ import {qwList, delUser,addUser,getUser,updateUser,exportUser, resetUserPwd,chan
 import { treeselect } from "@/api/company/companyDept";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
-import source from "echarts/src/data/Source";
+// import source from "echarts/src/data/Source"; // echarts5 已移除内部路径
 export default {
   name: "companyUserList",
   components: { Treeselect },

+ 0 - 10
src/views/company/companyUser/index.vue

@@ -1465,8 +1465,6 @@ export default {
         this.$message.warning("请至少选择一个角色");
         return;
       }
-      console.log(this.ids)
-      console.log(this.selectedRoleIds)
 
       // 调用API批量更新用户角色
       updateBatchUserRoles({ userIds: this.ids, roleIds: this.selectedRoleIds })
@@ -1488,7 +1486,6 @@ export default {
           this.userList = response.rows;
           this.total = response.total;
           this.loading = false;
-          console.log(" this.userList ", this.userList)
         }
       );
     },
@@ -1634,7 +1631,6 @@ export default {
         this.open = true;
         this.title = "添加员工";
         this.form.password = this.form1.loginPassword;
-        console.log(" this.form1 ", this.form1)
       });
     },
 
@@ -2022,7 +2018,6 @@ export default {
           },
           onUploadProgress: progressEvent => {
             const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total);
-            console.log(`上传进度: ${percentCompleted}%`);
           }
         });
         if (response.data && (response.data.url || (response.data.data && response.data.data.url))) {
@@ -2054,7 +2049,6 @@ export default {
     requestUpload() {
     },
     beforeUpload() {
-      console.log(file.type)
       const isPic =
         file.type === 'image/jpeg' ||
         file.type === 'image/png' ||
@@ -2077,7 +2071,6 @@ export default {
       this.doctorForm.userId = row.userId;
     },
     bindCompanyUserDoctorId(row) {
-      console.log(row)
       this.doctorForm.doctorId = row;
       bindDoctorId(this.doctorForm).then(res => {
         if (res.code == 200) {
@@ -2148,13 +2141,11 @@ export default {
       }
       this.bindCidServerLoading = true;
         bindCidServer(param).then(res=>{
-          console.log(res);
           this.bindCidServerLoading = false;
           this.$message.success('绑定成功');
           this.getList();
         }).catch(res=>{
           this.bindCidServerLoading = false;
-          console.log(res)
         })
     },
     //用户解绑cidserver服务器
@@ -2170,7 +2161,6 @@ export default {
         this.getList();
       }).catch(res=>{
         this.bindCidServerLoading = false;
-        console.log(res)
       });
     },
     /** 查询已绑定的用户 */

+ 0 - 7
src/views/company/companyUser/myCompanyUserIndex.vue

@@ -1076,8 +1076,6 @@ export default {
         this.$message.warning("请至少选择一个角色");
         return;
       }
-      console.log(this.ids)
-      console.log(this.selectedRoleIds)
 
       // 调用API批量更新用户角色
       updateBatchUserRoles({ userIds: this.ids, roleIds: this.selectedRoleIds })
@@ -1099,7 +1097,6 @@ export default {
           this.userList = response.rows;
           this.total = response.total;
           this.loading = false;
-          console.log(" this.userList ", this.userList)
         }
       );
     },
@@ -1244,7 +1241,6 @@ export default {
         this.open = true;
         this.title = "添加员工";
         this.form.password = this.form1.loginPassword;
-        console.log(" this.form1 ", this.form1)
       });
     },
 
@@ -1628,7 +1624,6 @@ export default {
           },
           onUploadProgress: progressEvent => {
             const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total);
-            console.log(`上传进度: ${percentCompleted}%`);
           }
         });
         if (response.data && (response.data.url || (response.data.data && response.data.data.url))) {
@@ -1660,7 +1655,6 @@ export default {
     requestUpload() {
     },
     beforeUpload() {
-      console.log(file.type)
       const isPic =
         file.type === 'image/jpeg' ||
         file.type === 'image/png' ||
@@ -1683,7 +1677,6 @@ export default {
       this.doctorForm.userId = row.userId;
     },
     bindCompanyUserDoctorId(row) {
-      console.log(row)
       this.doctorForm.doctorId = row;
       bindDoctorId(this.doctorForm).then(res => {
         if (res.code == 200) {

+ 0 - 1
src/views/company/companyUser/profile/index.vue

@@ -507,7 +507,6 @@ export default {
     },
     openWechatBindDialog() {
       getWechatBindQrcode().then(res => {
-        console.log(res)
         this.wechatQrcode = res.data.qrcodeUrl;
         this.bindDialogVisible = true;
         this.startCheckWechatBind(res.data.sceneId);

+ 4 - 5
src/views/company/companyVoiceCaller/index.vue

@@ -92,7 +92,7 @@
         </template>
       </el-table-column>
     </el-table>
-    
+
     <pagination
       v-show="total>0"
       :total="total"
@@ -206,7 +206,7 @@ export default {
       // 表单参数
       form: {},
       // 表单校验
-      rules: { 
+      rules: {
         companyUserId: [
           { required: true, message: "员工不能为空", trigger: "blur" }
         ],
@@ -216,7 +216,7 @@ export default {
         callerId: [
           { required: true, message: "坐席编号不能为空", trigger: "blur" }
         ],
-        
+
         // code: [
         //   { required: true, message: "验证码不能为空", trigger: "blur" }
         // ],
@@ -275,10 +275,9 @@ export default {
     //                 that.timer = null;
     //             }
     //         }, 1000)
-    //     } 
+    //     }
     // },
     userChange(e){
-      console.log(e)
     },
     getCallerList() {
       getCallerList().then(response => {

+ 0 - 1
src/views/company/companyVoicePackageOrder/buy.vue

@@ -95,7 +95,6 @@ export default {
   methods: {
     selectItem(item){
       this.form.packageId=item.packageId;
-      console.log(this.form.packageId)
     },
     getCompanyVoice(){
       getCompanyVoice().then(response => {

+ 0 - 7
src/views/company/companyVoiceRobotic/index.vue

@@ -1139,7 +1139,6 @@ export default {
         getCurrentCompanyId().then(res=>{
             this.currentCompanyId = res.companyId;
         }).catch(res=>{
-            console.log(res);
         })
         //getTypes().then(e => {
         //this.robotList = e.robot;
@@ -1158,7 +1157,6 @@ export default {
             this.levelList = e.data;
         })
         getDicts("task_scene_type").then(e => {
-            console.log(e);
             this.sceneList = e.data;
         })
         this.getList();
@@ -1234,9 +1232,7 @@ export default {
         getSmsTempDropList(){
             getSmsTempList().then(res=>{
                 this.smsTempList = res.data;
-                console.log(this.smsTempList);
             }).catch(res=>{
-                console.log(res);
             })
         },
         /** 查询机器人外呼任务列表 */
@@ -1375,7 +1371,6 @@ export default {
                         })
                     }
                     this.form.qwUserList = list;
-                    console.log(this.form);
                     if(this.workflowHasAddWx && (!this.form.qwUserList || this.form.qwUserList.length == 0)){
                         this.msgError("请选者加微方案");
                         return;
@@ -1491,7 +1486,6 @@ export default {
             });
         },
         wxOpen(id, isWeCom) {
-            console.log("isWeCom="+isWeCom)
             if (isWeCom === 2) {
                 this.qw.show = true;
                 this.qw.queryParams.id = id;
@@ -1760,7 +1754,6 @@ export default {
          * 选择任务类型
          */
         taskTypeChange(){
-            console.log(this.form.taskType);
             this.form.runtimeRangeStart=null;
             this.form.runtimeRangeEnd= null;
             this.form.userIds= [];

+ 0 - 7
src/views/company/companyVoiceRobotic/myIndex.vue

@@ -1114,7 +1114,6 @@ export default {
     getCurrentCompanyId().then(res=>{
         this.currentCompanyId = res.companyId;
     }).catch(res=>{
-      console.log(res);
     })
     //getTypes().then(e => {
       //this.robotList = e.robot;
@@ -1133,7 +1132,6 @@ export default {
       this.levelList = e.data;
     })
     getDicts("task_scene_type").then(e => {
-      console.log(e);
       this.sceneList = e.data;
     })
     this.getList();
@@ -1208,9 +1206,7 @@ export default {
     getSmsTempDropList(){
       getSmsTempList().then(res=>{
         this.smsTempList = res.data;
-        console.log(this.smsTempList);
       }).catch(res=>{
-        console.log(res);
       })
     },
     /** 查询机器人外呼任务列表 */
@@ -1348,7 +1344,6 @@ export default {
             })
           }
           this.form.qwUserList = list;
-          console.log(this.form);
           if(this.workflowHasAddWx && (!this.form.qwUserList || this.form.qwUserList.length == 0)){
             this.msgError("请选者加微方案");
             return;
@@ -1460,7 +1455,6 @@ export default {
       });
     },
     wxOpen(id, isWeCom) {
-      console.log("isWeCom="+isWeCom)
       if (isWeCom === 2) {
         this.qw.show = true;
         this.qw.queryParams.id = id;
@@ -1658,7 +1652,6 @@ export default {
      * 选择任务类型
      */
     taskTypeChange(){
-      console.log(this.form.taskType);
       this.form.runtimeRangeStart=null;
       this.form.runtimeRangeEnd= null;
       this.form.userIds= [];

+ 0 - 3
src/views/company/companyWorkflow/design.vue

@@ -817,8 +817,6 @@ export default {
     // })
     listAll().then(e => {
       this.wxDialogList = e.data;
-      console.log("------")
-      console.log(this.wxDialogList)
     })
 
     this.getDicts("sys_qw_qw_wx_add_way").then(response => {
@@ -997,7 +995,6 @@ export default {
         getSmsTempList().then(res => {
           this.smsTempList = res.data || []
         })
-        console.log('smsTempList:', this.smsTempList)
       }
       this.focusCanvasContainer()
     },

+ 0 - 2
src/views/company/companyWorkflow/index.vue

@@ -471,12 +471,10 @@ export default {
       this.salesSearchKey = ''
       this.bindSalesOpen = true
       this.salesLoading = true
-      console.log(11111)
       // 获取当前绑定的销售列表
       getBindCompanyUserByWorkflowId(row.workflowId).then(res => {
         this.currentBindUserList = res.data.data || []
       }).catch(() => {})
-      console.log(this.currentBindUserList)
       // 获取销售列表
       listCompanyUser().then(res => {
         this.companyUserList = res.data || res.rows || []

+ 0 - 2
src/views/company/companyWorkflow/myIndex.vue

@@ -471,12 +471,10 @@ export default {
       this.salesSearchKey = ''
       this.bindSalesOpen = true
       this.salesLoading = true
-      console.log(11111)
       // 获取当前绑定的销售列表
       getBindCompanyUserByWorkflowId(row.workflowId).then(res => {
         this.currentBindUserList = res.data.data || []
       }).catch(() => {})
-      console.log(this.currentBindUserList)
       // 获取销售列表
       listCompanyUser().then(res => {
         this.companyUserList = res.data || res.rows || []

+ 0 - 2
src/views/company/downloadAppCount/index.vue

@@ -184,12 +184,10 @@ export default {
           this.flattenDeptTree(node.children, map)
         }
       })
-      console.log("部门map",map)
       return map
     },
     formatDeptName(row) {
       const id = Number(row.deptId)
-      console.log("deptId",id)
       return this.deptMap[id] || ''
     },
     /** 导出按钮操作 */

+ 1 - 5
src/views/company/statistics/myVoiceLogs.vue

@@ -90,7 +90,7 @@
 <script>
 import { voiceLogs,exportVoiceLogs } from "@/api/company/statistics";
 import { getUserListByDeptId} from "@/api/company/companyUser";
-import echarts from 'echarts'
+import * as echarts from 'echarts'
 import resize from '../../dashboard/mixins/resize'
 import { treeselect } from "@/api/company/companyDept";
 import Treeselect from "@riophae/vue-treeselect";
@@ -170,12 +170,10 @@ export default {
   },
   methods: {
     companyChange(val){
-      console.log(val);
       this.companyId=val;
       this.getTreeselect();
     },
     currDeptChange(val){
-      console.log(val)
       this.deptId=val;
       this.getUserListByDeptId();
     },
@@ -185,7 +183,6 @@ export default {
       var param={companyId:this.companyId}
       treeselect(param).then((response) => {
         this.deptOptions = response.data;
-        console.log(this.deptOptions)
         if(response.data!=null&&response.data.length>0){
           this.deptId=response.data[0].id;
           that.getVoiceLogs()
@@ -201,7 +198,6 @@ export default {
         data={type:this.value,deptId:this.deptId}
       }
       exportVoiceLogs(data).then((response) => {
-        console.log(response)
         this.download(response.msg);
       });
 

+ 10 - 13
src/views/company/statistics/smsLogs.vue

@@ -57,19 +57,19 @@
                           prop="successCount"
                           label="成功数量">
                         </el-table-column>
-                      
+
                       </el-table>
                   </div>
               </div>
             </div>
-               
+
           </div>
 </template>
 
 <script>
 import { smsLogs,exportSmsLogs } from "@/api/company/statistics";
 import { getUserListByDeptId} from "@/api/company/companyUser";
-import echarts from 'echarts'
+import * as echarts from 'echarts'
 import resize from '../../dashboard/mixins/resize'
 import { treeselect } from "@/api/company/companyDept";
 import Treeselect from "@riophae/vue-treeselect";
@@ -131,7 +131,7 @@ export default {
         dates:[],
         smsCount:[],
         successCount:[],
-       
+
     }
   },
    created() {
@@ -139,7 +139,6 @@ export default {
   },
   methods: {
     currDeptChange(val){
-      console.log(val)
       this.deptId=val;
        this.getUserListByDeptId();
     },
@@ -148,7 +147,6 @@ export default {
       var that=this;
       treeselect().then((response) => {
         this.deptOptions = response.data;
-        console.log(this.deptOptions)
         if(response.data!=null&&response.data.length>0){
           this.deptId=response.data[0].id;
           that.smsLogs()
@@ -164,7 +162,6 @@ export default {
             data={type:this.value,deptId:this.deptId}
         }
         exportSmsLogs(data).then((response) => {
-            console.log(response)
            this.download(response.msg);
         });
 
@@ -174,7 +171,7 @@ export default {
         var data={deptId:this.deptId};
         getUserListByDeptId(data).then(response => {
           this.users = response.data;
-           
+
         });
     },
     smsLogs(){
@@ -228,7 +225,7 @@ export default {
           ],
           series: [
               {
-                  
+
                   name: '发送总数',
                   type: 'line',
                   emphasis: {
@@ -237,7 +234,7 @@ export default {
                   data: this.smsCount
               },
               {
-                 
+
                   name: '成功数量',
                   type: 'line',
                   emphasis: {
@@ -245,7 +242,7 @@ export default {
                   },
                   data: this.successCount
               }
-               
+
           ]
         };
         this.chart=echarts.init(document.getElementById("echart-customer"));
@@ -285,7 +282,7 @@ export default {
 .app-container{
     border: 1px solid #e6e6e6;
     padding: 12px;
-    
+
     .app-content{
       background-color: white;
       .title{
@@ -302,7 +299,7 @@ export default {
         padding: 30px;
         background-color:  rgb(255, 255, 255);
         height: 100%;
-    
+
         .echart-box{
           margin: 0 auto;
           text-align: center;

+ 8 - 11
src/views/company/statistics/voiceLogs.vue

@@ -73,14 +73,14 @@
                   </div>
               </div>
             </div>
-               
+
           </div>
 </template>
 
 <script>
 import { voiceLogs,exportVoiceLogs } from "@/api/company/statistics";
 import { getUserListByDeptId} from "@/api/company/companyUser";
-import echarts from 'echarts'
+import * as echarts from 'echarts'
 import resize from '../../dashboard/mixins/resize'
 import { treeselect } from "@/api/company/companyDept";
 import Treeselect from "@riophae/vue-treeselect";
@@ -144,7 +144,7 @@ export default {
         callCount:[],
         callSuccessCount:[],
         times:[]
-       
+
     }
   },
    created() {
@@ -152,7 +152,6 @@ export default {
   },
   methods: {
     currDeptChange(val){
-      console.log(val)
       this.deptId=val;
        this.getUserListByDeptId();
     },
@@ -161,7 +160,6 @@ export default {
       var that=this;
       treeselect().then((response) => {
         this.deptOptions = response.data;
-        console.log(this.deptOptions)
         if(response.data!=null&&response.data.length>0){
           this.deptId=response.data[0].id;
           that.getVoiceLogs()
@@ -177,7 +175,6 @@ export default {
             data={type:this.value,deptId:this.deptId}
         }
         exportVoiceLogs(data).then((response) => {
-            console.log(response)
            this.download(response.msg);
         });
 
@@ -187,7 +184,7 @@ export default {
         var data={deptId:this.deptId};
         getUserListByDeptId(data).then(response => {
           this.users = response.data;
-           
+
         });
     },
      getVoiceLogs(){
@@ -243,7 +240,7 @@ export default {
           ],
           series: [
               {
-                  
+
                   name: '通话时长',
                   type: 'line',
                   emphasis: {
@@ -252,7 +249,7 @@ export default {
                   data: this.times
               },
               {
-                 
+
                   name: '消耗分钟',
                   type: 'line',
                   emphasis: {
@@ -315,7 +312,7 @@ export default {
 .app-container{
     border: 1px solid #e6e6e6;
     padding: 12px;
-    
+
     .app-content{
       background-color: white;
       .title{
@@ -332,7 +329,7 @@ export default {
         padding: 30px;
         background-color:  rgb(255, 255, 255);
         height: 100%;
-    
+
         .echart-box{
           margin: 0 auto;
           text-align: center;

+ 93 - 106
src/views/company/tcmScheduleReport/add.vue

@@ -1,15 +1,15 @@
 <template>
   <div class="app-container">
       <div class="bj-divider">
-          <div class="left"> 
+          <div class="left">
                 <span class="default-text">档期信息</span>
             </div>
-             <div class="right"> 
+             <div class="right">
                 <el-button type="mini" @click="goBack()">返 回</el-button>
                 <span class="tips"></span>
             </div>
       </div>
-      
+
      <el-form ref="form" :model="form" :rules="rules" label-width="90px" style="margin-bottom:50px">
        <el-form-item label="所属档期" prop="scheduleId">
             <el-select disabled style="width: 500px" v-model="form.scheduleId" placeholder="请选择档期" clearable size="small" >
@@ -24,13 +24,13 @@
 
         <el-row>
             <el-col :span="12">
-                    <el-form-item label="总进线" label-width="90px" prop="totalNum">  
-                       <el-input :disabled="form.id>0" v-model="form.totalNum"  onkeyup="value=(value.replace(/\D/g,'')==''?'':parseInt(value))" type="number" placeholder="请输入总进线" />  
+                    <el-form-item label="总进线" label-width="90px" prop="totalNum">
+                       <el-input :disabled="form.id>0" v-model="form.totalNum"  onkeyup="value=(value.replace(/\D/g,'')==''?'':parseInt(value))" type="number" placeholder="请输入总进线" />
                     </el-form-item>
             </el-col>
             <el-col :span="12">
                     <el-form-item label="注册数" label-width="90px" prop="registerNum">
-                        <el-input :disabled="form.id>0" v-model="form.registerNum" onkeyup="value=(value.replace(/\D/g,'')==''?'':parseInt(value))" type="number" placeholder="请输入注册数" />  
+                        <el-input :disabled="form.id>0" v-model="form.registerNum" onkeyup="value=(value.replace(/\D/g,'')==''?'':parseInt(value))" type="number" placeholder="请输入注册数" />
                     </el-form-item>
             </el-col>
          </el-row>
@@ -46,7 +46,7 @@
                 </el-form-item>
            </el-col>
         </el-row>
-      
+
          <el-row>
               <el-col :span="8" v-if="form.registerRate!='0'">
                     <el-form-item label-width="80px" label="注册率" prop="registerRate">
@@ -57,23 +57,23 @@
                    <el-form-item label-width="80px" label="上线率" prop="onlineRate" style="margin-right:10px">
                            {{(form.onlineRate*100).toFixed(2)+"%"}}
                     </el-form-item>
-              </el-col>  
+              </el-col>
               <el-col :span="8" v-if="form.onlineRate!='0'">
                     <el-form-item label-width="80px" label="完课率" prop="onlineRate">
                            {{(form.finishRate*100).toFixed(2)+"%"}}
                     </el-form-item>
               </el-col>
-         </el-row>   
+         </el-row>
 
         <div class="bj-divider">
-            <div class="left"> 
+            <div class="left">
                     <span class="default-text">轮次业绩</span>
              </div>
         </div>
-        
+
          <el-row v-for="(item, index) in roundArr" :key="index">
               <el-col :span="7">
-                    <el-form-item :label="item+'业绩'"  label-width="90px" :prop="'round'+(index+1)+'Money'">  
+                    <el-form-item :label="item+'业绩'"  label-width="90px" :prop="'round'+(index+1)+'Money'">
                         <el-input-number  v-model="form['round'+(index+1)+'Money']" :step="10" :precision="2"  :min="0.00" :placeholder="'请输入'+item+'业绩'" />
                     </el-form-item>
               </el-col>
@@ -81,22 +81,22 @@
                     <el-form-item :label="item+'单数'"  label-width="90px" :prop="'round'+(index+1)+'Order'">
                         <el-input-number  v-model="form['round'+(index+1)+'Order']" :min="0"  :step="1" :placeholder="'请输入'+item+'单数'"/>
                     </el-form-item>
-              </el-col>  
+              </el-col>
 
               <el-col :span="5">
-                    <el-form-item :label="item+'转化率:'" label-width="90px" :prop="'round'+(index+1)+'Rate'"> 
-                       <b class="span">{{  renderRate(index) }}</b>  
+                    <el-form-item :label="item+'转化率:'" label-width="90px" :prop="'round'+(index+1)+'Rate'">
+                       <b class="span">{{  renderRate(index) }}</b>
                     </el-form-item>
               </el-col>
                <el-col :span="5">
                     <el-form-item :label="item+'客单价(元):'"  label-width="110px" :prop="'round'+(index+1)+'Unit'">
-                        <b class="span">{{form['round'+(index+1)+'Unit']}}</b>  
+                        <b class="span">{{form['round'+(index+1)+'Unit']}}</b>
                     </el-form-item>
               </el-col>
          </el-row>
 
          <el-row>
-                <el-col :span="7">  
+                <el-col :span="7">
                 <el-form-item label="累计总业绩" label-width="90px" prop="totalMoney">
                     <el-input-number  disabled v-model="form.totalMoney" :step="10" :precision="2"  :min="0.00" placeholder="请输入累计总业绩" />
                 </el-form-item>
@@ -113,7 +113,7 @@
             </el-col>
             <el-col :span="4">
                 <el-form-item label="目标完成率"  label-width="90px" prop="targetRate">
-                    <b class="span">{{ (form.targetRate*100).toFixed(2)+"%"}}</b>  
+                    <b class="span">{{ (form.targetRate*100).toFixed(2)+"%"}}</b>
                 </el-form-item>
             </el-col>
 
@@ -129,7 +129,7 @@
                     <el-form-item label="二轮单数"  label-width="90px" prop="round2Order">
                         <el-input-number v-model="form.round2Order" :min="0" :step="1" placeholder="请输入二轮单数" />
                     </el-form-item>
-              </el-col>  
+              </el-col>
               <el-col :span="5">
                     <el-form-item label="二轮转化率" label-width="90px"  prop="round2Rate">
                         {{(form.round2Rate*100).toFixed(2)+"%"}}
@@ -152,7 +152,7 @@
                     <el-form-item label="三轮单数"  label-width="90px" prop="round3Order">
                         <el-input-number v-model="form.round3Order" :min="0" :step="1" placeholder="请输入三轮单数" />
                     </el-form-item>
-              </el-col>  
+              </el-col>
               <el-col :span="5">
                     <el-form-item label="三轮转化率" label-width="90px"  prop="round3Rate">
                         {{(form.round3Rate*100).toFixed(2)+"%"}}
@@ -175,7 +175,7 @@
                     <el-form-item label="四轮单数"  label-width="90px" prop="round4Order">
                         <el-input-number v-model="form.round4Order" :min="0" :step="1" placeholder="请输入四轮单数" />
                     </el-form-item>
-              </el-col>  
+              </el-col>
               <el-col :span="5">
                     <el-form-item label="四轮转化率" label-width="90px"  prop="round4Rate">
                         {{(form.round4Rate*100).toFixed(2)+"%"}}
@@ -187,7 +187,7 @@
                     </el-form-item>
               </el-col>
          </el-row>
-         
+
          <el-row>
               <el-col :span="7">
                     <el-form-item label="五轮业绩"  label-width="90px" prop="round5Money">
@@ -198,7 +198,7 @@
                     <el-form-item label="五轮单数"  label-width="90px" prop="round5Order">
                         <el-input-number v-model="form.round5Order" :min="0" :step="1" placeholder="请输入五轮单数" />
                     </el-form-item>
-              </el-col>  
+              </el-col>
               <el-col :span="5">
                     <el-form-item label="五轮转化率" label-width="90px"  prop="round5Rate">
                         {{(form.round5Rate*100).toFixed(2)+"%"}}
@@ -210,7 +210,7 @@
                     </el-form-item>
               </el-col>
          </el-row>
-         
+
          <el-row>
               <el-col :span="7">
                     <el-form-item label="六轮业绩"  label-width="90px" prop="round6Money">
@@ -221,7 +221,7 @@
                     <el-form-item label="六轮单数"  label-width="90px" prop="round6Order">
                         <el-input-number v-model="form.round6Order" :min="0" :step="1" placeholder="请输入六轮单数" />
                     </el-form-item>
-              </el-col>  
+              </el-col>
               <el-col :span="5">
                     <el-form-item label="六轮转化率" label-width="90px"  prop="round6Rate">
                         {{(form.round6Rate*100).toFixed(2)+"%"}}
@@ -233,7 +233,7 @@
                     </el-form-item>
               </el-col>
          </el-row>
-         
+
          <el-row>
               <el-col :span="7">
                     <el-form-item label="七轮业绩"  label-width="90px" prop="round7Money">
@@ -244,7 +244,7 @@
                     <el-form-item label="七轮单数"  label-width="90px" prop="round7Order">
                         <el-input-number v-model="form.round7Order" :min="0" :step="1" placeholder="请输入七轮单数" />
                     </el-form-item>
-              </el-col>  
+              </el-col>
               <el-col :span="5">
                     <el-form-item label="七轮转化率" label-width="90px"  prop="round7Rate">
                         {{(form.round7Rate*100).toFixed(2)+"%"}}
@@ -256,7 +256,7 @@
                     </el-form-item>
               </el-col>
          </el-row>
-         
+
          <el-row>
               <el-col :span="7">
                     <el-form-item label="八轮业绩"  label-width="90px" prop="round8Money">
@@ -267,7 +267,7 @@
                     <el-form-item label="八轮单数"  label-width="90px" prop="round8Order">
                         <el-input-number v-model="form.round8Order" :min="0" :step="1" placeholder="请输入八轮单数" />
                     </el-form-item>
-              </el-col>  
+              </el-col>
               <el-col :span="5">
                     <el-form-item label="八轮转化率" label-width="90px"  prop="round8Rate">
                         {{(form.round8Rate*100).toFixed(2)+"%"}}
@@ -279,7 +279,7 @@
                     </el-form-item>
               </el-col>
          </el-row>
-         
+
          <el-row>
               <el-col :span="7">
                     <el-form-item label="九轮业绩"  label-width="90px" prop="round9Money">
@@ -290,7 +290,7 @@
                     <el-form-item label="九轮单数"  label-width="90px" prop="round9Order">
                         <el-input-number v-model="form.round9Order" :min="0" :step="1" placeholder="请输入九轮单数" />
                     </el-form-item>
-              </el-col>  
+              </el-col>
               <el-col :span="5">
                     <el-form-item label="九轮转化率" label-width="90px"  prop="round9Rate">
                         {{(form.round9Rate*100).toFixed(2)+"%"}}
@@ -346,14 +346,12 @@ export default {
     //     }
     // };
     const roundOrderRule = (rule, value, callback) => {
-        console.log('round1Order rule'+JSON.stringify(rule)+' value:'+value);
         var orderNum=0;
         for (let index = 0; index < 9; index++) {
             if(!!this.form['round'+index+'Order']){
                 orderNum+=this.form['round'+index+'Order'];
             }
         }
-        console.log('qxj orderNum:'+orderNum);
         var roundRate=rule.field.replace('Order','Rate');
         if (Number(value) > this.form.totalNum) {
             this.form[roundRate]=0;
@@ -397,11 +395,11 @@ export default {
       // 表单参数
       form: {},
       // 表单校验
-      rules: { 
-          scheduleId: [    
+      rules: {
+          scheduleId: [
             { required: true, message: "请选择档期", trigger: "blur" }
           ],
-          totalNum: [    
+          totalNum: [
             { required: true, message: "总进线不能为空", trigger: "blur" }
           ],
           registerNum: [
@@ -444,192 +442,185 @@ export default {
           round9Order: [
             { required: false, validator: roundOrderRule, trigger: "blur" }
           ],
-          
+
       }
     };
   },
   watch:{
     'form.registerNum':function(newVal,oldVal){
-        console.log('newVal->',newVal)
-        console.log('oldVal->',oldVal)
         this.form.registerRate=0;
         if(!!newVal && Number(newVal)<=this.form.totalNum && this.form.totalNum>0){
            this.form.registerRate=(newVal/this.form.totalNum*1.0).toFixed(2);
         }
     },
     'form.onlineNum':function(newVal,oldVal){
-        console.log('newVal->',newVal)
-        console.log('oldVal->',oldVal)
         this.form.onlineRate=0;
         if(!!newVal && this.form.registerNum>0){
            this.form.onlineRate=(newVal/this.form.registerNum*1.0).toFixed(2);
         }
     },
     'form.finishNum':function(newVal,oldVal){
-        console.log('newVal->',newVal)
-        console.log('oldVal->',oldVal)
         this.form.finishRate=0;
         if(!!newVal && this.form.registerNum>0){
-           this.form.finishRate=(newVal/this.form.registerNum*1.0).toFixed(2); 
+           this.form.finishRate=(newVal/this.form.registerNum*1.0).toFixed(2);
         }
-    },  
-     'form.round1Money':function(newVal,oldVal){   
-        console.log("qxj newVal:"+newVal+",is:"+!!newVal);
+    },
+     'form.round1Money':function(newVal,oldVal){
         if(newVal!=undefined){
             if(this.form.round1Order>0){
-                this.form.round1Unit=(newVal/this.form.round1Order*1.0).toFixed(2); 
+                this.form.round1Unit=(newVal/this.form.round1Order*1.0).toFixed(2);
             }
             this.calcTotalMoney();
         }
     },
      'form.round1Order':function(newVal,oldVal){
         if(newVal!=undefined){
-           this.form.round1Rate=(newVal/this.form.totalNum*1.0).toFixed(2); 
+           this.form.round1Rate=(newVal/this.form.totalNum*1.0).toFixed(2);
            this.form.round1Unit=0.0;
            if(newVal>0)
-           this.form.round1Unit=(this.form.round1Money/newVal*1.0).toFixed(2); 
+           this.form.round1Unit=(this.form.round1Money/newVal*1.0).toFixed(2);
            this.calcTotalOrder();
         }
     },
-     'form.round2Money':function(newVal,oldVal){   
+     'form.round2Money':function(newVal,oldVal){
         if(newVal!=undefined){
             if(this.form.round2Order>0){
-                this.form.round2Unit=(newVal/this.form.round2Order*1.0).toFixed(2); 
+                this.form.round2Unit=(newVal/this.form.round2Order*1.0).toFixed(2);
             }
             this.calcTotalMoney();
         }
     },
      'form.round2Order':function(newVal,oldVal){
          if(newVal!=undefined){
-           this.form.round2Rate=(newVal/this.form.totalNum*1.0).toFixed(2); 
+           this.form.round2Rate=(newVal/this.form.totalNum*1.0).toFixed(2);
            this.form.round2Unit=0.0;
            if(newVal>0)
-           this.form.round2Unit=(this.form.round2Money/newVal*1.0).toFixed(2); 
+           this.form.round2Unit=(this.form.round2Money/newVal*1.0).toFixed(2);
            this.calcTotalOrder();
         }
     },
-    'form.round3Money':function(newVal,oldVal){   
+    'form.round3Money':function(newVal,oldVal){
         if(newVal!=undefined){
             if(this.form.round3Order>0){
-                this.form.round3Unit=(newVal/this.form.round3Order*1.0).toFixed(2); 
+                this.form.round3Unit=(newVal/this.form.round3Order*1.0).toFixed(2);
             }
             this.calcTotalMoney();
         }
     },
      'form.round3Order':function(newVal,oldVal){
         if(newVal!=undefined){
-           this.form.round3Rate=(newVal/this.form.totalNum*1.0).toFixed(2); 
+           this.form.round3Rate=(newVal/this.form.totalNum*1.0).toFixed(2);
            this.form.round3Unit=0.0;
            if(newVal>0)
-           this.form.round3Unit=(this.form.round3Money/newVal*1.0).toFixed(2); 
+           this.form.round3Unit=(this.form.round3Money/newVal*1.0).toFixed(2);
            this.calcTotalOrder();
         }
     },
-    'form.round4Money':function(newVal,oldVal){   
+    'form.round4Money':function(newVal,oldVal){
          if(newVal!=undefined){
             if(this.form.round4Order>0){
-                this.form.round4Unit=(newVal/this.form.round4Order*1.0).toFixed(2); 
+                this.form.round4Unit=(newVal/this.form.round4Order*1.0).toFixed(2);
             }
             this.calcTotalMoney();
         }
     },
      'form.round4Order':function(newVal,oldVal){
         if(newVal!=undefined){
-           this.form.round4Rate=(newVal/this.form.totalNum*1.0).toFixed(2); 
+           this.form.round4Rate=(newVal/this.form.totalNum*1.0).toFixed(2);
            this.form.round4Unit=0.0;
            if(newVal>0)
-           this.form.round4Unit=(this.form.round4Money/newVal*1.0).toFixed(2); 
+           this.form.round4Unit=(this.form.round4Money/newVal*1.0).toFixed(2);
            this.calcTotalOrder();
         }
     },
-    'form.round5Money':function(newVal,oldVal){   
+    'form.round5Money':function(newVal,oldVal){
         if(newVal!=undefined){
             if(this.form.round5Order>0){
-                this.form.round5Unit=(newVal/this.form.round5Order*1.0).toFixed(2); 
+                this.form.round5Unit=(newVal/this.form.round5Order*1.0).toFixed(2);
             }
             this.calcTotalMoney();
         }
     },
      'form.round5Order':function(newVal,oldVal){
          if(newVal!=undefined){
-           this.form.round5Rate=(newVal/this.form.totalNum*1.0).toFixed(2); 
+           this.form.round5Rate=(newVal/this.form.totalNum*1.0).toFixed(2);
            this.form.round5Unit=0.0;
            if(newVal>0)
-           this.form.round5Unit=(this.form.round5Money/newVal*1.0).toFixed(2); 
+           this.form.round5Unit=(this.form.round5Money/newVal*1.0).toFixed(2);
            this.calcTotalOrder();
         }
     },
-    'form.round6Money':function(newVal,oldVal){   
+    'form.round6Money':function(newVal,oldVal){
         if(newVal!=undefined){
             if(this.form.round6Order>0){
-                this.form.round6Unit=(newVal/this.form.round6Order*1.0).toFixed(2); 
+                this.form.round6Unit=(newVal/this.form.round6Order*1.0).toFixed(2);
             }
             this.calcTotalMoney();
         }
     },
      'form.round6Order':function(newVal,oldVal){
          if(newVal!=undefined){
-           this.form.round6Rate=(newVal/this.form.totalNum*1.0).toFixed(2); 
+           this.form.round6Rate=(newVal/this.form.totalNum*1.0).toFixed(2);
            this.form.round6Unit=0.0;
            if(newVal>0)
-           this.form.round6Unit=(this.form.round6Money/newVal*1.0).toFixed(2); 
+           this.form.round6Unit=(this.form.round6Money/newVal*1.0).toFixed(2);
            this.calcTotalOrder();
         }
     },
-    'form.round7Money':function(newVal,oldVal){   
+    'form.round7Money':function(newVal,oldVal){
         if(newVal!=undefined){
             if(this.form.round7Order>0){
-                this.form.round7Unit=(newVal/this.form.round7Order*1.0).toFixed(2); 
+                this.form.round7Unit=(newVal/this.form.round7Order*1.0).toFixed(2);
             }
             this.calcTotalMoney();
         }
     },
      'form.round7Order':function(newVal,oldVal){
          if(newVal!=undefined){
-           this.form.round7Rate=(newVal/this.form.totalNum*1.0).toFixed(2); 
+           this.form.round7Rate=(newVal/this.form.totalNum*1.0).toFixed(2);
            this.form.round7Unit=0.0;
            if(newVal>0)
-           this.form.round7Unit=(this.form.round7Money/newVal*1.0).toFixed(2); 
+           this.form.round7Unit=(this.form.round7Money/newVal*1.0).toFixed(2);
            this.calcTotalOrder();
         }
     },
-    'form.round8Money':function(newVal,oldVal){   
+    'form.round8Money':function(newVal,oldVal){
         if(newVal!=undefined){
             if(this.form.round8Order>0){
-                this.form.round8Unit=(newVal/this.form.round8Order*1.0).toFixed(2); 
+                this.form.round8Unit=(newVal/this.form.round8Order*1.0).toFixed(2);
             }
             this.calcTotalMoney();
         }
     },
      'form.round8Order':function(newVal,oldVal){
         if(newVal!=undefined){
-           this.form.round8Rate=(newVal/this.form.totalNum*1.0).toFixed(2); 
+           this.form.round8Rate=(newVal/this.form.totalNum*1.0).toFixed(2);
            this.form.round8Unit=0.0;
            if(newVal>0)
-           this.form.round8Unit=(this.form.round8Money/newVal*1.0).toFixed(2); 
+           this.form.round8Unit=(this.form.round8Money/newVal*1.0).toFixed(2);
            this.calcTotalOrder();
         }
     },
-    'form.round9Money':function(newVal,oldVal){   
+    'form.round9Money':function(newVal,oldVal){
          if(newVal!=undefined){
             if(this.form.round9Order>0){
-                this.form.round9Unit=(newVal/this.form.round9Order*1.0).toFixed(2); 
+                this.form.round9Unit=(newVal/this.form.round9Order*1.0).toFixed(2);
             }
             this.calcTotalMoney();
         }
     },
      'form.round9Order':function(newVal,oldVal){
             if(newVal!=undefined){
-                this.form.round9Rate=(newVal/this.form.totalNum*1.0).toFixed(2); 
+                this.form.round9Rate=(newVal/this.form.totalNum*1.0).toFixed(2);
                 this.form.round9Unit=0.0;
                 if(newVal>0)
-                this.form.round9Unit=(this.form.round9Money/newVal*1.0).toFixed(2); 
+                this.form.round9Unit=(this.form.round9Money/newVal*1.0).toFixed(2);
                 this.calcTotalOrder();
             }
       },
      'form.targetMoney':function(newVal,oldVal){
          if(newVal!=undefined){
-              this.form.targetRate=(this.form.totalMoney/newVal*1.0).toFixed(5); 
+              this.form.targetRate=(this.form.totalMoney/newVal*1.0).toFixed(5);
          }
       },
   },
@@ -652,19 +643,17 @@ export default {
         listAllSchedule().then(response => {
             this.scheduleList = response.rows;
             var listTemp = this.scheduleList.filter(item => item.id==this.scheduleId);
-            console.log("qxj listTemp:"+JSON.stringify(listTemp));
             if(listTemp.length>0){
                 this.scheduleItem=listTemp[0];
             }
         });
     },
     /** 查询中医档期业绩报表详情 */
-    requestData() {  
+    requestData() {
       this.reset();
       this.loading = true;
       getTcmScheduleReport(this.reportId).then(response => {
         this.form = response.data;
-        console.log("qxj reportData:"+ JSON.stringify(response.data));
         this.loading = false;
       });
     },
@@ -751,7 +740,6 @@ export default {
                 totalMoney+=this.form['round'+index+'Money'];
             }
         }
-        console.log("qxj totalMoney:"+totalMoney);
         this.form.totalMoney=totalMoney.toFixed(2);
     },
     calcTotalOrder(){
@@ -761,7 +749,6 @@ export default {
                 totalOrder+=this.form['round'+index+'Order'];
             }
         }
-        console.log("qxj totalOrder:"+totalOrder);
         this.form.totalOrder=totalOrder;
     },
     renderRate(index){
@@ -796,28 +783,28 @@ export default {
         }
       });
     },
-    toDecimal2(x) {  
-        var f = x;  
-        if (isNaN(f)) {  
-            return 0;  
-        }  
-        // var f = Math.round(x*100)/100;  
-        // var s = f.toString();  
-        // var rs = s.indexOf('.');  
-        // if (rs < 0) {  
-        //     rs = s.length;  
-        //     s += '.';  
-        // }  
-        // while (s.length <= rs + 2) {  
-        //     s += '0';  
-        // }  
-        return x.toFixed(2);  
+    toDecimal2(x) {
+        var f = x;
+        if (isNaN(f)) {
+            return 0;
+        }
+        // var f = Math.round(x*100)/100;
+        // var s = f.toString();
+        // var rs = s.indexOf('.');
+        // if (rs < 0) {
+        //     rs = s.length;
+        //     s += '.';
+        // }
+        // while (s.length <= rs + 2) {
+        //     s += '0';
+        // }
+        return x.toFixed(2);
     }
   }
 };
 </script>
 
-<style lang="scss" scoped> 
+<style lang="scss" scoped>
  .app-main{
    background-color: #fff !important;
 }
@@ -926,4 +913,4 @@ export default {
 }
 
 
-</style>
+</style>

+ 19 - 25
src/views/company/tcmScheduleReport/index.vue

@@ -61,7 +61,7 @@
         <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
       </el-form-item>
-    
+
     </el-form>
 
     <el-row :gutter="10" class="mb8">
@@ -113,7 +113,7 @@
       <!-- <el-table-column label="公司名称" align="center" prop="companyName" /> -->
       <el-table-column label="所在部门" align="center" prop="deptName" />
       <el-table-column label="员工姓名" align="center" prop="userNickName" />
-     
+
       <el-table-column label="总进线" align="center" prop="totalNum" />
       <el-table-column label="注册数" align="center" prop="registerNum" />
       <el-table-column label="上线数" align="center" prop="onlineNum" />
@@ -166,7 +166,7 @@
         </template>
       </el-table-column>
 
-<!-- 
+<!--
       <el-table-column label="一轮业绩" align="center" prop="round1Money" />
       <el-table-column label="一轮单数" align="center" prop="round1Order" />
       <el-table-column label="一轮转化率" align="center" prop="round1Rate" />
@@ -229,7 +229,7 @@
         </template>
       </el-table-column>
     </el-table>
-    
+
     <pagination
       v-show="total>0"
       :total="total"
@@ -244,7 +244,7 @@
 
        <el-form-item label="所属档期" prop="scheduleId">
             <el-select filterable style="width: 200px" v-model="form.scheduleId" placeholder="请选择档期" clearable size="small" >
-              <el-option 
+              <el-option
                       v-for="item in scheduleList"
                       :key="item.id"
                       :label="item.name"
@@ -253,11 +253,11 @@
             </el-select>
         </el-form-item>
 
-        <el-form-item label="总进线" prop="totalNum">  
-          <el-input v-model="form.totalNum"  onkeyup="value=(value.replace(/\D/g,'')==''?'':parseInt(value))" type="number" placeholder="请输入总进线" />  
+        <el-form-item label="总进线" prop="totalNum">
+          <el-input v-model="form.totalNum"  onkeyup="value=(value.replace(/\D/g,'')==''?'':parseInt(value))" type="number" placeholder="请输入总进线" />
         </el-form-item>
         <el-form-item label="注册数" prop="registerNum">
-          <el-input v-model="form.registerNum" onkeyup="value=(value.replace(/\D/g,'')==''?'':parseInt(value))" type="number" placeholder="请输入注册数" />  
+          <el-input v-model="form.registerNum" onkeyup="value=(value.replace(/\D/g,'')==''?'':parseInt(value))" type="number" placeholder="请输入注册数" />
         </el-form-item>
         <el-form-item label="上线数" prop="onlineNum">
           <el-input v-model="form.onlineNum" onkeyup="value=(value.replace(/\D/g,'')==''?'':parseInt(value))" type="number" placeholder="请输入上线数" />
@@ -276,7 +276,7 @@
                    <el-form-item label-width="80px" label="上线率" prop="onlineRate" style="margin-right:10px">
                           {{(form.onlineRate*100).toFixed(2)+"%"}}
                     </el-form-item>
-              </el-col>  
+              </el-col>
               <el-col :span="8" v-if="form.finishRate!='0'">
                     <el-form-item label-width="80px" label="完课率" prop="finishRate">
                          {{(form.finishRate*100).toFixed(2)+"%"}}
@@ -284,7 +284,7 @@
               </el-col>
          </el-row>
 
-  
+
         <!-- <el-form-item label="累计总业绩" prop="totalMoney">
           <el-input v-model="form.totalMoney" placeholder="请输入累计总业绩" />
         </el-form-item>
@@ -488,7 +488,7 @@ export default {
         onlineRate: null,
         finishRate: null,
         totalMoney: null,
-        
+
       },
       users:[],
       // 部门树选项
@@ -498,11 +498,11 @@ export default {
       // 表单参数
       form: {},
       // 表单校验
-      rules: { 
-          scheduleId: [    
+      rules: {
+          scheduleId: [
             { required: true, message: "请选择档期", trigger: "blur" }
           ],
-          totalNum: [    
+          totalNum: [
             { required: true, message: "总进线不能为空", trigger: "blur" }
           ],
           registerNum: [
@@ -523,30 +523,24 @@ export default {
   },
   watch:{
     'form.registerNum':function(newVal,oldVal){
-        console.log('newVal->',newVal)
-        console.log('oldVal->',oldVal)
         this.form.registerRate=0;
         if(!!newVal && Number(newVal)<=this.form.totalNum && this.form.totalNum!=0 ){
            this.form.registerRate=(newVal/this.form.totalNum*1.0).toFixed(2);
         }
     },
     'form.onlineNum':function(newVal,oldVal){
-        console.log('newVal->',newVal)
-        console.log('oldVal->',oldVal)
         this.form.onlineRate=0;
         if(!!newVal  && this.form.registerNum!=0){
            this.form.onlineRate=(newVal/this.form.registerNum*1.0).toFixed(2);
         }
-        
+
     },
     'form.finishNum':function(newVal,oldVal){
-        console.log('newVal->',newVal)
-        console.log('oldVal->',oldVal)
         this.form.finishRate=0;
         if(!!newVal   && this.form.registerNum!=0){
-           this.form.finishRate=(newVal/this.form.registerNum*1.0).toFixed(2); 
+           this.form.finishRate=(newVal/this.form.registerNum*1.0).toFixed(2);
         }
-        
+
     }
   },
   created() {
@@ -557,7 +551,7 @@ export default {
   methods: {
 
     calcRegister(){
-        
+
     },
     calcOnline(){
 
@@ -749,7 +743,7 @@ export default {
         }
         else if(index==1){   //进线上线率=上线数/总进线
             if(row.totalNum>0){
-                  value=(row.onlineNum/row.totalNum*100.0).toFixed(3)+"%"; 
+                  value=(row.onlineNum/row.totalNum*100.0).toFixed(3)+"%";
              }
         }
         else if(index==2){   //进线完课率=完课数/总进线

+ 5 - 9
src/views/components/course/userCourseCatalogDetails.vue

@@ -53,11 +53,11 @@
             v-hasPermi="['course:userCourseVideo:edit']"
             @click="updateMoney(scope.row)"
           >设置红包金额</el-button>
-
-          <el-button size="mini"
-                     type="text" @click="openTagDialog(scope.row)">
-            绑定看课标签
-          </el-button>
+<!--向董董写的,树波说没用,也没验证能不能用,我注释了-->
+<!--          <el-button size="mini"-->
+<!--                     type="text" @click="openTagDialog(scope.row)">-->
+<!--            绑定看课标签-->
+<!--          </el-button>-->
           <el-button size="mini"
                      type="text" v-if="projectFrom === 'hzyy'" @click="openDialog(scope.row)">
             复制看课链接
@@ -361,13 +361,11 @@ export default {
           // 将用户信息填充到表单中
           this.roomLinkForm.qwUserName = selectedUser.qwUserName;
           this.roomLinkForm.corpId = selectedUser.corpId;
-          console.log(this.roomLinkForm);
           // 调用创建链接的API
           createRoomLinkUrl(this.roomLinkForm).then(response => {
             if (response.code === 200){
               this.msgSuccess("创建成功");
               this.copyLink(response.link);
-              console.log(response.link);
             }
           });
         }
@@ -421,10 +419,8 @@ export default {
             document.body.removeChild(input)
             if (!result || result === 'unsuccessful') {
               this.$message.error('复制失败');
-              console.log('复制失败')
             } else {
               this.$message.success('链接已复制到剪贴板');
-              console.log('复制成功')
             }
           } catch (e) {
             document.body.removeChild(input)

+ 0 - 1
src/views/components/course/userCourseVideoDetails.vue

@@ -189,7 +189,6 @@ import {getUserCourseVideo} from "@/api/course/userCourseVideo";
         return `${formattedHours}${formattedMinutes}:${formattedSeconds}`;
       },
       getDetails(videoId) {
-        console.log(videoId);
         this.item=null;
         getUserCourseVideo(videoId).then(response => {
           this.item = response.data;

+ 0 - 3
src/views/course/Material/index.vue

@@ -389,9 +389,6 @@ export default {
     //提交
     submit() {
       this.urls.forEach(item => {
-        console.log("item",item)
-        console.log("this.value",this.value)
-        console.log("this.value.length",this.value.length)
 
         this.$set(this.value, this.value.length, item)
       })

+ 0 - 5
src/views/course/courseFinishTemp/index.vue

@@ -709,7 +709,6 @@ export default {
     this.parentId = this.queryParams.parentId;
     getUserList().then(response => {
       this.userList = response.data;
-      console.log("this.userList", this.userList)
     });
     this.getDicts("sys_company_status").then(response => {
       this.statusOptions = response.data;
@@ -986,7 +985,6 @@ export default {
       this.reset();
       const id = row.id || this.ids
       getCourseFinishTemp(id).then(response => {
-        console.log("this.form222 ", response.data)
         this.form = response.data;
 
         this.setting = JSON.parse(this.form.setting)
@@ -1007,7 +1005,6 @@ export default {
     },
     // 批量修改状态
     handleUpdateStatusBatch(){
-      console.log(this.ids);
       if(this.ids == null || this.ids == undefined || this.ids.length == 0 ){
         return this.$message.error("请选择数据")
       }
@@ -1019,7 +1016,6 @@ export default {
       this.reset();
       const id = row.id || this.ids
       getCourseFinishTemp(id).then(response => {
-        console.log("this.response.data", response.data)
         this.form = response.data;
 
         this.setting = JSON.parse(this.form.setting)
@@ -1068,7 +1064,6 @@ export default {
         _this.batchOpen = false;
         _this.getList();
       }).catch(res=>{
-        console.log(res);
         _this.submitFormBatchStatusLoading = false;
       })
 

+ 0 - 1
src/views/course/courseRedPacketLog/index.vue

@@ -338,7 +338,6 @@ export default {
     handleClick(tab, event) {
 	    this.activeName=tab.name;
 	    this.queryParams.status=tab.name
-	    console.log(this.queryParams.status)
 	    this.getList();
 	  },
     /** 查询短链课程看课记录列表 */

+ 0 - 1
src/views/course/courseRedPacketLog/myCourseRedPacketLog.vue

@@ -266,7 +266,6 @@ export default {
     handleClick(tab, event) {
       this.activeName=tab.name;
       this.queryParams.status=tab.name
-      console.log(this.queryParams.status)
       this.getList();
     },
     /** 查询短链课程看课记录列表 */

+ 0 - 1
src/views/course/courseUserStatistics/qw/index.vue

@@ -593,7 +593,6 @@ export default {
       var param = { companyId: this.companyId };
       treeselect(param).then((response) => {
         this.deptOptions = response.data;
-        console.log(this.deptOptions);
         if (response.data != null && response.data.length > 0) {
           //this.queryParams.deptId=response.data[0].id;
         }

+ 0 - 5
src/views/course/courseWatchLog/index.vue

@@ -1215,7 +1215,6 @@ export default {
         companyUserId: this.queryParams.companyUserId || null,
         disableCompanyId: 1
       };
-      console.log("企微参数", this.queryParams);
       fetchQwListApi(params).then(response => {
         if (this.qwUserOptionsParams.pageNum === 1) {
           this.qwUserOptions = response.rows || [];
@@ -1307,8 +1306,6 @@ export default {
         // this.scheduleTimeText = this.formatDateRange(scheduleTime);
         this.queryParams.scheduleStartTime = scheduleTime[0] || null;
         this.queryParams.scheduleEndTime = scheduleTime[1] || null;
-        console.log(this.queryParams.scheduleStartTime)
-        console.log(this.queryParams.scheduleEndTime)
       } else {
         this.scheduleTimeText = '';
         this.queryParams.scheduleStartTime = null;
@@ -1383,8 +1380,6 @@ export default {
         // this.qecCreateTimeText = this.formatDateRange(qecCreateTime);
         this.queryParams.qecSTime = qecCreateTime[0] || null;
         this.queryParams.qecETime = qecCreateTime[1] || null;
-        console.log(this.queryParams.qecSTime);
-        console.log(this.queryParams.qecETime);
       } else {
         this.qecCreateTimeText = '';
         this.queryParams.qecSTime = null;

+ 0 - 1
src/views/course/courseWatchLog/qw/statistics.vue

@@ -216,7 +216,6 @@ export default {
           }
         }
       });
-      console.log(sums);
       return sums;
     },
     courseChange(row){

+ 0 - 1
src/views/course/courseWatchLog/watchLog.vue

@@ -1866,7 +1866,6 @@ export default {
       // });
 
       let obj = JSON.parse(JSON.stringify(this.queryParams))
-      console.log(obj);
       if(obj.tagIds !== null && obj.tagIds !== undefined && obj.tagIds !== ''){
         obj.tagIds = obj.tagIds.split(",");
       }

+ 0 - 2
src/views/course/sop/index.vue

@@ -550,7 +550,6 @@ export default {
       this.sopLogsDialog.title='规则执行详情';
       this.sopLogsDialog.open=true;
 
-      console.log("查看详情,",row);
       setTimeout(() => {
         this.$refs.sopLogsDetails.selectSopLogsDetails(row.id)
       }, 200);
@@ -581,7 +580,6 @@ export default {
             if(content.length>0){
               for (let j = 0; j < content.length; j++) {
                 if(content[j].type==1){
-                  console.log("1")
                   if(content[j].value==null||content[j].value==""){
                     return this.$message("发送内容不能为空")
                   }

+ 0 - 6
src/views/course/userCoursePeriod/index.vue

@@ -674,7 +674,6 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       //添加删除判断,只能删除未开始的营期
-      console.log(row.periodStatus)
       if (row.periodStatus !== 1) {
         this.$message.error('营期处于进行中或者结束,不能删除');
         return;
@@ -1199,11 +1198,6 @@ export default {
 
       // 获取上一条数据
       const prevRow = this.course.list[currentIndex - 1];
-      console.log({
-        id: row.id,
-        targetId: prevRow.id,
-        type: 1 //上移
-      })
       periodCourseMove({
         id: row.id,
         targetId: prevRow.id,

+ 0 - 1
src/views/course/userCoursePeriod/statistics.vue

@@ -219,7 +219,6 @@ export default {
           // 计算总统计数据
           this.calculateTotalStatistics();
 
-          console.log('列表数据:', this.list);
         } else {
           this.$message.error(response.msg || '获取数据失败');
         }

+ 0 - 1
src/views/crm/components/AiTagPanel.vue

@@ -232,7 +232,6 @@ export default {
       this.loading = true;
       listByCustomerId(this.customerId).then(response => {
         let tagList = response.data || [];
-        console.log('加载的标签数据:', tagList);
         tagList.forEach(tag => {
           if (tag.propertyValueType === 'multiSelect' && tag.propertyValue && typeof tag.propertyValue === 'string') {
             tag.propertyValue = tag.propertyValue.split(',');

+ 0 - 4
src/views/crm/components/CustomerSelect.vue

@@ -464,12 +464,10 @@ export default {
         },
         tagsChange(e) {
             var item = this.tagsOptions.find(val => val.dictValue === e);
-            console.log(item);
             this.tags.push(item.dictLabel);
             this.form.tags = this.tags.toString();
         },
         handleCityChange(value) {
-            console.log(value);
             var nodes = this.$refs.citySelect.getCheckedNodes();
             this.form.address = nodes[0].pathLabels[0] + "-" + nodes[0].pathLabels[1] + "-" + nodes[0].pathLabels[2];
             this.form.cityIds = value.toString();
@@ -567,14 +565,12 @@ export default {
             var param = { companyId: this.companyId }
             treeselect(param).then((response) => {
                 this.deptOptions = response.data;
-                console.log(this.deptOptions)
                 if (response.data != null && response.data.length > 0) {
                     //this.queryParams.deptId=response.data[0].id;
                 }
             });
         },
         companyChange(val) {
-            console.log(val);
             this.companyId = val;
             this.getTreeselect();
         },

+ 0 - 5
src/views/crm/components/CustomerSelectOlde.vue

@@ -364,12 +364,10 @@ export default {
     },
     tagsChange(e){
       var item=this.tagsOptions.find(val => val.dictValue === e);
-      console.log(item);
       this.tags.push(item.dictLabel);
       this.form.tags=this.tags.toString();
     },
     handleCityChange(value) {
-      console.log(value);
       var nodes=this.$refs.citySelect.getCheckedNodes();
       this.form.address=nodes[0].pathLabels[0]+"-"+nodes[0].pathLabels[1]+"-"+nodes[0].pathLabels[2];
       this.form.cityIds=value.toString();
@@ -469,14 +467,12 @@ export default {
         var param={companyId:this.companyId}
         treeselect(param).then((response) => {
           this.deptOptions = response.data;
-          console.log(this.deptOptions)
           if(response.data!=null&&response.data.length>0){
             //this.queryParams.deptId=response.data[0].id;
           }
         });
     },
     companyChange(val){
-      console.log(val);
       this.companyId=val;
       this.getTreeselect();
     },
@@ -485,7 +481,6 @@ export default {
           this.getList();
     },
     submitForm(){
-      console.log(this.ids);
       this.$nextTick(() => {
         this.$emit("success", {ids: this.ids, names: this.names, rows: this.rows})
         this.shows = false;

+ 4 - 7
src/views/crm/components/addBatchSms.vue

@@ -36,7 +36,7 @@
                             </el-popover>
                             </template>
                         </el-table-column>
-                    
+
                     <el-table-column label="名片短链接" width="100" align="center" prop="shortUrl" />
                     <el-table-column label="创建时间" width="100" align="center" prop="createTime" />
                     <el-table-column  label="名片类型"  align="center" prop="type">
@@ -72,7 +72,7 @@
              </el-dialog>
     </div>
 </template>
-  
+
 <script>
     import { getSmsTempList } from "@/api/company/companySmsTemp";
     import { sendCustomerBatchMsg,getCompanySmsCount } from "@/api/company/companySms";
@@ -113,7 +113,7 @@
                   this.typeOptions = response.data;
              });
             this.getCompanySmsCount()
-            
+
         },
         methods: {
             getCompanySmsCount(){
@@ -125,7 +125,6 @@
             },
             smsChange(e){
                 var v=this.smsTemps.find(value=>value.tempId==e);
-                console.log(v)
                 this.form.content=v.content;
                 this.form.tempCode=v.tempCode;
                 if(v.content.indexOf('sms.cardUrl')!=-1){
@@ -179,7 +178,6 @@
             },
            selectCard(data){
                 this.cards=data;
-                console.log(JSON.stringify(data));
                 this.cardSelect.open=false;
             },
             handleRemoveCard(index){
@@ -194,7 +192,7 @@
     height: 100%;
     background-color: #fff;
     padding: 20px;
-        
+
 }
 .footer{
     display: flex;
@@ -205,4 +203,3 @@
 
 
 
- 

+ 0 - 14
src/views/crm/components/addBusiness.vue

@@ -263,10 +263,8 @@
             // 监听跟进状态变化,自动匹配项目阶段
             'form.businessStatus': {
                 handler: function(newVal, oldVal) {
-                    console.log('跟进状态变化:', oldVal, '->', newVal);
 
                     if (this.isUpdatingStatus) {
-                        console.log('跳过状态更新,防止循环');
                         return;
                     }
 
@@ -279,10 +277,8 @@
                             return item.dictLabel === '100%转商' ||
                                    item.dictValue === 'A';
                         });
-                        console.log('找到的赢单选项:', winOption);
                         if (winOption) {
                             this.form.projectPhase = winOption.dictValue;
-                            console.log('设置项目阶段为:', winOption.dictValue);
                         }
                     } else if (newVal == 1) {
                         // 已流失 -> 自动设置为丢单
@@ -290,17 +286,14 @@
                             return item.dictLabel === '丢单' ||
                                    item.dictValue === 'L' ;
                         });
-                        console.log('找到的丢单选项:', lostOption);
                         if (lostOption) {
                             this.form.projectPhase = lostOption.dictValue;
-                            console.log('设置项目阶段为:', lostOption.dictValue);
                         }
                     }
 
                     // 重置标志位
                     this.$nextTick(() => {
                         this.isUpdatingPhase = false;
-                        console.log('重置isUpdatingPhase标志位');
                     });
                 },
                 immediate: false
@@ -309,10 +302,8 @@
             // 监听项目阶段变化,自动匹配跟进状态
             'form.projectPhase': {
                 handler: function(newVal, oldVal) {
-                    console.log('项目阶段变化:', oldVal, '->', newVal);
 
                     if (this.isUpdatingPhase) {
-                        console.log('跳过阶段更新,防止循环');
                         return;
                     }
 
@@ -321,26 +312,22 @@
 
                     // 根据项目阶段自动匹配跟进状态
                     const selectedPhase = this.projectPhaseOptions.find(item => item.dictValue === newVal);
-                    console.log('选中的阶段选项:', selectedPhase);
 
                     if (selectedPhase) {
                         if (selectedPhase.dictLabel == '100%转商' ||
                             selectedPhase.dictValue == 'A') {
                             // 100%转商 -> 自动设置为已赢单
                             this.form.businessStatus = '2';
-                            console.log('设置跟进状态为已赢单');
                         } else if (selectedPhase.dictLabel == '丢单' ||
                                   selectedPhase.dictValue == 'L' ) {
                             // 丢单 -> 自动设置为已流失
                             this.form.businessStatus = '1';
-                            console.log('设置跟进状态为已流失');
                         }
                     }
 
                     // 重置标志位
                     this.$nextTick(() => {
                         this.isUpdatingStatus = false;
-                        console.log('重置isUpdatingStatus标志位');
                     });
                 },
                 immediate: false
@@ -356,7 +343,6 @@
                 }
                 this.open = false;
                 this.loading = false;
-                console.log("3333333333333", JSON.stringify(this.mobileList));
             },
             /** 删除按钮操作 */
             handleDelete(row) {

+ 7 - 10
src/views/crm/components/addSms.vue

@@ -34,7 +34,7 @@
                                     </el-popover>
                                     </template>
                                 </el-table-column>
-                            
+
                             <el-table-column label="名片短链接" width="100" align="center" prop="shortUrl" />
                             <el-table-column label="创建时间" width="100" align="center" prop="createTime" />
                             <el-table-column  label="名片类型"  align="center" prop="type">
@@ -74,7 +74,7 @@
              </el-dialog>
     </div>
 </template>
-  
+
 <script>
     import { getSmsTempList } from "@/api/company/companySmsTemp";
     import { sendCustomerMsg,getCompanySmsCount,sendStoreOrderMsg,sendPackageOrderMsg } from "@/api/company/companySms";
@@ -128,7 +128,6 @@
             },
             smsChange(e){
                 var v=this.smsTemps.find(value=>value.tempId==e);
-                console.log(v)
                 this.form.content=v.content;
                 this.form.tempCode=v.tempCode;
                  if(v.content.indexOf('sms.cardUrl')!=-1){
@@ -141,7 +140,7 @@
                 this.form.customerId=customerId;
                 this.form.mobile=mobile;
                 this.type = type
-                this.getCompanySmsCount()       
+                this.getCompanySmsCount()
             },
             getOrderId(orderId,mobile,type) {
                 this.form.orderId=orderId;
@@ -179,7 +178,7 @@
                                 this.myloading.close()
                                 if (response.code === 200) {
                                     this.msgSuccess(response.msg);
-                                    
+
                                     this.$emit('close');
                                 }
                                 else{
@@ -192,7 +191,7 @@
                                 this.myloading.close()
                                 if (response.code === 200) {
                                     this.msgSuccess(response.msg);
-                                    
+
                                     this.$emit('close');
                                 }
                                 else{
@@ -205,7 +204,7 @@
                                 this.myloading.close()
                                 if (response.code === 200) {
                                     this.msgSuccess(response.msg);
-                                    
+
                                     this.$emit('close');
                                 }
                                 else{
@@ -225,7 +224,6 @@
             },
             selectCard(data){
                 this.cards=data;
-                console.log(JSON.stringify(data));
                 this.cardSelect.open=false;
             },
             handleRemoveCard(index){
@@ -240,7 +238,7 @@
     height: 100%;
     background-color: #fff;
     padding: 20px;
-        
+
 }
 .footer{
     display: flex;
@@ -251,4 +249,3 @@
 
 
 
- 

+ 3 - 5
src/views/crm/components/aiCallVoiceLog.vue

@@ -50,7 +50,7 @@
 
     </div>
 </template>
-  
+
 <script>
 import { listCompanyVoiceLogs, getCompanyVoiceLogs, delCompanyVoiceLogs, addCompanyVoiceLogs, updateCompanyVoiceLogs, exportCompanyVoiceLogs } from "@/api/company/companyVoiceLogs";
 import { listCallphone } from "@/api/company/callphone";
@@ -83,7 +83,7 @@ export default {
             getDicts("customer_intention_level").then(e => {
                 this.levelList = e.data;
             })
-          
+
         },
         methods: {
             getData(customerId,calleesId){
@@ -102,12 +102,10 @@ export default {
             },
             handleRecordPath(url){
                 let path = 'http://129.28.164.235:8899/recordings/files?filename=' + url;
-                console.log(path);
                 return path;
             }
         }
     };
 </script>
-<style lang="scss" scoped> 
+<style lang="scss" scoped>
 </style>
- 

+ 0 - 4
src/views/crm/components/assignUser.vue

@@ -144,12 +144,9 @@
                         var customerIds=[];
                         var idIndex=0;
                         var totalAssignCount=0;
-                        console.log("qxj users",JSON.stringify(this.users));
                         this.users.forEach(element => {
                             if(element.count>0){
                                 var ids=that.customerIds.slice(idIndex,idIndex+element.count)
-                                console.log("qxj customerIds:"+that.customerIds+" count:"+element.count);
-                                console.log("qxj ids:"+ids);
                                 customerIds=customerIds.concat(ids);
                                 idIndex=idIndex+element.count;
                                 var data={companyUserId:element.userId,count:element.count};
@@ -172,7 +169,6 @@
                             background: 'rgba(0, 0, 0, 0.7)'
                         });
                         var data={customerIds:customerIds,users:users,assignType:this.type}
-                        console.log("qxj data:",JSON.stringify(data));
                         assignToUser(data).then(response => {
                             this.myloading.close()
                             if (response.code === 200) {

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików