Browse Source

Merge branch 'develop' of http://192.168.1.222:3000/duhongyu/AnYang_UI into develop

liuzhihui 2 years ago
parent
commit
ebc26e99fa
48 changed files with 156 additions and 79362 deletions
  1. 9 14
      WebUI/CallCenterWeb.UI/Script/Common/huayi.config.js
  2. 92 0
      WebUI/CallCenterWeb.UI/Script/Common/huayi.configBF.js
  3. 0 179
      WebUI/CallCenterWeb.UI/callout/css/meeting.css
  4. BIN
      WebUI/CallCenterWeb.UI/callout/img/videoInCall.png
  5. BIN
      WebUI/CallCenterWeb.UI/callout/img/videoOutCall.png
  6. 0 9227
      WebUI/CallCenterWeb.UI/callout/js/jquery-1.8.js
  7. 0 117
      WebUI/CallCenterWeb.UI/callout/js/jquery.cookie.js
  8. 0 26550
      WebUI/CallCenterWeb.UI/callout/js/jssip-3.0.13.js
  9. 0 1
      WebUI/CallCenterWeb.UI/callout/js/pcSip.js
  10. 0 301
      WebUI/CallCenterWeb.UI/callout/js/pcSip备份.js
  11. 0 60
      WebUI/CallCenterWeb.UI/callout/videoCall.html
  12. 0 111
      WebUI/CallCenterWeb.UI/callout/weChatVideo/css/iconfont.css
  13. 0 320
      WebUI/CallCenterWeb.UI/callout/weChatVideo/css/mobileMeeting.css
  14. 0 4677
      WebUI/CallCenterWeb.UI/callout/weChatVideo/css/mui.min.css
  15. BIN
      WebUI/CallCenterWeb.UI/callout/weChatVideo/fonts/iconfont.ttf
  16. BIN
      WebUI/CallCenterWeb.UI/callout/weChatVideo/fonts/mui-icons-extra.ttf
  17. BIN
      WebUI/CallCenterWeb.UI/callout/weChatVideo/fonts/mui.ttf
  18. BIN
      WebUI/CallCenterWeb.UI/callout/weChatVideo/img/answerCall.png
  19. BIN
      WebUI/CallCenterWeb.UI/callout/weChatVideo/img/cameraOff.png
  20. BIN
      WebUI/CallCenterWeb.UI/callout/weChatVideo/img/cameraOn.png
  21. BIN
      WebUI/CallCenterWeb.UI/callout/weChatVideo/img/customer.png
  22. BIN
      WebUI/CallCenterWeb.UI/callout/weChatVideo/img/dropCall.png
  23. BIN
      WebUI/CallCenterWeb.UI/callout/weChatVideo/img/incoming.mp3
  24. BIN
      WebUI/CallCenterWeb.UI/callout/weChatVideo/img/logo_banner.png
  25. BIN
      WebUI/CallCenterWeb.UI/callout/weChatVideo/img/muteIcon--.png
  26. BIN
      WebUI/CallCenterWeb.UI/callout/weChatVideo/img/muteIcon.png
  27. BIN
      WebUI/CallCenterWeb.UI/callout/weChatVideo/img/shotCut.png
  28. BIN
      WebUI/CallCenterWeb.UI/callout/weChatVideo/img/unmute--.png
  29. BIN
      WebUI/CallCenterWeb.UI/callout/weChatVideo/img/unmute.png
  30. BIN
      WebUI/CallCenterWeb.UI/callout/weChatVideo/img/videoInCall.png
  31. BIN
      WebUI/CallCenterWeb.UI/callout/weChatVideo/img/videoOutCall.png
  32. 0 119
      WebUI/CallCenterWeb.UI/callout/weChatVideo/index.html
  33. 0 104
      WebUI/CallCenterWeb.UI/callout/weChatVideo/js/cameraCut.js
  34. 0 13
      WebUI/CallCenterWeb.UI/callout/weChatVideo/js/huayi.config.js
  35. 0 621
      WebUI/CallCenterWeb.UI/callout/weChatVideo/js/huayi.http.js
  36. 0 9227
      WebUI/CallCenterWeb.UI/callout/weChatVideo/js/jquery-1.8.js
  37. 0 229
      WebUI/CallCenterWeb.UI/callout/weChatVideo/js/jquery.md5.js
  38. 0 26550
      WebUI/CallCenterWeb.UI/callout/weChatVideo/js/jssip-3.0.13.js
  39. 0 178
      WebUI/CallCenterWeb.UI/callout/weChatVideo/js/main.js
  40. 0 538
      WebUI/CallCenterWeb.UI/callout/weChatVideo/js/mobileSip.js
  41. 0 11
      WebUI/CallCenterWeb.UI/callout/weChatVideo/js/mui.min.js
  42. 0 76
      WebUI/CallCenterWeb.UI/callout/weChatVideo/js/superviseMan.js
  43. 0 116
      WebUI/CallCenterWeb.UI/callout/weChatVideo/superviseMan.html
  44. 41 16
      WebUI/CallCenterWeb.UI/calloutNew/js/pcSip备份.js
  45. 3 2
      WebUI/CallCenterWeb.UI/calloutNew/weChatVideo/index.html
  46. 1 3
      WebUI/CallCenterWeb.UI/calloutNew/weChatVideo/js/mobileSip.js
  47. 4 1
      WebUI/CallCenterWeb.UI/calloutNew/weChatVideo/js/superviseMan.js
  48. 6 1
      WebUI/CallCenterWeb.UI/js/index.js

+ 9 - 14
WebUI/CallCenterWeb.UI/Script/Common/huayi.config.js

@@ -3,26 +3,21 @@
3 3
 }
