瀏覽代碼

多页签

d123 7 年之前
父節點
當前提交
d1c23447bd

+ 1 - 1
CallCenterWeb.UI/Script/Common/huayi.config.js

@@ -4,7 +4,7 @@
4 4
 huayi.config = {
5 5
     
6 6
     //callcenter_url: "http://localhost:56997/",//测试环境
7
-    callcenter_url: "http://192.168.4.18:4604/",//测试环境
7
+    callcenter_url: "http://192.168.4.18:4603/",//测试环境
8 8
     socket_ip: "192.168.5.7",//ip
9 9
     socket_port: "8081",//端口
10 10
     menuworktime: 30000,//菜单工单数量刷新间隔

File diff suppressed because it is too large
+ 1260 - 0
CallCenterWeb.UI/callScreen/call.js


+ 762 - 0
CallCenterWeb.UI/callScreen/callScreen.html

@@ -0,0 +1,762 @@
1
+<!DOCTYPE html>
2
+<html>
3
+
4
+	<head>
5
+		<meta charset="UTF-8">
6
+		<title>来电弹屏</title>
7
+		<script src="../Script/Common/huayi.load.js"></script>
8
+		<script src="../Script/Common/huayi.config.js"></script>
9
+		<link href="./../css/plugins/jasny/jasny-bootstrap.min.css" rel="stylesheet">
10
+		<link href="./../js/bootstrap-select/css/bootstrap-select.css" rel="stylesheet" />
11
+		<link rel="stylesheet" href="./../js/zTree/zTreeStyle.css" />
12
+		<link rel="stylesheet" href="./css/call.css" />
13
+		<link rel="stylesheet" href="./css/select.css" />
14
+		<style>
15
+			body,
16
+			html,
17
+			.wrapper {
18
+				height: 100%;
19
+			}
20
+			
21
+			.ldtp-con {
22
+				display: block;
23
+			}
24
+			
25
+			.minBacha {
26
+				position: absolute;
27
+				top: 0;
28
+				right: 80px;
29
+				z-index: 10;
30
+				overflow: hidden;
31
+			}
32
+			
33
+			.minBacha>div {
34
+				float: left;
35
+				height: 35px;
36
+				width: 35px;
37
+				margin-left: 2px;
38
+			}
39
+			
40
+			.minBacha>div a {
41
+				display: block;
42
+				height: 100%;
43
+				width: 100%;
44
+				text-align: center;
45
+				background-position: center center;
46
+				background-color: #2f4050;
47
+				opacity: .5;
48
+			}
49
+			
50
+			.minBacha>div a:hover {
51
+				opacity: 1;
52
+			}
53
+			
54
+			.minClosed>a {
55
+				background: url("./../img/min.png") no-repeat;
56
+			}
57
+			
58
+			.Bacha>a {
59
+				background: url("./../img/gb.png") no-repeat;
60
+			}
61
+			
62
+			.lblcount {
63
+				position: absolute;
64
+				right: 5px;
65
+				top: 7px;
66
+			}
67
+			
68
+			.first {
69
+				z-index: 1000;
70
+			}
71
+			
72
+			.khzl {
73
+				font-size: 12px;
74
+				border: 0;
75
+				margin: 35px auto;
76
+				color: #fff;
77
+			}
78
+			
79
+			.khzl tr {
80
+				border: 0;
81
+			}
82
+			
83
+			.khzl th {
84
+				padding: 5px 8px 5px 0;
85
+				text-align: right;
86
+				width: 40%;
87
+				font-weight: normal;
88
+				border: 0;
89
+			}
90
+			
91
+			.khzl tbody>tr>td,
92
+			.khzl tbody>tr>th {
93
+				border: 0;
94
+			}
95
+			
96
+			.khzl tbody>tr>td input {
97
+				border: 0;
98
+				outline: none;
99
+				background: #243747;
100
+				padding-left: 5px;
101
+				width: 100%;
102
+			}
103
+			
104
+			.khbtn {
105
+				/*background: #97a0a8;*/
106
+				color: #1ab394;
107
+				font-size: 14px;
108
+				vertical-align: middle;
109
+			}
110
+			
111
+			.hei-list {
112
+				width: 400px;
113
+				margin: 0 auto;
114
+			}
115
+			
116
+			.heiTop {
117
+				height: 35px;
118
+				background: #1ab394;
119
+				color: #fff;
120
+				line-height: 35px;
121
+				padding: 0 15px;
122
+				border-top-left-radius: 3px;
123
+				border-top-right-radius: 3px;
124
+			}
125
+			
126
+			.heiTop .htl {
127
+				float: left;
128
+				margin: 0;
129
+			}
130
+			
131
+			.heiTop .bacha {
132
+				float: right;
133
+				font-size: 18px;
134
+				cursor: pointer;
135
+				margin: 0;
136
+			}
137
+			
138
+			.heiCon {
139
+				width: 100%;
140
+				background: #fff;
141
+				text-align: center;
142
+				padding: 25px 15px;
143
+				height: auto;
144
+				overflow-y: auto;
145
+				border: 1px solid #eee;
146
+			}
147
+			
148
+			#time-word {
149
+				border: 1px solid #1ab394;
150
+				padding: 5px 0 5px 10px;
151
+				width: 120px;
152
+				outline: none;
153
+				color: #000;
154
+			}
155
+			
156
+			.chooses {
157
+				margin-top: 10px;
158
+			}
159
+			
160
+			.btns {
161
+				background: #1ab394;
162
+				color: #fff;
163
+				padding: 3px 10px;
164
+				outline: none;
165
+				font-size: 12px;
166
+				margin-left: 15px;
167
+				border: 0;
168
+				border-radius: 3px;
169
+				box-sizing: border-box;
170
+			}
171
+			
172
+			.bianji {
173
+				display: inline-block;
174
+				height: 16px;
175
+				width: 16px;
176
+				vertical-align: middle;
177
+				margin-right: 5px;
178
+			}
179
+			
180
+			.bianji.edi {
181
+				background: url(./../img/xgai.png) no-repeat;
182
+			}
183
+			
184
+			.bianji.sav {
185
+				background: url(./../img/bbc.png) no-repeat;
186
+			}
187
+			
188
+			.bianji.canc {
189
+				background: url(./../img/quxi.png) no-repeat;
190
+			}
191
+			
192
+			.t-shade {
193
+				position: fixed;
194
+				top: 0;
195
+				left: 0;
196
+				width: 100%;
197
+				height: 100%;
198
+				background: rgba(0, 0, 0, 0.48);
199
+				z-index: 10004;
200
+				display: none;
201
+			}
202
+			
203
+			.shade_k {
204
+				z-index: 10005;
205
+				width: 40%;
206
+				margin: 10% auto;
207
+				background-color: #fff;
208
+				box-shadow: 1px 1px 50px rgba(0, 0, 0, .3);
209
+				border-radius: 5px;
210
+			}
211
+			
212
+			.shade_title {
213
+				padding: 0 80px 0 20px;
214
+				height: 42px;
215
+				line-height: 42px;
216
+				border-bottom: 1px solid #eee;
217
+				font-size: 16px;
218
+				color: #FFFFFF;
219
+				overflow: hidden;
220
+				background-color: rgb(26, 179, 148);
221
+				border-radius: 2px 2px 0 0;
222
+				position: relative;
223
+			}
224
+			
225
+			.setwin {
226
+				position: absolute;
227
+				right: 15px;
228
+				top: 5px;
229
+				font-size: 20px;
230
+				line-height: initial;
231
+			}
232
+			
233
+			.setwin a {
234
+				font-size: 20px;
235
+				color: #fff;
236
+			}
237
+			
238
+			.shade_content {
239
+				overflow-y: auto;
240
+				position: relative;
241
+				padding-bottom: 50px;
242
+				padding: 10px;
243
+			}
244
+			
245
+			.ldcr-bottom .detail-con ul li .active a {
246
+				color: #f95a83 !important;
247
+			}
248
+			
249
+			.ldcr-bottom .detail-con ul li .active+.explancon {
250
+				display: block !important;
251
+			}
252
+			
253
+			.searchbtn {
254
+				width: 2.5em;
255
+				height: 24px;
256
+				border-radius: 5px;
257
+				position: absolute;
258
+				background-color: #e43926;
259
+				background-image: url(./../img/searIcon.png);
260
+				background-repeat: no-repeat;
261
+				background-position: center center;
262
+				cursor: pointer;
263
+			}
264
+			
265
+			#menuContent {
266
+				background: #fff;
267
+				position: absolute;
268
+				width: 100%;
269
+				border: 1px solid darkgrey;
270
+				right: 0;
271
+				top: 21px;
272
+				z-index: 10;
273
+				/*				display: none;*/
274
+				overflow-y: auto;
275
+			}
276
+			
277
+			#organizer {
278
+				height: 25px;
279
+				width: 128px;
280
+				display: inline-block;
281
+				position: relative;
282
+			}
283
+			
284
+			#treeDemo li {
285
+				width: 100%;
286
+			}
287
+			
288
+			.bootstrap-select>.dropdown-toggle.bs-placeholder {
289
+				background-color: #ffffff!important;
290
+				border-color: #e5e6e7!important;
291
+			}
292
+			
293
+			.filter-option {
294
+				color: #676b6d;
295
+			}
296
+			
297
+			.bootstrap-select>.dropdown-toggle.btn-default {
298
+				background-color: #ffffff!important;
299
+				border-color: #e5e6e7!important;
300
+				color: #555;
301
+			}
302
+			
303
+			#fkdep_market {
304
+				display: nones;
305
+			}
306
+			
307
+			
308
+			
309
+			.testInput-list li {
310
+				padding: 5px;
311
+			}
312
+			
313
+			.testInput-list li:hover {
314
+				background-color: #E43926;
315
+				color: #fff;
316
+			}
317
+			
318
+			#testInput_
319
+			{
320
+				width: 100%;
321
+				outline: none;
322
+				border: 1px solid #ccc;
323
+				padding-left: 10px;
324
+				outline-color: #fff;
325
+			}
326
+			#SCorderlist {
327
+				display: none;
328
+			}
329
+			#orderlist{
330
+				display: none;
331
+			}
332
+			.testInput-list {
333
+				position: absolute;
334
+				z-index: 999;
335
+				border: 1px solid rgb(204, 204, 204);
336
+				background: #fff;
337
+				z-index: 99999;
338
+				padding-left: 0;
339
+				width: 89.6%;
340
+				display: none;
341
+				color: #000000;
342
+				
343
+			}
344
+			
345
+			.testInput-list li {
346
+				padding: 5px;
347
+			}
348
+			
349
+			.testInput-list li:hover {
350
+				background-color: #E43926;
351
+				color: #fff;
352
+			}
353
+			#testInput1,#testInput2{
354
+				outline:none;
355
+				padding-left: 10px;
356
+				outline-color :#fff;
357
+				
358
+			}
359
+			.testInput2-list{
360
+				    overflow-x: hidden;
361
+   			 height: 159px;
362
+   				 overflow-y: auto;
363
+			}
364
+		</style>		
365
+	</head>
366
+
367
+	<body class="gray-bg">
368
+		<div class="wrapper wrapper-content animated fadeInRight">
369
+			<!--来电弹屏开始-->
370
+			<div class="ldtp-con clearfix animated fadeInDown ">
371
+				 <div class="minBacha clearfix">
372
+            <div class="Bacha">
373
+                <a href="javaScript:;" title="关闭"></a>
374
+            </div>
375
+        </div>
376
+				<div class="hei-list">
377
+					<div class="heiTop clearFix">
378
+						<p class="htl">黑名单</p>
379
+						<p class="bacha" title="关闭">x</p>
380
+					</div>
381
+					<div class="heiCon">
382
+						<div class="heit">
383
+							<span style="font-size: 14px;">输入拉黑时长:</span>
384
+							<input type="text" id="time-word" />
385
+						</div>
386
+						<div class="chooses">
387
+
388
+							<label class="radio-inline">
389
+                        <input type="radio" name="time" value="1" checked="checked" style="margin-top: 3px;"> 天
390
+                    </label>
391
+							<label class="radio-inline">
392
+                        <input type="radio" name="time" value="2" style="margin-top: 3px;" />时
393
+                    </label>
394
+							<label class="radio-inline">
395
+                        <input type="radio" name="time" value="3" style="margin-top: 3px;" />分
396
+                    </label>
397
+							<label class="radio-inline">
398
+                        <input type="radio" name="time" value="4" style="margin-top: 3px;" />永久
399
+                    </label>
400
+
401
+						</div>
402
+						<p style="margin-top: 15px;"><button id="bc" class="btns">保存</button></p>
403
+					</div>
404
+
405
+				</div>
406
+				<!--左侧内容-->
407
+				<div class="ldtp-cl col-sm-3">
408
+					<div class="head-pic">
409
+						<div class="hp-box">
410
+							<img src="./../img/txpic.png" alt="头像好像去了外星球!" style="width: 100%;height: 100%;" />
411
+							<input type="hidden" class="hidTel" value="" />
412
+							<input type="hidden" class="hidCallID" />
413
+							<input type="hidden" class="hidActionID" />
414
+						</div>
415
+						<ul>
416
+							<li><span style="font-size: 25px;" class="tel"></span></li>
417
+							<li><span style="font-size: 15px;" class="khgsd"></span></li>
418
+							<!--<li class="nikeName"><i></i><span class="ldname">未知</span><i></i></li>-->
419
+							<li style="color: #4cd964;">当前通话时长:<span class="thsc">00:00</span></li>
420
+							<li class="lahei">
421
+								<div class="la-before"><i class="push"></i> 移至黑名单</div>
422
+								<div class="la-after" style="display: none;">
423
+									<p class="la-time">拉黑时间:<span>2017/05/13</span></p>
424
+									<p class="la-shichang">拉黑截止时间:<span class="blackTime"></span></p>
425
+								</div>
426
+								<div class="retur" style="display: none;"><i class="qxlh"></i> 取消黑名单</div>
427
+							</li>
428
+							<li class="td-call clearfix" style="display:none;">
429
+								<a class="take" style="float:none;" href="javascript:;"><i></i></a>
430
+								<!--<a class="drop" href="javascript:;"><i></i></a>-->
431
+							</li>
432
+						</ul>
433
+					</div>
434
+					<!--<ul class="come-detail">
435
+                <li>姓名:<span class="ldname">未知</span></li>
436
+                <li>归属地:<span class="ldlocation">未知</span></li>
437
+                <li>联系电话1:<span class="ldtel1"></span></li>
438
+                <li>联系电话2:<span class="ldtel2"></span></li>
439
+                <li>联系电话3:<span class="ldtel3"></span></li>
440
+                <li>售后负责人:<span>孙嘉一</span></li>
441
+                <li>来电时间:<span class="ldtime"></span></li>
442
+            </ul>-->
443
+					<table class="table khzl">
444
+						<tr>
445
+							<th>姓名:</th>
446
+							<td>
447
+								<input type="text" value="" class="ldname khmc" /><input type="hidden" value="" id="khid" />
448
+							</td>
449
+						</tr>
450
+						<tr>
451
+							<th>省份:</th>
452
+							<td style="position: relative">
453
+								<!--<input type="text" value="未知" class="ldlocation" style="padding-left: 5px;" />-->
454
+								<!--<span class="ldlocation" style="padding-left: 5px;">未知</span>-->
455
+								<input id="testInput2" type="text" style="width:100%;" value="" style="display: none;"  />
456
+								<ul class="testInput-list testInput2-list">
457
+									<li></li>
458
+								</ul>
459
+							</td>
460
+						</tr>
461
+						<tr>
462
+							<th>联系电话:</th>
463
+							<td><input type="text" value="" class="ldtel1" /></td>
464
+							<input type="hidden" id="fkdep"/>
465
+						</tr>
466
+						<tr>
467
+							<th>来电单位:</th>
468
+							<td  style="position: relative;">
469
+								<input type="text" value="" class="ldpamter" />
470
+								<input id="testInput1" type="text" style="width:100%;" value="" style="display: none;" />
471
+								<ul class="testInput-list">
472
+									<li></li>
473
+								</ul>
474
+							</td>
475
+						</tr>
476
+						<tr>
477
+							<th>来电时间:</th>
478
+							<td><span class="ldtime" style="padding-left: 5px;"></span></td>
479
+						</tr>
480
+						<tr>
481
+							<td></td>
482
+							<td><span class="edit"><i class="bianji edi"></i><a class="khbtn">编辑</a></span><span class="save"> <i class="bianji sav"></i><a class="khbtn">保存</a></span><span class="cancel"><i class="bianji canc"></i><a class="khbtn">取消</a></span></td>
483
+						</tr>
484
+					</table>
485
+				</div>
486
+				<!--右侧内容-->
487
+				<div class="ldtp-cr col-sm-9">
488
+					<ul class="ld-service clearfix">
489
+						<li style="border-bottom:1px solid #243747;" itemtype="0" class="cr-click">历史记录</li>
490
+						<li style="border-bottom:1px solid #69cbd0;display: none;" itemtype="1" class="KF">客服组</li>
491
+						<li style="border-bottom:1px solid #243747;display: none;" itemtype="3" class="SC">市场组</li>
492
+					</ul>
493
+					<div class="ld-sercon">
494
+						<div class="complain" style="display:block;">
495
+							<div class="ld-sercon-con clearfix">
496
+								<div class="Ps-chaxun">
497
+									<span>查询: <input type="text" id="old_startTime" class="laydate-icon" />&nbsp;——&nbsp;<input type="text" id="old_endTime" class="laydate-icon" /></span>
498
+
499
+									<span class="searchbtn"></span>
500
+								</div>
501
+								<div class="table-responsive col-sm-12 tbold" style="padding-left: 0;">
502
+									<table id="oldlist" data-row-style="rowStyle" data-query-params="queryParams" data-pagination="true">
503
+										<thead>
504
+											<tr>
505
+												<th data-field="CallNumber">电话号码</th>
506
+												<th data-field="CallState" data-formatter="GetCallState">呼叫状态</th>
507
+												<!--<th data-field="IsDeal" data-formatter="GetDealState">是否处理</th>-->
508
+												<th data-field="UserCode">坐席工号</th>
509
+												<th data-field="UserName">坐席姓名</th>
510
+												<th data-field="BeginTime">开始时间</th>
511
+												<th data-field="TalkStartTime">通话开始时间</th>
512
+												<th data-field="TalkEndTime">通话结束时间</th>
513
+												<th data-field="TalkLongTime">通话时长(s)</th>
514
+												<th data-field="FilePath" data-formatter="setCode">录音</th>
515
+											</tr>
516
+										</thead>
517
+										<tbody class="list"></tbody>
518
+									</table>
519
+								</div>
520
+							</div>
521
+
522
+						</div>
523
+						<div class="complain" style="display:none;">
524
+							<div class="ld-sercon-con clearfix">
525
+								<div class="Ps-chaxun">
526
+									<span>查询: <input type="text" id="con_startTime" class="laydate-icon" />&nbsp;——&nbsp;<input type="text" id="con_endTime" class="laydate-icon" /></span>
527
+
528
+									<span class="searchbtn"></span>
529
+									<span class="addjl g" style="margin-left:5em;">新增工单</span>
530
+								</div>
531
+								<div id="zxlbs" class="table-responsive col-sm-12 tbold" style="padding-left: 0;">
532
+
533
+									<table id="orderlist" data-row-style="rowStyle" data-query-params="queryParams" data-pagination="true">
534
+										<thead>
535
+											<tr>
536
+												<th data-field="WorkOrderID">工单编号</th>
537
+												<th data-field="State" data-formatter="GetStateName">工单状态</th>
538
+												<th data-field="Address" data-align="center">来电单位</th>
539
+												<th data-field="Source" data-align="center">反馈单位</th>
540
+												<th data-field="TypeClassName" data-align="center">工单类型</th>
541
+												<th data-field="Customer" data-align="center">姓名</th>
542
+												<th data-field="CustomerTel" data-align="center">客户电话</th>
543
+												<th data-field="CreateTime" data-align="center">创建时间</th>
544
+												<th data-field="Detail" data-align="center" data-formatter="Detail">反馈内容及处理结果</th>
545
+												<th data-field="Files" data-align="center" data-formatter="Detail">快递信息</th>
546
+												<th data-field="County" data-align="center" data-formatter="Detail">备注一</th>
547
+												<th data-field="Province" data-align="center" data-formatter="Detail">备注二</th>
548
+												<th data-field="City" data-align="center" data-formatter="Detail">备注三</th>
549
+											</tr>
550
+										</thead>
551
+										<tbody class="list"></tbody>
552
+									</table>
553
+									<table id="SCorderlist" data-row-style="rowStyle" data-query-params="queryParams" data-pagination="true">
554
+										<thead>
555
+											<tr>
556
+												<th data-field="WorkOrderID">工单编号</th>
557
+												<th data-field="State" data-formatter="GetStateName">工单状态</th>
558
+												<th data-field="Address" data-align="center">来电单位</th>
559
+												<th data-field="Source" data-align="center">反馈单位</th>
560
+												<th data-field="TypeClassName" data-align="center">工单类型</th>
561
+												<th data-field="Customer" data-align="center">姓名</th>
562
+												<th data-field="CustomerTel" data-align="center">客户电话</th>
563
+												<th data-field="Detail" data-align="center" data-formatter="Detail">反馈内容</th>
564
+												
565
+											</tr>
566
+										</thead>
567
+										<tbody class="list"></tbody>
568
+									</table>
569
+								</div>
570
+								
571
+							</div>
572
+							<div class="Pre-second second-con addgd" style="display:none;">
573
+								<form>
574
+									<div class="form-group clearfix">
575
+										<!--<span class="col-sm-1">
576
+                                    投诉类型:
577
+                                </span>
578
+                                <span class="col-sm-3">
579
+                                    <select id="tslx">
580
+                                        <option selected="selected" value=""></option>
581
+                                    </select>
582
+                                </span>-->
583
+										<span class="col-sm-1">
584
+                                    姓名:
585
+                                </span>
586
+										<span class="col-sm-3">
587
+                                    <input type="text" id="marketName" class="form-control" readonly="readonly" />
588
+                                </span>
589
+										<span class="col-sm-1">
590
+                                    电话:
591
+                                </span>
592
+										<span class="col-sm-3">
593
+                                    <input type="text" id="marketTel" class="form-control" readonly="readonly" />
594
+                                </span>
595
+									</div>
596
+									<div class="form-group clearfix">
597
+										<span class="col-sm-1">
598
+                                    来电单位:
599
+                                </span>
600
+										<span class="col-sm-3">
601
+                                    <input type="text" class="form-control" id="lddepr" readonly="readonly"/>
602
+                                </span>
603
+										<span class="col-sm-1">
604
+                                    反馈单位:
605
+                                </span>
606
+										<span class="col-sm-3">
607
+									<input type="text" id="testInput1_" class="ld-sercon form-control " />
608
+								<ul class="testInput-list">
609
+									<li></li>
610
+                                </span>
611
+									</div>
612
+									<div class="form-group clearfix">
613
+										<span class="col-sm-1">反馈内容:</span>
614
+										<span class="col-sm-11">
615
+                                    <textarea rows="5" id="fkcont_market" style="resize: none;" class="form-control"></textarea>
616
+                                </span>
617
+									</div>
618
+									<div class="bton addts">创建</div>
619
+								</form>
620
+							</div>
621
+							<div class="Pre-second second-con zxbg " style="display: none;">
622
+								<form>
623
+									<div class="form-group clearfix">
624
+										<span class="col-sm-1">
625
+                                    姓名:
626
+                                </span>
627
+										<span class="col-sm-3">
628
+                                    <input type="text" class="form-control"  id="callCustomer" readonly="readonly" />
629
+                                </span>
630
+										<span class="col-sm-1">
631
+                                    电话:
632
+                                </span>
633
+										<span class="col-sm-3">
634
+                                    <input type="text" class="form-control" id="Tel"  readonly="readonly"/>
635
+                                </span>
636
+
637
+									</div>
638
+									<div class="form-group clearfix">
639
+										<span class="col-sm-1">
640
+                                    来电单位:
641
+                                </span>
642
+										<span class="col-sm-3">
643
+                                    <input type="text" class="form-control" id="lddep" readonly="readonly"/>
644
+                                </span>
645
+										<span class="col-sm-1">
646
+                                    反馈单位:
647
+                                </span>
648
+										<span class="col-sm-3">
649
+									<input type="text" id="testInput_" class="ld-sercon form-control " />
650
+								<ul class="testInput-list">
651
+									<li></li>
652
+								</ul>
653
+									
654
+                                </span>
655
+									</div>
656
+									<div class="form-group clearfix">
657
+										<span class="col-sm-1">
658
+                                    工单来源:
659
+                                </span>
660
+										<span class="col-sm-3">
661
+                                    <select name="" class="form-control" id="DicValueList">
662
+                                    </select>
663
+                                </span>
664
+										<span class="col-sm-1">
665
+                                    工单类型:
666
+                                </span>
667
+										<span class="col-sm-3">
668
+                                    <div class="inpBox" id="organizer">
669
+										<input id="citySel" class="inps form-control" />
670
+										<input type="hidden" id="OPID" />
671
+										<i class="xl xl_one" id="xl_one"></i>
672
+										<div id="menuContent" class="menuContent" style="display: none; position: absolute;  z-index: 100;">
673
+											<ul id="treeDemo" class="ztree"></ul>
674
+										</div>
675
+									</div>
676
+                                </span>
677
+									</div>
678
+									<div class="form-group clearfix">
679
+										<span class="col-sm-1">
680
+                                    工单状态:
681
+                                </span>
682
+										<span class="col-sm-3">
683
+                                    <select name="" id="State" class="form-control">
684
+                                    	
685
+                                    </select>
686
+                                </span>
687
+									</div>
688
+									<div class="form-group clearfix">
689
+										<span class="col-sm-1">反馈内容:</span>
690
+										<span class="col-sm-11">
691
+                                    <textarea rows="5" id="fkcont" style="resize: none;" class="form-control"></textarea>
692
+                                </span>
693
+									</div>
694
+									<div class="form-group clearfix">
695
+										<span class="col-sm-1">快递信息:</span>
696
+										<span class="col-sm-11">
697
+                                    <textarea rows="2" id="sendmsg" style="resize: none;" id="clnr_" class="form-control"></textarea>
698
+                                </span>
699
+									</div>
700
+									<div class="form-group clearfix">
701
+										<span class="col-sm-1">备注一:</span>
702
+										<span class="col-sm-11">
703
+                                    <textarea rows="2" class="form-control" id="note1" style="resize: none;"id="cont"></textarea>
704
+                                </span>
705
+									</div>
706
+									<div class="form-group clearfix">
707
+										<span class="col-sm-1">备注二:</span>
708
+										<span class="col-sm-11">
709
+                                    <textarea rows="2" class="form-control" id="note2" style="resize: none;"id="cont"></textarea>
710
+                                </span>
711
+									</div>
712
+									<div class="form-group clearfix">
713
+										<span class="col-sm-1">备注三:</span>
714
+										<span class="col-sm-11">
715
+                                    <textarea rows="2" class="form-control" id="note3"  style="resize: none;"id="cont"></textarea>
716
+                                </span>
717
+									</div>
718
+									<div class="bton add_">创建</div>
719
+								</form>
720
+							</div>
721
+						</div>
722
+					</div>
723
+					<!--右侧下方内容区-->
724
+					<div class="ldcr-bottom" style="margin-top:10px;">
725
+						<div class="ldcrb-top clearfix">
726
+							<ul class="clearfix">
727
+								<li style="border-bottom:1px solid #69cbd0; background: #000;color: #fff;">知识库</li>
728
+								<!--<li style="border-bottom:1px solid #f95a83;border-top:1px solid #000;border-right:1px solid #000;">更多内容</li>-->
729
+							</ul>
730
+							<div class="ld-search">
731
+								<div class="sear-inp">
732
+									<input type="text" class="search" placeholder="搜索问题、内容或者标题" />
733
+								</div>
734
+								<div class="searIcon">
735
+								</div>
736
+							</div>
737
+						</div>
738
+						<div class="detail-con">
739
+							<ul></ul>
740
+						</div>
741
+					</div>
742
+				</div>
743
+			</div>
744
+
745
+			<!--来电弹屏结束-->
746
+		</div>
747
+		<script src="./../js/bootstrap-table.js"></script>
748
+		<script src="./../js/bootstrap-table-zh-CN.js"></script>
749
+		<script src="./../js/zTree/jquery.ztree.core.js"></script>
750
+		<script src="./../js/plugins/datapicker/bootstrap-datepicker.js"></script>
751
+		<!--<script src="./js/bootstrap-select/js/bootstrap-select.js"></script>-->
752
+		<script src="./../css/laydate/laydate.js"></script>
753
+		<!--<script src="./../js/jquery.select.js"></script>-->
754
+		<script src="./../js/main.js?v=1.5"></script>
755
+		<script src="select.js"></script>
756
+		<script src="call.js"></script>
757
+		<script>
758
+			
759
+		</script>
760
+	</body>
761
+
762
+</html>

