张延森 2 lat temu
rodzic
commit
23cdafbb48

+ 2
- 1
resources/static/css/public.css Wyświetl plik

480
 
480
 
481
 /*服务评价统计*/
481
 /*服务评价统计*/
482
 .serve {overflow: hidden;clear: both;}
482
 .serve {overflow: hidden;clear: both;}
483
-.serve dl{background:#f5f5f5;width: calc(33.333% - 10px);margin:0 5px;float:left;}
483
+.serve dl{width: calc(33.333% - 10px);float:left; min-height: 300px;}
484
+.serve dl:nth-of-type(n+4) { margin-top: 40px; }
484
 .serve dl dt{width:100%;text-align:center;height:30px;font-size: 16px;margin-top:8px;}
485
 .serve dl dt{width:100%;text-align:center;height:30px;font-size: 16px;margin-top:8px;}
485
 .serve dl dd{background:#fff; padding:15px 0;text-align:center;margin:0 8px 8px 8px;}
486
 .serve dl dd{background:#fff; padding:15px 0;text-align:center;margin:0 8px 8px 8px;}
486
 .serve dl dd a{width:32%;display:inline-block;text-align:center;text-decoration:none;color:#555;}
487
 .serve dl dd a{width:32%;display:inline-block;text-align:center;text-decoration:none;color:#555;}

+ 188
- 58
resources/static/js/task/details.js Wyświetl plik

7
 	 
7
 	 
8
 	 let dictArr = getDictValByDictType("config_if")
8
 	 let dictArr = getDictValByDictType("config_if")
9
 	 $('#iflyyl').append(getDictText(dictArr,$("#iflyyl").attr("selOpt")));
9
 	 $('#iflyyl').append(getDictText(dictArr,$("#iflyyl").attr("selOpt")));
10
-	 $('#ifjyyl').append(getDictText(dictArr,$("#ifjyyl").attr("selOpt")));	 
10
+	 $('#ifjyyl').append(getDictText(dictArr,$("#ifjyyl").attr("selOpt")));
11
+
12
+	 var optTpl = {
13
+		color: ['#3DE0A4', '#FF8940', '#CB55E9'],
14
+		series: [
15
+			{
16
+				type: 'gauge',
17
+				anchor: {
18
+					show: true,
19
+					showAbove: true,
20
+					size: 8,
21
+					itemStyle: {
22
+						color: '#3FC9F4'
23
+					}
24
+				},
25
+				pointer: {
26
+					icon: 'path://M2.9,0.7L2.9,0.7c1.4,0,2.6,1.2,2.6,2.6v115c0,1.4-1.2,2.6-2.6,2.6l0,0c-1.4,0-2.6-1.2-2.6-2.6V3.3C0.3,1.9,1.4,0.7,2.9,0.7z',
27
+					width: 4,
28
+					length: '80%',
29
+					offsetCenter: [0, '8%']
30
+				},
31
+				progress: {
32
+					show: true,
33
+					overlap: true,
34
+					roundCap: true,
35
+					width: 4
36
+				},
37
+				axisLine: {
38
+					roundCap: true,
39
+					lineStyle: {
40
+						width: 4
41
+					}
42
+				},
43
+				axisLabel: {
44
+					fontSize: 10
45
+				},
46
+				data: [],
47
+				title: {
48
+					fontSize: 14
49
+				},
50
+				detail: {
51
+					width: 40,
52
+					height: 14,
53
+					fontSize: 14,
54
+					color: '#fff',
55
+					backgroundColor: 'auto',
56
+					borderRadius: 3,
57
+					formatter: '{value}%'
58
+				}
59
+			}
60
+		]
61
+	};
62
+
63
+	var echartInsts = {};
64
+	var ids = [];
11
 	
65
 	
12
 	 let queryParams = {};
66
 	 let queryParams = {};
13
 		queryParams.schCols = 'itemCode,itemName';
67
 		queryParams.schCols = 'itemCode,itemName';
25
 			dataType : 'json',
79
 			dataType : 'json',
26
 			success : function(data) {
80
 			success : function(data) {
27
 				var rows = data.rows;
81
 				var rows = data.rows;
28
-				let itemTxt = [];
29
-				for(var m = 0; m < rows.length; m++){
30
-					let row = rows[m]
31
-					let str = '<dl class="gray" id="'+row.itemCode+'_div"><dt>'+row.itemName+'评价</dt><dd>'+
32
-                   	    '<a href="javascript:;"><span id="'+row.itemCode+'_1">0%</span> 优</a>'+
33
-                    '<a href="javascript:;"><span id="'+row.itemCode+'_2">0%</span> 良</a>'+
34
-                    '<a href="javascript:;"><span id="'+row.itemCode+'_3">0%</span> 差</a></dd></dl>'
35
-                    $("#commentDiv").append(str)
36
-                    for(let n=0;n<itemArr.length;n++){
37
-                    	if(itemArr[n] == row.itemCode){
38
-                    		itemTxt[itemTxt.length] = row.itemName
39
-                    		$("#"+ row.itemCode + "_div").removeClass("gray")
40
-                    	}
41
-                    }
42
-				}
43
-				$("#config_evaluate_item").text(itemTxt.join("、"))
82
+
83
+				var dlHtml = rows.map(function(item) {
84
+					var domId = 'dl_'+item.itemCode;
85
+					ids.push(item.itemCode)
86
+					return '<dl id="'+domId+'"></dl>';
87
+				}).join('');
88
+				$("#commentDiv").append(dlHtml)
89
+
90
+				var evalText = rows.filter(function(item) {
91
+					var found = itemArr.filter(function(x) { return x == item.itemCode })[0];
92
+					return !!found;
93
+				}).map(function(x) { return x.itemName }).join("、")
94
+
95
+				ids.reduce(function(insts, id) {
96
+					var el = document.querySelector("#dl_"+id);
97
+					var echartInst = echarts.init(el);
98
+					var title = rows.filter(function(x){ return x.itemCode == id; })[0].itemName;
99
+					echartInst.setOption(Object.assign({}, optTpl, { title: { text: title + '评价', left: 'center' } }));
100
+					insts[id] = echartInst;
101
+					return insts;
102
+				}, echartInsts);
103
+
104
+				// let itemTxt = [];
105
+				// for(var m = 0; m < rows.length; m++){
106
+				// 	let row = rows[m]
107
+				// 	let str = '<dl class="gray" id="'+row.itemCode+'_div"><dt>'+row.itemName+'评价</dt><dd>'+
108
+        //            	    '<a href="javascript:;"><span id="'+row.itemCode+'_1">0%</span> 优</a>'+
109
+        //             '<a href="javascript:;"><span id="'+row.itemCode+'_2">0%</span> 良</a>'+
110
+        //             '<a href="javascript:;"><span id="'+row.itemCode+'_3">0%</span> 差</a></dd></dl>'
111
+        //             $("#commentDiv").append(str)
112
+        //             for(let n=0;n<itemArr.length;n++){
113
+        //             	if(itemArr[n] == row.itemCode){
114
+        //             		itemTxt[itemTxt.length] = row.itemName
115
+        //             		$("#"+ row.itemCode + "_div").removeClass("gray")
116
+        //             	}
117
+        //             }
118
+				// }
119
+				$("#config_evaluate_item").text(evalText)
44
 			}
120
 			}
45
 		});	
121
 		});	
46
 		$.ajax({
122
 		$.ajax({
48
 			async: false,
124
 			async: false,
49
 			dataType:"json",
125
 			dataType:"json",
50
 			success:function(datas){
126
 			success:function(datas){
51
-				let json = {};
52
-				if(datas.length > 0){
53
-					for(let m=0;m<datas.length;m++){
54
-						let data = datas[m]
55
-						for(let key in data){
56
-							if(isRealNum(data[key])){
57
-								if(json[key] != null){
58
-									json[key] = data[key]+json[key] 
59
-								}else{
60
-									json[key] = data[key]
61
-								}
127
+
128
+				for (data of (datas || [])) {
129
+					var keys = Object.keys(data);
130
+					var id = keys.filter(function(key) { return ids.indexOf(key) > -1; })[0];
131
+					var totalNum = data[id];
132
+
133
+					var perfect = (data[id + "_1"] || 0) * 100 / totalNum;
134
+					var good = (data[id + "_2"] || 0) * 100 / totalNum;
135
+					var poor = (data[id + "_3"] || 0) * 100 / totalNum;
136
+
137
+					var gaugeData = [
138
+						{
139
+							value: Number(perfect).toFixed(2) - 0,
140
+							name: '优',
141
+							title: {
142
+								offsetCenter: ['-100%', '90%']
143
+							},
144
+							detail: {
145
+								offsetCenter: ['-100%', '120%']
146
+							}
147
+						},
148
+						{
149
+							value: Number(good).toFixed(2) - 0,
150
+							name: '良',
151
+							title: {
152
+								offsetCenter: ['0%', '90%']
153
+							},
154
+							detail: {
155
+								offsetCenter: ['0%', '120%']
156
+							}
157
+						},
158
+						{
159
+							value: Number(poor).toFixed(2) - 0,
160
+							name: '差',
161
+							title: {
162
+								offsetCenter: ['100%', '90%']
163
+							},
164
+							detail: {
165
+								offsetCenter: ['100%', '120%']
62
 							}
166
 							}
63
 						}
167
 						}
64
-					}
65
-					for(let key in json){					
66
-						if($("#"+key).length > 0){
67
-								let val = json[key]
68
-								let totalNum = json[key.substring(0,2)]
69
-								let tmpNum = (val/totalNum*100).toFixed()
70
-								$("#"+key).text(tmpNum + "%");
71
-								$("#"+key).attr("hidNum",tmpNum)
72
-						}
73
-					}
74
-					$('#commentDiv').find("dl").each(function(){
75
-						var val=$(this).attr("class");
76
-						if(val.indexOf("gray") == -1){
77
-							let differId = null
78
-							let tmpNm = 100;
79
-							$(this).find("span").each(function(){
80
-								if(typeof($(this).attr("hidnum"))!="undefined"){
81
-									tmpNm = tmpNm - $(this).attr("hidnum")*1;
82
-								}else{
83
-									differId = $(this).attr("id")
84
-								}
85
-							})
86
-							if($("#"+differId).text()!="0%"){
87
-								$("#"+differId).text(tmpNm +"%")
168
+					];
88
 
169
 
170
+					var echartInst = echartInsts[id];
171
+					echartInst.setOption({
172
+						series: [
173
+							{
174
+								data: gaugeData
89
 							}
175
 							}
90
-						}else{
91
-							$(this).find("span").each(function(){
92
-								$(this).text("0%");
93
-							})
94
-						}
95
-						
176
+						]
96
 					})
177
 					})
97
 				}
178
 				}
179
+
180
+				// let json = {};
181
+				// if(datas.length > 0){
182
+				// 	for(let m=0;m<datas.length;m++){
183
+				// 		let data = datas[m]
184
+				// 		for(let key in data){
185
+				// 			if(isRealNum(data[key])){
186
+				// 				if(json[key] != null){
187
+				// 					json[key] = data[key]+json[key] 
188
+				// 				}else{
189
+				// 					json[key] = data[key]
190
+				// 				}
191
+				// 			}
192
+				// 		}
193
+				// 	}
194
+
195
+				// 	for(let key in json){					
196
+				// 		if($("#"+key).length > 0){
197
+				// 				let val = json[key]
198
+				// 				let totalNum = json[key.substring(0,2)]
199
+				// 				let tmpNum = (val/totalNum*100).toFixed()
200
+				// 				$("#"+key).text(tmpNum + "%");
201
+				// 				$("#"+key).attr("hidNum",tmpNum)
202
+				// 		}
203
+				// 	}
204
+				// 	$('#commentDiv').find("dl").each(function(){
205
+				// 		var val=$(this).attr("class");
206
+				// 		if(val.indexOf("gray") == -1){
207
+				// 			let differId = null
208
+				// 			let tmpNm = 100;
209
+				// 			$(this).find("span").each(function(){
210
+				// 				if(typeof($(this).attr("hidnum"))!="undefined"){
211
+				// 					tmpNm = tmpNm - $(this).attr("hidnum")*1;
212
+				// 				}else{
213
+				// 					differId = $(this).attr("id")
214
+				// 				}
215
+				// 			})
216
+				// 			if($("#"+differId).text()!="0%"){
217
+				// 				$("#"+differId).text(tmpNm +"%")
218
+
219
+				// 			}
220
+				// 		}else{
221
+				// 			$(this).find("span").each(function(){
222
+				// 				$(this).text("0%");
223
+				// 			})
224
+				// 		}
225
+						
226
+				// 	})
227
+				// }
98
 				
228
 				
99
 			}
229
 			}
100
 		});
230
 		});

+ 1
- 0
resources/templates/task/details.html Wyświetl plik

3
 	th:replace="common/common_header::common_header(~{},~{},~{::style},~{::script},'')">
3
 	th:replace="common/common_header::common_header(~{},~{},~{::style},~{::script},'')">
4
 <meta charset="utf-8">
4
 <meta charset="utf-8">
5
 <script th:src="@{/js/task/details.js}"></script>
5
 <script th:src="@{/js/task/details.js}"></script>
6
+<script th:src="@{/js/chart/echarts.min.js}" type="text/javascript"></script>
6
 <style type="text/css">
7
 <style type="text/css">
7
 .view-info>div>label{min-width: 148px;}
8
 .view-info>div>label{min-width: 148px;}
8
 </style>
9
 </style>