4 4
 huayi.config = {
5 5
 	callcenter_url: "http://192.168.8.9:1042/",//生产环境
6
-//	callcenter_url: "http://docking.zwfw.anyang.gov.cn:9998/",//生产环境
7
-//	videoSocket_url: "ws://222.143.106.45:65531", //docking.zwfw.anyang.gov.cn
8
-	videoSocket_url: "wss://12345rx.zwfw.anyang.gov.cn:8082", //docking.zwfw.anyang.gov.cn
9
-	socket_url:"ws://192.168.8.7:8081",
6
+//  socket_ip: "192.168.8.7", //ip
7
+//  callcenter_url: "https://docking.zwfw.anyang.gov.cn:8999/", //生产环境
10 8
 	translation_socket:"ws://222.143.106.46:12233",
11
-    //分机注册信息  
12
-//  sip_ip:"222.143.106.47",
13
-//	sip_password_:"1234", 
14
-//	ws_uri_:"ws://222.143.106.47:5066",
15
-//	contact_uri:"@222.143.106.47;transport=ws",  //'
16
-//12345sp.zwfwanyang.gov.cn 7443
9
+	videoSocket_url: "wss://12345sp2.zwfw.anyang.gov.cn:8082", //docking.zwfw.anyang.gov.cn
10
+    socket_ip: "125.45.12.123", //ip
11
+    socket_port: "8081", //端口
17 12
 	sip_ip:"12345sp.zwfw.anyang.gov.cn",
18 13
 	sip_password_:"123456", 
19 14
 	ws_uri_:"wss://12345sp.zwfw.anyang.gov.cn:7443",
20 15
 	contact_uri:"@12345sp.zwfw.anyang.gov.cn;transport=wss",  //'
21 16
     menuworktime: 30000, //菜单工单数量刷新间隔
22
-    indextime: 60000, //首页报表刷新间隔
17
+    indextime: 60000*30, //首页报表刷新间隔
23 18
     arr: [
24 19
         "<a class='xg' onclick='ckxq(\"data\")' title='查看'>查看</a>",
25
-        "<a class='xg' onclick='bj(\"data\")' title='编辑'>编辑</a>",
20
+        "<a class='xg' onclick='bj(\"data\",\"state\")' title='编辑'>编辑</a>",
26 21
         "<a class='xg' onclick='move(\"data\")' title='删除'>删除</a>",
27 22
         "<a class='xg' onclick='tj(\"data\")' title='提交'>提交</a>",
28 23
         "<a class='xg' onclick='jb(\"data\")' title='交办'>交办</a>", //交办
@@ -66,9 +61,9 @@ huayi.config = {
66 61
         "<a class='xg' onclick='superviseReviewRefuse(\"data\")' title='审核拒绝'>审核拒绝</a>", //督办审核拒绝
67 62
         "<a class='xg' onclick='provincialPlatformSignup(\"data\")' title='省平台签收'>签收</a>", // 省平台签收
68 63
         "<a class='xg' onclick='provincialPlatformReturn(\"data\")' title='省平台退回'>退回</a>", // 省平台退回
69
-        "<a class='xg' onclick='provincialPlatformApplicationDelay(\"data\",\"1\")' title='省平台申请延时退回'>申请延时退回</a>", // 省平台退回申请延时
64
+        "<a class='xg' onclick='provincialPlatformApplicationDelay(\"data\",\"1\")' title='省平台申请延时退回'>省平台申请延时退回</a>", // 省平台退回申请延时
70 65
         "<a class='xg' onclick='provincialPlatformFeedback(\"data\")' title='省平台反馈'>省平台反馈</a>", // 省平台反馈
71
-        "<a class='xg' onclick='provincialPlatformApplicationDelay(\"data\",\"0\")' title='省平台申请延时'>申请延时</a>", //39 省平台退回申请延时
66
+        "<a class='xg' onclick='provincialPlatformApplicationDelay(\"data\",\"0\")' title='省平台申请延时'>省平台申请延时</a>", //39 省平台退回申请延时
72 67
         "<a class='xg' onclick='reportServiceWorkOrder(\"data\")' title='服务工单上报'>上报</a>", // 服务工单上报
73 68
         "<a class='xg' onclick='unsuccessful(\"data\")' title='已办未果'>已办未果</a>", // 已办未果
74 69
         "<a class='xg' onclick='approved(\"data\")' title='审核通过'>审核通过</a>", // 审核通过

+ 92 - 0
WebUI/CallCenterWeb.UI/Script/Common/huayi.configBF.js

@@ -0,0 +1,92 @@
1
+if (huayi == undefined) {
2
+    var huayi = {};
3
+}
4
+huayi.config = {
5
+	callcenter_url: "http://192.168.8.9:1042/",//生产环境
6
+//	callcenter_url: "http://docking.zwfw.anyang.gov.cn:9998/",//生产环境  wss://12345sp2.zwfw.anyang.gov.cn:8082
7
+//	videoSocket_url: "ws://222.143.106.45:65531", //docking.zwfw.anyang.gov.cn
8
+//	videoSocket_url: "wss://12345rx.zwfw.anyang.gov.cn:8082", //docking.zwfw.anyang.gov.cn
9
+	videoSocket_url: "wss://12345sp2.zwfw.anyang.gov.cn:8082", //docking.zwfw.anyang.gov.cn
10
+	socket_url:"ws://192.168.8.7:8081",
11
+	translation_socket:"ws://222.143.106.46:12233",
12
+    //分机注册信息  
13
+//  sip_ip:"222.143.106.47",
14
+//	sip_password_:"1234", 
15
+//	ws_uri_:"ws://222.143.106.47:5066",
16
+//	contact_uri:"@222.143.106.47;transport=ws",  //'
17
+//12345sp.zwfwanyang.gov.cn 7443
18
+	sip_ip:"12345sp.zwfw.anyang.gov.cn",
19
+	sip_password_:"123456", 
20
+	ws_uri_:"wss://12345sp.zwfw.anyang.gov.cn:7443",
21
+	contact_uri:"@12345sp.zwfw.anyang.gov.cn;transport=wss",  //'
22
+    menuworktime: 30000, //菜单工单数量刷新间隔
23
+    indextime: 60000, //首页报表刷新间隔
24
+    arr: [
25
+        "<a class='xg' onclick='ckxq(\"data\")' title='查看'>查看</a>",
26
+        "<a class='xg' onclick='bj(\"data\")' title='编辑'>编辑</a>",
27
+        "<a class='xg' onclick='move(\"data\")' title='删除'>删除</a>",
28
+        "<a class='xg' onclick='tj(\"data\")' title='提交'>提交</a>",
29
+        "<a class='xg' onclick='jb(\"data\")' title='交办'>交办</a>", //交办
30
+        "<a class='xg' onclick='lader(\"data\")' title='领导'>领导批示</a>", //领导批示
31
+        "<a class='xg' onclick='city(\"data\")' title='市长'>市长批示</a>", //市长指示
32
+        "<a class='xg' onclick='Supervision(\"data\")' title='督办'>督办</a>", //督办
33
+        "<a class='xg' onclick='Supervision_(\"data\")' title='督察'>监察</a>", //督察
34
+        "<a class='xg' onclick='sh(\"data\")' title='收回'>收回</a>", //收回
35
+        "<a class='xg' onclick='cs(\"data\")' title='查收'>查收</a>", //查收
36
+        "<a class='xg' onclick='th(\"data\")' title='退回申请'>退回申请</a>", //退回申请
37
+        "<a class='xg' onclick='bl(\"data\",\"isProtect\")' title='办理'>办理</a>", //办理
38
+        "<a class='xg' onclick='ys(\"data\")' title='申请延时'>申请延时</a>", //延时申请
39
+        "<a class='xg' onclick='shth(\"data\")' title='退回审核'>退回审核</a>", //退回审核
40
+        "<a class='xg' onclick='hf(\"data\")' title='审核'>审核</a>", //审核
41
+        "<a class='xg' onclick='shys(\"data\")' title='延时审核'>延时审核</a>", //延时审核
42
+        "<a class='xg' onclick='cb(\"data\")' title='重办'>重办</a>", //重办
43
+        "<a class='xg' onclick='Lawsuit(\"data\")' title='结案'>结案</a>", //结案
44
+        "<a class='xg' title='导出'>导出</a>", //导出
45
+        "<a class='xg' onclick='BackDtail(\"data\")'   title='回退'>回退</a>", //回退
46
+        "<a class='xg' onclick='StrongLawsuit(\"data\")' title='强制结案'>强制结案</a>", //结案
47
+        "<a class='xg' onclick='pd(\"data\")' title='派单'>派单</a>", //派单
48
+        "<a class='xg' onclick='auditdeal(\"data\")' title='处理审核'>处理审核</a>", //处理审核
49
+        "<a class='xg' onclick='sign(\"data\")' title='签收'>签收</a>", //签收
50
+        "<a class='xg' onclick='refuse(\"data\")' title='拒收'>拒收</a>", //拒收
51
+        "<a class='xg' onclick='withdraw(\"data\")' title='撤单'>撤单</a>", //撤单
52
+        "<a class='xg' onclick='audit(\"data\")' title='审核'>审核</a>", //审核
53
+        "<a class='xg' onclick='zdb(\"data\",\"row\")' title='转督办'>转督办</a>", //转督办
54
+        "<a class='xg' onclick='ndb(\"data\")' title='不督办'>不督办</a>", //不督办
55
+        "<a class='xg' onclick='tjcb(\"data\")' title='提交重办'>提交重办</a>", //重办
56
+        "<a class='xg' onclick='bhcb(\"data\")' title='驳回重办'>驳回重办</a>", //重办
57
+        "<a class='xg' onclick='lzjd(\"data\")' title='履职界定'>履职界定</a>", //履职界定
58
+        "<a class='xg' onclick='jdsh(\"data\")' title='界定审核 '>界定审核</a>", //界定审核
59
+        "<a class='xg' onclick='Refuse(\"data\")' title='拒绝'>拒绝</a>", //拒绝
60
+        "<a class='xg' onclick='returnRedo(\"data\")' title='退回'>退回</a>", //退回
61
+        "<a class='xg' onclick='messagesUrge(\"data\")' title='催办'>催办</a>", //催办
62
+        "<a class='xg' onclick='returnRedoThreeLevel(\"data\")' title='退回'>退回</a>", //退回
63
+        "<a class='xg' onclick='returnAuditor(\"data\")' title='退回'>退回</a>", //退回
64
+        "<a class='xg' onclick='editProcessingResult(\"data\")' title='修改'>修改</a>", //修改
65
+        "<a class='xg' onclick='superviseCheck(\"data\")' title='查收'>查收</a>", //督办查收
66
+        "<a class='xg' onclick='superviseReviewThrough(\"data\")' title='审核通过'>审核通过</a>", //督办审核通过
67
+        "<a class='xg' onclick='superviseReviewRefuse(\"data\")' title='审核拒绝'>审核拒绝</a>", //督办审核拒绝
68
+        "<a class='xg' onclick='provincialPlatformSignup(\"data\")' title='省平台签收'>签收</a>", // 省平台签收
69
+        "<a class='xg' onclick='provincialPlatformReturn(\"data\")' title='省平台退回'>退回</a>", // 省平台退回
70
+        "<a class='xg' onclick='provincialPlatformApplicationDelay(\"data\",\"1\")' title='省平台申请延时退回'>申请延时退回</a>", // 省平台退回申请延时
71
+        "<a class='xg' onclick='provincialPlatformFeedback(\"data\")' title='省平台反馈'>省平台反馈</a>", // 省平台反馈
72
+        "<a class='xg' onclick='provincialPlatformApplicationDelay(\"data\",\"0\")' title='省平台申请延时'>申请延时</a>", //39 省平台退回申请延时
73
+        "<a class='xg' onclick='reportServiceWorkOrder(\"data\")' title='服务工单上报'>上报</a>", // 服务工单上报
74
+        "<a class='xg' onclick='unsuccessful(\"data\")' title='已办未果'>已办未果</a>", // 已办未果
75
+        "<a class='xg' onclick='approved(\"data\")' title='审核通过'>审核通过</a>", // 审核通过
76
+        "<a class='xg' onclick='auditFailed(\"data\")' title='审核不通过'>审核不通过</a>", // 审核不通过
77
+        "<a class='xg' onclick='approvedComplaint(\"data\")' title='审核通过转办'>审核通过转办</a>", // 审核通过转办
78
+        "<a class='xg' onclick='auditMultimediaThrough(\"data\")' title='审核通过'>审核通过</a>", // 多媒体审核通过
79
+        "<a class='xg' onclick='auditMultimediaNotThrough(\"data\")' title='审核不通过'>审核不通过</a>", // 多媒体审核不通过
80
+        "<a class='xg' onclick='replyMultimedia(\"data\")' title='回复'>回复</a>", // 多媒体回复
81
+         "<a class='xg' onclick='auditAll(\"data\")' title='审核'>审核</a>", // 多媒体回复
82
+    ],
83
+    kapArr: [
84
+        "<a class='xg' onclick='goDetail(\"data\",\"data_id\")' title='查看'>查看</a>",
85
+        "<a class='xg' onclick='goEdit(\"data\",\"data_id\")' title='编辑'>编辑</a>",
86
+        "<a class='xg' onclick='goDel(\"data\")' title='删除'>删除</a>",
87
+        "<a class='xg' onclick='tj(\"data\")' title='提交'>提交</a>",
88
+        "<a class='xg' onclick='audit(\"data\")' title='审核'>审核</a>",
89
+        "<a class='xg' onclick='solve(\"data\")' title='解决'>解决</a>",
90
+        "<a class='xg' onclick='noSolve(\"data\")' title='未解决'>未解决</a>",
91
+    ],
92
+};

+ 0 - 179
WebUI/CallCenterWeb.UI/callout/css/meeting.css

@@ -1,179 +0,0 @@
1
-#login-page {
2
-  width: 844px;
3
-  padding-top: 4px
4
-}
5
-
6
-#sip_uri,
7
-#sip_password,
8
-#ws_uri,
9
-#sip_phone_number {
10
-  width: 250px;
11
-}
12
-
13
-.hiden {
14
-  display: block;
15
-}
16
-
17
-.hiden input {
18
-  padding-left: 15px;
19
-
20
-}
21
-
22
-.showView {
23
-  width: 100%;
24
-  height: 644px;
25
-
26
-}
27
-.videoAnswer{
28
-	width: 40px;
29
-	height: 40px;
30
-}
31
-
32
-.videoCall{
33
-	position: relative;
34
-	
35
-}
36
-.videoText{
37
-	text-align: center;
38
-	width: 100%;
39
-	font-size: 20px;
40
-	color: #008000;
41
-	margin-top: 80px;
42
-}
43
-.viBtn{
44
-	position: absolute;	
45
-	width: 100%;
46
-	display: block;
47
-	top: 30px;
48
-}
49
-.vidDrop{
50
-	height: 50px;
51
-	margin-top: 20px;
52
-}
53
-.videoBtn .vidDrop{
54
-	width: 50%;
55
-	margin-top: 30px;
56
-	
57
-}
58
-.vidDrop img{
59
-	width: 40px;
60
-	height: 40px;
61
-	position: absolute;
62
-	left: 50%;
63
-	margin-left: -20px;
64
-}
65
-.videoBtn .videoDrop{
66
-	width: 50%;
67
-	float: left;
68
-	position: relative;
69
-}
70
-.videoBtn{
71
-	position: absolute;
72
-	top: 40%;
73
-	width: 100%;
74
-	display: block;
75
-}
76
-
77
-.videoBtn .videoAnswer{
78
-	width: 50%;
79
-	float: left;
80
-	position: relative;
81
-}
82
-.videoBtn .videoDrop{
83
-	width: 50%;
84
-	float: left;
85
-	position: relative;
86
-}
87
-.videoAnswer img{
88
-	width: 40px;
89
-	height: 40px;
90
-	position: absolute;
91
-	left: 50%;
92
-	margin-left: -20px;
93
-}
94
-.videoDrop img{
95
-	width: 40px;
96
-	height: 40px;
97
-	position: absolute;
98
-	left: 50%;
99
-	margin-left: -20px;
100
-}
101
-.titText{
102
-	width: 95%;
103
-	text-align: right;
104
-	color: blue;
105
-	font-size: 12px;
106
-	display: block;
107
-	line-height: 40px;
108
-}
109
-
110
-.videoMy{
111
-	display: none;
112
-	position: relative;
113
-	margin-left: 10%;
114
-  overflow: hidden;
115
-	width: 80% !important;
116
-}
117
-.videoList{
118
-	display: none;
119
-	position: relative;
120
-  width: 80% !important;
121
-  margin-left: 10%;
122
-  overflow: hidden;
123
-}
124
-.videoMy video {
125
-	position: absolute;
126
-  background-color: #333333;
127
-  /* border: 1px solid blue; */
128
-  padding: 0px;
129
-	width: 100%;
130
-	object-fit:fill;
131
-	top:30px;
132
-	left: 10;
133
-}
134
-.videoList video {
135
-  background-color: #333333;
136
-	position: absolute;
137
-  left: 0px;
138
-  right: 0px;
139
-  top: 0px;
140
-  bottom: 0px;
141
-  margin: auto;
142
-  width: 100%;
143
-	
144
-}
145
-.extension{
146
-	margin-left: 30px;
147
-	margin-top: 15px;
148
-}
149
-.register{
150
-	margin-left: 20px;
151
-	height: 26px;
152
-	margin-top: 15px;
153
-}
154
-.registerAgo{
155
-	display: flex;
156
-	margin-top: 40px;
157
-}
158
-.callVideo{
159
-  display: block;
160
-  width: 100%;
161
-  overflow: hidden;
162
-}
163
-.callVideo div{
164
-  float: right;
165
-  margin: 0 15px;
166
-}
167
-.callVideo .audioCall button{
168
-  padding: 5px 8px;
169
-}
170
-.callVideo .inputCall input{
171
-  padding: 5px 8px;
172
-  width: 120px;
173
-}
174
-.callStyle{
175
-	line-height: 30px; 
176
-	color: blue;
177
-}
178
-
179
-

BIN
WebUI/CallCenterWeb.UI/callout/img/videoInCall.png


BIN
WebUI/CallCenterWeb.UI/callout/img/videoOutCall.png


File diff suppressed because it is too large
+ 0 - 9227
WebUI/CallCenterWeb.UI/callout/js/jquery-1.8.js


+ 0 - 117
WebUI/CallCenterWeb.UI/callout/js/jquery.cookie.js

@@ -1,117 +0,0 @@
1
-/*!
2
- * jQuery Cookie Plugin v1.4.1
3
- * https://github.com/carhartl/jquery-cookie
4
- *
5
- * Copyright 2013 Klaus Hartl
6
- * Released under the MIT license
7
- */
8
-(function (factory) {
9
-	if (typeof define === 'function' && define.amd) {
10
-		// AMD
11
-		define(['jquery'], factory);
12
-	} else if (typeof exports === 'object') {
13
-		// CommonJS
14
-		factory(require('jquery'));
15
-	} else {
16
-		// Browser globals
17
-		factory(jQuery);
18
-	}
19
-}(function ($) {
20
-
21
-	var pluses = /\+/g;
22
-
23
-	function encode(s) {
24
-		return config.raw ? s : encodeURIComponent(s);
25
-	}
26
-
27
-	function decode(s) {
28
-		return config.raw ? s : decodeURIComponent(s);
29
-	}
30
-
31
-	function stringifyCookieValue(value) {
32
-		return encode(config.json ? JSON.stringify(value) : String(value));
33
-	}
34
-
35
-	function parseCookieValue(s) {
36
-		if (s.indexOf('"') === 0) {
37
-			// This is a quoted cookie as according to RFC2068, unescape...
38
-			s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
39
-		}
40
-
41
-		try {
42
-			// Replace server-side written pluses with spaces.
43
-			// If we can't decode the cookie, ignore it, it's unusable.
44
-			// If we can't parse the cookie, ignore it, it's unusable.
45
-			s = decodeURIComponent(s.replace(pluses, ' '));
46
-			return config.json ? JSON.parse(s) : s;
47
-		} catch(e) {}
48
-	}
49
-
50
-	function read(s, converter) {
51
-		var value = config.raw ? s : parseCookieValue(s);
52
-		return $.isFunction(converter) ? converter(value) : value;
53
-	}
54
-
55
-	var config = $.cookie = function (key, value, options) {
56
-
57
-		// Write
58
-
59
-		if (value !== undefined && !$.isFunction(value)) {
60
-			options = $.extend({}, config.defaults, options);
61
-
62
-			if (typeof options.expires === 'number') {
63
-				var days = options.expires, t = options.expires = new Date();
64
-				t.setTime(+t + days * 864e+5);
65
-			}
66
-
67
-			return (document.cookie = [
68
-				encode(key), '=', stringifyCookieValue(value),
69
-				options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
70
-				options.path    ? '; path=' + options.path : '',
71
-				options.domain  ? '; domain=' + options.domain : '',
72
-				options.secure  ? '; secure' : ''
73
-			].join(''));
74
-		}
75
-
76
-		// Read
77
-
78
-		var result = key ? undefined : {};
79
-
80
-		// To prevent the for loop in the first place assign an empty array
81
-		// in case there are no cookies at all. Also prevents odd result when
82
-		// calling $.cookie().
83
-		var cookies = document.cookie ? document.cookie.split('; ') : [];
84
-
85
-		for (var i = 0, l = cookies.length; i < l; i++) {
86
-			var parts = cookies[i].split('=');
87
-			var name = decode(parts.shift());
88
-			var cookie = parts.join('=');
89
-
90
-			if (key && key === name) {
91
-				// If second argument (value) is a function it's a converter...
92
-				result = read(cookie, value);
93
-				break;
94
-			}
95
-
96
-			// Prevent storing a cookie that we couldn't decode.
97
-			if (!key && (cookie = read(cookie)) !== undefined) {
98
-				result[name] = cookie;
99
-			}
100
-		}
101
-
102
-		return result;
103
-	};
104
-
105
-	config.defaults = {};
106
-
107
-	$.removeCookie = function (key, options) {
108
-		if ($.cookie(key) === undefined) {
109
-			return false;
110
-		}
111
-
112
-		// Must not alter options, thus extending a fresh object...
113
-		$.cookie(key, '', $.extend({}, options, { expires: -1 }));
114
-		return !$.cookie(key);
115
-	};
116
-
117
-}));

File diff suppressed because it is too large
+ 0 - 26550
WebUI/CallCenterWeb.UI/callout/js/jssip-3.0.13.js


File diff suppressed because it is too large
+ 0 - 1
WebUI/CallCenterWeb.UI/callout/js/pcSip.js


+ 0 - 301
WebUI/CallCenterWeb.UI/callout/js/pcSip备份.js

@@ -1,301 +0,0 @@
1
-var outgoingSession = null,incomingSession = null,currentSession = null,nativeStream = null,callVideoState= null,callVideoFail = null,
2
-    inComing = true,sip_uri_, sip_password_, ws_uri_,localStream = null,userAgent = null,currentVideoIndex = 0,registrationState = null;
3
-var getWidthScale = document.documentElement.clientWidth; //监测浏览器的宽度
4
-var myVideoView = document.getElementById('myVideo'); //我的本地视频
5
-var videoView_1 = document.getElementById('videoView'); //对方的视频信息
6
-console.log(getWidthScale)
7
-$(function(){
8
-  $(".videoList").css({
9
-    "height":getWidthScale*0.8/1.6+"px",
10
-  })
11
-  
12
-  $(".videoMy").css({
13
-    "height":getWidthScale*0.8/1.6+"px",
14
-  })
15
-  
16
-})
17
-
18
-//开启本地摄像头
19
-function captureLocalMediaVideo() {
20
-  navigator.getUserMedia({
21
-    video: true,
22
-    audio: false
23
-  }, function(stream) {
24
-    nativeStream = stream;
25
-    myVideoView.srcObject = stream;
26
-  }, function(e) {
27
-    alert('getUserMedia() error: ' + e.name);
28
-  });
29
-}
30
-//获取本地媒体流
31
-function localMediaStream() {
32
-	navigator.getUserMedia({
33
-	  video:true,
34
-	  audio: true
35
-	}, function(stream) {
36
-    if(callVideoState){
37
-      localStream = stream;
38
-      sipCallVideo();
39
-    }
40
-	  
41
-	 
42
-	}, function(e) {
43
-	  alert('getUserMedia() error: ' + e.name);
44
-	});
45
-}
46
-// 关闭摄像头
47
-function closeMediaVideo() {
48
-	//console.log("1213")
49
-  if(nativeStream){
50
-    nativeStream.getTracks().forEach(function(track) {
51
-      track.stop();
52
-    });
53
-  }
54
-  if(localStream){
55
-    localStream.getTracks().forEach(function(track) {
56
-      track.stop();
57
-    });
58
-  }
59
-  
60
-}
61
-
62
-function testStart() {
63
-  
64
-  // sip_uri_ = "sip:" + selectExten + "@zmd.xjt.net.cn"; //zmd.xjt.net.cn   sip.800100.com.cn
65
-  // sip_password_ = selectExten.toString(); //zhumadian12345800100
66
-	
67
-	//sip_uri_ = "sip:" + selectExten + "@12345sp1.zhumadian.gov.cn"; // 12345sp.zwfw.anyang.gov.cn
68
-  sip_uri_ = "sip:" + selectExten + "@12345sp.zwfw.anyang.gov.cn";
69
-	sip_password_ = "123456"; //zhumadian12345800100
70
-  //ws_uri_ = "wss://zmd.xjt.net.cn:7443";
71
-	//ws_uri_ = "wss://12345sp2.zhumadian.gov.cn:7443";
72
-  ws_uri_ = "wss://12345sp.zwfw.anyang.gov.cn:7443";
73
-  console.info("get input info: sip_uri = ", sip_uri_, " sip_password = ", sip_password_, " ws_uri = ", ws_uri_);
74
-  var socket = new JsSIP.WebSocketInterface(ws_uri_);
75
-  var configuration = {
76
-    sockets: [socket],
77
-    outbound_proxy_set: ws_uri_,
78
-    uri: sip_uri_, //与用户代理关联的SIP URI(字符串)。这是您的提供商提供给您的SIP地址
79
-    password: sip_password_, //SIP身份验证密码
80
-	contact_uri: 'sip:'+selectExten+'@12345sp1.zhumadian.gov.cn;transport=wss',
81
-	//stun_servers: stun_servers,
82
-	//contact_uri: 'sip:'+extno+'@'+returnCitySN["cip"]+';transport=ws', 
83
-    register: true, //指示启动时JsSIP用户代理是否应自动注册
84
-    session_timers: false,//启用会话计时器(根据RFC 4028)
85
-  };
86
-  userAgent = new JsSIP.UA(configuration);
87
-
88
-  //成功注册成功,data:Response JsSIP.IncomingResponse收到的SIP 2XX响应的实例
89
-  userAgent.on('registered', function(data) {
90
-    console.info("registered: ", data.response.status_code, ",", data.response.reason_phrase);
91
-		$(".titText").show();
92
-		$(".titText").html(selectExten + "注册成功");
93
-		registrationState = true;
94
-		top.Connect();
95
-		
96
-  });
97
-  //由于注册失败而被解雇,data:Response JsSIP.IncomingResponse接收到的SIP否定响应的实例,如果失败是由这样的响应的接收产生的,否则为空
98
-  userAgent.on('registrationFailed', function(data) {
99
-    console.log("registrationFailed, ", data);
100
-    //console.warn("registrationFailed, ", data.response.status_code, ",", data.response.reason_phrase, " cause - ", data.cause);
101
-  });
102
-
103
-  //1.在注册到期之前发射几秒钟。如果应用程序没有为这个事件设置任何监听器,JsSIP将像往常一样重新注册。
104
-  userAgent.on('registrationExpiring', function() {
105
-    //==console.warn("registrationExpiring");
106
-  });
107
-
108
-  //为传入或传出会话/呼叫激发。data:
109
-  userAgent.on('newRTCSession', function(data) {
110
-    //console.info('onNewRTCSession: ', data);
111
-    console.info('onNewRTCSession: ', data);
112
-    var originator = data.originator;
113
-    var session = data.session;
114
-    var request = data.request;
115
-    if (data.originator == 'remote') { //incoming call
116
-    	//console.log(JSON.stringify(data));
117
-    	console.info("incomingSession, answer the call");
118
-    	incomingSession = data.session;
119
-    	$(".videoBtn").show();
120
-    	$(".vidDrop").hide();		
121
-    	$(".videoCall").show();
122
-    	$(".videoList").hide();
123
-    	$(".videoMy").hide();				
124
-    	$('.maxOpen').trigger("click");
125
-      captureLocalMediaVideo()
126
-      localMediaStream()
127
-    } else {
128
-    	console.info("2");
129
-    	//console.info("outgoingSession");
130
-    	outgoingSession = data.session;
131
-    	outgoingSession.on('connecting', function(data) {
132
-    		//console.info('onConnecting - ', data.request);
133
-    		currentSession = outgoingSession;
134
-    		outgoingSession = null;
135
-    	});
136
-    }
137
-    
138
-    //接受呼叫时激发
139
-    data.session.on('accepted', function(data) {
140
-      console.info("3");
141
-      //console.info('onAccepted - ', data);
142
-      if (data.originator == 'remote' && currentSession == null) {
143
-        currentSession = incomingSession;
144
-        incomingSession = null;
145
-        //console.info("setCurrentSession - ", currentSession);
146
-      }
147
-    });
148
-    //确认呼叫后激发
149
-    data.session.on('confirmed', function(data) {
150
-      console.info("4");
151
-      //console.info('onConfirmed - ', data);
152
-      $(".callStyle").text("通话中");
153
-      
154
-      if (data.originator == 'remote' && currentSession == null) {
155
-        currentSession = incomingSession;
156
-        incomingSession = null;
157
-        //console.info("setCurrentSession - ", currentSession);
158
-      }
159
-    });
160
-    //在将远程SDP传递到RTC引擎之前以及在发送本地SDP之前激发。此事件提供了修改传入和传出SDP的机制。
161
-    data.session.on('sdp', function(data) {
162
-      console.info("5");
163
-    });
164
-    //接收或生成对邀请请求的1XX SIP类响应(>100)时激发。该事件在SDP处理之前触发(如果存在),以便在需要时对其进行微调,甚至通过删除数据对象中响应参数的主体来删除它
165
-    data.session.on('progress', function(data) {
166
-      console.info("6");
167
-      //console.info('onProgress - ', data.originator);
168
-      if (data.originator == 'remote') {
169
-        //console.info('onProgress, response - ', data.response);
170
-      }
171
-    });
172
-    //创建基础RTCPeerConnection后激发。应用程序有机会通过在peerconnection上添加RTCDataChannel或设置相应的事件侦听器来更改peerconnection。
173
-    data.session.on('peerconnection', function(data) {
174
-
175
-      console.info('onPeerconnection ----创建基础RTCPeerConnection后激发 ');
176
-      var datachannel;
177
-      datachannel = data.peerconnection.createDataChannel('chat');
178
-      console.log("1111" + datachannel)
179
-      callVideoFail = false;
180
-      if (inComing) {
181
-        inComing =false;
182
-      	data.peerconnection.onaddstream = function(ev) {
183
-          
184
-          $(".videoMy").show();    
185
-      		$(".videoBtn").hide();
186
-      		$(".videoList").show();
187
-      		$(".vidDrop").show();
188
-      		videoView_1.srcObject = ev.stream;
189
-      		
190
-      	}
191
-      }
192
-    });
193
-  });
194
-  //为传入或传出消息请求激发。data:
195
-  //     originator:'remote',新消息由远程对等方生成;'local',新消息由本地用户生成。
196
-  //      message:JsSIP.Message 实例。
197
-  //      request:JsSIP.IncomingRequest收到的MESSAGE请求的实例;JsSIP.OutgoingRequest传出MESSAGE请求的实例
198
-  userAgent.on('newMessage', function(data) {
199
-    console.info("8");
200
-    if (data.originator == 'local') {
201
-      //console.info('onNewMessage , OutgoingRequest - ', data.request);
202
-    } else {
203
-      //console.info('onNewMessage , IncomingRequest - ', data.request);
204
-    }
205
-  });
206
-
207
-  console.info("call register");
208
-  //连接到信令服务器,并恢复以前的状态,如果以前停止。重新开始时,如果UA配置中的参数设置为register:true,则向SIP域注册。
209
-  userAgent.start();
210
-}
211
-
212
-// Register callbacks to desired call events
213
-var eventHandlers = {
214
-  'progress': function(e) {
215
-    console.log('call is in progress');
216
-  },
217
-  'failed': function(e) {
218
-    console.log('call failed: ', e);
219
-    if(callVideoFail){
220
-      setTimeout(function(){videoCall()},2000)
221
-    }
222
-  },
223
-  'ended': function(e) {
224
-    console.log('call ended : ', e);
225
-    dropCall();
226
-  },
227
-  'confirmed': function(e) {
228
-    console.log('call confirmed');
229
-  }
230
-};
231
-
232
-//视频呼叫
233
-function audioCall(callPhone) {
234
-  if($("#numberCall").val()<1005||$("#numberCall").val()>1010){
235
-    alert("账号不正确,请重新输入")
236
-  } else{
237
-    inComing = true
238
-    callVideoState = true ;
239
-    localMediaStream();
240
-    captureLocalMediaVideo();
241
-    $(".videoCall").show();
242
-    $(".callStyle").text("连接中");
243
-    
244
-  }
245
-	
246
-}
247
-function sipCallVideo(){
248
-  callVideoFail = true;
249
-  if(localStream){
250
-    var sip_phone_number_ = $("#numberCall").val().toString();
251
-    var options = {
252
-    	'eventHandlers': eventHandlers,
253
-    	'mediaConstraints': {
254
-    		'audio': true,
255
-    		'video': {
256
-    		  'width': 320,
257
-    		  'height': 240 
258
-    		}   
259
-    	
260
-    	},
261
-    	'mediaStream': localStream
262
-    };
263
-    callVideoState = false;
264
-    outgoingSession = userAgent.call(sip_phone_number_, options);
265
-    
266
-  }
267
-  
268
-}
269
-//接听
270
-function answerCall() {
271
-  inComing = true;
272
-	console.log(incomingSession)
273
- 
274
-	if (incomingSession) {
275
-		incomingSession.answer({
276
-			'mediaConstraints': {
277
-				'audio': true,
278
-				'video': {
279
-				  'width': 320,
280
-				  'height': 240 
281
-				}   
282
-			},
283
-			'mediaStream': localStream
284
-		});
285
-		incomingSession = null;
286
-	}
287
-}
288
-//注销
289
-function unReg() {
290
-	console.log('注销----------->');
291
-	userAgent.unregister(true);
292
-}
293
-//挂断
294
-function dropCall() {
295
-	console.log('挂断----------->');
296
-	userAgent.terminateSessions();
297
-  $(".callStyle").text("")
298
-	closeMediaVideo();
299
-	$(".videoCall").hide();
300
-}
301
-

+ 0 - 60
WebUI/CallCenterWeb.UI/callout/videoCall.html

@@ -1,60 +0,0 @@
1
-<!DOCTYPE html>
2
-<html>
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <title></title>
6
-    <link rel="stylesheet" type="text/css" href="css/meeting.css" />
7
-  </head>
8
-  <body>
9
-    <div class="titText"></div>
10
-    <div class="callVideo">
11
-      <div class="callStyle"></div>
12
-      <div class="audioCall">
13
-        <button type="button" onclick="audioCall()">视频呼叫</button>
14
-      </div>
15
-      <div class="inputCall">
16
-        <input type="text" id="numberCall" placeholder="请确认对方是否在线" value="" />
17
-      </div>
18
-      
19
-    </div>
20
-    
21
-    
22
-    <div class="videoCall" style="height: 500px;background-color: #FFFFFF;">
23
-
24
-      <div class="vidDrop" style=" display: none;" onclick="dropCall()">
25
-        <img src="img/videoOutCall.png" />
26
-      </div>
27
-      <div class="videoBtn" style="display: none;">
28
-        <div class="videoAnswer" onclick="answerCall()">
29
-          <img src="img/videoInCall.png" />
30
-        </div>
31
-        <div class="videoDrop" onclick="dropCall()">
32
-          <img src="img/videoOutCall.png" />
33
-        </div>
34
-        <div class="videoText">您有电话进入请注意接听</div>
35
-      </div>
36
-      <div class="videoList">
37
-        来电人:<br />
38
-        <video id="videoView" autoplay></video>
39
-      </div>
40
-      <div class="videoMy">
41
-        坐席:<br />
42
-        <video id="myVideo" autoplay></video>
43
-      </div>
44
-
45
-    </div>
46
-
47
-    <script src="./js/jquery-1.8.js"></script>
48
-    <script src="./js/jquery.cookie.js"></script>
49
-    <script src="js/jssip-3.0.13.js"></script>
50
-		<!-- <script src="./js/pcSip备份.js"></script> -->
51
-    <script src="./js/pcSip备份.js"></script>
52
-    <script>
53
-      var selectExten = $.cookie("extno");
54
-      testStart(selectExten); //初始化
55
-      
56
-   
57
-    </script>
58
-
59
-  </body>
60
-</html>

+ 0 - 111
WebUI/CallCenterWeb.UI/callout/weChatVideo/css/iconfont.css

@@ -1,111 +0,0 @@
1
-@font-face {font-family: "iconfont";
2
-        src:url('../fonts/iconfont.ttf') format('truetype'); /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/
3
-    }
4
-
5
-    .iconfont {
6
-        font-family:"iconfont" !important;
7
-        font-size:16px;
8
-        font-style:normal;
9
-        -webkit-font-smoothing: antialiased;
10
-        -webkit-text-stroke-width: 0.2px;
11
-    }
12
-
13
-.icon-loufang:before { content: "\e605"; }
14
-
15
-.icon-shijian:before { content: "\e6a9"; }
16
-
17
-.icon-needfix_passed:before { content: "\e60a"; }
18
-
19
-.icon-tongxunlu1:before { content: "\e687"; }
20
-
21
-.icon-huawu:before { content: "\e606"; }
22
-
23
-.icon-check:before { content: "\e8d3"; }
24
-
25
-.icon-iconfontfanxiantongqian:before { content: "\e604"; }
26
-
27
-.icon-qianshoujilu:before { content: "\e60b"; }
28
-
29
-.icon-gongyonghuishou:before { content: "\e7f4"; }
30
-
31
-.icon-dengdai1:before { content: "\e613"; }
32
-
33
-.icon-audit:before { content: "\e65f"; }
34
-
35
-
36
-.icon-gongdanguanli-copy:before { content: "\e620"; }
37
-
38
-.icon-gonggao01:before { content: "\e894"; }
39
-
40
-.icon-zhengfulingdao:before { content: "\e609"; }
41
-
42
-.icon-duihao1:before { content: "\e602"; }
43
-
44
-.icon-gongdan:before { content: "\e600"; }
45
-
46
-.icon-wentifankui:before { content: "\e62f"; }
47
-
48
-.icon-yonghu:before { content: "\e879"; }
49
-
50
-.icon-bianji:before { content: "\e60f"; }
51
-
52
-.icon-duihao:before { content: "\e63f"; }
53
-
54
-.icon-tongxunlu:before { content: "\e645"; }
55
-
56
-.icon-shezhi:before { content: "\e626"; }
57
-
58
-.icon-shuoming:before { content: "\e627"; }
59
-
60
-.icon-lock:before { content: "\e603"; }
61
-
62
-.icon-ditu-cuidan:before { content: "\e663"; }
63
-
64
-.icon-shenhe:before { content: "\e6b6"; }
65
-
66
-.icon-banbengengxin:before { content: "\e614"; }
67
-
68
-.icon-zidongjiean:before { content: "\e607"; }
69
-
70
-.icon-tiaoduzhongxin:before { content: "\e601"; }
71
-
72
-.icon-banlijinduchaxun:before { content: "\e819"; }
73
-
74
-.icon-shenhezhong:before { content: "\e6ff"; }
75
-
76
-.icon-dengdai:before { content: "\e617"; }
77
-
78
-.icon-suo:before { content: "\e79c"; }
79
-
80
-.icon-gaojing:before { content: "\e6b7"; }
81
-
82
-.icon-daiban:before { content: "\e619"; }
83
-
84
-.icon-changjianwenti:before { content: "\e608"; }
85
-
86
-.icon-benzhoudaichuli:before { content: "\e98b"; }
87
-
88
-.icon-wancheng:before { content: "\e612"; }
89
-
90
-.icon-banlidaikuan:before { content: "\e9ca"; }
91
-
92
-.icon-gongzuojiaoban:before { content: "\e681"; }
93
-
94
-.icon-dengdai3:before { content: "\e60e"; }
95
-
96
-.icon-tubiao-:before { content: "\e60d"; }
97
-
98
-.icon-dengdai2:before { content: "\e71a"; }
99
-
100
-.icon-hui:before { content: "\e60c"; }
101
-
102
-.icon-yiwanjie:before { content: "\e6c8"; }
103
-
104
-.icon-yibanli:before { content: "\e610"; }
105
-
106
-.icon-daibanli:before { content: "\e611"; }
107
-
108
-.icon-gongdan1:before { content: "\e640"; }
109
-
110
-.icon-check1:before { content: "\e615"; }
111
-

+ 0 - 320
WebUI/CallCenterWeb.UI/callout/weChatVideo/css/mobileMeeting.css

@@ -1,320 +0,0 @@
1
-body {
2
-  background-color: #fff !important;
3
-}
4
-
5
-#login-form {
6
-  background-color: #fff !important;
7
-  margin-top: 0px;
8
-}
9
-
10
-.mui-content {
11
-  background: #FFF;
12
-}
13
-
14
-.area {
15
-  margin: 20px auto 0px auto;
16
-}
17
-
18
-.mui-content-padded {
19
-  margin-top: 40px;
20
-}
21
-
22
-.mui-btn {
23
-  padding: 10px;
24
-}
25
-
26
-.mui-logo-box {
27
-  width: 40%;
28
-  margin: 0 auto;
29
-  padding: 75px 0;
30
-
31
-}
32
-
33
-.mui-logo-box img {
34
-  width: 100%;
35
-}
36
-
37
-.mui-logo-box .img-box2 {
38
-  width: 150;
39
-}
40
-
41
-.mui-input-group:after {
42
-  position: absolute;
43
-  right: 0;
44
-  bottom: 0;
45
-  left: 15px;
46
-  height: 1px;
47
-  content: '';
48
-  -webkit-transform: scaleY(.5);
49
-  transform: scaleY(.5);
50
-  /*background-color: #c8c7cc;*/
51
-}
52
-
53
-input {
54
-  font-size: 14px;
55
-}
56
-
57
-
58
-.mui-input-group {
59
-  width: 100%;
60
-  margin: 0 auto;
61
-  margin-bottom: 20px;
62
-}
63
-
64
-.mui-input-row {
65
-  margin-bottom: 10px;
66
-}
67
-
68
-.mui-content-padded {
69
-  width: 86%;
70
-  margin: 0 auto;
71
-  margin-top: 80px;
72
-}
73
-
74
-.mui-content-padded button {
75
-  background: #ff9600;
76
-}
77
-
78
-#login,
79
-#register {
80
-  border-radius: 20px;
81
-  border: none;
82
-}
83
-
84
-.mui-input-group .mui-input-row:after {
85
-  left: -5px;
86
-}
87
-
88
-.mui-input-row span {
89
-  color: #787878;
90
-}
91
-
92
-.mui-input-group .mui-input-row {
93
-  height: 45px;
94
-  line-height: 45px;
95
-  /* margin-bottom: 20px; */
96
-  width: 80%;
97
-  margin: 0 auto;
98
-  border-top: 1px solid #d9d9d9;
99
-}
100
-
101
-.mui-input-group:before {
102
-  height: 0px;
103
-}
104
-
105
-.mui-password {
106
-  border: none;
107
-  border-bottom: 1px solid #d9d9d9;
108
-}
109
-
110
-.mui-input-group:after {
111
-  background-color: #fff;
112
-}
113
-
114
-.mui-input-group .mui-input-row:after {
115
-  background-color: #fff;
116
-}
117
-
118
-.registStatus {
119
-  width: 100%;
120
-  font: 26px;
121
-  text-align: center;
122
-  color: #2AC845;
123
-  margin-top: 10px;
124
-  display: none;
125
-}
126
-
127
-.buttonDiv {
128
-  width: 100%;
129
-  position: fixed;
130
-  bottom: 10%;
131
-  left: 50%;
132
-  margin-left: -20px;
133
-  z-index: 2;
134
-}
135
-
136
-.customerImg {
137
-  position: fixed;
138
-  right: 3%;
139
-  top: 2%;
140
-  margin-left: -20px;
141
-  z-index: 2;
142
-  width: 195px;
143
-  overflow: hidden;
144
-}
145
-
146
-.customerImg .leftText {
147
-  float: left;
148
-  width: 100px;
149
-  line-height: 80px;
150
-  text-align: right;
151
-  color: #FFFFFF;
152
-  margin-right: 15px;
153
-}
154
-
155
-.customerImg .rightImg {
156
-  float: left;
157
-  width: 80px;
158
-  height: 80px;
159
-  background-color: #EEEEEE;
160
-}
161
-
162
-.customerImg .rightImg img {
163
-  width: 100%;
164
-  height: 100%;
165
-}
166
-
167
-.dropTime {
168
-  color: #FFFFFF;
169
-  padding: 5px;
170
-}
171
-
172
-.buttonDiv .dropIcon {
173
-  width: 50px;
174
-  height: 50px;
175
-  border-radius: 25px;
176
-  background: #FFFFFF;
177
-  border: none;
178
-}
179
-
180
-.dropIcon img {
181
-  width: 100%;
182
-  height: 100%;
183
-}
184
-
185
-.buttonDiv .answerIcon {
186
-  width: 50px;
187
-  height: 50px;
188
-  border-radius: 25px;
189
-  background: #FFFFFF;
190
-  border: none;
191
-}
192
-
193
-.answerIcon img {
194
-  width: 100%;
195
-  height: 100%;
196
-}
197
-
198
-.videoYour {
199
-  display: block;
200
-  background-color:#000000;
201
-  width:100%;
202
-  height:100%;
203
-  top:0;
204
-  right:0;
205
-  z-index:1;
206
-  position: fixed;
207
-  overflow: hidden;
208
-}
209
-
210
-.videoYour video {
211
-
212
-  width: 100%;
213
-  position: absolute;
214
-  left: 50%;
215
-  right: 0px;
216
-  top: 0px;
217
-  bottom: 0px;
218
-  margin: auto;
219
-
220
-
221
-}
222
-
223
-.videoMy {
224
-  background-color:#EEEEEE;
225
-  width:20%;
226
-  height:20%;
227
-  top:10px;
228
-  right:10px;
229
-  z-index:2;
230
-  position: fixed;
231
-  overflow: hidden;
232
-}
233
-
234
-.videoMy video {
235
-  /* background-color: #333333; */
236
-  /* border: 1px solid blue; */
237
-  width: 100%;
238
-  position: absolute;
239
-  left: 50%;
240
-  right: 0px;
241
-  top: 0px;
242
-  bottom: 0px;
243
-  margin: auto;
244
-}
245
-
246
-.callHtml {
247
-  display: none;
248
-}
249
-
250
-
251
-.reminderText{
252
-  width: 80%; 
253
-  margin: 0 auto; 
254
-  text-align: center; 
255
-  font-size: 12px; 
256
-  color: #DD524D; 
257
-  margin-top: 30px;
258
-}
259
-.btnStyle{
260
-  width: 70%; 
261
-  margin: 0 auto; 
262
-  display: flex;
263
-}
264
-.btnStyle .mui-content-padded{
265
-  margin-top: 20px;
266
-  font-size: 16px;
267
-}
268
-.aTextStyle{
269
-  width: 100%; 
270
-  text-align: center; 
271
-  display: block; 
272
-  
273
-}
274
-.loginbtn{
275
-  display: none;
276
-}
277
-.voiceBox{
278
-  position: fixed; 
279
-  
280
-  width: 46px;
281
-  height: 46px;
282
-  border-radius: 30px;
283
-  background: #FFFFFF;
284
-  z-index: 111;
285
-}
286
-.voiceBox img{
287
-  width: 80%;
288
-  margin: 10%;
289
-}
290
-.muteBtn,.unMuteBtn{
291
-  display: none;
292
-  left:18%;
293
-  bottom:10%
294
-}
295
-.cameraBtn,.unCameraBtn{
296
-  display: none;
297
-  left: 19%;
298
-  top: 3%;
299
-}
300
-
301
-.videoCutBtn{
302
-  position: fixed; 
303
-  width: 46px;
304
-  height: 46px;
305
-  border-radius: 30px;
306
-  background: #FFFFFF;
307
-  z-index: 111;
308
-  right:16%;
309
-  bottom:10%
310
-}
311
-
312
-.videoCutBtn img{
313
-  width: 80%;
314
-  margin: 10%;
315
-}
316
-
317
-.shotCut{
318
-  
319
-}
320
-