+ 356 - 0
CallCenterWeb.UI/callScreen/css/call.css

@@ -0,0 +1,356 @@
1
+		ul,
2
+		li,
3
+		ol {
4
+			list-style: none;
5
+			margin: 0;
6
+			padding: 0;
7
+		}
8
+		
9
+		a {
10
+			text-decoration: none
11
+		}
12
+		.clearfix:after {
13
+	    content: "";
14
+	    display: block;
15
+	    clear: both;
16
+		}
17
+	
18
+	
19
+		.ldtp-con{
20
+			width: 100%;
21
+			margin: 0 auto;
22
+			height: 100%;
23
+			/*overflow: hidden;*/
24
+			position: relative;
25
+		    /*top: 97px;
26
+   		    left: 220px;*/
27
+			background: #fff;
28
+			/*border-left: 4px solid #1ab395;*/
29
+			/*display: none;*/
30
+		
31
+		}
32
+		.ldtp-con .hei-list{
33
+			    position: absolute;
34
+			    top: 20%;
35
+			    left: 40%;
36
+			    z-index: 10;
37
+			    display: none;
38
+		}
39
+		.ldtp-con .hei-list input{
40
+			 margin-top: 3px;
41
+	
42
+		}
43
+		/*.minClosed{
44
+			position: absolute;
45
+		    top: 0px;
46
+		    right: 80px;
47
+		    height: 35px;
48
+		    width: 35px;
49
+		    z-index: 10;
50
+		}
51
+		.minClosed a{
52
+		    display: block;
53
+		    height: 1px;
54
+		    background: #000;
55
+		    width: 15px;
56
+		    position: absolute;
57
+		    top: 15px;
58
+		    left: 10px;
59
+		}
60
+		.minClosed:hover{
61
+			background: #ccc;
62
+		}*/
63
+		.ldtp-cl {
64
+			background: #243747;
65
+			font-family: "宋体";
66
+			height: 100%;
67
+		}
68
+		
69
+		.ldtp-cl .head-pic>div {
70
+			height: 90px;
71
+			width: 90px;
72
+			-webkit-border-radius: 50%;
73
+			-moz-border-radius: 50%;
74
+			border-radius: 50%;
75
+			overflow: hidden;
76
+			margin: 20px auto;
77
+			border-width: 2px;
78
+			border-style: solid;
79
+			border-color: #ffb400 #fc3c04 #fdfc01 #00e3c0;
80
+		}
81
+		.ldtp-cl .head-pic ul li {
82
+			font-size: 12px;
83
+			color: #dfe4ed;
84
+			text-align: center;
85
+		}
86
+		
87
+		.ldtp-cl .head-pic ul li.nikeName i {
88
+			display: inline-block;
89
+			width: 20px;
90
+			height: 1px;
91
+			background: #dfe4ed;
92
+		}
93
+		
94
+		.ldtp-cl .head-pic ul li.nikeName span {
95
+			margin: 0 10px;
96
+		}
97
+		.ldtp-cl .head-pic ul li.lahei{
98
+			color: #ce2114;
99
+		    margin: 10px 0;
100
+		    cursor: pointer;
101
+		}
102
+		.ldtp-cl .head-pic ul li.lahei i{
103
+			display: inline-block;
104
+			height: 16px;
105
+			width: 16px;
106
+			vertical-align: middle;
107
+		}
108
+		.ldtp-cl .head-pic ul li.lahei .push{
109
+				background: url(../../img/lahei.png) no-repeat;
110
+		}
111
+		.ldtp-cl .head-pic ul li.lahei .qxlh{
112
+			background: url(../../img/retur.png) no-repeat;
113
+		}
114
+		.ldtp-cl .head-pic ul li.td-call {
115
+			padding: 1em 6em;
116
+		}
117
+		
118
+		.ldtp-cl .head-pic ul li>a {
119
+			display: inline-block;
120
+		}
121
+		
122
+		.ldtp-cl .head-pic ul li>a.drop {
123
+			float: right;
124
+		}
125
+		
126
+		.ldtp-cl .head-pic ul li>a.take {
127
+			float: left;
128
+		}
129
+		
130
+		.ldtp-cl .head-pic ul li>a>i {
131
+			display: inline-block;
132
+			height: 36px;
133
+			width: 36px;
134
+		}
135
+		
136
+		.ldtp-cl .head-pic ul li>a.take>i {
137
+			background: url(../../img/drop.png) no-repeat;
138
+		}
139
+		
140
+		.ldtp-cl .head-pic ul li>a.drop>i {
141
+			background: url(../../img/take.png) no-repeat;
142
+		}
143
+		
144
+		.ldtp-cl .come-detail {
145
+			color: #fcf9f9;
146
+			padding-left: 5em;
147
+			line-height: 2em;
148
+			margin-top: 35px;
149
+		}
150
+		.ldtp-cr {
151
+			height: 100%;
152
+			overflow: hidden;
153
+			overflow-y: auto;
154
+		}
155
+		.ldtp-cr .ld-service li {
156
+			float: left;
157
+			font-size: 14px;
158
+			color: #000;
159
+			padding: 5px 15px;
160
+			cursor: pointer;
161
+		}
162
+		
163
+		.ldtp-cr ul.ld-service li.cr-click {
164
+			background: #000;
165
+			color: #fff;
166
+		}
167
+		
168
+		.ld-sercon .Ps-chaxun {
169
+			padding: 15px 0;
170
+		}
171
+		
172
+		.ld-sercon .Ps-chaxun span {
173
+			margin-right: 1.2em;
174
+		}
175
+		
176
+		.ld-sercon input {
177
+			width: 128px;
178
+			padding-left: 20px;
179
+			padding-right: 0;
180
+		}
181
+		.ld-sercon span p{
182
+			    display: inline-block;
183
+			    margin: 0;
184
+			    width: 128px;
185
+			    overflow: hidden;
186
+			    vertical-align: middle;
187
+			    border: 1px solid #ccc;
188
+			    position: relative;
189
+		}
190
+		/*.ld-sercon span p i{
191
+			display: block;
192
+			height: 18px;
193
+			width: 18px;
194
+			background: url(../img/select_03.png) no-repeat;
195
+			position: absolute;
196
+			top: 0;
197
+			right: 0;
198
+		}*/
199
+		.ld-sercon select {
200
+			/*height: 22px;*/
201
+			width: 128px;
202
+			padding-left: 20px;
203
+		}
204
+		.ld-sercon textarea{
205
+			width: 70%;
206
+			vertical-align: middle;
207
+			-webkit-border-radius: 5px;
208
+			-moz-border-radius: 5px;
209
+			border-radius: 5px;
210
+		}
211
+		.ld-sercon div.bton{
212
+			width: 70px;
213
+			height: 27px;
214
+			line-height: 27px;
215
+			background: #e43926;	
216
+			-webkit-border-radius: 5px;
217
+			-moz-border-radius: 5px;
218
+			border-radius: 5px;
219
+			margin: 0 auto;
220
+			color: #fff;
221
+			text-align: center;
222
+		}
223
+		.second-con{
224
+			padding: 20px 0;
225
+		}
226
+		
227
+		.ld-sercon .addjl {
228
+			display: inline-block;
229
+			width: 84px;
230
+			-webkit-border-radius: 5px;
231
+			-moz-border-radius: 5px;
232
+			border-radius: 5px;
233
+			text-align: center;
234
+			padding: 0px;
235
+			font-size: 12px;
236
+			height: 24px;
237
+   			line-height: 24px;
238
+			cursor: pointer;
239
+			background: #e43926;
240
+			color: #fff
241
+		}
242
+		.tbth{
243
+			background: #1ab394;
244
+		}
245
+		
246
+		.dealw {
247
+			color: #1ab394;
248
+		}
249
+		.ld-sercon>div{
250
+			display: none;
251
+		}
252
+		.ldcr-bottom .ldcrb-top>ul {
253
+			float: left;
254
+			
255
+		}
256
+			.ldcr-bottom .ldcrb-top>ul li{
257
+				float: left;
258
+			    font-size: 14px;
259
+			    width: 90px;
260
+			    text-align: center;
261
+			    height: 30px;
262
+			    line-height: 30px;
263
+			    cursor: pointer;
264
+			}
265
+		.ldcr-bottom .ldcrb-top>div{
266
+			float: right;
267
+			width: 285px;
268
+			height: 30px;
269
+			position: relative;
270
+		}
271
+		.ldcr-bottom .ldcrb-top>div .sear-inp{
272
+		width: 100%;
273
+		height: 100%;
274
+		border: 1px solid #ccc;
275
+		overflow: hidden;
276
+		}
277
+		.ldcr-bottom .ldcrb-top>div .sear-inp input{
278
+			    display: block;
279
+			    height: 100%;
280
+			    width: 88%;
281
+			    border: 0;
282
+			    outline: none;
283
+			    padding: 10px;
284
+		}
285
+		.searIcon{
286
+			position: absolute;
287
+			width: 12%;
288
+			height: 100%;
289
+			right: 0;
290
+			top: 0;
291
+			background-color: #e43926;
292
+			background-image: url(../../img/searIcon.png);
293
+			background-repeat: no-repeat;
294
+			background-position: center center;
295
+			cursor: pointer;
296
+			
297
+		}
298
+		.ldcr-bottom .detail-con{
299
+			padding: 15px;
300
+		    border: 1px solid #ebebeb;
301
+		    -webkit-border-radius: 5px;
302
+			-moz-border-radius: 5px;
303
+		    border-radius: 5px;
304
+		    margin-top: 15px;
305
+		}
306
+		.ldcr-bottom .detail-con ul li {
307
+			margin-bottom: 10px;
308
+		}
309
+		.ldcr-bottom .detail-con ul li .zhishi-title{
310
+			border-bottom: 1px solid #ccc;
311
+		}
312
+		.ldcr-bottom .detail-con ul li .zhishi-title a{
313
+			    display: block;
314
+			    float: left;
315
+			    width: 55%;
316
+			    white-space: nowrap;
317
+			    overflow: hidden;
318
+			    text-overflow: ellipsis;
319
+			    color: #000;
320
+		}
321
+		.ldcr-bottom .detail-con ul li .zhishi-title em{
322
+				display: block;
323
+			    float: right;
324
+			    font-style: normal;
325
+			    font-family: Verdana;
326
+			    float: right;
327
+			     color: #000;
328
+		}
329
+		.ldcr-bottom .detail-con ul li .explancon{
330
+			padding: 30px 10px;
331
+		    text-indent: 24px;
332
+		    line-height: 24px;
333
+		    color: #999;
334
+		    background: #f5f5f5;
335
+            display:none;
336
+		}
337
+		.second-con{
338
+			border: 1px solid #e6e6e6;
339
+			-webkit-border-radius: 5px;
340
+			-moz-border-radius: 5px;
341
+			border-radius: 5px;
342
+			margin: 15px 0;
343
+			
344
+		}
345
+		.shows{
346
+			display: block;
347
+		}
348
+		.hides{
349
+			display: none!important;
350
+		}
351
+	
352
+		.hei-list .bacha:hover{
353
+			color: #ccc;
354
+		}
355
+	
356
+	

+ 178 - 0
CallCenterWeb.UI/callScreen/css/select.css

@@ -0,0 +1,178 @@
1
+/**
2
+ * Variables
3
+ */
4
+/**
5
+ * Wrapper
6
+ */
7
+.combo-select {
8
+  position: relative;
9
+  max-width: 400px;
10
+  margin-bottom: 15px;
11
+  font: 100% Helvetica, Arial, Sans-serif;
12
+ border: 1px solid #e5e6e7;
13
+  border-radius: 3px; }
14
+  .combo-select .combo-input {
15
+    margin-bottom: 0; }
16
+
17
+/**
18
+ * Input field
19
+ */
20
+.combo-input {
21
+  -webkit-appearance: none;
22
+  -moz-appearance: none;
23
+  appearance: none;
24
+  margin: 0;
25
+  text-overflow: ellipsis;
26
+  white-space: nowrap;
27
+  border: none;
28
+  width: 100%;
29
+  box-sizing: border-box;
30
+  padding: 12px;
31
+  padding-right: 60px;
32
+  border-radius: 3px; }
33
+  .combo-input:focus {
34
+    outline: none; }
35
+
36
+/**
37
+ * Arrow
38
+ */
39
+.combo-arrow {
40
+  position: absolute;
41
+  right: 0;
42
+  top: 0;
43
+  height: 100%;
44
+  cursor: pointer;
45
+  text-align: center;
46
+  font-size: 14px;
47
+  width: 40px;
48
+  font-size: 12px;
49
+  color: #999999; }
50
+  .combo-arrow:before {
51
+    content: " ";
52
+    border-left: 5px solid transparent;
53
+    border-right: 5px solid transparent;
54
+    border-top: 5px solid #cccccc;
55
+    display: block;
56
+    width: 0;
57
+    height: 0;
58
+    top: 0;
59
+    right: 15px;
60
+    bottom: 0;
61
+    position: absolute;
62
+    margin: auto 0; }
63
+
64
+/**
65
+ * When opened
66
+ */
67
+.combo-open .combo-arrow {
68
+  border-color: #51A7E8; }
69
+  .combo-open .combo-arrow:before {
70
+    border-top: none;
71
+    border-bottom: 5px solid #cccccc; }
72
+
73
+/**
74
+ * When focused
75
+ */
76
+.combo-focus {
77
+  box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26);
78
+  border-color: #51A7E8; }
79
+  .combo-focus input {
80
+    border-color: #51A7E8; }
81
+
82
+/**
83
+ * Hide native select
84
+ */
85
+.combo-select select {
86
+  position: absolute;
87
+  z-index: 1;
88
+  left: 0;
89
+  top: 0;
90
+  width: 100%;
91
+  height: 100%;
92
+  -webkit-appearance: none;
93
+  opacity: 0; }
94
+
95
+@media only screen and (min-width: 960px) {
96
+  .combo-select select {
97
+    left: -1px;
98
+    top: -1px;
99
+    width: 0;
100
+    height: 0;
101
+    margin: 0; } }
102
+/**
103
+ * Selected option
104
+ */
105
+.option-selected {
106
+  background-color: #eee; }
107
+
108
+/**
109
+ * Hovered option
110
+ */
111
+.option-hover {
112
+  background-color: #E43926;
113
+  color: #fff; }
114
+
115
+/**
116
+ * Option item
117
+ */
118
+.option-item {
119
+  cursor: pointer;
120
+  border-bottom: 1px #e3e3e3 solid; }
121
+  .option-item:hover {
122
+    background-color: #E43926;
123
+    color: #fff; }
124
+  .option-item:last-child {
125
+    border-bottom: none; }
126
+
127
+/**
128
+ * Disabled and optgroups
129
+ */
130
+.option-group {
131
+  cursor: text;
132
+  font-weight: 600;
133
+  background: #e1e1e1;
134
+  border: 1px #ccc solid;
135
+  border-width: 1px 0; }
136
+
137
+/**
138
+ * Disabled
139
+ */
140
+.option-disabled {
141
+  opacity: 0.5; }
142
+
143
+/**
144
+ * Dropdown
145
+ */
146
+.combo-dropdown {
147
+  position: absolute;
148
+  z-index: 1;
149
+  top: 100%;
150
+  left: 0;
151
+  min-width: 100%;
152
+  max-width: 300px;
153
+  max-height: 300px;
154
+  margin: 0;
155
+  padding: 0;
156
+  display: none;
157
+  overflow-y: auto;
158
+  background: #fff;
159
+  border: 1px solid #999999;
160
+  border-radius: 0;
161
+  box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26);
162
+  box-sizing: border-box; }
163
+  .combo-dropdown li {
164
+    list-style: none;
165
+    padding: 8px 1em;
166
+    margin: 0; }
167
+
168
+/**
169
+ * On Active
170
+ */
171
+.combo-open .combo-dropdown {
172
+  display: block; }
173
+
174
+/**
175
+ * Search marker
176
+ */
177
+.combo-marker {
178
+  text-decoration: underline; }

File diff suppressed because it is too large
+ 2178 - 0
CallCenterWeb.UI/callScreen/province.json


+ 797 - 0
CallCenterWeb.UI/callScreen/select.js

@@ -0,0 +1,797 @@
1
+/*jshint asi:true, expr:true */
2
+/**
3
+ * Plugin Name: Combo Select
4
+ * Author : Vinay@Pebbleroad
5
+ * Date: 23/11/2014
6
+ * Description: 
7
+ * Converts a select box into a searchable and keyboard friendly interface. Fallbacks to native select on mobile and tablets
8
+ */
9
+
10
+// Expose plugin as an AMD module if AMD loader is present:
11
+(function (factory) {
12
+	'use strict';
13
+	if (typeof define === 'function' && define.amd) {
14
+		// AMD. Register as an anonymous module.
15
+		define(['jquery'], factory);
16
+	} else if (typeof exports === 'object' && typeof require === 'function') {
17
+		// Browserify
18
+		factory(require('jquery'));
19
+	} else {
20
+		// Browser globals
21
+		factory(jQuery);
22
+	}
23
+}(function ( $, undefined ) {
24
+
25
+	var pluginName = "comboSelect",
26
+		dataKey = 'comboselect';
27
+	var defaults = {			
28
+		comboClass         : 'combo-select',
29
+		comboArrowClass    : 'combo-arrow',
30
+		comboDropDownClass : 'combo-dropdown',
31
+		inputClass         : 'combo-input text-input',
32
+		disabledClass      : 'option-disabled',
33
+		hoverClass         : 'option-hover',
34
+		selectedClass      : 'option-selected',
35
+		markerClass        : 'combo-marker',
36
+		themeClass         : '',
37
+		maxHeight          : 200,
38
+		extendStyle        : true,
39
+		focusInput         : true
40
+	};
41
+
42
+	/**
43
+	 * Utility functions
44
+	 */
45
+
46
+	var keys = {
47
+		ESC: 27,
48
+		TAB: 9,
49
+		RETURN: 13,
50
+		LEFT: 37,
51
+		UP: 38,
52
+		RIGHT: 39,
53
+		DOWN: 40,
54
+		ENTER: 13,
55
+		SHIFT: 16
56
+	},	
57
+	isMobile = (/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(navigator.userAgent.toLowerCase()));
58
+
59
+	/**
60
+	 * Constructor
61
+	 * @param {[Node]} element [Select element]
62
+	 * @param {[Object]} options [Option object]
63
+	 */
64
+	function Plugin ( element, options ) {
65
+			
66
+		/* Name of the plugin */
67
+
68
+		this._name = pluginName;
69
+
70
+		/* Reverse lookup */
71
+
72
+		this.el = element
73
+
74
+		/* Element */
75
+
76
+		this.$el = $(element)
77
+
78
+		/* If multiple select: stop */
79
+		
80
+		if(this.$el.prop('multiple')) return;
81
+
82
+		/* Settings */
83
+
84
+		this.settings = $.extend( {}, defaults, options, this.$el.data() );
85
+
86
+		/* Defaults */
87
+
88
+		this._defaults = defaults;
89
+
90
+		/* Options */
91
+
92
+		this.$options = this.$el.find('option, optgroup')
93
+
94
+		/* Initialize */
95
+
96
+		this.init();
97
+
98
+		/* Instances */
99
+
100
+		$.fn[ pluginName ].instances.push(this);
101
+
102
+	}
103
+
104
+	$.extend(Plugin.prototype, {
105
+		init: function () {
106
+
107
+			/* Construct the comboselect */
108
+
109
+			this._construct();
110
+
111
+
112
+			/* Add event bindings */          
113
+
114
+			this._events();
115
+
116
+
117
+		},
118
+		_construct: function(){
119
+
120
+			var self = this
121
+
122
+			/**
123
+			 * Add negative TabIndex to `select`
124
+			 * Preserves previous tabindex
125
+			 */
126
+			
127
+			this.$el.data('plugin_'+ dataKey + '_tabindex', this.$el.prop('tabindex'))
128
+
129
+			/* Add a tab index for desktop browsers */
130
+
131
+			!isMobile && this.$el.prop("tabIndex", -1)
132
+
133
+			/**
134
+			 * Wrap the Select
135
+			 */
136
+
137
+			this.$container = this.$el.wrapAll('<div class="' + this.settings.comboClass + ' '+ this.settings.themeClass + '" />').parent();
138
+			
139
+			/**
140
+			 * Check if select has a width attribute
141
+			 */
142
+			if(this.settings.extendStyle && this.$el.attr('style')){
143
+
144
+				this.$container.attr('style', this.$el.attr("style"))
145
+				
146
+			}
147
+			
148
+
149
+			/**
150
+			 * Append dropdown arrow
151
+			 */
152
+
153
+			this.$arrow = $('<div class="'+ this.settings.comboArrowClass+ '" />').appendTo(this.$container)
154
+
155
+
156
+			/**
157
+			 * Append dropdown
158
+			 */
159
+
160
+			this.$dropdown = $('<ul class="'+this.settings.comboDropDownClass+'" />').appendTo(this.$container)
161
+
162
+
163
+			/**
164
+			 * Create dropdown options
165
+			 */
166
+
167
+			var o = '', k = 0, p = '';
168
+
169
+			this.selectedIndex = this.$el.prop('selectedIndex')
170
+
171
+			this.$options.each(function(i, e){
172
+
173
+				if(e.nodeName.toLowerCase() == 'optgroup'){
174
+
175
+					return o+='<li class="option-group">'+this.label+'</li>'
176
+				}
177
+
178
+				if(!e.value) p = e.innerHTML
179
+
180
+				o+='<li class="'+(this.disabled? self.settings.disabledClass : "option-item") + ' ' +(k == self.selectedIndex? self.settings.selectedClass : '')+ '" data-index="'+(k)+'" data-value="'+this.value+'">'+ (this.innerHTML) + '</li>'
181
+
182
+				k++;
183
+			})
184
+
185
+			this.$dropdown.html(o)
186
+
187
+			/**
188
+			 * Items
189
+			 */
190
+
191
+			this.$items = this.$dropdown.children();
192
+
193
+
194
+			/**
195
+			 * Append Input
196
+			 */
197
+
198
+			this.$input = $('<input type="text"' + (isMobile? 'tabindex="-1"': '') + ' placeholder="'+p+'" class="'+ this.settings.inputClass + '">').appendTo(this.$container)
199
+
200
+			/* Update input text */
201
+
202
+			this._updateInput()
203
+
204
+		},
205
+
206
+		_events: function(){
207
+
208
+			/* Input: focus */
209
+
210
+			this.$container.on('focus.input', 'input', $.proxy(this._focus, this))
211
+
212
+			/**
213
+			 * Input: mouseup
214
+			 * For input select() event to function correctly
215
+			 */
216
+			this.$container.on('mouseup.input', 'input', function(e){
217
+				e.preventDefault()
218
+			})
219
+
220
+			/* Input: blur */
221
+
222
+			this.$container.on('blur.input', 'input', $.proxy(this._blur, this))
223
+
224
+			/* Select: change */
225
+
226
+			this.$el.on('change.select', $.proxy(this._change, this))
227
+
228
+			/* Select: focus */
229
+
230
+			this.$el.on('focus.select', $.proxy(this._focus, this))
231
+
232
+			/* Select: blur */
233
+
234
+			this.$el.on('blur.select', $.proxy(this._blurSelect, this))
235
+
236
+			/* Dropdown Arrow: click */
237
+
238
+			this.$container.on('click.arrow', '.'+this.settings.comboArrowClass , $.proxy(this._toggle, this))
239
+
240
+			/* Dropdown: close */
241
+
242
+			this.$container.on('comboselect:close', $.proxy(this._close, this))
243
+
244
+			/* Dropdown: open */
245
+
246
+			this.$container.on('comboselect:open', $.proxy(this._open, this))
247
+
248
+
249
+			/* HTML Click */
250
+
251
+			$('html').off('click.comboselect').on('click.comboselect', function(){
252
+				
253
+				$.each($.fn[ pluginName ].instances, function(i, plugin){
254
+
255
+					plugin.$container.trigger('comboselect:close')
256
+
257
+				})
258
+			});
259
+
260
+			/* Stop `event:click` bubbling */
261
+
262
+			this.$container.on('click.comboselect', function(e){
263
+				e.stopPropagation();
264
+			})
265
+
266
+
267
+			/* Input: keydown */
268
+
269
+			this.$container.on('keydown', 'input', $.proxy(this._keydown, this))
270
+
271
+			/* Input: keyup */
272
+			
273
+			this.$container.on('keyup', 'input', $.proxy(this._keyup, this))
274
+
275
+			/* Dropdown item: click */
276
+
277
+			this.$container.on('click.item', '.option-item', $.proxy(this._select, this))
278
+
279
+		},
280
+
281
+		_keydown: function(event){
282
+
283
+			
284
+
285
+			switch(event.which){
286
+
287
+				case keys.UP:
288
+					this._move('up', event)
289
+					break;
290
+
291
+				case keys.DOWN:
292
+					this._move('down', event)
293
+					break;
294
+				
295
+				case keys.TAB:
296
+					this._enter(event)
297
+					break;
298
+
299
+				case keys.RIGHT:
300
+					this._autofill(event);
301
+					break;
302
+
303
+				case keys.ENTER:
304
+					this._enter(event);
305
+					break;
306
+
307
+				default:							
308
+					break;
309
+
310
+
311
+			}
312
+
313
+		},
314
+		
315
+
316
+		_keyup: function(event){
317
+			
318
+			switch(event.which){
319
+				case keys.ESC:													
320
+					this.$container.trigger('comboselect:close')
321
+					break;
322
+
323
+				case keys.ENTER:
324
+				case keys.UP:
325
+				case keys.DOWN:
326
+				case keys.LEFT:
327
+				case keys.RIGHT:
328
+				case keys.TAB:
329
+				case keys.SHIFT:							
330
+					break;
331
+				
332
+				default:							
333
+					this._filter(event.target.value)
334
+					break;
335
+			}
336
+		},
337
+		
338
+		_enter: function(event){
339
+
340
+			var item = this._getHovered()
341
+
342
+			item.length && this._select(item);
343
+
344
+			/* Check if it enter key */
345
+			if(event && event.which == keys.ENTER){
346
+
347
+				if(!item.length) {
348
+					
349
+					/* Check if its illegal value */
350
+
351
+					this._blur();
352
+
353
+					return true;
354
+				}
355
+
356
+				event.preventDefault();
357
+			}
358
+			
359
+
360
+		},
361
+		_move: function(dir){
362
+
363
+			var items = this._getVisible(),
364
+				current = this._getHovered(),
365
+				index = current.prevAll('.option-item').filter(':visible').length,
366
+				total = items.length
367
+
368
+			
369
+			switch(dir){
370
+				case 'up':
371
+					index--;
372
+					(index < 0) && (index = (total - 1));
373
+					break;
374
+
375
+				case 'down':							
376
+					index++;
377
+					(index >= total) && (index = 0);							
378
+					break;
379
+			}
380
+
381
+			
382
+			items
383
+				.removeClass(this.settings.hoverClass)
384
+				.eq(index)
385
+				.addClass(this.settings.hoverClass)
386
+
387
+
388
+			if(!this.opened) this.$container.trigger('comboselect:open');
389
+
390
+			this._fixScroll()
391
+		},
392
+
393
+		_select: function(event){
394
+
395
+			var item = event.currentTarget? $(event.currentTarget) : $(event);
396
+
397
+			if(!item.length) return;
398
+
399
+			/**
400
+			 * 1. get Index
401
+			 */
402
+			
403
+			var index = item.data('index');
404
+
405
+			this._selectByIndex(index);
406
+
407
+			this.$container.trigger('comboselect:close')					
408
+
409
+		},
410
+
411
+		_selectByIndex: function(index){
412
+
413
+			/**
414
+			 * Set selected index and trigger change
415
+			 * @type {[type]}
416
+			 */
417
+			if(typeof index == 'undefined'){
418
+				
419
+				index = 0
420
+
421
+			}
422
+			
423
+			if(this.$el.prop('selectedIndex') != index){
424
+
425
+				this.$el.prop('selectedIndex', index).trigger('change');
426
+			}
427
+
428
+		},
429
+
430
+		_autofill: function(){
431
+
432
+			var item = this._getHovered();
433
+
434
+			if(item.length){
435
+
436
+				var index = item.data('index')
437
+
438
+				this._selectByIndex(index)
439
+
440
+			}
441
+
442
+		},
443
+		
444
+
445
+		_filter: function(search){
446
+
447
+			var self = this,
448
+				items = this._getAll();
449
+				needle = $.trim(search).toLowerCase(),
450
+				reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g'),
451
+				pattern = '(' + search.replace(reEscape, '\\$1') + ')';
452
+
453
+
454
+			/**
455
+			 * Unwrap all markers
456
+			 */
457
+			
458
+			$('.'+self.settings.markerClass, items).contents().unwrap();
459
+
460
+			/* Search */
461
+			
462
+			if(needle){
463
+
464
+				/* Hide Disabled and optgroups */
465
+
466
+				this.$items.filter('.option-group, .option-disabled').hide();
467
+			
468
+				
469
+				items							
470
+					.hide()
471
+					.filter(function(){
472
+
473
+						var $this = $(this),
474
+							text = $.trim($this.text()).toLowerCase();
475
+						
476
+						/* Found */
477
+						if(text.toString().indexOf(needle) != -1){
478
+																
479
+							/**
480
+							 * Wrap the selection
481
+							 */									
482
+							
483
+							$this
484
+								.html(function(index, oldhtml){
485
+								return oldhtml.replace(new RegExp(pattern, 'gi'), '<span class="'+self.settings.markerClass+'">$1</span>')
486
+							})									
487
+
488
+							return true
489
+						}
490
+
491
+					})
492
+					.show()
493
+			}else{
494
+
495
+								
496
+				this.$items.show();
497
+			}
498
+
499
+			/* Open the comboselect */
500
+
501
+			this.$container.trigger('comboselect:open')
502
+			
503
+
504
+		},
505
+
506
+		_highlight: function(){
507
+
508
+			/* 
509
+			1. Check if there is a selected item 
510
+			2. Add hover class to it
511
+			3. If not add hover class to first item
512
+			*/
513
+		
514
+			var visible = this._getVisible().removeClass(this.settings.hoverClass),
515
+				$selected = visible.filter('.'+this.settings.selectedClass)
516
+
517
+			if($selected.length){
518
+				
519
+				$selected.addClass(this.settings.hoverClass);
520
+
521
+			}else{
522
+
523
+				visible
524
+					.removeClass(this.settings.hoverClass)
525
+					.first()
526
+					.addClass(this.settings.hoverClass)
527
+			}
528
+
529
+		},
530
+
531
+		_updateInput: function(){
532
+
533
+			var selected = this.$el.prop('selectedIndex')
534
+			
535
+			if(this.$el.val()){
536
+				
537
+				text = this.$el.find('option').eq(selected).text()
538
+
539
+				this.$input.val(text)
540
+
541
+			}else{
542
+				
543
+				this.$input.val('')
544
+
545
+			}
546
+
547
+			return this._getAll()
548
+				.removeClass(this.settings.selectedClass)
549
+				.filter(function(){
550
+
551
+					return $(this).data('index') == selected
552
+				})
553
+				.addClass(this.settings.selectedClass)
554
+		
555
+		},
556
+		_blurSelect: function(){
557
+
558
+			this.$container.removeClass('combo-focus');
559
+
560
+		},
561
+		_focus: function(event){
562
+			
563
+			/* Toggle focus class */
564
+
565
+			this.$container.toggleClass('combo-focus', !this.opened);
566
+
567
+			/* If mobile: stop */
568
+			
569
+			if(isMobile) return;
570
+
571
+			/* Open combo */
572
+
573
+			if(!this.opened) this.$container.trigger('comboselect:open');
574
+			
575
+			/* Select the input */
576
+			
577
+			this.settings.focusInput && event && event.currentTarget && event.currentTarget.nodeName == 'INPUT' && event.currentTarget.select()
578
+		},
579
+
580
+		_blur: function(){
581
+
582
+			/**
583
+			 * 1. Get hovered item
584
+			 * 2. If not check if input value == select option
585
+			 * 3. If none
586
+			 */
587
+			
588
+			var val = $.trim(this.$input.val().toLowerCase()),
589
+				isNumber = !isNaN(val);
590
+			
591
+			var index = this.$options.filter(function(){
592
+				
593
+				if(isNumber){
594
+					return parseInt($.trim(this.innerHTML).toLowerCase()) == val
595
+				}
596
+
597
+				return $.trim(this.innerHTML).toLowerCase() == val
598
+
599
+			}).prop('index')
600
+		
601
+			/* Select by Index */
602
+						
603
+			this._selectByIndex(index)
604
+			
605
+		},
606
+
607
+		_change: function(){
608
+
609
+
610
+			this._updateInput();
611
+
612
+		},
613
+
614
+		_getAll: function(){
615
+
616
+			return this.$items.filter('.option-item')
617
+
618
+		},
619
+		_getVisible: function(){
620
+
621
+			return this.$items.filter('.option-item').filter(':visible')
622
+
623
+		},
624
+
625
+		_getHovered: function(){
626
+
627
+			return this._getVisible().filter('.' + this.settings.hoverClass);
628
+
629
+		},
630
+
631
+		_open: function(){
632
+
633
+			var self = this
634
+
635
+			this.$container.addClass('combo-open')			
636
+
637
+			this.opened = true
638
+			
639
+			/* Focus input field */			
640
+
641
+			this.settings.focusInput && setTimeout(function(){ !self.$input.is(':focus') && self.$input.focus(); });
642
+
643
+			/* Highligh the items */
644
+
645
+			this._highlight()
646
+
647
+			/* Fix scroll */
648
+
649
+			this._fixScroll()
650
+
651
+			/* Close all others */
652
+
653
+
654
+			$.each($.fn[ pluginName ].instances, function(i, plugin){
655
+
656
+				if(plugin != self && plugin.opened) plugin.$container.trigger('comboselect:close')
657
+			})
658
+
659
+		},
660
+
661
+		_toggle: function(){
662
+
663
+			this.opened? this._close.call(this) : this._open.call(this)
664
+		},
665
+
666
+		_close: function(){				
667
+
668
+			this.$container.removeClass('combo-open combo-focus')
669
+
670
+			this.$container.trigger('comboselect:closed')
671
+
672
+			this.opened = false
673
+
674
+			/* Show all items */
675
+
676
+			this.$items.show();
677
+
678
+		},
679
+		_fixScroll: function(){
680
+	
681
+			/**
682
+			 * If dropdown is hidden
683
+			 */
684
+			if(this.$dropdown.is(':hidden')) return;
685
+
686
+			
687
+			/**
688
+			 * Else					 
689
+			 */
690
+			var item = this._getHovered();
691
+
692
+			if(!item.length) return;					
693
+
694
+			/**
695
+			 * Scroll
696
+			 */
697
+			
698
+			var offsetTop,
699
+				upperBound,
700
+				lowerBound,
701
+				heightDelta = item.outerHeight()
702
+
703
+			offsetTop = item[0].offsetTop;
704
+			
705
+			upperBound = this.$dropdown.scrollTop();
706
+
707
+			lowerBound = upperBound + this.settings.maxHeight - heightDelta;
708
+			
709
+			if (offsetTop < upperBound) {
710
+					
711
+				this.$dropdown.scrollTop(offsetTop);
712
+
713
+			} else if (offsetTop > lowerBound) {
714
+					
715
+				this.$dropdown.scrollTop(offsetTop - this.settings.maxHeight + heightDelta);
716
+			}
717
+
718
+		},
719
+		/**
720
+		 * Destroy API
721
+		 */
722
+		
723
+		dispose: function(){
724
+
725
+			/* Remove combo arrow, input, dropdown */
726
+
727
+			this.$arrow.remove()
728
+
729
+			this.$input.remove()
730
+
731
+			this.$dropdown.remove()
732
+
733
+			/* Remove tabindex property */
734
+			this.$el
735
+				.removeAttr("tabindex")
736
+
737
+			/* Check if there is a tabindex set before */
738
+
739
+			if(!!this.$el.data('plugin_'+ dataKey + '_tabindex')){
740
+				this.$el.prop('tabindex', this.$el.data('plugin_'+ dataKey + '_tabindex'))
741
+			}
742
+
743
+			/* Unwrap */
744
+
745
+			this.$el.unwrap()
746
+
747
+			/* Remove data */
748
+
749
+			this.$el.removeData('plugin_'+dataKey)
750
+
751
+			/* Remove tabindex data */
752
+
753
+			this.$el.removeData('plugin_'+dataKey + '_tabindex')
754
+
755
+			/* Remove change event on select */
756
+
757
+			this.$el.off('change.select focus.select blur.select');
758
+
759
+		}	
760
+	});
761
+
762
+
763
+
764
+	// A really lightweight plugin wrapper around the constructor,
765
+	// preventing against multiple instantiations
766
+	$.fn[ pluginName ] = function ( options, args ) {
767
+
768
+		this.each(function() {
769
+
770
+			var $e = $(this),
771
+				instance = $e.data('plugin_'+dataKey)
772
+
773
+			if (typeof options === 'string') {
774
+				
775
+				if (instance && typeof instance[options] === 'function') {
776
+						instance[options](args);
777
+				}
778
+
779
+			}else{
780
+
781
+				if (instance && instance.dispose) {
782
+						instance.dispose();
783
+				}
784
+
785
+				$.data( this, "plugin_" + dataKey, new Plugin( this, options ) );
786
+
787
+			}
788
+
789
+		});
790
+
791
+		// chain jQuery functions
792
+		return this;
793
+	};
794
+
795
+	$.fn[ pluginName ].instances = [];
796
+
797
+}));

File diff suppressed because it is too large
+ 782 - 736
CallCenterWeb.UI/index.html


+ 46 - 7
CallCenterWeb.UI/js/contabs.min.js

@@ -105,13 +105,52 @@ $(function() {
105 105
 		if(o == undefined || $.trim(o).length == 0) {
106 106
 			return false
107 107
 		}
108
-		$(".J_mainContent").empty();
109
-		var p = '<a href="javascript:;" class="active J_menuTab" data-id="' + o + '">' + l + ' <i class="fa fa-times-circle"></i></a>';
110
-			$(".J_menuTab").removeClass("active");
111
-			var n = '<iframe class="J_iframe" name="iframe' + m + '" width="100%" height="100%" src="' + o + '" frameborder="0" data-id="' + o + '" seamless></iframe>';
112
-			$(".J_mainContent").append(n);
113
-			$(".J_menuTabs .page-tabs-content").append(p);
114
-			g($(".J_menuTab.active"));
108
+		
109
+		$(".J_menuTab").each(function() {
110
+			if($(this).data("id") == o) {
111
+				if(!$(this).hasClass("active")) {
112
+					$(this).addClass("active").siblings(".J_menuTab").removeClass("active");
113
+					g(this);
114
+					$(".J_mainContent .J_iframe").each(function() {
115
+						if($(this).data("id") == o) {
116
+							$(this).show().siblings(".J_iframe").hide();
117
+							return false
118
+						}
119
+					})
120
+				}
121
+				k = false;
122
+				return false;
123
+			}
124
+		});
125
+		if(k) {
126
+			if(o == './TelCall/SeatMonitor.html' || o.substring(0,28) == './callScreen/callScreen.html') {
127
+				console.log(o)
128
+				var p = '<a href="javascript:;" class="active J_menuTab" data-id="' + o + '">' + l + ' <i class="fa fa-times-circle"></i></a>';
129
+				$(".J_menuTab").removeClass("active");
130
+				var n = '<iframe class="J_iframe J_iframeNew" name="iframe' + m + '" width="100%" height="100%" src="' + o + '" frameborder="0" data-id="' + o + '" seamless></iframe>';
131
+				$(".J_mainContent").find("iframe.J_iframe").hide().parents(".J_mainContent").append(n);
132
+				$(".J_menuTabs .page-tabs-content").append(p);
133
+				g($(".J_menuTab.active"))
134
+			} else {
135
+				$(".J_mainContent .J_iframe0").show();
136
+				$(".J_mainContent .J_iframe0").attr("src", o);
137
+				if(o !== './TelCall/zxKong.html') {
138
+					$(".J_menuTab").removeClass("active");
139
+					$(".J_menuTab").eq(0).addClass("active").text(l);
140
+					$(".J_menuTab.active").attr("data-id",o);
141
+				}
142
+			}
143
+		}
144
+		
145
+		//改之前
146
+//		$(".J_mainContent").empty();
147
+//		var p = '<a href="javascript:;" class="active J_menuTab" data-id="' + o + '">' + l + ' <i class="fa fa-times-circle"></i></a>';
148
+//			$(".J_menuTab").removeClass("active");
149
+//			var n = '<iframe class="J_iframe" name="iframe' + m + '" width="100%" height="100%" src="' + o + '" frameborder="0" data-id="' + o + '" seamless></iframe>';
150
+//			$(".J_mainContent").append(n);
151
+//			$(".J_menuTabs .page-tabs-content").append(p);
152
+//			g($(".J_menuTab.active"));
153
+//			
115 154
 			//多标签
116 155
 //		$(".J_menuTab").each(function() {
117 156
 //			if($(this).data("id") == o) {

+ 1 - 1
CallCenterWeb.UI/login.html

@@ -119,7 +119,7 @@
119 119
 						/*请求后台*/
120 120
 						$.ajax({
121 121
 							type: "post",
122
-							url: huayi.config.callcenter_url + "/Login/login",
122
+							url: huayi.config.callcenter_url + "Login/login",
123 123
 							dataType: 'json',
124 124
 							async: true,
125 125
 							data: {