File diff suppressed because it is too large
+ 0 - 4677
WebUI/CallCenterWeb.UI/callout/weChatVideo/css/mui.min.css


BIN
WebUI/CallCenterWeb.UI/callout/weChatVideo/fonts/iconfont.ttf


BIN
WebUI/CallCenterWeb.UI/callout/weChatVideo/fonts/mui-icons-extra.ttf


BIN
WebUI/CallCenterWeb.UI/callout/weChatVideo/fonts/mui.ttf


BIN
WebUI/CallCenterWeb.UI/callout/weChatVideo/img/answerCall.png


BIN
WebUI/CallCenterWeb.UI/callout/weChatVideo/img/cameraOff.png


BIN
WebUI/CallCenterWeb.UI/callout/weChatVideo/img/cameraOn.png


BIN
WebUI/CallCenterWeb.UI/callout/weChatVideo/img/customer.png


BIN
WebUI/CallCenterWeb.UI/callout/weChatVideo/img/dropCall.png


BIN
WebUI/CallCenterWeb.UI/callout/weChatVideo/img/incoming.mp3


BIN
WebUI/CallCenterWeb.UI/callout/weChatVideo/img/logo_banner.png


BIN
WebUI/CallCenterWeb.UI/callout/weChatVideo/img/muteIcon--.png


BIN
WebUI/CallCenterWeb.UI/callout/weChatVideo/img/muteIcon.png


BIN
WebUI/CallCenterWeb.UI/callout/weChatVideo/img/shotCut.png


BIN
WebUI/CallCenterWeb.UI/callout/weChatVideo/img/unmute--.png


BIN
WebUI/CallCenterWeb.UI/callout/weChatVideo/img/unmute.png


BIN
WebUI/CallCenterWeb.UI/callout/weChatVideo/img/videoInCall.png


BIN
WebUI/CallCenterWeb.UI/callout/weChatVideo/img/videoOutCall.png


+ 0 - 119
WebUI/CallCenterWeb.UI/callout/weChatVideo/index.html

@@ -1,119 +0,0 @@
1
-<!DOCTYPE html>
2
-<html>
3
-
4
-  <head>
5
-    <meta charset="UTF-8">
6
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
-   <!-- <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> -->
8
-    <meta name="viewport"
9
-      content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no,minimal-ui">
10
-    <meta name="Author" content="foruok" />
11
-    <meta name="description" content="JsSIP based example web application." />
12
-    <link href="css/mui.min.css" rel="stylesheet" />
13
-    <link href="css/iconfont.css" rel="stylesheet" />
14
-
15
-    <script src="https://pv.sohu.com/cityjson?ie=utf-8"></script>
16
-    <link rel="stylesheet" type="text/css" href="css/mobileMeeting.css" />
17
-    <title>微信页</title>
18
-  </head>
19
-  <body style="height: 100%; background: #000000;">
20
-    <div class="mui-content mui-input-group">
21
-
22
-      <div class="mui-logo-box">
23
-        <div class="img-box2">
24
-          <img src="img/logo_banner.png" alt="" />
25
-        </div>
26
-      </div>
27
-      
28
-      <div class="mui-input-row">
29
-        <label><span class="mui-icon iconfont icon-yonghu"></span></label>
30
-        <input id="account" value="" type="number" class="mui-input-clear mui-input accountNum" disabled="disabled"
31
-          placeholder="请输入账号">
32
-      </div>
33
-      
34
-      <div class="mui-input-row">
35
-        <label><span class="mui-icon iconfont icon-yonghu"></span></label>
36
-        <input id="telephone" value="" type="number" class="mui-input-clear mui-input" placeholder="请输入手机号">
37
-      </div>
38
-
39
-      <div class="registStatus" style="margin-top: 20px;">已注册</div>
40
-
41
-      <div class="btnStyle">
42
-      	<div class="mui-content-padded">
43
-      		<button data-attr="0" class="mui-btn mui-btn-block mui-btn-warning loginbtn">督办专员登录</button>
44
-      	</div>
45
-      </div>
46
-      <div class="btnStyle">
47
-        <div class="mui-content-padded" style="margin-top: 30px;">
48
-          <button data-attr="1" class="mui-btn mui-btn-block mui-btn-warning videoCall">视频呼叫1</button>
49
-        </div>
50
-      </div>
51
-      
52
-      <div class="reminderText">
53
-        (正在内部测试中,有需要请直接电话拨打12345 )
54
-      </div>
55
-      <a href="superviseMan.html" class="aTextStyle superviseBtn" style="margin-top: 10px;">我是督办专员</a>
56
-     <!-- <a class="aTextStyle" style="margin-top: 30px;"
57
-        href="https://webrtc.github.io/samples/src/content/devices/input-output/">打开测试链接 </a> </br></br>
58
-      <a style="width: 100%; text-align: center; display: block;" href="index4.html">打开测试链 </a> </br></br> -->
59
-    </div>
60
-
61
-    <!-- 呼叫界面 -->
62
-    <div class="callHtml"">
63
-      
64
-      <div class="customerImg">
65
-        <div class="leftText">连接中...</div>
66
-        <!-- <div class="rightImg"><img src="img/customer.png"></div> -->
67
-      </div>
68
-      
69
-      <div class="voiceBox muteBtn" style="display: block;">
70
-        <img src="img/muteIcon.png">
71
-      </div>
72
-      <div class="voiceBox unMuteBtn">
73
-        <img src="img/unMute.png">
74
-      </div>
75
-      
76
-      <!-- <div class="voiceBox cameraBtn" style="display: block;">
77
-        <img src="img/cameraOff.png">
78
-      </div>
79
-      <div class="voiceBox unCameraBtn">
80
-        <img src="img/cameraOn.png">
81
-      </div> -->
82
-      
83
-      <div class="videoCutBtn shotCut" onclick="shotCut()">
84
-        <img src="img/shotCut.png">
85
-      </div>
86
-      <div class="buttonDiv">
87
-        <div onclick="hangupCall()" class="dropIcon" style="display: block;"><img src="img/dropCall.png"></div>
88
-        <div onclick="answerCall()" class="answerIcon" style="display: none;"><img src="img/answerCall.png"></div>
89
-      </div>
90
-
91
-      <div class="showView">
92
-        <div class="videoYour">
93
-          <video id="yourVideo" autoplay></video>
94
-        </div>
95
-        <div class="videoMy">
96
-          <video id="myVideo" autoplay></video>
97
-        </div>
98
-      </div>
99
-      
100
-      <audio controls="controls" loop id="music_bg">
101
-        <source src="img/incoming.mp3" type="audio/ogg" />
102
-      </audio>
103
-
104
-    </div>
105
-
106
-  </body>
107
-</html>
108
-
109
-
110
-<script src="js/jquery-1.8.js"></script>
111
-<script src="js/jssip-3.0.13.js"></script>
112
-<script src="js/jquery.md5.js"></script>
113
-<script src="js/huayi.config.js"></script>
114
-<script src="js/main.js"></script>
115
-<script src="js/mobileSip.js"></script>
116
-
117
-<script>
118
-  
119
-</script>

+ 0 - 104
WebUI/CallCenterWeb.UI/callout/weChatVideo/js/cameraCut.js

@@ -1,104 +0,0 @@
1
-const localVideo = document.querySelector('video');
2
-var videoSelect = document.querySelector('select#video');
3
-var audioSelect = document.querySelector('select#audio');
4
-let localStream;
5
-let constraint;
6
-
7
-function getDevices() {
8
-  return navigator.mediaDevices.enumerateDevices()
9
-}
10
-
11
-function gotDevices(devices) {
12
-  console.log(JSON.stringify(devices))
13
-  console.log(devices.length)
14
-  var selectText = document.getElementById("selectText")
15
-  selectText.innerHTML = devices.length
16
-  let audioNum = 0,
17
-    videoNum = 0;
18
-  devices.forEach(function(device) {
19
-    if (device['kind'] == 'audioinput') {
20
-      let opt = document.createElement('option');
21
-      opt.value = device['deviceId'];
22
-
23
-      if (device['label']) {
24
-        opt.innerText = device['label'];
25
-      } else {
26
-        audioNum++
27
-        opt.innerText = 'audio' + audioNum
28
-      }
29
-
30
-      audioSelect.appendChild(opt);
31
-      console.log("audioinput:" + JSON.stringify(device['label']))
32
-
33
-    } else if (device['kind'] == 'videoinput') {
34
-      let opt = document.createElement('option');
35
-      opt.value = device['deviceId'];
36
-
37
-      if (device['label']) {
38
-        opt.innerText = device['label'];
39
-      } else {
40
-        videoNum++
41
-        if (device['label']) {
42
-          opt.innerText = device['label'];
43
-        } else {
44
-          videoNum++
45
-          opt.innerText = 'video' + videoNum
46
-        }
47
-
48
-      }
49
-
50
-      videoSelect.appendChild(opt);
51
-      console.log("videoinput:" + JSON.stringify(device['label']))
52
-
53
-    }
54
-  })
55
-  changeConstraint();
56
-}
57
-
58
-function changeConstraint() {
59
-  constraint = {
60
-    video: {
61
-      deviceId: videoSelect.value
62
-    },
63
-    audio: {
64
-      deviceId: audioSelect.value
65
-    }
66
-  };
67
-  getMedia(constraint);
68
-}
69
-
70
-function gotLocalMediaStream(mediaStream) {
71
-  localStream = mediaStream;
72
-  localVideo.srcObject = mediaStream;
73
-}
74
-
75
-function getMedia(mediaStreamConstraints) {
76
-  // 这里是重点,必须要先停止才可以
77
-  if (localStream) {
78
-    localStream.getVideoTracks()[0].stop();
79
-  }
80
-  if (navigator.mediaDevices.getUserMedia) {
81
-    //最新的标准API
82
-    navigator.mediaDevices.getUserMedia(mediaStreamConstraints).then(gotLocalMediaStream).catch(
83
-      handleLocalMediaStreamError);
84
-  } else if (navigator.webkitGetUserMedia) {
85
-    //webkit核心浏览器
86
-    navigator.webkitGetUserMedia(mediaStreamConstraints, gotLocalMediaStream, handleLocalMediaStreamError)
87
-  } else if (navigator.mozGetUserMedia) {
88
-    //firfox浏览器
89
-    navigator.mozGetUserMedia(mediaStreamConstraints, gotLocalMediaStream, handleLocalMediaStreamError);
90
-  } else if (navigator.getUserMedia) {
91
-    //旧版API
92
-    navigator.getUserMedia(mediaStreamConstraints, gotLocalMediaStream, handleLocalMediaStreamError);
93
-  }
94
-
95
-}
96
-
97
-function handleLocalMediaStreamError(error) {
98
-  console.log('navigator.getUserMedia error: ', error);
99
-}
100
-
101
-getDevices().then(gotDevices)
102
-
103
-audioSelect.onchange = changeConstraint;
104
-videoSelect.onchange = changeConstraint;

+ 0 - 13
WebUI/CallCenterWeb.UI/callout/weChatVideo/js/huayi.config.js

@@ -1,13 +0,0 @@
1
-if (huayi == undefined) {
2
-	var huayi = {};
3
-}
4
-huayi.config = {
5
-
6
-  //socket_ip: "12345sp1.zhumadian.gov.cn",
7
-  //socket_port: "9443",
8
-	// ws_uri_: "wss://12345sp2.zhumadian.gov.cn:7443", //端口  
9
-  sip_uri: "12345sp.zwfw.anyang.gov.cn",
10
-  socket_ip: "docking.zwfw.anyang.gov.cn",
11
-  socket_port: "8081",
12
-  ws_uri_: "wss://12345sp.zwfw.anyang.gov.cn:7443", //端口  
13
-};

+ 0 - 621
WebUI/CallCenterWeb.UI/callout/weChatVideo/js/huayi.http.js

@@ -1,621 +0,0 @@
1
-var helper = {};
2
-
3
-helper.http = {
4
-	newXMLHttp: function() {
5
-		var XMLHttp = null;
6
-		if(window.XMLHttpRequest) {
7
-			XMLHttp = new XMLHttpRequest();
8
-		}
9
-		if(XMLHttp == null && window.ActiveXObject) {
10
-			var clsids = ["MSXML2.XMLHttp.7.0", "MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp.2.0", "MSXML2.XMLHttp.1.0", "MSXML2.XMLHttp", "Microsoft.XMLHttp"];
11
-			for(var i = 0; i < clsids.length && XMLHttp == null; i++) {
12
-				try {
13
-					XMLHttp = new ActiveXObject(clsids[i]);
14
-				} catch(e) {}
15
-			}
16
-		}
17
-		return XMLHttp;
18
-	},
19
-	get: function(URL, func) {
20
-		try {
21
-			var XMLHttp = this.newXMLHttp();
22
-			if(typeof(func) != "function") {
23
-				XMLHttp.open("GET", URL, false);
24
-				XMLHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
25
-				XMLHttp.send(null);
26
-
27
-				var result = XMLHttp.status;
28
-				var responseText = XMLHttp.responseText;
29
-
30
-				if(result == 200) {
31
-					return responseText;
32
-				} else {
33
-					return result;
34
-				}
35
-			} else {
36
-				XMLHttp.onreadystatechange = function() {
37
-					if(XMLHttp.readyState == 4) {
38
-						if(XMLHttp.status == 200) {
39
-							var responseText = XMLHttp.responseText;
40
-							func(responseText);
41
-						} else {
42
-							func(false);
43
-						}
44
-					}
45
-				};
46
-				XMLHttp.open("GET", URL, true);
47
-				XMLHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
48
-				XMLHttp.send(null);
49
-			}
50
-		} catch(e) {}
51
-	},
52
-	post: function(URL, data, func) {
53
-		try {
54
-			var XMLHttp = this.newXMLHttp();
55
-			if(typeof(func) != "function") {
56
-				XMLHttp.open("POST", URL, false);
57
-				XMLHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
58
-				XMLHttp.send(data);
59
-
60
-				var result = XMLHttp.status;
61
-				var responseText = XMLHttp.responseText;
62
-
63
-				if(result == 200) {
64
-					return responseText;
65
-				} else {
66
-					return false;
67
-				}
68
-			} else {
69
-				XMLHttp.onreadystatechange = function() {
70
-					if(XMLHttp.readyState == 4) {
71
-						if(XMLHttp.status == 200) {
72
-							var responseText = XMLHttp.responseText;
73
-							func(responseText);
74
-						} else {
75
-							func(false);
76
-						}
77
-					}
78
-				};
79
-
80
-				XMLHttp.open("POST", URL, true);
81
-				XMLHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
82
-				XMLHttp.send(data);
83
-			}
84
-		} catch(e) {}
85
-	}
86
-};
87
-
88
-helper.cookies = {
89
-	del: function(name) {
90
-		var exp = new Date();
91
-		exp.setTime(exp.getTime() - 1);
92
-		var cval = helper.cookies.get(name);
93
-		if(cval != null)
94
-			document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();
95
-	},
96
-	set: function(name, value, remember) {
97
-		if(remember == true) {
98
-			var Days = 30;
99
-			var exp = new Date();
100
-			exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
101
-			document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString();
102
-		} else {
103
-			document.cookie = name + "=" + escape(value) + ";path=/";
104
-		}
105
-	},
106
-	setday: function(name, value, remember) {
107
-		var Days = remember;
108
-		var exp = new Date();
109
-		exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
110
-		document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString();
111
-
112
-	},
113
-	setdomain: function(name, value, remember) {
114
-		var domain = window.location.host.split(".");
115
-		if(remember == true) {
116
-			var Days = 30;
117
-			var exp = new Date();
118
-			exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
119
-			document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString() + ";domain=." + domain[domain.length - 2] + "." + domain[domain.length - 1];
120
-		} else {
121
-			document.cookie = name + "=" + escape(value) + ";path=/" + ";domain=." + domain[1] + "." + domain[2];
122
-		}
123
-	},
124
-	get: function(name) {
125
-		var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
126
-
127
-		if(arr = document.cookie.match(reg)) {
128
-			return unescape(arr[2]);
129
-		} else {
130
-			return '';
131
-		}
132
-	}
133
-};
134
-
135
-/*
136
-获取URL中指定的参数
137
-例如:
138
-URL:test.com/test.aspx?test=t
139
-var t=help.request.queryString("test");
140
-得到t
141
-*/
142
-helper.request = {
143
-	queryString: function(item) {
144
-		locationSearch = "";
145
-		var tmpLocationArr = location.href.split("?");
146
-		if(tmpLocationArr.length > 1) locationSearch = "?" + tmpLocationArr[1];
147
-		var svalue = locationSearch.match(new RegExp("[\?\&]" + item + "=([^\&]*)(\&?)", "i"));
148
-		var Qvalue = svalue ? svalue[1] : svalue;
149
-		if(Qvalue == null) {
150
-			return "";
151
-		} else {
152
-			return Qvalue.trim();
153
-		}
154
-	},
155
-	queryurl: function(url, item) {
156
-		locationSearch = "";
157
-		var tmpLocationArr = url.split("?");
158
-		if(tmpLocationArr.length > 1) locationSearch = "?" + tmpLocationArr[1];
159
-		var svalue = locationSearch.match(new RegExp("[\?\&]" + item + "=([^\&]*)(\&?)", "i"));
160
-		var Qvalue = svalue ? svalue[1] : svalue;
161
-		if(Qvalue == null) {
162
-			return "";
163
-		} else {
164
-			return Qvalue.trim();
165
-		}
166
-	}
167
-};
168
-
169
-helper.pager = {
170
-
171
-	//分页
172
-	PageList1: function(strFunName) {
173
-		/***总页数***/
174
-		var intPageCount = parseInt((parseInt(intRecordCount) + parseInt(intPageSize) - 1) / parseInt(intPageSize));
175
-		if(intPageCount <= 1) {
176
-			return "";
177
-		}
178
-
179
-		/***页码距***/
180
-		var intPageCurrent = 10;
181
-
182
-		/***起始页码***/
183
-		var intStartPage = (parseInt((parseInt(intPageIndex) + intPageCurrent - 1) / intPageCurrent) - 1) * intPageCurrent + 1;
184
-
185
-		/***结束页码***/
186
-		var intEndPage = intStartPage + intPageCurrent - 1;
187
-		if(intPageIndex % intPageCurrent == 0) {
188
-			intStartPage++;
189
-			intEndPage++;
190
-		}
191
-
192
-		if(intPageIndex % intPageCurrent - 1 == 0 && intPageIndex != 1) {
193
-			intStartPage--;
194
-			intEndPage--;
195
-		}
196
-
197
-		if(intEndPage >= intPageCount) {
198
-			intEndPage = intPageCount;
199
-		}
200
-
201
-		/***上一页,下一页***/
202
-		var intUpPage = parseInt(intPageIndex) - 1;
203
-		var intDownPage = parseInt(intPageIndex) + 1;
204
-		var strUpPage = "<a href=\"#\" onclick=\"" + strFunName + "(" + intUpPage + ")\" >上一页</a>";
205
-		var strDownPage = "<a href=\"#\" onclick=\"" + strFunName + "(" + intDownPage + ")\">下一页</a>";
206
-		if(intUpPage < 1) {
207
-			//intUpPage = 1;
208
-			strUpPage = "";
209
-		}
210
-		if(intPageIndex >= intPageCount) {
211
-			//intDownPage = intPageCount;
212
-			strDownPage = "";
213
-		}
214
-
215
-		/***生成页码列表***/
216
-		var strPageList = strUpPage;
217
-
218
-		for(var i = intStartPage; i <= intEndPage; i++) {
219
-			if(intPageIndex == i) {
220
-				/***当前页码***/
221
-				strPageList += "<a style=\"background-image:url(../images/bg/menublue22.jpg); background-position:bottom; background-repeat:repeat-x; padding:1px 6px;border-radius: 4px 4px 4px 4px; margin-right:3px; border:1px solid #aeb2b1;\" >" + i + "</a>";
222
-			} else {
223
-				strPageList += "<a href=\"#\" onclick=\"" + strFunName + "(" + i + ");\">" + i + "</a>";
224
-			}
225
-		}
226
-		strPageList += strDownPage;
227
-
228
-		//直接跳转
229
-		strPageList += "总页数:" + intPageCount + "&nbsp;&nbsp;/&nbsp;&nbsp;";
230
-		strPageList += "<input type=\"text\" onkeyup=\"this.value=this.value.replace(/\\D/g,'')\" id=\"tb_index\" />";
231
-		strPageList += "&nbsp;&nbsp;<a style=\"cursor:pointer;\" onclick=\"javascript:helper.pager.checkPageValue()\">跳转</a>";
232
-		return strPageList;
233
-
234
-	},
235
-	checkPageValue: function() {
236
-		var intPageIndexNext = document.getElementById('tb_index').value;
237
-		if(parseInt(intPageIndexNext) == 0) {
238
-			document.getElementById('tb_index').value = "1";
239
-			$.jBox.alert('输入页面不能为0', '提示');
240
-			return;
241
-		}
242
-		if(intPageIndexNext == "") {
243
-			document.getElementById('tb_index').value = "1";
244
-			$.jBox.alert('输入页面不能为空', '提示');
245
-			return;
246
-		}
247
-		if(intPageIndexNext.length != 0) {
248
-			var intPageCount = parseInt((parseInt(intRecordCount) + parseInt(intPageSize) - 1) / parseInt(intPageSize));
249
-			if(intPageIndexNext <= intPageCount) {
250
-				intPageIndex = intPageIndexNext;
251
-				loadlist();
252
-			} else {
253
-				document.getElementById('tb_index').value = intPageCount;
254
-				$.jBox.alert('输入页面不能大于总页数', '提示');
255
-			}
256
-		} else {
257
-			document.getElementById('tb_index').value = "1";
258
-		}
259
-	},
260
-	loadJS: function(url) {
261
-		var domScript = document.createElement('script');
262
-		domScript.type = "text/javascript";
263
-		domScript.src = url;
264
-		domScript.onload = domScript.onreadystatechange = function() {
265
-			if(!this.readyState || 'loaded' === this.readyState || 'complete' === this.readyState) {
266
-				this.onload = this.onreadystatechange = null;
267
-				this.parentNode.removeChild(this);
268
-			}
269
-		};
270
-		document.getElementsByTagName('head')[0].appendChild(domScript);
271
-	}
272
-};
273
-
274
-helper.masklayer = {
275
-	layer: null,
276
-	showcount: 0,
277
-	show: function() {
278
-		this.layer = document.getElementById("masklayer");
279
-		if(!this.layer) {
280
-			this.layer = document.createElement("div");
281
-			this.layer.id = "masklayer";
282
-			this.layer.className = "masklayer";
283
-			/*this.layer.style.position = "absolute";
284
-			this.layer.style.top = "0";
285
-			this.layer.style.left = "0";
286
-			this.layer.style.zIndex = 1000;
287
-			var width = Math.max(
288
-			Math.max(document.body.clientWidth, document.documentElement.clientWidth),
289
-			Math.max(document.body.scrollWidth, document.documentElement.scrollWidth)
290
-			);
291
-			var height = Math.max(
292
-			Math.max(document.body.clientHeight, document.documentElement.clientHeight),
293
-			Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)
294
-			);
295
-			this.layer.style.width = width + "px";
296
-			this.layer.style.height = height + "px";*/
297
-			this.layer.innerHTML = "<iframe src='/blank.html' style='width:100%;height:100%;background-color:#fff;" +
298
-				"filter:alpha(opacity=0);-moz-opacity:0;-khtml-opacity: 0;opacity: 0;" +
299
-				"position:absolute;z-index:999;top:0;left:0;' frameborder='0'></iframe>" +
300
-				"<div style='width:100%;height:100%;position:absolute;top:0;left:0;z-index:1000;background:#000;" +
301
-				"filter:alpha(opacity=20);-moz-opacity:0.2;-khtml-opacity: 0.2;opacity: 0.2;'></div>";
302
-			document.body.appendChild(this.layer);
303
-		}
304
-		this.showcount++;
305
-	},
306
-	hide: function() {
307
-		if(--this.showcount == 0) {
308
-			if(this.layer && this.layer.parentNode) {
309
-				this.layer.parentNode.removeChild(this.layer);
310
-			}
311
-		}
312
-	},
313
-	moveToCenter: function(e, x, y) {
314
-		if(e.style.display == "none") e.style.display = "";
315
-		var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
316
-		var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
317
-		if(x > 0) {
318
-			x += scrollLeft;
319
-		} else x = parseInt((document.documentElement.clientWidth - e.clientWidth) / 2) + scrollLeft;
320
-		if(y > 0) {
321
-			y += scrollTop;
322
-		} else y = parseInt((document.documentElement.clientHeight - e.clientHeight) / 2) + scrollTop;
323
-		x = x < 0 ? 0 : x;
324
-		y = y < 50 ? 50 : y;
325
-		e.style.left = x + "px";
326
-		e.style.top = y + "px";
327
-	}
328
-};
329
-
330
-helper.filter = {
331
-	Transcoding: function(content) {
332
-		content = content.replace(/∞L/g, "<");
333
-		content = content.replace(/∞R/g, ">");
334
-		content = content.replace(/∞∴/g, "'");
335
-		content = content.replace(/∞≡/g, "#");
336
-		content = content.replace(/∞※/g, "\"");
337
-		return content;
338
-	}
339
-};
340
-
341
-function str2asc(strstr) {
342
-	return("0" + strstr.charCodeAt(0).toString(16)).slice(-2);
343
-}
344
-helper.url = {
345
-	getpara: function(name) {
346
-		var val;
347
-		paras = window.location.search;
348
-		paras = paras.substr(1);
349
-		paraarray = paras.split("&");
350
-		for(i = 0; i < paraarray.length; i++) {
351
-			temp = paraarray[i].split("=");
352
-			if(temp[0] == name) {
353
-				val = temp[1];
354
-				break;
355
-			}
356
-		}
357
-		if(val == null || val == "") {
358
-			return "";
359
-		} else {
360
-			return val;
361
-		}
362
-	}
363
-};
364
-helper.sys = {
365
-	getElementsByClassName: function(pnode, className) {
366
-		var nodes = pnode.getElementsByTagName('*');
367
-		var elements = new Array();
368
-		for(var i = 0; i < nodes.length; i++) {
369
-			if(nodes[i].className == className) {
370
-				elements[elements.length] = nodes[i];
371
-			}
372
-		}
373
-		return elements;
374
-	},
375
-	removeElement: function(element) {
376
-		if(element && element.parentNode) {
377
-
378
-			element.parentNode.removeChild(element);
379
-			return true;
380
-		} else {
381
-			return false;
382
-		}
383
-	},
384
-	Return: function(url) {
385
-		top.location.href = url;
386
-	}
387
-};
388
-
389
-helper.DateFormat = {
390
-	d2s: function(postdate) {
391
-		var second = 1000;
392
-		var minutes = second * 60;
393
-		var hours = minutes * 60;
394
-		var days = hours * 24;
395
-		var months = days * 30;
396
-		var twomonths = days * 365;
397
-		var myDate = new Date(Date.parse(postdate));
398
-		if(isNaN(myDate)) {
399
-			myDate = new Date(postdate.replace(/-/g, "/"));
400
-		}
401
-		var nowtime = new Date();
402
-		var longtime = nowtime.getTime() - myDate.getTime();
403
-		var showtime = 0;
404
-		if(longtime > months * 2) {
405
-			return postdate;
406
-		} else if(longtime > months) {
407
-			return "1个月前";
408
-		} else if(longtime > days * 7) {
409
-			return("1周前");
410
-		} else if(longtime > days) {
411
-			return(Math.floor(longtime / days) + "天前");
412
-		} else if(longtime > hours) {
413
-			return(Math.floor(longtime / hours) + "小时前");
414
-		} else if(longtime > minutes) {
415
-			return(Math.floor(longtime / minutes) + "分钟前");
416
-		} else if(longtime > second) {
417
-			return(Math.floor(longtime / second) + "秒前");
418
-		} else {
419
-			return("刚刚");
420
-		}
421
-	},
422
-	getPreMonth:
423
-		/**
424
-		 * 获取上一个月
425
-		 *
426
-		 * @date 格式为yyyy-mm-dd的日期,如:2014-01-25
427
-		 */
428
-		function(date) {
429
-			var arr = date.split('-');
430
-			var year = arr[0]; //获取当前日期的年份
431
-			var month = arr[1]; //获取当前日期的月份
432
-			var day = arr[2]; //获取当前日期的日
433
-			var days = new Date(year, month, 0);
434
-			days = days.getDate(); //获取当前日期中月的天数
435
-			var year2 = year;
436
-			var month2 = parseInt(month) - 1;
437
-			if(month2 == 0) {
438
-				year2 = parseInt(year2) - 1;
439
-				month2 = 12;
440
-			}
441
-			var day2 = day;
442
-			var days2 = new Date(year2, month2, 0);
443
-			days2 = days2.getDate();
444
-			if(day2 > days2) {
445
-				day2 = days2;
446
-			}
447
-			if(month2 < 10) {
448
-				month2 = '0' + month2;
449
-			}
450
-			var t2 = year2 + '-' + month2 + '-' + day2;
451
-			return t2;
452
-		},
453
-	getNextMonth:
454
-		/**
455
-		 * 获取下一个月
456
-		 *
457
-		 * @date 格式为yyyy-mm-dd的日期,如:2014-01-25
458
-		 */
459
-		function(date) {
460
-			var arr = date.split('-');
461
-			var year = arr[0]; //获取当前日期的年份
462
-			var month = arr[1]; //获取当前日期的月份
463
-			var day = arr[2]; //获取当前日期的日
464
-			var days = new Date(year, month, 0);
465
-			days = days.getDate(); //获取当前日期中的月的天数
466
-			var year2 = year;
467
-			var month2 = parseInt(month) + 1;
468
-			if(month2 == 13) {
469
-				year2 = parseInt(year2) + 1;
470
-				month2 = 1;
471
-			}
472
-			var day2 = day;
473
-			var days2 = new Date(year2, month2, 0);
474
-			days2 = days2.getDate();
475
-			if(day2 > days2) {
476
-				day2 = days2;
477
-			}
478
-			if(month2 < 10) {
479
-				month2 = '0' + month2;
480
-			}
481
-
482
-			var t2 = year2 + '-' + month2 + '-' + day2;
483
-			return t2;
484
-		},
485
-	getNowDate: function() {
486
-		var NowDate;
487
-		var myDate = new Date();
488
-		var YY = myDate.getFullYear(); //获取完整的年份(4位,1970-????)    
489
-		var MM = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)    
490
-		var DD = myDate.getDate(); //获取当前日(1-31)
491
-		MM = MM < 10 ? '0' + MM : MM;
492
-		DD = DD < 10 ? '0' + DD : DD;
493
-
494
-		//      myDate.getDay();         //获取当前星期X(0-6,0代表星期天)    
495
-		//		myDate.getYear();       //获取当前年份(2位)    
496
-		//      myDate.getTime();       //获取当前时间(从1970.1.1开始的毫秒数)    
497
-		//      myDate.getHours();       //获取当前小时数(0-23)    
498
-		//      myDate.getMinutes();     //获取当前分钟数(0-59)    
499
-		//      myDate.getSeconds();     //获取当前秒数(0-59)    
500
-		//      myDate.getMilliseconds();   //获取当前毫秒数(0-999)    
501
-		//      myDate.toLocaleDateString();     //获取当前日期    
502
-		//      var mytime = myDate.toLocaleTimeString();     //获取当前时间    
503
-		//      myDate.toLocaleString();       //获取日期与时间    
504
-		NowDate = YY + "-" + MM + "-" + DD;
505
-		return NowDate;
506
-	},
507
-
508
-	getFirstDayInCurrentMonth: function() {
509
-		var NowDate;
510
-		var myDate = new Date();
511
-		myDate.getYear(); //获取当前年份(2位)    
512
-		var YY = myDate.getFullYear(); //获取完整的年份(4位,1970-????)    
513
-		var MM = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)    
514
-		var DD = myDate.getDate(); //获取当前日(1-31)    
515
-		NowDate = YY + "-" + MM + "-1";
516
-
517
-		return NowDate;
518
-	},
519
-	getFormatTime: function(longTime) {
520
-		var time = parseFloat(longTime);
521
-		if(time != null && time != "") {
522
-			if(time < 60) {
523
-				var s = time;
524
-				time = s + '秒';
525
-			} else if(time > 60 && time < 3600) {
526
-				var m = parseInt(time / 60);
527
-				var s = parseInt(time % 60);
528
-				time = m + "分钟" + s + "秒";
529
-			} else if(time >= 3600 && time < 86400) {
530
-				var h = parseInt(time / 3600);
531
-				var m = parseInt(time % 3600 / 60);
532
-				var s = parseInt(time % 3600 % 60 % 60);
533
-				time = h + "小时" + m + "分钟" + s + "秒";
534
-			} else if(time >= 86400) {
535
-				var d = parseInt(time / 86400);
536
-				var h = parseInt(time % 86400 / 3600);
537
-				var m = parseInt(time % 86400 % 3600 / 60);
538
-				var s = parseInt(time % 86400 % 3600 % 60 % 60);
539
-				time = d + '天' + h + "小时" + m + "分钟" + s + "秒";
540
-			}
541
-		}
542
-		return time;
543
-	}
544
-
545
-};
546
-
547
-helper.stateFormat = {
548
-	//格式化 回复状态
549
-	formatterIsReply: function(val) {
550
-		var stateStr = '';
551
-		switch (val) { //是否回复(0未回复 1已回复)
552
-			case 0:
553
-				stateStr = '未回复';
554
-				break;
555
-			case 1:
556
-				stateStr = '已回复';
557
-				break;
558
-		}
559
-		return stateStr;
560
-	}
561
-}
562
-
563
-helper.string = {
564
-	stringbuilder: function() {
565
-		this.arr = new Array();
566
-		this.append = function(str) {
567
-			this.arr.push(str);
568
-		};
569
-		this.tostring = function() {
570
-			return this.arr.join('');
571
-		};
572
-	}
573
-};
574
-helper.init = {
575
-	setajax: function(isload) { /// 配置AJAX
576
-		$(document).on("ajaxStart", function() {
577
-			if(isload) {
578
-				//加载框显示
579
-				//              layer.load(2);
580
-			}
581
-		}).on("ajaxSuccess", function(e, jqXHR, s, data) {
582
-			try {
583
-				if(s.type == "POST") {
584
-					if(typeof(data) != 'object') {
585
-						data = $.parseJSON(data);
586
-					}
587
-				}
588
-				if(s.type == "GET") {
589
-					data = data
590
-				}
591
-				if(data.state.toLowerCase() == "notoken") {
592
-					mui.confirm(data.message, 'notoken', ['确定']);
593
-					top.window.location.href = "/login.html";
594
-					return;
595
-				}
596
-				if(data.state.toLowerCase() == "redirect") {
597
-					top.window.location.href = data.data;
598
-					return;
599
-				}
600
-				if(data.state.toLowerCase() == "unauthorized") {
601
-					mui.confirm(data.message, 'unauthorized', ['确定']);
602
-				}
603
-				if(data.state.toLowerCase() == "error") {
604
-					mui.confirm(data.message, 'ERROR', ['确定']);
605
-				}
606
-			} catch(e) {
607
-				if(isload) {
608
-					//加载框消失
609
-					//                  layer.closeAll('loading');
610
-				}
611
-			}
612
-		}).on("ajaxStop", function() {
613
-			if(isload) {
614
-				//加载框消失
615
-				//layer.closeAll('loading');
616
-			}
617
-		})
618
-	}
619
-}
620
-
621
-helper.init.setajax(1);

File diff suppressed because it is too large
+ 0 - 9227
WebUI/CallCenterWeb.UI/callout/weChatVideo/js/jquery-1.8.js


+ 0 - 229
WebUI/CallCenterWeb.UI/callout/weChatVideo/js/jquery.md5.js

@@ -1,229 +0,0 @@
1
-	/**
2
-	 * jQuery MD5 hash algorithm function
3
-	 * 
4
-	 * 	<code>
5
-	 * 		Calculate the md5 hash of a String 
6
-	 * 		String $.md5 ( String str )
7
-	 * 	</code>
8
-	 * 
9
-	 * Calculates the MD5 hash of str using the » RSA Data Security, Inc. MD5 Message-Digest Algorithm, and returns that hash. 
10
-	 * MD5 (Message-Digest algorithm 5) is a widely-used cryptographic hash function with a 128-bit hash value. MD5 has been employed in a wide variety of security applications, and is also commonly used to check the integrity of data. The generated hash is also non-reversable. Data cannot be retrieved from the message digest, the digest uniquely identifies the data.
11
-	 * MD5 was developed by Professor Ronald L. Rivest in 1994. Its 128 bit (16 byte) message digest makes it a faster implementation than SHA-1.
12
-	 * This script is used to process a variable length message into a fixed-length output of 128 bits using the MD5 algorithm. It is fully compatible with UTF-8 encoding. It is very useful when u want to transfer encrypted passwords over the internet. If you plan using UTF-8 encoding in your project don't forget to set the page encoding to UTF-8 (Content-Type meta tag). 
13
-	 * This function orginally get from the WebToolkit and rewrite for using as the jQuery plugin.
14
-	 * 
15
-	 * Example
16
-	 * 	Code
17
-	 * 		<code>
18
-	 * 			$.md5("I'm Persian."); 
19
-	 * 		</code>
20
-	 * 	Result
21
-	 * 		<code>
22
-	 * 			"b8c901d0f02223f9761016cfff9d68df"
23
-	 * 		</code>
24
-	 * 
25
-	 * @alias Muhammad Hussein Fattahizadeh < muhammad [AT] semnanweb [DOT] com >
26
-	 * @link http://www.semnanweb.com/jquery-plugin/md5.html
27
-	 * @see http://www.webtoolkit.info/
28
-	 * @license http://www.gnu.org/licenses/gpl.html [GNU General Public License]
29
-	 * @param {jQuery} {md5:function(string))
30
-	 * @return string
31
-	 */
32
-	
33
-	(function($){
34
-		
35
-		var rotateLeft = function(lValue, iShiftBits) {
36
-			return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
37
-		}
38
-		
39
-		var addUnsigned = function(lX, lY) {
40
-			var lX4, lY4, lX8, lY8, lResult;
41
-			lX8 = (lX & 0x80000000);
42
-			lY8 = (lY & 0x80000000);
43
-			lX4 = (lX & 0x40000000);
44
-			lY4 = (lY & 0x40000000);
45
-			lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
46
-			if (lX4 & lY4) return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
47
-			if (lX4 | lY4) {
48
-				if (lResult & 0x40000000) return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
49
-				else return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
50
-			} else {
51
-				return (lResult ^ lX8 ^ lY8);
52
-			}
53
-		}
54
-		
55
-		var F = function(x, y, z) {
56
-			return (x & y) | ((~ x) & z);
57
-		}
58
-		
59
-		var G = function(x, y, z) {
60
-			return (x & z) | (y & (~ z));
61
-		}
62
-		
63
-		var H = function(x, y, z) {
64
-			return (x ^ y ^ z);
65
-		}
66
-		
67
-		var I = function(x, y, z) {
68
-			return (y ^ (x | (~ z)));
69
-		}
70
-		
71
-		var FF = function(a, b, c, d, x, s, ac) {
72
-			a = addUnsigned(a, addUnsigned(addUnsigned(F(b, c, d), x), ac));
73
-			return addUnsigned(rotateLeft(a, s), b);
74
-		};
75
-		
76
-		var GG = function(a, b, c, d, x, s, ac) {
77
-			a = addUnsigned(a, addUnsigned(addUnsigned(G(b, c, d), x), ac));
78
-			return addUnsigned(rotateLeft(a, s), b);
79
-		};
80
-		
81
-		var HH = function(a, b, c, d, x, s, ac) {
82
-			a = addUnsigned(a, addUnsigned(addUnsigned(H(b, c, d), x), ac));
83
-			return addUnsigned(rotateLeft(a, s), b);
84
-		};
85
-		
86
-		var II = function(a, b, c, d, x, s, ac) {
87
-			a = addUnsigned(a, addUnsigned(addUnsigned(I(b, c, d), x), ac));
88
-			return addUnsigned(rotateLeft(a, s), b);
89
-		};
90
-		
91
-		var convertToWordArray = function(string) {
92
-			var lWordCount;
93
-			var lMessageLength = string.length;
94
-			var lNumberOfWordsTempOne = lMessageLength + 8;
95
-			var lNumberOfWordsTempTwo = (lNumberOfWordsTempOne - (lNumberOfWordsTempOne % 64)) / 64;
96
-			var lNumberOfWords = (lNumberOfWordsTempTwo + 1) * 16;
97
-			var lWordArray = Array(lNumberOfWords - 1);
98
-			var lBytePosition = 0;
99
-			var lByteCount = 0;
100
-			while (lByteCount < lMessageLength) {
101
-				lWordCount = (lByteCount - (lByteCount % 4)) / 4;
102
-				lBytePosition = (lByteCount % 4) * 8;
103
-				lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
104
-				lByteCount++;
105
-			}
106
-			lWordCount = (lByteCount - (lByteCount % 4)) / 4;
107
-			lBytePosition = (lByteCount % 4) * 8;
108
-			lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
109
-			lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
110
-			lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
111
-			return lWordArray;
112
-		};
113
-		
114
-		var wordToHex = function(lValue) {
115
-			var WordToHexValue = "", WordToHexValueTemp = "", lByte, lCount;
116
-			for (lCount = 0; lCount <= 3; lCount++) {
117
-				lByte = (lValue >>> (lCount * 8)) & 255;
118
-				WordToHexValueTemp = "0" + lByte.toString(16);
119
-				WordToHexValue = WordToHexValue + WordToHexValueTemp.substr(WordToHexValueTemp.length - 2, 2);
120
-			}
121
-			return WordToHexValue;
122
-		};
123
-		
124
-		var uTF8Encode = function(string) {
125
-			string = string.replace(/\x0d\x0a/g, "\x0a");
126
-			var output = "";
127
-			for (var n = 0; n < string.length; n++) {
128
-				var c = string.charCodeAt(n);
129
-				if (c < 128) {
130
-					output += String.fromCharCode(c);
131
-				} else if ((c > 127) && (c < 2048)) {
132
-					output += String.fromCharCode((c >> 6) | 192);
133
-					output += String.fromCharCode((c & 63) | 128);
134
-				} else {
135
-					output += String.fromCharCode((c >> 12) | 224);
136
-					output += String.fromCharCode(((c >> 6) & 63) | 128);
137
-					output += String.fromCharCode((c & 63) | 128);
138
-				}
139
-			}
140
-			return output;
141
-		};
142
-		
143
-		$.extend({
144
-			md5: function(string) {
145
-				var x = Array();
146
-				var k, AA, BB, CC, DD, a, b, c, d;
147
-				var S11=7, S12=12, S13=17, S14=22;
148
-				var S21=5, S22=9 , S23=14, S24=20;
149
-				var S31=4, S32=11, S33=16, S34=23;
150
-				var S41=6, S42=10, S43=15, S44=21;
151
-				string = uTF8Encode(string);
152
-				x = convertToWordArray(string);
153
-				a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
154
-				for (k = 0; k < x.length; k += 16) {
155
-					AA = a; BB = b; CC = c; DD = d;
156
-					a = FF(a, b, c, d, x[k+0],  S11, 0xD76AA478);
157
-					d = FF(d, a, b, c, x[k+1],  S12, 0xE8C7B756);
158
-					c = FF(c, d, a, b, x[k+2],  S13, 0x242070DB);
159
-					b = FF(b, c, d, a, x[k+3],  S14, 0xC1BDCEEE);
160
-					a = FF(a, b, c, d, x[k+4],  S11, 0xF57C0FAF);
161
-					d = FF(d, a, b, c, x[k+5],  S12, 0x4787C62A);
162
-					c = FF(c, d, a, b, x[k+6],  S13, 0xA8304613);
163
-					b = FF(b, c, d, a, x[k+7],  S14, 0xFD469501);
164
-					a = FF(a, b, c, d, x[k+8],  S11, 0x698098D8);
165
-					d = FF(d, a, b, c, x[k+9],  S12, 0x8B44F7AF);
166
-					c = FF(c, d, a, b, x[k+10], S13, 0xFFFF5BB1);
167
-					b = FF(b, c, d, a, x[k+11], S14, 0x895CD7BE);
168
-					a = FF(a, b, c, d, x[k+12], S11, 0x6B901122);
169
-					d = FF(d, a, b, c, x[k+13], S12, 0xFD987193);
170
-					c = FF(c, d, a, b, x[k+14], S13, 0xA679438E);
171
-					b = FF(b, c, d, a, x[k+15], S14, 0x49B40821);
172
-					a = GG(a, b, c, d, x[k+1],  S21, 0xF61E2562);
173
-					d = GG(d, a, b, c, x[k+6],  S22, 0xC040B340);
174
-					c = GG(c, d, a, b, x[k+11], S23, 0x265E5A51);
175
-					b = GG(b, c, d, a, x[k+0],  S24, 0xE9B6C7AA);
176
-					a = GG(a, b, c, d, x[k+5],  S21, 0xD62F105D);
177
-					d = GG(d, a, b, c, x[k+10], S22, 0x2441453);
178
-					c = GG(c, d, a, b, x[k+15], S23, 0xD8A1E681);
179
-					b = GG(b, c, d, a, x[k+4],  S24, 0xE7D3FBC8);
180
-					a = GG(a, b, c, d, x[k+9],  S21, 0x21E1CDE6);
181
-					d = GG(d, a, b, c, x[k+14], S22, 0xC33707D6);
182
-					c = GG(c, d, a, b, x[k+3],  S23, 0xF4D50D87);
183
-					b = GG(b, c, d, a, x[k+8],  S24, 0x455A14ED);
184
-					a = GG(a, b, c, d, x[k+13], S21, 0xA9E3E905);
185
-					d = GG(d, a, b, c, x[k+2],  S22, 0xFCEFA3F8);
186
-					c = GG(c, d, a, b, x[k+7],  S23, 0x676F02D9);
187
-					b = GG(b, c, d, a, x[k+12], S24, 0x8D2A4C8A);
188
-					a = HH(a, b, c, d, x[k+5],  S31, 0xFFFA3942);
189
-					d = HH(d, a, b, c, x[k+8],  S32, 0x8771F681);
190
-					c = HH(c, d, a, b, x[k+11], S33, 0x6D9D6122);
191
-					b = HH(b, c, d, a, x[k+14], S34, 0xFDE5380C);
192
-					a = HH(a, b, c, d, x[k+1],  S31, 0xA4BEEA44);
193
-					d = HH(d, a, b, c, x[k+4],  S32, 0x4BDECFA9);
194
-					c = HH(c, d, a, b, x[k+7],  S33, 0xF6BB4B60);
195
-					b = HH(b, c, d, a, x[k+10], S34, 0xBEBFBC70);
196
-					a = HH(a, b, c, d, x[k+13], S31, 0x289B7EC6);
197
-					d = HH(d, a, b, c, x[k+0],  S32, 0xEAA127FA);
198
-					c = HH(c, d, a, b, x[k+3],  S33, 0xD4EF3085);
199
-					b = HH(b, c, d, a, x[k+6],  S34, 0x4881D05);
200
-					a = HH(a, b, c, d, x[k+9],  S31, 0xD9D4D039);
201
-					d = HH(d, a, b, c, x[k+12], S32, 0xE6DB99E5);
202
-					c = HH(c, d, a, b, x[k+15], S33, 0x1FA27CF8);
203
-					b = HH(b, c, d, a, x[k+2],  S34, 0xC4AC5665);
204
-					a = II(a, b, c, d, x[k+0],  S41, 0xF4292244);
205
-					d = II(d, a, b, c, x[k+7],  S42, 0x432AFF97);
206
-					c = II(c, d, a, b, x[k+14], S43, 0xAB9423A7);
207
-					b = II(b, c, d, a, x[k+5],  S44, 0xFC93A039);
208
-					a = II(a, b, c, d, x[k+12], S41, 0x655B59C3);
209
-					d = II(d, a, b, c, x[k+3],  S42, 0x8F0CCC92);
210
-					c = II(c, d, a, b, x[k+10], S43, 0xFFEFF47D);
211
-					b = II(b, c, d, a, x[k+1],  S44, 0x85845DD1);
212
-					a = II(a, b, c, d, x[k+8],  S41, 0x6FA87E4F);
213
-					d = II(d, a, b, c, x[k+15], S42, 0xFE2CE6E0);
214
-					c = II(c, d, a, b, x[k+6],  S43, 0xA3014314);
215
-					b = II(b, c, d, a, x[k+13], S44, 0x4E0811A1);
216
-					a = II(a, b, c, d, x[k+4],  S41, 0xF7537E82);
217
-					d = II(d, a, b, c, x[k+11], S42, 0xBD3AF235);
218
-					c = II(c, d, a, b, x[k+2],  S43, 0x2AD7D2BB);
219
-					b = II(b, c, d, a, x[k+9],  S44, 0xEB86D391);
220
-					a = addUnsigned(a, AA);
221
-					b = addUnsigned(b, BB);
222
-					c = addUnsigned(c, CC);
223
-					d = addUnsigned(d, DD);
224
-				}
225
-				var tempValue = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);
226
-				return tempValue.toLowerCase();
227
-			}
228
-		});
229
-	})(jQuery);

File diff suppressed because it is too large
+ 0 - 26550
WebUI/CallCenterWeb.UI/callout/weChatVideo/js/jssip-3.0.13.js


+ 0 - 178
WebUI/CallCenterWeb.UI/callout/weChatVideo/js/main.js

@@ -1,178 +0,0 @@
1
- var ws, n = 0,
2
- 	RandomTimeData, callNum, extenNum,
3
- 	lockReconnect = false,
4
- 	readyStateBoole,
5
- 	obj = {},
6
- 	lasttime = new Date().getTime(),
7
- 	reconnecTion, recon, loginOr = false;
8
- var formatDateTime = function(date) {
9
-
10
- 	var date = new Date();
11
- 	var y = date.getFullYear().toString();
12
- 	var m = date.getMonth() + 1;
13
- 	m = m < 10 ? ('0' + m) : m;
14
- 	var d = date.getDate();
15
- 	d = d < 10 ? ('0' + d) : d;
16
-  console.log( y + m + d)
17
- 	return y + m + d
18
- 	// +' '+h+':'+minute+':'+second;
19
- };
20
- //创建scoket连接
21
- createWebSocket()
22
-
23
- function createWebSocket() {
24
-
25
- 	try {
26
- 		Connect();
27
- 	} catch(e) {
28
- 		reconnect();
29
- 	}
30
- }
31
-
32
- //连接
33
- //Connect();
34
- function Connect() {
35
- 	ws = new WebSocket("wss://" + huayi.config.socket_ip + ":" + huayi.config.socket_port);
36
-
37
- 	ws.onopen = function() {
38
- 		lockReconnect = false
39
- 		console.log(new Date() + "    " + "建立连接");
40
- 		console.log("wss://" + huayi.config.socket_ip + ":" + huayi.config.socket_port)
41
-
42
- 		// extenNum = "1020"
43
- 		// sip_uri_ = "sip:"+extenNum+"@"+huayi.config.socket_ip;
44
- 		// sip_password_ = "123456"
45
- 		// ws_uri_ = huayi.config.ws_uri_;    //wss://sip.800100.com.cn:7443  218.29.229.185:8011
46
- 		// testStart();
47
-
48
- 		//建立连接时获取分机号
49
- 		lasttime = new Date().getTime();
50
- 		//申请注册分机号
51
- 		if($(".superviseBtn").text() == "我是督办专员") {
52
- 			videoReqExten()
53
- 		}
54
-
55
- 	};
56
- 	//接收到消息的回调方法
57
- 	ws.onmessage = function(evt) {
58
- 		//拿到任何消息都说明当前连接是正常的
59
- 		var myDate = new Date();
60
- 		console.log(myDate + "  receive  " + evt.data);
61
- 		var data = JSON.parse(evt.data)[0];
62
- 		if(data) {
63
- 			var rlt = data.Result;
64
- 			if(rlt == true) {
65
- 				var type = data.Type;
66
- 				console.log(type)
67
- 				switch(type.toLowerCase()) {
68
- 					//请求注册分机
69
- 					case "videoreqexten":
70
- 						videoreqextenBack(data);
71
- 						break; //签入
72
- 					case "videoreqideagent":
73
- 						videoreqideagentBack(data);
74
- 						break;
75
- 					case "videodesexten":
76
- 						videodesextenBack(data);
77
- 						break;
78
- 				}
79
- 			} else {
80
- 				if(data.Type = "VideoReqIdeAgent") {
81
- 					$(".registStatus").text("当前无人在线,请稍后再拨")
82
- 					$(".registStatus").css("color", "red")
83
- 					console.log("data.Result返回为false")
84
- 				}
85
-
86
- 			}
87
- 		}
88
- 	};
89
- 	//连接关闭的回调方法
90
- 	ws.onclose = function(evt) {
91
- 		//nginx   proxy_read_timeout 6000s; 设置的默认关闭时间 
92
- 		reconnect();
93
- 	};
94
- 	//连接发生错误的回调方法
95
- 	ws.onerror = function(evt) {
96
-
97
- 		reconnect();
98
- 	};
99
- }
100
-
101
- //重连
102
- function reconnect() {
103
-
104
- 	if(lockReconnect) return;
105
- 	lockReconnect = true;
106
- 	//没连接上会一直重连,设置延迟避免请求过多
107
- 	setTimeout(function() {
108
- 		console.log(new Date() + "    " + "重连中……");
109
- 		createWebSocket("wss://" + huayi.config.socket_ip + ":" + huayi.config.socket_port);
110
- 	}, 2000);
111
- }
112
-
113
- //发送
114
- function Send() {
115
- 	console.log("ws.readyState==" + ws.readyState)
116
- 	console.log("ws.OPEN==" + ws.OPEN)
117
- 	readyStateBoole = false
118
-
119
- 	if(ws.readyState !== ws.OPEN) {
120
- 		readyStateBoole = true
121
- 		alert("页面停留时间过长,导致分机号被占用,请刷新页面后,重新使用")
122
- 		//reconnect();
123
- 	}
124
- 	if(ws.readyState == ws.OPEN) {
125
- 		console.log(new Date() + "  send  " + JSON.stringify(obj));
126
- 		ws.send(JSON.stringify(obj));
127
- 	}
128
- }
129
-
130
- function videoreqextenBack(data) {
131
- 	if($(".superviseBtn").text() == "我是督办专员") {
132
- 		extenNum = data.AgentExten
133
- 		console.log(extenNum)
134
- 		sip_uri_ = "sip:" + extenNum + "@" + huayi.config.sip_uri;
135
- 		sip_password_ = "123456";
136
- 		ws_uri_ = huayi.config.ws_uri_; //wss://sip.800100.com.cn:7443  218.29.229.185:8011
137
- 		testStart();
138
- 	} else if($(".superviseBtn").text() == "我是市民") {
139
- 		obj.Type = "VideoReqIdeAgent";
140
- 		obj.AgentID = lasttime.toString();
141
- 		obj.AgentExten = "111";
142
- 		Send();
143
- 	}
144
-
145
- }
146
-
147
- function videodesextenBack(data) {
148
- 	console.log($(".superviseBtn").text())
149
- }
150
-
151
- function videoreqideagentBack(data) {
152
- 	callNum = data.AgentExten;
153
- 	videoCall();
154
- }
155
-
156
- //申请注册分机号
157
- function videoReqExten() {
158
- 	obj.Type = "VideoReqExten";
159
- 	obj.AgentID = lasttime.toString();
160
- 	obj.AgentExten = "111";
161
- 	RandomTimeData = obj.AgentID;
162
- 	Send();
163
- }
164
-
165
- function extenBind() {
166
-
167
- 	var telPhone = /^[1][3,4,5,6,7,8,9][0-9]{9}$/;
168
- 	if(!telPhone.test($("#telephone").val())) {
169
- 		$(".registStatus").text("手机号格式不正确");
170
- 		$(".registStatus").css("color", "red")
171
- 	} else {
172
- 		obj.Type = "VideoReqIdeAgent";
173
- 		obj.AgentID = lasttime.toString();
174
- 		obj.AgentExten = "111";
175
- 		Send();
176
- 	}
177
-
178
- }

+ 0 - 538
WebUI/CallCenterWeb.UI/callout/weChatVideo/js/mobileSip.js

@@ -1,538 +0,0 @@
1
-var outgoingSession = null,incomingSession = null,currentSession = null,calState,nativeStream =null,callVideoState = null, callVideoFail = null;
2
-var myVideoView = document.getElementById('myVideo'); //我的本地视频
3
-var yourVideoView = document.getElementById('yourVideo'); //对方视频信息
4
-var getWidthScale = document.documentElement.clientWidth;
5
-var bigVideoStyle = {"background-color":"#000000","width":"100%","height":"100%","top":"0","right":"0","z-index":"1"}
6
-var smallVideoStyle = {"background-color":"#EEEEEE","width":"20%","height":"20%","top":"10px","right":"10px","z-index":"2"}
7
-var localStream = null,userAgent = null,superviseMan =null,videoInputDevices = [],currentVideoIndex = 0,isswitch = 0;
8
-$(function(){
9
-  
10
-  $(".videoYour video").css({
11
-    "width":getWidthScale*2.7+"px",
12
-    "margin-left":-getWidthScale*2.7/2+"px"
13
-  })
14
-  
15
-  $(".videoMy video").css({
16
-    "width":getWidthScale*1.5*0.2+"px",
17
-    "margin-left":-getWidthScale*1.5*0.2/2+"px"
18
-  })
19
-  
20
-  $(this).attr("index","1")
21
-  $(".videoMy").removeAttr("index")
22
-  mediumInfo() //获取摄像头信息
23
-})
24
-
25
-//切换摄像头
26
-function shotCut(){
27
-  if (currentVideoIndex == 1) {
28
-    currentVideoIndex = 0;
29
-  } else {
30
-    currentVideoIndex = 1;
31
-  };
32
-  
33
-  try {
34
-    isswitch = 1;
35
-		//muteSession
36
-    var ls = muteSession.connection.getLocalStreams()[0];
37
-    ls.getTracks().forEach(function(track) {
38
-			if(track.kind=='video'){
39
-				track.stop();
40
-			}
41
-    });
42
-    //currentSession.connection.removeStream(ls);
43
-    navigator.getUserMedia({
44
-      audio: false,
45
-      video: {
46
-        deviceId: {
47
-          exact: videoInputDevices[currentVideoIndex].deviceId
48
-        }
49
-      },
50
-    }, function(stream) {
51
-      //currentSession.connection.addStream(stream);
52
-      //const tracks = stream.getTracks();
53
-			const tracks = stream.getVideoTracks()[0];
54
-      // currentSession.connection.getSenders()
55
-      //   .forEach(sender => {
56
-      //     const newTrack = tracks.find(track => track.kind === sender.track.kind)
57
-      //     sender.replaceTrack(newTrack)
58
-      //   })    	
59
-    	var sender=muteSession.connection.getSenders().find(function(s){return s.track.kind==tracks.kind;});
60
-    	sender.replaceTrack(tracks);
61
-    	myVideoView.srcObject = stream;
62
-      
63
-    }, function(e) {
64
-      alert('getUserMedia() error3: ' + JSON.stringify(e));
65
-    });
66
-  
67
-  } catch (e) {
68
-    alert(JSON.stringify(e));
69
-  }
70
-}
71
-
72
-function mediumInfo(){
73
-  navigator.mediaDevices.enumerateDevices()
74
-    .then(gotDevices).catch(handleError);
75
-  
76
-  function gotDevices(deviceInfos) {
77
-    //alert(JSON.stringify(deviceInfos));
78
-    deviceInfos.forEach(function(n) {
79
-      if (n.kind === 'videoinput') {
80
-        videoInputDevices.push(n);
81
-      }
82
-    })
83
-  }
84
-  function handleError(error) {
85
-    //alert(JSON.stringify(error));
86
-  }
87
-}
88
-
89
-//注册成功事件
90
-function registered(){
91
-  
92
-  $(".registStatus").show()
93
-  if($(".superviseBtn").text()=="我是市民"){
94
-    $(".registStatus").text("登录成功")
95
-    $(".loginbtn").hide();
96
-    $(".videoCall").show();
97
-  } else if($(".superviseBtn").text()=="我是督办专员"){
98
-    $(".registStatus").text("连接成功")
99
-    $("#account").val(extenNum)
100
-  }   
101
-  
102
-}
103
-
104
-//电话呼入事件
105
-function newRTCSession(){ 
106
-  
107
-  $(".mui-content").hide();
108
-  $(".callHtml").show();
109
-  $(".answerIcon").show();
110
-  captureLocalMediaVideo();
111
-  localMediaStream()  
112
-}
113
-
114
-//确认呼叫后触发
115
-function confirmed(){
116
-  $(".dropIcon").show()
117
-  $(".answerIcon").hide()
118
-}
119
-
120
-//peerconnection 媒体传输事件
121
-function peerconnection(){
122
-  $(".videoYour").show();
123
-  $(".customerImg").show();
124
-  $(".rightImg").hide();
125
-}
126
-
127
-$(".videoYour").click(function(){
128
- 
129
-	if(!$(this).attr("index")){
130
-		$(this).css(bigVideoStyle)
131
-    
132
-		$(".videoYour video").css({
133
-      "width":getWidthScale*2.7+"px",
134
-      "margin-left":-getWidthScale*2.7/2+"px"
135
-    })
136
-    
137
-		$(".videoMy").css(smallVideoStyle)
138
-    
139
-		$(".videoMy video").css({
140
-		  "width":getWidthScale*1.5*0.2+"px",
141
-      "margin-left":-getWidthScale*1.5*0.2/2+"px"
142
-		})
143
-    
144
-		$(this).attr("index","1")
145
-		$(".videoMy").removeAttr("index")
146
-	}
147
-	
148
-})
149
-
150
-$(".videoMy").click(function(){
151
-  
152
-	if(!$(this).attr("index")){
153
-		$(this).css(bigVideoStyle)
154
-    $(".videoMy video").css({
155
-      "width":getWidthScale*1.5+"px",
156
-      "margin-left":-getWidthScale*1.5/2+"px"
157
-    })
158
-    
159
-		$(".videoYour").css(smallVideoStyle)
160
-    $(".videoYour video").css({
161
-      "width":getWidthScale*2.7*0.2+"px",
162
-      "margin-left":-getWidthScale*2.7*0.2/2+"px"
163
-    })
164
-    
165
-		$(this).attr("index","1")
166
-		$(".videoYour").removeAttr("index")
167
-	}
168
-	
169
-})
170
-
171
-//视频呼叫
172
-$(".videoCall").click(function(){
173
-  callVideoState = true ;
174
-  callVideoFail = true;
175
-  
176
-  calState = $(this).attr("data-attr");
177
-  
178
-  captureLocalMediaVideo();
179
-  localMediaStream() 
180
-  //videoCall()
181
-})
182
-//静音
183
-$(".muteBtn").click(function(){
184
-  console.log(muteSession.isMuted())
185
-  muteSession.mute(
186
-    {
187
-      'audio': true,   // Local audio is muted
188
-    }
189
-  )
190
-  $(".muteBtn").hide();
191
-  $(".unMuteBtn").show();
192
-})
193
-//取消静音
194
-$(".unMuteBtn").click(function(){
195
-  console.log(muteSession.isMuted())
196
-  muteSession.unmute(
197
-    {
198
-      'audio': true,   // Local audio is muted
199
-    }
200
-  )
201
-  $(".muteBtn").show();
202
-  $(".unMuteBtn").hide();
203
-})
204
-//关闭摄像头
205
-$(".cameraBtn").click(function(){
206
-  console.log(muteSession.isMuted())
207
-  muteSession.mute(
208
-    {
209
-      'video': true,   // Local audio is muted
210
-    }
211
-  )
212
-  $(".cameraBtn").hide();
213
-  $(".unCameraBtn").show();
214
-})
215
-//取消关闭摄像头
216
-$(".unCameraBtn").click(function(){
217
-  console.log(muteSession.isMuted())
218
-  muteSession.unmute(
219
-    {
220
-      'video': true,   // Local audio is muted
221
-    }
222
-  )
223
-  $(".cameraBtn").show();
224
-  $(".unCameraBtn").hide();
225
-})
226
-
227
-function videoCall(){
228
-  $(".mui-content").hide();
229
-  $(".callHtml").show();
230
-  console.log(calState)
231
-  //var sip_phone_number_ = $("#callIuput").val().toString();
232
-	var sip_phone_number_ = callNum.toString();
233
-	
234
-  console.log(sip_phone_number_)
235
-  var options = {
236
-    'eventHandlers': eventHandlers,
237
-    'mediaConstraints': { 
238
-      'audio': true, 
239
-      'video': {
240
-        'width': 320,
241
-        'height': 240 
242
-      }       
243
-
244
-      },
245
-    'mediaStream': localStream
246
-  };
247
-  callVideoState = false ;
248
-  dbCallVideoState = false;
249
-  outgoingSession = userAgent.call(sip_phone_number_, options);
250
-}
251
-//接听
252
-function answerCall() {
253
-	console.log(incomingSession)
254
-	if (incomingSession) {
255
-		incomingSession.answer({
256
-			'mediaConstraints': {
257
-				'audio': true,
258
-				'video': {
259
-				  'width': 320,
260
-				  'height': 240 
261
-				} 
262
-			},
263
-			'mediaStream': localStream
264
-		});
265
-		incomingSession = null;
266
-	}
267
-}
268
-//挂断
269
-function hangupCall() {
270
-  console.log('挂断----------->');
271
-	if ($(".superviseBtn").text()=="我是督办专员") {
272
-		obj={};
273
-		obj.Type = "VideoDesExten";
274
-		obj.AgentID = RandomTimeData;
275
-		obj.AgentExten = extenNum.toString()
276
-		Send(); /*2018-05-19zhangshaungnan注释*/	
277
-		$(".registStatus").html("已注销")
278
-	} else if($(".superviseBtn").text()=="我是市民"){
279
-		window.location.href="superviseMan.html?extenNum="+$("#account").val()+"&telephone="+$("#telephone").val()
280
-	}
281
-  closeMediaVideo();  //我的媒体信息
282
-  $(".mui-content").show();
283
-  $(".callHtml").hide();
284
- 
285
-  console.log(extenNum)
286
-  // music.pause();
287
-  userAgent.terminateSessions();
288
-  
289
-}
290
- //注销
291
-function unReg() {
292
-	closeMediaVideo();
293
-	if(!superviseMan){
294
-		console.log('注销----------->');
295
-		userAgent.unregister(true);
296
-		$(".registStatus").html("已注销")
297
-	} else {
298
-		
299
-		window.location.href="superviseMan.html?extenNum="+$("#account").val()+"&telephone="+$("#telephone").val()
300
-		
301
-	}
302
-   
303
-   $(".mui-content").show();
304
-   $(".callHtml").hide();
305
-   $(".dropIcon").hide()
306
-   $(".answerIcon").hide()
307
-}
308
-
309
-//开启本地摄像头
310
-function captureLocalMediaVideo() {
311
-  
312
-  navigator.getUserMedia({
313
-    video: {
314
-      deviceId: {
315
-        exact: videoInputDevices[currentVideoIndex].deviceId
316
-      }
317
-    },
318
-    audio: false
319
-  }, function(stream) {
320
-    nativeStream = stream;
321
-    myVideoView.srcObject = stream;
322
-  }, function(e) {
323
-    alert('getUserMedia() error: ' + e.name);
324
-  });
325
-}
326
-
327
-//获取本地媒体流
328
-function localMediaStream() {
329
-	navigator.getUserMedia({
330
-	  video: {
331
-	    deviceId: {
332
-	      exact: videoInputDevices[currentVideoIndex].deviceId
333
-	    }
334
-	  },
335
-	  audio: true
336
-	}, function(stream) {
337
-    localStream = stream;
338
-    if(callVideoState){extenBind()}
339
-	  if(dbCallVideoState){videoReqExten()}
340
-	 
341
-	}, function(e) {
342
-	  alert('getUserMedia() error: ' + e.name);
343
-	});
344
-}
345
-// 关闭摄像头
346
-function closeMediaVideo() {
347
-	//console.log("1213")
348
-  
349
-  if(nativeStream){
350
-    nativeStream.getTracks().forEach(function(track) {
351
-      track.stop();
352
-    });
353
-  }
354
-  if(localStream){
355
-    localStream.getTracks().forEach(function(track) {
356
-      track.stop();
357
-    });
358
-  }
359
-  
360
-}
361
-
362
-
363
-//testStart()
364
-function testStart() {
365
-	
366
-  console.info("get input info: sip_uri = ", sip_uri_, " sip_password = ", sip_password_, " ws_uri = ", ws_uri_);
367
-  var socket = new JsSIP.WebSocketInterface(ws_uri_);
368
-  
369
-  var configuration = {
370
-    sockets: [socket],
371
-    outbound_proxy_set: ws_uri_,
372
-    uri: sip_uri_, //与用户代理关联的SIP URI(字符串)。这是您的提供商提供给您的SIP地址
373
-    password: sip_password_, //SIP身份验证密码
374
-	  contact_uri: 'sip:1007@'+returnCitySN["cip"]+';transport=ws', 
375
-		//stun_servers: "stun1.l.google.com:19302",
376
-    register: true, //指示启动时JsSIP用户代理是否应自动注册
377
-    session_timers: false //启用会话计时器(根据RFC 4028)
378
-  };
379
-  
380
-  userAgent = new JsSIP.UA(configuration);
381
-	//JsSIP.debug.enable('JsSIP:*');
382
-  JsSIP.debug.disable('JsSIP:*');
383
-  //成功注册成功,data:Response JsSIP.IncomingResponse收到的SIP 2XX响应的实例
384
-  userAgent.on('registered', function(data) {
385
-    console.info("registered: ", data.response.status_code, ",", data.response.reason_phrase);
386
-    registered();
387
-  });
388
-  
389
-  //由于注册失败而被解雇,data:Response JsSIP.IncomingResponse接收到的SIP否定响应的实例,如果失败是由这样的响应的接收产生的,否则为空
390
-  userAgent.on('registrationFailed', function(data) {  });
391
-
392
-  //1.在注册到期之前发射几秒钟。如果应用程序没有为这个事件设置任何监听器,JsSIP将像往常一样重新注册。
393
-  // 2.如果应用程序订阅了这个事件,它负责ua.register()在registrationExpiring事件中调用(否则注册将过期)。
394
-  // 3.此事件使应用程序有机会在重新注册之前执行异步操作。对于那些在REGISTER请求中的自定义SIP头中使用外部获得的“令牌”的环境很有用。
395
-  userAgent.on('registrationExpiring', function() {
396
-    //==console.warn("registrationExpiring");
397
-  });
398
-  
399
-	//每次传输连接尝试均触发。
400
-	userAgent.on('connecting ',function(data){
401
-		console.log('每次传输连接尝试均触发6666'+data);
402
-	})
403
-  
404
-	//建立传输连接时触发。
405
-	userAgent.on('connected ',function(data){
406
-		console.log('建立传输连接时触发666'+data);
407
-	})
408
-  
409
-	//当传输连接尝试(或自动重新尝试)失败时触发。。
410
-	userAgent.on('disconnected ',function(data){
411
-		console.log('当传输连接尝试(或自动重新尝试)失败时触发。666'+data);
412
-	})
413
-  
414
-  //为传入或传出会话/呼叫激发。data:
415
-  //     originator:'remote',新消息由远程对等方生成;'local',新消息由本地用户生成。
416
-  //      session:JsSIP.RTCSession 实例。
417
-  //      request:JsSIP.IncomingRequest收到的MESSAGE请求的实例;JsSIP.OutgoingRequest传出MESSAGE请求的实例
418
-  userAgent.on('newRTCSession', function(data) {
419
-		muteSession = data.session
420
-		console.log(muteSession)
421
-    console.info('onNewRTCSession: ', data);
422
-    var originator = data.originator;
423
-    var session = data.session;
424
-    var request = data.request;
425
-    if (data.originator == 'remote') { //incoming call
426
-      console.log("电话呼入--1");
427
-      console.info("incomingSession, answer the call");
428
-      incomingSession = data.session;
429
-      newRTCSession();
430
-      //console.info("incomingSession, answer the call");
431
-      //回答传入会话。此方法仅适用于传入会话。
432
-    } else {
433
-      //console.info("outgoingSession");
434
-      outgoingSession = data.session;
435
-      outgoingSession.on('connecting', function(data) {
436
-        //console.info('onConnecting - ', data.request);
437
-        currentSession = outgoingSession;
438
-        outgoingSession = null;
439
-      });
440
-    }
441
-    //接受呼叫时激发
442
-    data.session.on('accepted', function(data) {
443
-    	console.info("onAccepted-----接受呼叫时激发");
444
-    	//console.info('onAccepted - ', data);
445
-    	if (data.originator == 'remote' && currentSession == null) {
446
-    		currentSession = incomingSession;
447
-    		incomingSession = null;
448
-    		//console.info("setCurrentSession - ", currentSession);
449
-    	}
450
-    });
451
-    //确认呼叫后激发
452
-    data.session.on('confirmed', function(data) {
453
-    	console.info("confirmed-----确认呼叫后激发");
454
-    	//console.info('onConfirmed - ', data);
455
-      $(".leftText").html("通话中");     
456
-      console.log(data)
457
-      confirmed();
458
-    	if (data.originator == 'remote' && currentSession == null) {
459
-    		currentSession = incomingSession;
460
-    		incomingSession = null;
461
-        
462
-    		//console.info("setCurrentSession - ", currentSession);
463
-    	}
464
-      
465
-    });
466
-    //在将远程SDP传递到RTC引擎之前以及在发送本地SDP之前激发。此事件提供了修改传入和传出SDP的机制。
467
-    data.session.on('sdp', function(data) {
468
-    	console.info("sdp-----在将远程SDP传递到RTC引擎之前以及在发送本地SDP之前激发");
469
-    });
470
-    //接收或生成对邀请请求的1XX SIP类响应(>100)时激发。该事件在SDP处理之前触发(如果存在),以便在需要时对其进行微调,甚至通过删除数据对象中响应参数的主体来删除它
471
-    data.session.on('progress', function(data) {
472
-    	console.info("progress-----接收或生成对邀请请求的1XX SIP类响应(>100)时激发。该事件在SDP处理之前触发");
473
-    	//console.info('onProgress - ', data);
474
-    	if (data.originator == 'remote') {}
475
-    });
476
-    data.session.on('addstream', function(data) {
477
-    	console.info("addstream-----接收或生成对邀请请求的1XX SIP类响应(>100)时激发。该事件在SDP处理之前触发");
478
-      yourVideoView.srcObject = data.stream;
479
-    });
480
-    
481
-    //创建基础RTCPeerConnection后激发。应用程序有机会通过在peerconnection上添加RTCDataChannel或设置相应的事件侦听器来更改peerconnection。
482
-    data.session.on('peerconnection', function(data) {
483
-    	console.info('onPeerconnection ----创建基础RTCPeerConnection后激发 ');
484
-			// peerConnection.removeStream(peerConnection.getLocalStreams()[0]); 
485
-			// peerConnection.addLocalStream(stream); 
486
-      // pc.getSenders()[1].replaceTrack(videoTracks[0]);
487
-      console.log(data.peerconnection.getSenders())
488
-      data.peerconnection.onaddstream = function(ev) {
489
-        //console.info('onaddstream from remote - ', ev);  onaddtrack  onaddstream
490
-				//music.pause();
491
-        peerconnection()
492
-        callVideoFail = false
493
-        console.log(ev.stream);
494
-        yourVideoView.srcObject = ev.stream;
495
-        
496
-      };
497
-    });
498
-  });
499
-  //为传入或传出消息请求激发。data:
500
-  userAgent.on('newMessage', function(data) {
501
-    if (data.originator == 'local') {
502
-      //console.info('onNewMessage , OutgoingRequest - ', data.request);
503
-    } else {
504
-      //console.info('onNewMessage , IncomingRequest - ', data.request);
505
-    }
506
-  });
507
-  console.info("call register");
508
-  //连接到信令服务器,并恢复以前的状态,如果以前停止。重新开始时,如果UA配置中的参数设置为register:true,则向SIP域注册。	
509
-  userAgent.start();
510
-}
511
-
512
-// Register callbacks to desired call events
513
-var eventHandlers = {
514
-  'progress': function(e) {
515
-    console.log('call is in progress');
516
-		//music.play(); 
517
-  },
518
-  'failed': function(e) {
519
-    if(callVideoFail){
520
-      setTimeout(function(){videoCall()},2000)
521
-    }
522
-    console.log('call failed: ', e);
523
-  },
524
-  'ended': function(e) {
525
-    console.log('call ended : ', e);		
526
-		unReg();
527
-  },
528
-  'confirmed': function(e) {
529
-    console.log('call confirmed');
530
-  }
531
-};
532
-
533
-
534
-
535
-
536
-
537
-
538
-

File diff suppressed because it is too large
+ 0 - 11
WebUI/CallCenterWeb.UI/callout/weChatVideo/js/mui.min.js


+ 0 - 76
WebUI/CallCenterWeb.UI/callout/weChatVideo/js/superviseMan.js

@@ -1,76 +0,0 @@
1
-var formatDateTime = function (date) {
2
-   
3
-     var date = new Date();
4
-     var y = date.getFullYear();
5
-     var m = date.getMonth() + 1;
6
-     m = m < 10 ? ('0' + m) : m;
7
-     var d = date.getDate();
8
-     d = d < 10 ? ('0' + d) : d;
9
-     return y + m + d
10
-     // +' '+h+':'+minute+':'+second;
11
- };
12
- var extenNum = helper.request.queryString("extenNum");
13
- var telephone = helper.request.queryString("telephone");
14
- var dbCallVideoState = null;
15
-$(function(){
16
-	if($(".superviseBtn").text()=="我是市民"){
17
-	    
18
-	    $(".registStatus").html('点击下方登录按钮');
19
-	    $(".loginbtn").show();
20
-	    $(".videoCall").hide();
21
-	    
22
-	    
23
-	  }
24
-})
25
-$(".superviseVideoCall").click(function(){
26
-    dbCallVideoState =true;
27
-    captureLocalMediaVideo()
28
-    localMediaStream();
29
-		//videoReqExten()
30
-	
31
-})
32
-if(extenNum){
33
-	$("#account").val(extenNum)
34
-	$("#telephone").val(telephone)
35
-	loginSuper()
36
-	
37
-}
38
-		
39
-	
40
-function loginSuper(){
41
-	$(".registStatus").show()
42
-	superviseMan = true;
43
-	if (!extenNum) {
44
-	  $(".registStatus").html('请输入账号');
45
-	}  else if(extenNum>1010||extenNum<1005){
46
-	  $(".registStatus").html('账号不正确');
47
-	}else{
48
-	  
49
-		  var telPhone = /^[1][3,4,5,6,7,8,9][0-9]{9}$/;
50
-		  if (!telPhone.test($("#telephone").val())) {
51
-		    $(".registStatus").text("手机号格式不正确");
52
-		    
53
-		  } else {
54
-        
55
-		    $(".registStatus").text("登录成功");
56
-		    $(".loginbtn").hide()
57
-		    $(".superviseVideoCall").show()
58
-		    sip_uri_ = "sip:"+$("#account").val()+"@"+huayi.config.socket_ip;
59
-		    sip_password_ = "123456";
60
-		    ws_uri_ = huayi.config.ws_uri_;    //wss://sip.800100.com.cn:7443  218.29.229.185:8011
61
-		    testStart();
62
-		    
63
-		  }
64
-		  
65
-		
66
-	  
67
-	}
68
-}
69
-$(".loginbtn").click(function(){
70
-  extenNum = $("#account").val();
71
-	loginSuper()
72
-	// setTimeout(function(){
73
-	// 	window.location.href="superviseMan.html?extenNum="+$("#account").val()+"&telephone="+$("#telephone").val()
74
-	// },2000)
75
-	
76
-})

+ 0 - 116
WebUI/CallCenterWeb.UI/callout/weChatVideo/superviseMan.html

@@ -1,116 +0,0 @@
1
-<!DOCTYPE html>
2
-<html>
3
-
4
-  <head>
5
-    <meta charset="UTF-8">
6
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
-   <!-- <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> -->
8
-    <meta name="viewport"
9
-      content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no,minimal-ui">
10
-    <meta name="Author" content="foruok" />
11
-    <meta name="description" content="JsSIP based example web application." />
12
-    <link href="css/mui.min.css" rel="stylesheet" />
13
-    <link href="css/iconfont.css" rel="stylesheet" />
14
-
15
-    <script src="https://pv.sohu.com/cityjson?ie=utf-8"></script>
16
-    <link rel="stylesheet" type="text/css" href="css/mobileMeeting.css" />
17
-    <title>微信页</title>
18
-  </head>
19
-  <body style="height: 100%; background: #000000;">
20
-    <div class="mui-content mui-input-group">
21
-
22
-      <div class="mui-logo-box">
23
-        <div class="img-box2">
24
-          <img src="img/logo_banner.png" alt="" />
25
-        </div>
26
-      </div>
27
-      
28
-      <div class="mui-input-row">
29
-        <label><span class="mui-icon iconfont icon-yonghu"></span></label>
30
-        <input id="account" value="" type="number" class="mui-input-clear mui-input accountNum"
31
-          placeholder="请输入账号">
32
-      </div>
33
-      
34
-      <div class="mui-input-row">
35
-        <label><span class="mui-icon iconfont icon-yonghu"></span></label>
36
-        <input id="telephone" value="" type="number" class="mui-input-clear mui-input" placeholder="请输入手机号">
37
-      </div>
38
-
39
-      <div class="registStatus" style="margin-top: 20px;"></div>
40
-
41
-      <div class="btnStyle">
42
-      	<div class="mui-content-padded">
43
-      		<button data-attr="0" class="mui-btn mui-btn-block mui-btn-warning loginbtn">督办专员登录</button>
44
-      	</div>
45
-      </div>
46
-      <div class="btnStyle">
47
-        <div class="mui-content-padded" style="margin-top: 30px;">
48
-          <button style="display: none;" data-attr="1" class="mui-btn mui-btn-block mui-btn-warning superviseVideoCall">视频呼叫1</button>
49
-        </div>
50
-      </div>
51
-      
52
-      <div class="reminderText">
53
-        (正在内部测试中,有需要请直接电话拨打12345 )
54
-      </div>
55
-      <a href="index.html" class="aTextStyle superviseBtn" style="margin-top: 10px;">我是市民</a>
56
-     <!-- <a class="aTextStyle" style="margin-top: 30px;"
57
-        href="https://webrtc.github.io/samples/src/content/devices/input-output/">打开测试链接 </a> </br></br>
58
-      <a style="width: 100%; text-align: center; display: block;" href="index4.html">打开测试链 </a> </br></br> -->
59
-    </div>
60
-
61
-    <!-- 呼叫界面 -->
62
-    <div class="callHtml">
63
-      
64
-      <div class="customerImg">
65
-        <div class="leftText">连接中...</div>
66
-        <!-- <div class="rightImg"><img src="img/customer.png"></div> -->
67
-      </div>
68
-      
69
-			<div class="voiceBox muteBtn" style="display: block;">
70
-			  <img src="img/muteIcon.png">
71
-			</div>
72
-			<div class="voiceBox unMuteBtn">
73
-			  <img src="img/unMute.png">
74
-			</div>
75
-			
76
-			<div class="videoCutBtn shotCut" onclick="shotCut()">
77
-			  <img src="img/shotCut.png">
78
-			</div>
79
-			
80
-      <div class="buttonDiv">
81
-        <div onclick="hangupCall()" class="dropIcon" style="display: none;"><img src="img/dropCall.png"></div>
82
-        <div onclick="answerCall()" class="answerIcon" style="display: none;"><img src="img/answerCall.png"></div>
83
-      </div>
84
-
85
-      <div class="showView">
86
-        <div class="videoYour">
87
-          <video id="yourVideo" autoplay></video>
88
-        </div>
89
-        <div class="videoMy">
90
-          <video id="myVideo" autoplay></video>
91
-        </div>
92
-      </div>
93
-
94
-      <audio controls="controls" loop id="music_bg">
95
-        <source src="img/incoming.mp3" type="audio/ogg" />
96
-      </audio>
97
-
98
-    </div>
99
-
100
-  </body>
101
-</html>
102
-
103
-
104
-<script src="js/jquery-1.8.js"></script>
105
-<script src="js/jssip-3.0.13.js"></script>
106
-<script src="js/jquery.md5.js"></script>
107
-<script src="js/huayi.config.js"></script>
108
-<script src="js/huayi.http.js"></script>
109
-<script src="js/mobileSip.js"></script>
110
-<script src="./js/superviseMan.js"></script>
111
-<script src="js/main.js"></script>
112
-
113
-
114
-<script>
115
-  
116
-</script>

+ 41 - 16
WebUI/CallCenterWeb.UI/calloutNew/js/pcSip备份.js

@@ -51,34 +51,59 @@ function resScreen() {
51 51
 //开启本地摄像头
52 52
 function captureLocalMediaVideo() {
53 53
 	
54
-	navigator.getUserMedia({
54
+//	navigator.mediaDevices.getUserMedia({
55
+//		video: true,
56
+//		audio: false
57
+//	}, function(stream) {
58
+//		nativeStream = stream;
59
+//		myVideoView.srcObject = stream;
60
+//	}, function(e) {
61
+//		if(e.name != "NotReadableError") {
62
+//			alert('getUserMedia() error: ' + e.name);
63
+//		}
64
+//
65
+//	});
66
+	navigator.mediaDevices.getUserMedia({
55 67
 		video: true,
56 68
 		audio: false
57
-	}, function(stream) {
69
+	}).then((stream) => {
58 70
 		nativeStream = stream;
59
-		myVideoView.srcObject = stream;
60
-	}, function(e) {
61
-		if(e.name != "NotReadableError") {
62
-			alert('getUserMedia() error: ' + e.name);
71
+		myVideoView.srcObject = nativeStream;
72
+		myVideoView.onloadedmetadata = function() {
73
+			if(nativeStream.active) { //在这里需要做判断
74
+				myVideoView.play();
75
+			}
63 76
 		}
64
-
65
-	});
77
+	}).catch((res) => {
78
+		alert('getUserMedia() error2: ' + res.name);
79
+	})
66 80
 }
67 81
 //获取本地媒体流
68 82
 function localMediaStream() {
69
-	navigator.getUserMedia({
83
+//	navigator.getUserMedia({
84
+//		video: true,
85
+//		audio: true
86
+//	}, function(stream) {
87
+//		localStream = stream;
88
+//		if(callVideoState) {
89
+//			sipCallVideo();
90
+//		}
91
+//	}, function(e) {
92
+//		if(e.name != "NotReadableError") {
93
+//			alert('getUserMedia() error: ' + e.name);
94
+//		}
95
+//	});
96
+	navigator.mediaDevices.getUserMedia({
70 97
 		video: true,
71 98
 		audio: true
72
-	}, function(stream) {
99
+	}).then((stream) => {
73 100
 		localStream = stream;
74 101
 		if(callVideoState) {
75 102
 			sipCallVideo();
76 103
 		}
77
-	}, function(e) {
78
-		if(e.name != "NotReadableError") {
79
-			alert('getUserMedia() error: ' + e.name);
80
-		}
81
-	});
104
+	}).catch((res) => {
105
+		alert('getUserMedia() error2: ' + res.name);
106
+	})
82 107
 }
83 108
 // 关闭摄像头
84 109
 function closeMediaVideo() {
@@ -258,7 +283,7 @@ function sipCallRTCSession(e, state) {
258 283
 				videoView_1.srcObject = remoteStream
259 284
 				videoView_1.onloadedmetadata = function() {
260 285
 					videoView_1.play();
261
-					videoView_1.muted = true;
286
+					videoView_1.muted = false;
262 287
 					state === 1 ? console.log("呼叫成功") : console.log("接听成功")
263 288
 					$(".callStyle").text("通话中");
264 289
 					$(".videoCall").show();

+ 3 - 2
WebUI/CallCenterWeb.UI/calloutNew/weChatVideo/index.html

@@ -70,6 +70,7 @@
70 70
         (正在内部测试中,有需要请直接电话拨打12345 )
71 71
       </div>
72 72
       <a href="acceptingMan.html" class="aTextStyle superviseBtn" style="margin-top: 10px;">我是督办专员</a>
73
+      <a href="ceshi.html" class="aTextStyle " style="margin-top: 10px;">测试摄像头</a>
73 74
     </div>
74 75
 		
75 76
 		<div class="internetSpeed">
@@ -77,7 +78,7 @@
77 78
       <div class="receiverSpeedVideo">黑屏重置按钮</div>
78 79
     </div>
79 80
     <!-- 呼叫界面 -->
80
-    <div class="callHtml">
81
+    <div class="callHtml" >
81 82
            
82 83
       <div class="customerImg">
83 84
         <div class="leftText"></div>
@@ -111,7 +112,7 @@
111 112
           <video id="yourVideo" autoplay></video>
112 113
         </div>
113 114
         <div class="videoMy">
114
-          <video id="myVideo" autoplay></video>
115
+          <video id="myVideo"  autoplay="true" playsinline></video>
115 116
         </div>
116 117
       </div>
117 118
       

+ 1 - 3
WebUI/CallCenterWeb.UI/calloutNew/weChatVideo/js/mobileSip.js

@@ -282,7 +282,6 @@ $(".videoCall").click(function() {
282 282
 		alert("话机已注销,如有需要请重新进入")
283 283
 		return
284 284
 	}
285
-
286 285
 	callVideoState = true;
287 286
 	callVideoFail = true;
288 287
 	calState = $(this).attr("data-attr");
@@ -440,7 +439,6 @@ function captureLocalMediaVideo() {
440 439
 
441 440
 //获取本地媒体流
442 441
 function localMediaStream() {
443
-
444 442
 	navigator.mediaDevices.getUserMedia({
445 443
 		video: {
446 444
 			deviceId: videoInputDevices[currentVideoIndex].deviceId
@@ -519,7 +517,7 @@ function sipCallRTCSession(e, state) {
519 517
 			yourVideoView.srcObject = remoteStream  
520 518
 			yourVideoView.onloadedmetadata = function() {
521 519
 			  yourVideoView.play();
522
-				yourVideoView.muted = true;
520
+				yourVideoView.muted = false;
523 521
 				state===1?console.log("呼叫成功"):console.log("接听成功")
524 522
 			}
525 523
 		}

+ 4 - 1
WebUI/CallCenterWeb.UI/calloutNew/weChatVideo/js/superviseMan.js

@@ -38,7 +38,10 @@ $(".superviseVideoCall").click(function(){
38 38
 if(extenNum){
39 39
 	$("#account").val(extenNum)
40 40
 	$("#telephone").val(telephone)
41
-	loginSuper()
41
+	setTimeout(function(){
42
+		loginSuper()
43
+	},2000)
44
+	
42 45
 	
43 46
 }
44 47
 		

+ 6 - 1
WebUI/CallCenterWeb.UI/js/index.js

@@ -256,7 +256,7 @@ $(document).ready(function() {
256 256
 				$(".settingTelephone").val(result.data.user.F_Telephone);
257 257
 				if(result.data.user.F_SeatFlag) {
258 258
 					Connect();
259
-					connectVoice(1); //创建连接 
259
+					
260 260
 					if($.cookie("code") == "spdbzy") {
261 261
 						layer.open({
262 262
 							type: 2,
@@ -266,6 +266,8 @@ $(document).ready(function() {
266 266
 							offset: "rb",
267 267
 							area: ["22%", "65%"], //宽高
268 268
 						});
269
+					}else{
270
+						connectVoice(1); //创建连接 
269 271
 					}
270 272
 					//CreateWebSockets();
271 273
 					//$(".open_chat").show();
@@ -2587,6 +2589,9 @@ function GetDicValueList() {
2587 2589
 //点击来电类型
2588 2590
 var dicTypeid = 46; //默认是 已受理
2589 2591
 $(document).on("click", "#dicValueList li label", function() {
2592
+	if($.cookie("code")==="spdbzy"){
2593
+		return
2594
+	}
2590 2595
 	if(!$(this).hasClass("checkedDept")) {
2591 2596
 		var $that = $(this);
2592 2597
 		if($(".hidCallID").val()) {