Commit 55cfd4e084bd5786bbf50eec6b9c55eccdb8a215
Merge branch 'dev' of http://172.16.29.40:8010/MES/IOT into dev
Showing
17 changed files
with
1163 additions
and
290 deletions
Hh.Mes.T4/CshtmlTemplate.cs
... | ... | @@ -18,7 +18,7 @@ namespace Hh.Mes.T4 |
18 | 18 | /// Class to produce the template output |
19 | 19 | /// </summary> |
20 | 20 | |
21 | - #line 1 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
21 | + #line 1 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
22 | 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.TextTemplating", "17.0.0.0")] |
23 | 23 | public partial class CshtmlTemplate : CshtmlTemplateBase |
24 | 24 | { |
... | ... | @@ -31,7 +31,7 @@ namespace Hh.Mes.T4 |
31 | 31 | this.Write("@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers\r\n@{\r\n ViewData[\"title\"] =" + |
32 | 32 | " \""); |
33 | 33 | |
34 | - #line 8 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
34 | + #line 8 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
35 | 35 | this.Write(this.ToStringHelper.ToStringWithCulture(TitleName)); |
36 | 36 | |
37 | 37 | #line default |
... | ... | @@ -59,25 +59,25 @@ namespace Hh.Mes.T4 |
59 | 59 | <div class=""layui-row""> |
60 | 60 | "); |
61 | 61 | |
62 | - #line 29 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
62 | + #line 29 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
63 | 63 | foreach (var item in QueryColumns) |
64 | 64 | |
65 | 65 | #line default |
66 | 66 | #line hidden |
67 | 67 | |
68 | - #line 30 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
68 | + #line 30 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
69 | 69 | { |
70 | 70 | |
71 | 71 | #line default |
72 | 72 | #line hidden |
73 | 73 | |
74 | - #line 31 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
74 | + #line 31 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
75 | 75 | if(item.TypeName.Equals("DateTime", StringComparison.OrdinalIgnoreCase)) |
76 | 76 | |
77 | 77 | #line default |
78 | 78 | #line hidden |
79 | 79 | |
80 | - #line 32 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
80 | + #line 32 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
81 | 81 | { |
82 | 82 | |
83 | 83 | #line default |
... | ... | @@ -85,7 +85,7 @@ namespace Hh.Mes.T4 |
85 | 85 | this.Write(" <div class=\"layui-col-sm3\">\r\n " + |
86 | 86 | "<label class=\"layui-form-label\">"); |
87 | 87 | |
88 | - #line 34 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
88 | + #line 34 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
89 | 89 | this.Write(this.ToStringHelper.ToStringWithCulture(string.IsNullOrWhiteSpace(item.ColumnDescription) ? $"{item.ColumnName}" : $"{item.ColumnDescription}")); |
90 | 90 | |
91 | 91 | #line default |
... | ... | @@ -93,7 +93,7 @@ namespace Hh.Mes.T4 |
93 | 93 | this.Write("</label>\r\n <div class=\"layui-input-inline\">\r\n " + |
94 | 94 | " <input name=\""); |
95 | 95 | |
96 | - #line 36 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
96 | + #line 36 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
97 | 97 | this.Write(this.ToStringHelper.ToStringWithCulture(item.ColumnName)); |
98 | 98 | |
99 | 99 | #line default |
... | ... | @@ -101,7 +101,7 @@ namespace Hh.Mes.T4 |
101 | 101 | this.Write("\" type=\"text\" autocomplete=\"off\" class=\"layui-input layui-date\">\r\n " + |
102 | 102 | " </div>\r\n </div>\r\n"); |
103 | 103 | |
104 | - #line 39 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
104 | + #line 39 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
105 | 105 | }else if(item.TypeName.Equals("Int", StringComparison.OrdinalIgnoreCase)){ |
106 | 106 | |
107 | 107 | #line default |
... | ... | @@ -109,7 +109,7 @@ namespace Hh.Mes.T4 |
109 | 109 | this.Write(" <div class=\"layui-col-sm3\">\r\n " + |
110 | 110 | "<label class=\"layui-form-label\">"); |
111 | 111 | |
112 | - #line 41 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
112 | + #line 41 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
113 | 113 | this.Write(this.ToStringHelper.ToStringWithCulture(string.IsNullOrWhiteSpace(item.ColumnDescription) ? $"{item.ColumnName}" : $"{item.ColumnDescription}")); |
114 | 114 | |
115 | 115 | #line default |
... | ... | @@ -117,7 +117,7 @@ namespace Hh.Mes.T4 |
117 | 117 | this.Write("</label>\r\n <div class=\"layui-input-inline\">\r\n " + |
118 | 118 | " <input name=\""); |
119 | 119 | |
120 | - #line 43 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
120 | + #line 43 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
121 | 121 | this.Write(this.ToStringHelper.ToStringWithCulture(item.ColumnName)); |
122 | 122 | |
123 | 123 | #line default |
... | ... | @@ -125,7 +125,7 @@ namespace Hh.Mes.T4 |
125 | 125 | this.Write("\" type=\"number\" autocomplete=\"off\" class=\"layui-input\">\r\n " + |
126 | 126 | " </div>\r\n </div>\r\n"); |
127 | 127 | |
128 | - #line 46 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
128 | + #line 46 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
129 | 129 | }else{ |
130 | 130 | |
131 | 131 | #line default |
... | ... | @@ -133,7 +133,7 @@ namespace Hh.Mes.T4 |
133 | 133 | this.Write(" <div class=\"layui-col-sm3\">\r\n " + |
134 | 134 | "<label class=\"layui-form-label\">"); |
135 | 135 | |
136 | - #line 48 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
136 | + #line 48 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
137 | 137 | this.Write(this.ToStringHelper.ToStringWithCulture(string.IsNullOrWhiteSpace(item.ColumnDescription) ? $"{item.ColumnName}" : $"{item.ColumnDescription}")); |
138 | 138 | |
139 | 139 | #line default |
... | ... | @@ -141,7 +141,7 @@ namespace Hh.Mes.T4 |
141 | 141 | this.Write("</label>\r\n <div class=\"layui-input-inline\">\r\n " + |
142 | 142 | " <input name=\""); |
143 | 143 | |
144 | - #line 50 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
144 | + #line 50 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
145 | 145 | this.Write(this.ToStringHelper.ToStringWithCulture(item.ColumnName)); |
146 | 146 | |
147 | 147 | #line default |
... | ... | @@ -149,7 +149,7 @@ namespace Hh.Mes.T4 |
149 | 149 | this.Write("\" type=\"text\" autocomplete=\"off\" class=\"layui-input\">\r\n " + |
150 | 150 | " </div>\r\n </div>\r\n"); |
151 | 151 | |
152 | - #line 53 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
152 | + #line 53 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
153 | 153 | }} |
154 | 154 | |
155 | 155 | #line default |
... | ... | @@ -168,25 +168,25 @@ namespace Hh.Mes.T4 |
168 | 168 | <div class=""layui-row""> |
169 | 169 | "); |
170 | 170 | |
171 | - #line 65 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
171 | + #line 65 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
172 | 172 | foreach (var item in EditColumns) |
173 | 173 | |
174 | 174 | #line default |
175 | 175 | #line hidden |
176 | 176 | |
177 | - #line 66 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
177 | + #line 66 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
178 | 178 | { |
179 | 179 | |
180 | 180 | #line default |
181 | 181 | #line hidden |
182 | 182 | |
183 | - #line 67 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
183 | + #line 67 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
184 | 184 | if(item.TypeName.Equals("DateTime", StringComparison.OrdinalIgnoreCase)) |
185 | 185 | |
186 | 186 | #line default |
187 | 187 | #line hidden |
188 | 188 | |
189 | - #line 68 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
189 | + #line 68 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
190 | 190 | { |
191 | 191 | |
192 | 192 | #line default |
... | ... | @@ -194,7 +194,7 @@ namespace Hh.Mes.T4 |
194 | 194 | this.Write(" <div class=\"layui-col-sm6\">\r\n <label class=\"layui-form-label l" + |
195 | 195 | "ayui-col-sm3\">"); |
196 | 196 | |
197 | - #line 70 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
197 | + #line 70 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
198 | 198 | this.Write(this.ToStringHelper.ToStringWithCulture(string.IsNullOrWhiteSpace(item.ColumnDescription) ? $"{item.ColumnName}" : $"{item.ColumnDescription}")); |
199 | 199 | |
200 | 200 | #line default |
... | ... | @@ -202,7 +202,7 @@ namespace Hh.Mes.T4 |
202 | 202 | this.Write("<span class=\"lable-required\">*</span></label>\r\n <div class=\"layui-inpu" + |
203 | 203 | "t-inline layui-col-sm6\">\r\n <input name=\""); |
204 | 204 | |
205 | - #line 72 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
205 | + #line 72 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
206 | 206 | this.Write(this.ToStringHelper.ToStringWithCulture(item.ColumnName)); |
207 | 207 | |
208 | 208 | #line default |
... | ... | @@ -210,7 +210,7 @@ namespace Hh.Mes.T4 |
210 | 210 | this.Write("\" type=\"text\" lay-verify=\"required\" autocomplete=\"off\" class=\"layui-input layui-d" + |
211 | 211 | "ate\">\r\n </div>\r\n </div>\r\n"); |
212 | 212 | |
213 | - #line 75 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
213 | + #line 75 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
214 | 214 | }else if(item.TypeName.Equals("Int", StringComparison.OrdinalIgnoreCase)){ |
215 | 215 | |
216 | 216 | #line default |
... | ... | @@ -218,7 +218,7 @@ namespace Hh.Mes.T4 |
218 | 218 | this.Write(" <div class=\"layui-col-sm6\">\r\n <label class=\"layui-form-label l" + |
219 | 219 | "ayui-col-sm3\">"); |
220 | 220 | |
221 | - #line 77 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
221 | + #line 77 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
222 | 222 | this.Write(this.ToStringHelper.ToStringWithCulture(string.IsNullOrWhiteSpace(item.ColumnDescription) ? $"{item.ColumnName}" : $"{item.ColumnDescription}")); |
223 | 223 | |
224 | 224 | #line default |
... | ... | @@ -226,7 +226,7 @@ namespace Hh.Mes.T4 |
226 | 226 | this.Write("<span class=\"lable-required\">*</span></label>\r\n <div class=\"layui-inpu" + |
227 | 227 | "t-inline layui-col-sm6\">\r\n <input name=\""); |
228 | 228 | |
229 | - #line 79 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
229 | + #line 79 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
230 | 230 | this.Write(this.ToStringHelper.ToStringWithCulture(item.ColumnName)); |
231 | 231 | |
232 | 232 | #line default |
... | ... | @@ -234,7 +234,7 @@ namespace Hh.Mes.T4 |
234 | 234 | this.Write("\" type=\"number\" lay-verify=\"required\" autocomplete=\"off\" class=\"layui-input\">\r\n " + |
235 | 235 | " </div>\r\n </div>\r\n"); |
236 | 236 | |
237 | - #line 82 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
237 | + #line 82 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
238 | 238 | }else{ |
239 | 239 | |
240 | 240 | #line default |
... | ... | @@ -242,7 +242,7 @@ namespace Hh.Mes.T4 |
242 | 242 | this.Write(" <div class=\"layui-col-sm6\">\r\n <label class=\"layui-form-label l" + |
243 | 243 | "ayui-col-sm3\">"); |
244 | 244 | |
245 | - #line 84 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
245 | + #line 84 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
246 | 246 | this.Write(this.ToStringHelper.ToStringWithCulture(string.IsNullOrWhiteSpace(item.ColumnDescription) ? $"{item.ColumnName}" : $"{item.ColumnDescription}")); |
247 | 247 | |
248 | 248 | #line default |
... | ... | @@ -250,7 +250,7 @@ namespace Hh.Mes.T4 |
250 | 250 | this.Write("<span class=\"lable-required\">*</span></label>\r\n <div class=\"layui-inpu" + |
251 | 251 | "t-inline layui-col-sm6\">\r\n <input type=\"text\" name=\""); |
252 | 252 | |
253 | - #line 86 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
253 | + #line 86 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
254 | 254 | this.Write(this.ToStringHelper.ToStringWithCulture(item.ColumnName)); |
255 | 255 | |
256 | 256 | #line default |
... | ... | @@ -258,7 +258,7 @@ namespace Hh.Mes.T4 |
258 | 258 | this.Write("\" lay-verify=\"required\" autocomplete=\"off\" class=\"layui-input\">\r\n </di" + |
259 | 259 | "v>\r\n </div>\r\n"); |
260 | 260 | |
261 | - #line 89 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
261 | + #line 89 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
262 | 262 | }} |
263 | 263 | |
264 | 264 | #line default |
... | ... | @@ -287,7 +287,7 @@ namespace Hh.Mes.T4 |
287 | 287 | <a href=""javascript:;"" class=""layui-btn layui-btn-sm layui-btn-mini"" lay-event=""btnRefresh""><i class=""layui-icon""></i>刷新</a> |
288 | 288 | {{ loadMenus("""); |
289 | 289 | |
290 | - #line 111 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
290 | + #line 111 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
291 | 291 | this.Write(this.ToStringHelper.ToStringWithCulture(ControllerName)); |
292 | 292 | |
293 | 293 | #line default |
... | ... | @@ -295,14 +295,14 @@ namespace Hh.Mes.T4 |
295 | 295 | this.Write("\", 1) }}\r\n </div>\r\n</script>\r\n\r\n@section Scripts\r\n{\r\n <script type=\"text/ja" + |
296 | 296 | "vascript\" src=\"/productjs/"); |
297 | 297 | |
298 | - #line 117 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
298 | + #line 117 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
299 | 299 | this.Write(this.ToStringHelper.ToStringWithCulture(AreaName)); |
300 | 300 | |
301 | 301 | #line default |
302 | 302 | #line hidden |
303 | 303 | this.Write("/"); |
304 | 304 | |
305 | - #line 117 "E:\project\mes\海能\haiNeng\Hh.Mes.T4\CshtmlTemplate.tt" | |
305 | + #line 117 "E:\project\mes\IOT\Hh.Mes.T4\CshtmlTemplate.tt" | |
306 | 306 | this.Write(this.ToStringHelper.ToStringWithCulture(ControllerName)); |
307 | 307 | |
308 | 308 | #line default |
... | ... |
web/WebMvc/Areas/configure/Views/BaseProject/Index.cshtml
... | ... | @@ -106,24 +106,25 @@ |
106 | 106 | <div class="layui-col-sm12"> |
107 | 107 | <label class="layui-form-label layui-col-sm3">项目地址<span class="lable-required">*</span></label> |
108 | 108 | <div class="layui-input-inline layui-col-sm9 div-flex"> |
109 | - <input type="text" name="projectAddress" placeholder="请输入完整的地址,请不要频繁点击使用!" autocomplete="off" class="layui-input"> | |
110 | - <input type="button" id="btnGetPoint" style="margin-left: 2px" class="layui-btn" value="解析"> | |
109 | + <input type="text" name="projectAddress" placeholder="输入完整的地址(x省x市x)确保更正确,请不要频繁点击!" autocomplete="off" class="layui-input"> | |
110 | + <input type="button" id="btnGetPoint" style="margin-left: 2px" class="layui-btn" value="地址解析经纬度"> | |
111 | 111 | </div> |
112 | 112 | </div> |
113 | 113 | <div class="layui-col-sm6"> |
114 | 114 | <label class="layui-form-label layui-col-sm3">经度<span class="lable-required">*</span></label> |
115 | 115 | <div class="layui-input-inline layui-col-sm6"> |
116 | - <input type="text" name="longitude" lay-verify="required" autocomplete="off" class="layui-input"> | |
116 | + <input type="number" name="longitude" lay-verify="required" autocomplete="off" maxlength="20" class="layui-input"> | |
117 | 117 | </div> |
118 | 118 | </div> |
119 | 119 | <div class="layui-col-sm6"> |
120 | 120 | <label class="layui-form-label layui-col-sm3">纬度<span class="lable-required">*</span></label> |
121 | 121 | <div class="layui-input-inline layui-col-sm6"> |
122 | - <input type="text" name="latitude" lay-verify="required" autocomplete="off" class="layui-input"> | |
122 | + <input type="number" name="latitude" lay-verify="required" autocomplete="off" maxlength="20" class="layui-input"> | |
123 | 123 | </div> |
124 | 124 | </div> |
125 | - <div class="layui-form-item layui-form-text layui-col-sm10" style="margin-top:10px;"> | |
126 | - <label class="layui-form-label">经纬度辅助工具:<a class="sys-a" href="https://api.map.baidu.com/lbsapi/getpoint/" target="_blank">点击打开百度经纬度(结果可复制)</a></label> | |
125 | + <div class="layui-form-item layui-form-text layui-col-sm11 div-flex" style="margin-top:10px;"> | |
126 | + <label class="layui-form-label">拾取坐标系统辅助工具:<a class="sys-a" href="https://api.map.baidu.com/lbsapi/getpoint/" target="_blank">点击打开拾取坐标系统辅助(结果可复制)</a></label> | |
127 | + <button class="layui-btn" id="btnCopyLonLat">解析复制板反写填充经纬度值</button> | |
127 | 128 | </div> |
128 | 129 | <div class="layui-form-item"> |
129 | 130 | <!--表单验证按钮--> |
... | ... |
web/WebMvc/Views/Home/Index.cshtml
... | ... | @@ -67,11 +67,11 @@ |
67 | 67 | border: 1px solid #D2D2D2; |
68 | 68 | } |
69 | 69 | |
70 | - .input-search:focus { | |
71 | - border-color: #66afe9 !important; | |
72 | - outline: 0; | |
73 | - box-shadow: inset 0 1px 1px rgb(0 0 0 / 8%), 0 0 8px rgb(102 175 233 / 60%); | |
74 | - } | |
70 | + .input-search:focus { | |
71 | + border-color: #66afe9 !important; | |
72 | + outline: 0; | |
73 | + box-shadow: inset 0 1px 1px rgb(0 0 0 / 8%), 0 0 8px rgb(102 175 233 / 60%); | |
74 | + } | |
75 | 75 | </style> |
76 | 76 | </head> |
77 | 77 | <body class="main_body HPlus"> |
... | ... | @@ -85,28 +85,13 @@ |
85 | 85 | <a href="javascript:;" class="hideMenu"><i class="layui-icon" style="margin-left:-45px;" data-icon=""></i></a> |
86 | 86 | <!-- 顶部右侧菜单 --> |
87 | 87 | <ul class="layui-nav top_menu"> |
88 | - @*<li class="layui-nav-item"> | |
89 | - <a href="javascript:;" onclick="LogStatistics();">接口错误日志统计<span id="LogStatistics" class="" style=" right: 10px; top: 10px;"></span></a> | |
90 | - </li>*@ | |
91 | - @*<li class="layui-nav-item"> | |
92 | - <a href="javascript:;" onclick="UnfinishedOrderInfo(1);">工单信息<span id="RedDot" class="" style=" right: 10px; top: 10px;"></span></a> | |
93 | - </li>*@ | |
94 | - @*<li class="layui-nav-item"> | |
95 | - <a href="javascript:;"> | |
96 | - <cite>打卡管理</cite> | |
97 | - </a> | |
98 | - <dl class="layui-nav-child"> | |
99 | - <dd><a href="javascript:;" onclick="WorkAttendance();"><i class="layui-icon" data-icon=""></i><cite>打卡</cite></a></dd> | |
100 | - <dd><a href="javascript:;" onclick="WorkAttendanceLog();"><i class="layui-icon" data-icon=""></i><cite>打卡记录</cite></a></dd> | |
101 | - </dl> | |
102 | - </li>*@ | |
103 | 88 | <li class="layui-nav-item"> |
104 | 89 | <a href="javascript:;"> |
105 | 90 | <cite>设置</cite> |
106 | 91 | </a> |
107 | 92 | <dl class="layui-nav-child"> |
108 | 93 | <dd><a href="javascript:;" class="changepwd"><i class="layui-icon" data-icon=""></i><cite>修改密码</cite></a></dd> |
109 | - @*<dd><a href="javascript:;" class="lockcms"><i class="layui-icon" data-icon=""></i><cite>锁屏</cite></a></dd>*@ | |
94 | +@* <dd><a href="javascript:;" class="lockcms"><i class="layui-icon" data-icon=""></i><cite>锁屏</cite></a></dd>*@ | |
110 | 95 | </dl> |
111 | 96 | </li> |
112 | 97 | <li class="layui-nav-item "> |
... | ... | @@ -120,9 +105,6 @@ |
120 | 105 | </div> |
121 | 106 | <!-- 左侧导航 --> |
122 | 107 | <div class="layui-side layui-bg-black"> |
123 | - @*<div> | |
124 | - <img src="~/images/company2.jpg" alt="数字化智能管理" style="height:120px;object-fit: cover;" /> | |
125 | - </div>*@ | |
126 | 108 | <div style="border-bottom:2px double gray;padding:5px; background-color: white; color: #000;"> |
127 | 109 | <span id="loginInfo"></span> |
128 | 110 | <span id="loginTime"></span> |
... | ... | @@ -137,7 +119,6 @@ |
137 | 119 | |
138 | 120 | <!-- 右侧内容 --> |
139 | 121 | <div class="layui-body layui-form"> |
140 | - | |
141 | 122 | <div class="layui-tab layui-tab-card marg0" lay-filter="bodyTab" id="top_tabs_box"> |
142 | 123 | <ul class="layui-tab-title top_tab" id="top_tabs"> |
143 | 124 | <li class="layui-this" lay-id=""><i class="iconfont icon-computer"></i> <cite>项目地图</cite></li> |
... | ... | @@ -164,7 +145,6 @@ |
164 | 145 | </ul> |
165 | 146 | <div class="layui-tab-content clildFrame"> |
166 | 147 | <div class="layui-tab-item layui-show"> |
167 | - @*<iframe src="/Home/Main"></iframe>*@ | |
168 | 148 | <iframe src="/Home/ProjectMap"></iframe> |
169 | 149 | </div> |
170 | 150 | </div> |
... | ... | @@ -175,32 +155,6 @@ |
175 | 155 | <p>@ViewBag.copyright</p> |
176 | 156 | </div> |
177 | 157 | </div> |
178 | - <!-- 移动导航 --> | |
179 | - <div class="site-tree-mobile layui-hide"><i class="layui-icon"></i></div> | |
180 | - <div class="site-mobile-shade"></div> | |
181 | - | |
182 | - <!-- 考勤打卡 --> | |
183 | - <div id="clock" style="display: none;"> | |
184 | - <div class="layui-tab layui-tab-brief" style="margin-top:10px; width:320px" lay-filter="loginWebcam"> | |
185 | - <ul class="layui-tab-title"> | |
186 | - <li class="layui-this" lay-id="1">人脸识别</li> | |
187 | - <li lay-id="3">刷卡登入</li> | |
188 | - </ul> | |
189 | - <div class="layui-tab-content"> | |
190 | - <div class="layui-tab-item layui-show"> | |
191 | - <div id="webcam" style="margin: auto; margin-top: -32px;"></div> | |
192 | - <button class="layui-btn loginbtn" style="width: 105px;margin-top: -32px;" id="btnTakeSnapshot">拍照登入</button> | |
193 | - </div> | |
194 | - <div class="layui-tab-item"> | |
195 | - <form action="#"> | |
196 | - <input id="IdCard" name="IdCard" type="password" autocomplete="off" style="margin-top: 25px;" class="layui-input" placeholder="请输入卡号"> | |
197 | - </form> | |
198 | - </div> | |
199 | - </div> | |
200 | - </div> | |
201 | - <div id="ccvMessage" style="clear:both;color: #009688;margin-top: 430px;"></div> | |
202 | - <div id="loginMessage" style="clear:both;color: #009688;margin-top: 5px;"></div> | |
203 | - </div> | |
204 | 158 | |
205 | 159 | <div class="LogTips" style="display:none"> |
206 | 160 | <div class="inter-con"> |
... | ... | @@ -275,9 +229,7 @@ |
275 | 229 | <script type="text/javascript" src="/layui/layui.js"></script> |
276 | 230 | <script type="text/javascript" src="/js/leftNav.js"></script> |
277 | 231 | <script type="text/javascript" src="/js/index.js" asp-append-version="true"></script> |
278 | - <script src="~/js/face/webcam.js"></script> | |
279 | - <script src="~/js/face/ccv.js"></script> | |
280 | - <script src="~/js/face/face.js"></script> | |
232 | + | |
281 | 233 | |
282 | 234 | <script> |
283 | 235 | @Html.Raw(ViewBag.EnumProjectStatus) |
... | ... |
web/WebMvc/Views/Home/ProjectMap.cshtml
1 | 1 | @section header |
2 | 2 | { |
3 | + <link href="~/css/iot/iconfont.css" rel="stylesheet" /> | |
3 | 4 | <style type="text/css"> |
4 | 5 | body, html, #container { |
5 | 6 | width: 100%; |
... | ... | @@ -12,20 +13,95 @@ |
12 | 13 | .BMap_bubble_title { |
13 | 14 | font-weight: 900; |
14 | 15 | } |
15 | - | |
16 | + | |
17 | + .footer-list { | |
18 | + position:fixed; | |
19 | + bottom:10px; | |
20 | + z-index: 9999; | |
21 | + width: 99.9%; | |
22 | + height: 70px; | |
23 | + justify-content: space-evenly; | |
24 | + font-size: 18px; | |
25 | + } | |
26 | + | |
27 | + .footer-project, .footer-eq, .footer-onlineRate, .footer-tuoRate { | |
28 | + align-items: center; | |
29 | + justify-content: space-around; | |
30 | + width: 16%; | |
31 | + height: 100%; | |
32 | + border: 1px rgb(55, 149, 242) solid; | |
33 | + border-radius: 20px; | |
34 | + background-color: #eeeeee; | |
35 | + } | |
36 | + | |
37 | + .iconfont { | |
38 | + font-size: 42px; | |
39 | + } | |
40 | + | |
41 | + .sidebar-list { | |
42 | + position: fixed; | |
43 | + right: 10px; | |
44 | + top: 10%; | |
45 | + z-index: 9900; | |
46 | + max-height:250px; | |
47 | + overflow-y:auto; | |
48 | + font-size: 20px; | |
49 | + background-color: #eeeeee; | |
50 | + } | |
51 | + | |
52 | + .layui-nav { | |
53 | + z-index: 9999; | |
54 | + } | |
55 | + | |
56 | + .layui-nav-child a:hover { | |
57 | + border-bottom: 3px solid #42b983; | |
58 | + } | |
16 | 59 | </style> |
17 | 60 | } |
18 | - | |
61 | +<!--地图--> | |
19 | 62 | <div id="container" style="overflow: hidden; position: relative; background-image: url("https://webmap0.bdimg.com/image/api/bg.png"); text-align: left; touch-action: none;"></div> |
20 | 63 | |
64 | +<!--尾部统计--> | |
65 | +<div class="footer-list div-flex vueApp"> | |
66 | + <div class="footer-project div-flex"> | |
67 | + <div><span class="iconfont icon-xiangmu" style="color:rgb(146, 133, 235)"></span></div> | |
68 | + <div class=""><span style="color:blue">{{footer.projectCount}}个</span>/项目</div> | |
69 | + </div> | |
70 | + <div class="footer-eq div-flex"> | |
71 | + <div><span class="iconfont icon-shebei" style="color:rgb(146, 133, 235)"></span></div> | |
72 | + <div class=""><span style="color:blue">24台</span>/设备</div> | |
73 | + </div> | |
74 | + <div class="footer-onlineRate div-flex"> | |
75 | + <div><span class="iconfont icon-shebeizaixianshuai" style="color:rgb(146, 133, 235)"></span></div> | |
76 | + <div class=""><span style="color:blue">30.67%</span>/在线率</div> | |
77 | + </div> | |
78 | + <div class="footer-tuoRate div-flex"> | |
79 | + <div><span class="iconfont icon-xiaoshuai" style="color:rgb(146, 133, 235)"></span></div> | |
80 | + <div class=""><span style="color:blue">16.67%</span>/妥善率</div> | |
81 | + </div> | |
82 | +</div> | |
83 | + | |
84 | +<!--侧栏 layui-nav-itemed--> | |
85 | +<div class="sidebar-list"> | |
86 | + <ul class="layui-nav layui-nav-tree layui-bg-blue" lay-filter="test"> | |
87 | + <li class="layui-nav-item"> | |
88 | + <a href="javascript:;">项目列表</a> | |
89 | + <dl class="layui-nav-child sidebar-list-item"> | |
90 | + <dd><a href="javascript:;">选项2</a></dd> | |
91 | + </dl> | |
92 | + </li> | |
93 | + </ul> | |
94 | +</div> | |
95 | + | |
21 | 96 | |
22 | 97 | @section Scripts |
23 | 98 | { |
24 | 99 | <script type="text/javascript" src="https://api.map.baidu.com/api?v=1.0&&type=webgl&ak=00A47SzVEEXHPZyUakGyW18XcQXbwzZh"> |
25 | 100 | </script> |
101 | + <script src="~/js/vuemin2.js"></script> | |
26 | 102 | <script src="~/basejs/systemmap.js"></script> |
27 | - | |
28 | 103 | <script src="~/basejs/projectmap.js"></script> |
104 | + | |
29 | 105 | } |
30 | 106 | |
31 | 107 | |
... | ... |
web/WebMvc/WebMvc.csproj
... | ... | @@ -18,6 +18,7 @@ |
18 | 18 | <ItemGroup> |
19 | 19 | <Compile Remove="Areas\configure\Views\base_product_header\**" /> |
20 | 20 | <Compile Remove="logs\**" /> |
21 | + <Compile Remove="wwwroot\css\新文件夹\**" /> | |
21 | 22 | <Compile Remove="wwwroot\js\fullcalendar-4.4.0\新文件夹\**" /> |
22 | 23 | <Compile Remove="wwwroot\js\tabletree\**" /> |
23 | 24 | <Compile Remove="wwwroot\OfficeFiles\**" /> |
... | ... | @@ -27,6 +28,7 @@ |
27 | 28 | <Compile Remove="wwwroot\productjs\quality\**" /> |
28 | 29 | <Content Remove="Areas\configure\Views\base_product_header\**" /> |
29 | 30 | <Content Remove="logs\**" /> |
31 | + <Content Remove="wwwroot\css\新文件夹\**" /> | |
30 | 32 | <Content Remove="wwwroot\js\fullcalendar-4.4.0\新文件夹\**" /> |
31 | 33 | <Content Remove="wwwroot\js\tabletree\**" /> |
32 | 34 | <Content Remove="wwwroot\OfficeFiles\**" /> |
... | ... | @@ -36,6 +38,7 @@ |
36 | 38 | <Content Remove="wwwroot\productjs\quality\**" /> |
37 | 39 | <EmbeddedResource Remove="Areas\configure\Views\base_product_header\**" /> |
38 | 40 | <EmbeddedResource Remove="logs\**" /> |
41 | + <EmbeddedResource Remove="wwwroot\css\新文件夹\**" /> | |
39 | 42 | <EmbeddedResource Remove="wwwroot\js\fullcalendar-4.4.0\新文件夹\**" /> |
40 | 43 | <EmbeddedResource Remove="wwwroot\js\tabletree\**" /> |
41 | 44 | <EmbeddedResource Remove="wwwroot\OfficeFiles\**" /> |
... | ... | @@ -45,6 +48,7 @@ |
45 | 48 | <EmbeddedResource Remove="wwwroot\productjs\quality\**" /> |
46 | 49 | <None Remove="Areas\configure\Views\base_product_header\**" /> |
47 | 50 | <None Remove="logs\**" /> |
51 | + <None Remove="wwwroot\css\新文件夹\**" /> | |
48 | 52 | <None Remove="wwwroot\js\fullcalendar-4.4.0\新文件夹\**" /> |
49 | 53 | <None Remove="wwwroot\js\tabletree\**" /> |
50 | 54 | <None Remove="wwwroot\OfficeFiles\**" /> |
... | ... |
web/WebMvc/wwwroot/baseJs/projectMap.js
1 | 1 | |
2 | 2 | let action = null; |
3 | +let mapObj = null; | |
3 | 4 | var app = null; |
5 | + | |
4 | 6 | layui.config({ |
5 | 7 | base: "/js/", |
6 | 8 | version: 1 |
... | ... | @@ -14,7 +16,7 @@ layui.config({ |
14 | 16 | sendDataWhere = null, |
15 | 17 | areaName = "configure", |
16 | 18 | controllerName = "BaseProject", |
17 | - mapObj = null; | |
19 | + vueApp = null; | |
18 | 20 | |
19 | 21 | action = { |
20 | 22 | |
... | ... | @@ -25,46 +27,107 @@ layui.config({ |
25 | 27 | mapEle: "container", |
26 | 28 | }, |
27 | 29 | methods: { |
30 | + /** | |
31 | + * 初始化地图 | |
32 | + */ | |
28 | 33 | initMap() { |
29 | 34 | mapObj = mapApp(app.data.mapEle).initMap(); |
30 | 35 | }, |
31 | - | |
32 | - getProjectData() { | |
36 | + /** | |
37 | + * 获取项目数据 | |
38 | + */ | |
39 | + getProjectDataList() { | |
33 | 40 | var ajaxConfig = { |
34 | - data: { pageRequest: null, entity: { flag:"projectMapList" } }, | |
41 | + data: { pageRequest: null, entity: { flag: "projectMapList" } }, | |
35 | 42 | url: `/configure/BaseProject/Load`, |
36 | 43 | success: function (result) { |
37 | 44 | if (sysU.successBefore(result)) return false; |
38 | - app.methods.createMarkerInfo(result) | |
45 | + app.methods.createMarkerInfo(result); | |
46 | + app.methods.initVueDataValue(result); | |
47 | + app.methods.createSidebarList(result); | |
39 | 48 | } |
40 | 49 | }; |
41 | 50 | sysU.ajax(ajaxConfig); |
42 | 51 | }, |
52 | + /** | |
53 | + * 创建marker标注 | |
54 | + */ | |
43 | 55 | createMarkerInfo(json) { |
44 | 56 | json.Result.forEach(item => { |
45 | 57 | var content = `<h4 style = 'margin:0;'>${item.projectAddress}</h4> |
46 | - 设备总数:${item.eqCount}、在线:<span style='color:blue;'>${item.eqOnLine}</span>、待机:${item.eqOff}、故障:<span style='color:red;'>${item.eqAlarm}</span> | |
47 | - <div style = 'display: flex;' > | |
48 | - <div><a style='text-decoration: underline;color: blue;' onclick='app.methods.mapMarkerClick(${JSON.stringify(item)})' href='#'>点击链接</a></div> | |
49 | - </div >` ;//定义大标题 写html语句标签 | |
58 | + 设备总数:${item.eqCount}、在线:<span style='color:blue;'>${item.eqOnLine}</span>、待机:${item.eqOff}、故障:<span style='color:red;'>${item.eqAlarm}</span> | |
59 | + <div style = 'display: flex;' > | |
60 | + <div><a style='text-decoration: underline;color: blue;' onclick='app.methods.mapMarkerClick(${JSON.stringify(item)})' href='#'>点击链接</a></div> | |
61 | + </div >` ;//定义大标题 写html语句标签 | |
50 | 62 | mapObj.createMarkerInfo(content, { |
51 | - title: "项目名称:"+item.projectName, | |
63 | + title: "项目名称:" + item.projectName, | |
52 | 64 | longitude: item.longitude, |
53 | - latitude: item.latitude | |
65 | + latitude: item.latitude, | |
66 | + id: item.id | |
54 | 67 | }); |
55 | 68 | }) |
56 | 69 | }, |
57 | 70 | |
58 | 71 | mapMarkerClick(item) { |
59 | 72 | alert(JSON.stringify(item)) |
73 | + }, | |
74 | + /** | |
75 | + * 创建右侧项目列表 | |
76 | + */ | |
77 | + createSidebarList(json) { | |
78 | + var sidebarList = []; | |
79 | + var index = 1; | |
80 | + json.Result.forEach(item => { | |
81 | + var content = `<dd><a onclick='app.methods.findLocateMarker(${item.id.toString()})' href="javascript:;">【${index++}】${item.projectName}</a></dd>`;//定义大标题 写html语句标签 | |
82 | + sidebarList.push(content) | |
83 | + }) | |
84 | + if (sidebarList.length > 0) { | |
85 | + $(".sidebar-list-item").empty().append(sidebarList.join(" ")) | |
86 | + } | |
87 | + }, | |
88 | + /** | |
89 | + * 查找Marker并打开对应的infoWindow信息框 | |
90 | + */ | |
91 | + findLocateMarker(markerId) { | |
92 | + mapObj.getLocateMarker(markerId); | |
93 | + }, | |
94 | + /** | |
95 | + * 初始化vue | |
96 | + */ | |
97 | + initVue: function () { | |
98 | + vueApp = new Vue({ | |
99 | + el: '.vueApp', | |
100 | + data: { | |
101 | + footer: { | |
102 | + projectCount: 0, | |
103 | + eqCount: 0, | |
104 | + eqOnlineRate: "", | |
105 | + eqTuoRate: "", | |
106 | + } | |
107 | + }, | |
108 | + methods: { | |
109 | + | |
110 | + } | |
111 | + }); | |
112 | + }, | |
113 | + /** | |
114 | + * vue 集合赋值 | |
115 | + */ | |
116 | + initVueDataValue: function (result) { | |
117 | + vueApp.footer.projectCount = result.Result.length; | |
118 | + vueApp.footer.eqCount = 12; | |
119 | + vueApp.footer.eqOnlineRate = "16.67%"; | |
120 | + vueApp.footer.eqTuoRate = "89.67%"; | |
60 | 121 | } |
61 | 122 | }, |
62 | 123 | registerEvent: function () { |
63 | 124 | |
64 | 125 | }, |
65 | 126 | init: function () { |
127 | + debugger | |
66 | 128 | app.methods.initMap(); |
67 | - app.methods.getProjectData(); | |
129 | + app.methods.initVue(); | |
130 | + app.methods.getProjectDataList(); | |
68 | 131 | app.registerEvent(); |
69 | 132 | } |
70 | 133 | }; |
... | ... |
web/WebMvc/wwwroot/baseJs/systemMap.js
1 | 1 | ;(function (window) { |
2 | - var sysMapObj = null; | |
2 | + var sysMapObj = null, | |
3 | + sysInfoWindowAll = {}, | |
4 | + sysZoomNumber=12, | |
5 | + sysPointKey = "_point"; | |
3 | 6 | |
4 | 7 | var mapApp = function (selector, lon = 113.34693, lat = 28.21849) { |
5 | 8 | return new mapApp.fn.init(selector, lon, lat); |
... | ... | @@ -16,19 +19,26 @@ |
16 | 19 | return this.initMapMethod(); |
17 | 20 | } |
18 | 21 | |
19 | - this.createMarkerInfo = function (message,obj) { | |
22 | + this.createMarkerInfo = function (message, obj) { | |
20 | 23 | return this.markerInfoMethod(message, obj) |
21 | 24 | } |
25 | + this.getSysMapObj = function () { | |
26 | + return sysMapObj; | |
27 | + } | |
28 | + | |
29 | + this.getLocateMarker = function (hhMarkerId) { | |
30 | + return this.getLocateMarkerMethod(hhMarkerId) | |
31 | + } | |
22 | 32 | }, |
23 | 33 | |
24 | - initMapMethod () { | |
34 | + initMapMethod() { | |
25 | 35 | if (document.querySelector("#" + this.selector).length == 0) { |
26 | 36 | alert(`初始化方法元素节点${"#" + this.selector}不存在!`); |
27 | 37 | return; |
28 | 38 | } |
29 | 39 | sysMapObj = new BMapGL.Map(this.selector); |
30 | 40 | |
31 | - sysMapObj.centerAndZoom(this.getPoint(), 12); //设置中心点 | |
41 | + sysMapObj.centerAndZoom(this.getPoint(), sysZoomNumber); //设置中心点 | |
32 | 42 | sysMapObj.enableScrollWheelZoom(true); // //开启鼠标滚轮缩放 |
33 | 43 | |
34 | 44 | var scaleCtrl = new BMapGL.ScaleControl(); // 添加比例尺控件 |
... | ... | @@ -55,16 +65,24 @@ |
55 | 65 | * obj { title: x, longitude: longitude, latitude:latitude } |
56 | 66 | */ |
57 | 67 | markerInfoMethod: function (message, obj) { |
58 | - var point = this.getPoint(obj.longitude, obj.latitude) | |
59 | - var marker = new BMapGL.Marker(point); // 创建标注 | |
68 | + let point = this.getPoint(obj.longitude, obj.latitude), | |
69 | + marker = new BMapGL.Marker(point), // 创建标注 | |
70 | + markerId = obj.id.toString(); //自定义标注唯一ID | |
71 | + marker.hhId = markerId; | |
60 | 72 | sysMapObj.addOverlay(marker); // 将标注添加到地图中 |
73 | + | |
61 | 74 | var opts = { |
62 | - width: 300, // 信息窗口宽度 | |
75 | + width: 300, // 信息窗口宽度 | |
63 | 76 | height: 100, // 信息窗口高度 |
64 | 77 | title: obj.title, // 信息窗口标题 |
65 | 78 | } |
66 | - var infoWindow = new BMapGL.InfoWindow(message, opts); // 创建信息窗口对象 | |
79 | + let infoWindow = new BMapGL.InfoWindow(message, opts); // 创建信息窗口对象 | |
67 | 80 | sysMapObj.openInfoWindow(infoWindow, point); //开启信息窗口 |
81 | + | |
82 | + if (!sysInfoWindowAll[markerId]) { | |
83 | + sysInfoWindowAll[markerId] = infoWindow; | |
84 | + sysInfoWindowAll[markerId + sysPointKey] = point; | |
85 | + } | |
68 | 86 | marker.addEventListener("click", function () { |
69 | 87 | sysMapObj.openInfoWindow(infoWindow, point); //开启信息窗口 |
70 | 88 | }); |
... | ... | @@ -97,6 +115,28 @@ |
97 | 115 | alert("地址解析异常:", err); |
98 | 116 | }) |
99 | 117 | }, |
118 | + | |
119 | + /** | |
120 | + * 查找Marker并打开对应的infoWindow信息框 | |
121 | + */ | |
122 | + getLocateMarkerMethod(markerId) { | |
123 | + var overlays = sysMapObj.getOverlays(); | |
124 | + for (var i = 0; i < overlays.length; i++) { | |
125 | + var overlay = overlays[i]; | |
126 | + if (overlay.hhId == markerId) { | |
127 | + var pos = overlay.getPosition(); | |
128 | + sysMapObj.panTo(pos); // 定位到 Marker | |
129 | + overlay.setAnimation(BMAP_ANIMATION_BOUNCE); // 添加动画效果 | |
130 | + let infoWindow = sysInfoWindowAll[markerId]; | |
131 | + if (infoWindow) { | |
132 | + sysMapObj.centerAndZoom(pos, sysZoomNumber); //设置中心点 | |
133 | + let point = sysInfoWindowAll[markerId + sysPointKey]; | |
134 | + sysMapObj.openInfoWindow(infoWindow, point); // 打开对应的 infoWindow | |
135 | + } | |
136 | + break; | |
137 | + } | |
138 | + } | |
139 | + } | |
100 | 140 | } |
101 | 141 | |
102 | 142 | mapApp.fn.init.prototype = mapApp.fn; |
... | ... |
web/WebMvc/wwwroot/css/iot/demo.css
0 → 100644
1 | +/* Logo 字体 */ | |
2 | +@font-face { | |
3 | + font-family: "iconfont logo"; | |
4 | + src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834'); | |
5 | + src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'), | |
6 | + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'), | |
7 | + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'), | |
8 | + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg'); | |
9 | +} | |
10 | + | |
11 | +.logo { | |
12 | + font-family: "iconfont logo"; | |
13 | + font-size: 160px; | |
14 | + font-style: normal; | |
15 | + -webkit-font-smoothing: antialiased; | |
16 | + -moz-osx-font-smoothing: grayscale; | |
17 | +} | |
18 | + | |
19 | +/* tabs */ | |
20 | +.nav-tabs { | |
21 | + position: relative; | |
22 | +} | |
23 | + | |
24 | +.nav-tabs .nav-more { | |
25 | + position: absolute; | |
26 | + right: 0; | |
27 | + bottom: 0; | |
28 | + height: 42px; | |
29 | + line-height: 42px; | |
30 | + color: #666; | |
31 | +} | |
32 | + | |
33 | +#tabs { | |
34 | + border-bottom: 1px solid #eee; | |
35 | +} | |
36 | + | |
37 | +#tabs li { | |
38 | + cursor: pointer; | |
39 | + width: 100px; | |
40 | + height: 40px; | |
41 | + line-height: 40px; | |
42 | + text-align: center; | |
43 | + font-size: 16px; | |
44 | + border-bottom: 2px solid transparent; | |
45 | + position: relative; | |
46 | + z-index: 1; | |
47 | + margin-bottom: -1px; | |
48 | + color: #666; | |
49 | +} | |
50 | + | |
51 | + | |
52 | +#tabs .active { | |
53 | + border-bottom-color: #f00; | |
54 | + color: #222; | |
55 | +} | |
56 | + | |
57 | +.tab-container .content { | |
58 | + display: none; | |
59 | +} | |
60 | + | |
61 | +/* 页面布局 */ | |
62 | +.main { | |
63 | + padding: 30px 100px; | |
64 | + width: 960px; | |
65 | + margin: 0 auto; | |
66 | +} | |
67 | + | |
68 | +.main .logo { | |
69 | + color: #333; | |
70 | + text-align: left; | |
71 | + margin-bottom: 30px; | |
72 | + line-height: 1; | |
73 | + height: 110px; | |
74 | + margin-top: -50px; | |
75 | + overflow: hidden; | |
76 | + *zoom: 1; | |
77 | +} | |
78 | + | |
79 | +.main .logo a { | |
80 | + font-size: 160px; | |
81 | + color: #333; | |
82 | +} | |
83 | + | |
84 | +.helps { | |
85 | + margin-top: 40px; | |
86 | +} | |
87 | + | |
88 | +.helps pre { | |
89 | + padding: 20px; | |
90 | + margin: 10px 0; | |
91 | + border: solid 1px #e7e1cd; | |
92 | + background-color: #fffdef; | |
93 | + overflow: auto; | |
94 | +} | |
95 | + | |
96 | +.icon_lists { | |
97 | + width: 100% !important; | |
98 | + overflow: hidden; | |
99 | + *zoom: 1; | |
100 | +} | |
101 | + | |
102 | +.icon_lists li { | |
103 | + width: 100px; | |
104 | + margin-bottom: 10px; | |
105 | + margin-right: 20px; | |
106 | + text-align: center; | |
107 | + list-style: none !important; | |
108 | + cursor: default; | |
109 | +} | |
110 | + | |
111 | +.icon_lists li .code-name { | |
112 | + line-height: 1.2; | |
113 | +} | |
114 | + | |
115 | +.icon_lists .icon { | |
116 | + display: block; | |
117 | + height: 100px; | |
118 | + line-height: 100px; | |
119 | + font-size: 42px; | |
120 | + margin: 10px auto; | |
121 | + color: #333; | |
122 | + -webkit-transition: font-size 0.25s linear, width 0.25s linear; | |
123 | + -moz-transition: font-size 0.25s linear, width 0.25s linear; | |
124 | + transition: font-size 0.25s linear, width 0.25s linear; | |
125 | +} | |
126 | + | |
127 | +.icon_lists .icon:hover { | |
128 | + font-size: 100px; | |
129 | +} | |
130 | + | |
131 | +.icon_lists .svg-icon { | |
132 | + /* 通过设置 font-size 来改变图标大小 */ | |
133 | + width: 1em; | |
134 | + /* 图标和文字相邻时,垂直对齐 */ | |
135 | + vertical-align: -0.15em; | |
136 | + /* 通过设置 color 来改变 SVG 的颜色/fill */ | |
137 | + fill: currentColor; | |
138 | + /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示 | |
139 | + normalize.css 中也包含这行 */ | |
140 | + overflow: hidden; | |
141 | +} | |
142 | + | |
143 | +.icon_lists li .name, | |
144 | +.icon_lists li .code-name { | |
145 | + color: #666; | |
146 | +} | |
147 | + | |
148 | +/* markdown 样式 */ | |
149 | +.markdown { | |
150 | + color: #666; | |
151 | + font-size: 14px; | |
152 | + line-height: 1.8; | |
153 | +} | |
154 | + | |
155 | +.highlight { | |
156 | + line-height: 1.5; | |
157 | +} | |
158 | + | |
159 | +.markdown img { | |
160 | + vertical-align: middle; | |
161 | + max-width: 100%; | |
162 | +} | |
163 | + | |
164 | +.markdown h1 { | |
165 | + color: #404040; | |
166 | + font-weight: 500; | |
167 | + line-height: 40px; | |
168 | + margin-bottom: 24px; | |
169 | +} | |
170 | + | |
171 | +.markdown h2, | |
172 | +.markdown h3, | |
173 | +.markdown h4, | |
174 | +.markdown h5, | |
175 | +.markdown h6 { | |
176 | + color: #404040; | |
177 | + margin: 1.6em 0 0.6em 0; | |
178 | + font-weight: 500; | |
179 | + clear: both; | |
180 | +} | |
181 | + | |
182 | +.markdown h1 { | |
183 | + font-size: 28px; | |
184 | +} | |
185 | + | |
186 | +.markdown h2 { | |
187 | + font-size: 22px; | |
188 | +} | |
189 | + | |
190 | +.markdown h3 { | |
191 | + font-size: 16px; | |
192 | +} | |
193 | + | |
194 | +.markdown h4 { | |
195 | + font-size: 14px; | |
196 | +} | |
197 | + | |
198 | +.markdown h5 { | |
199 | + font-size: 12px; | |
200 | +} | |
201 | + | |
202 | +.markdown h6 { | |
203 | + font-size: 12px; | |
204 | +} | |
205 | + | |
206 | +.markdown hr { | |
207 | + height: 1px; | |
208 | + border: 0; | |
209 | + background: #e9e9e9; | |
210 | + margin: 16px 0; | |
211 | + clear: both; | |
212 | +} | |
213 | + | |
214 | +.markdown p { | |
215 | + margin: 1em 0; | |
216 | +} | |
217 | + | |
218 | +.markdown>p, | |
219 | +.markdown>blockquote, | |
220 | +.markdown>.highlight, | |
221 | +.markdown>ol, | |
222 | +.markdown>ul { | |
223 | + width: 80%; | |
224 | +} | |
225 | + | |
226 | +.markdown ul>li { | |
227 | + list-style: circle; | |
228 | +} | |
229 | + | |
230 | +.markdown>ul li, | |
231 | +.markdown blockquote ul>li { | |
232 | + margin-left: 20px; | |
233 | + padding-left: 4px; | |
234 | +} | |
235 | + | |
236 | +.markdown>ul li p, | |
237 | +.markdown>ol li p { | |
238 | + margin: 0.6em 0; | |
239 | +} | |
240 | + | |
241 | +.markdown ol>li { | |
242 | + list-style: decimal; | |
243 | +} | |
244 | + | |
245 | +.markdown>ol li, | |
246 | +.markdown blockquote ol>li { | |
247 | + margin-left: 20px; | |
248 | + padding-left: 4px; | |
249 | +} | |
250 | + | |
251 | +.markdown code { | |
252 | + margin: 0 3px; | |
253 | + padding: 0 5px; | |
254 | + background: #eee; | |
255 | + border-radius: 3px; | |
256 | +} | |
257 | + | |
258 | +.markdown strong, | |
259 | +.markdown b { | |
260 | + font-weight: 600; | |
261 | +} | |
262 | + | |
263 | +.markdown>table { | |
264 | + border-collapse: collapse; | |
265 | + border-spacing: 0px; | |
266 | + empty-cells: show; | |
267 | + border: 1px solid #e9e9e9; | |
268 | + width: 95%; | |
269 | + margin-bottom: 24px; | |
270 | +} | |
271 | + | |
272 | +.markdown>table th { | |
273 | + white-space: nowrap; | |
274 | + color: #333; | |
275 | + font-weight: 600; | |
276 | +} | |
277 | + | |
278 | +.markdown>table th, | |
279 | +.markdown>table td { | |
280 | + border: 1px solid #e9e9e9; | |
281 | + padding: 8px 16px; | |
282 | + text-align: left; | |
283 | +} | |
284 | + | |
285 | +.markdown>table th { | |
286 | + background: #F7F7F7; | |
287 | +} | |
288 | + | |
289 | +.markdown blockquote { | |
290 | + font-size: 90%; | |
291 | + color: #999; | |
292 | + border-left: 4px solid #e9e9e9; | |
293 | + padding-left: 0.8em; | |
294 | + margin: 1em 0; | |
295 | +} | |
296 | + | |
297 | +.markdown blockquote p { | |
298 | + margin: 0; | |
299 | +} | |
300 | + | |
301 | +.markdown .anchor { | |
302 | + opacity: 0; | |
303 | + transition: opacity 0.3s ease; | |
304 | + margin-left: 8px; | |
305 | +} | |
306 | + | |
307 | +.markdown .waiting { | |
308 | + color: #ccc; | |
309 | +} | |
310 | + | |
311 | +.markdown h1:hover .anchor, | |
312 | +.markdown h2:hover .anchor, | |
313 | +.markdown h3:hover .anchor, | |
314 | +.markdown h4:hover .anchor, | |
315 | +.markdown h5:hover .anchor, | |
316 | +.markdown h6:hover .anchor { | |
317 | + opacity: 1; | |
318 | + display: inline-block; | |
319 | +} | |
320 | + | |
321 | +.markdown>br, | |
322 | +.markdown>p>br { | |
323 | + clear: both; | |
324 | +} | |
325 | + | |
326 | + | |
327 | +.hljs { | |
328 | + display: block; | |
329 | + background: white; | |
330 | + padding: 0.5em; | |
331 | + color: #333333; | |
332 | + overflow-x: auto; | |
333 | +} | |
334 | + | |
335 | +.hljs-comment, | |
336 | +.hljs-meta { | |
337 | + color: #969896; | |
338 | +} | |
339 | + | |
340 | +.hljs-string, | |
341 | +.hljs-variable, | |
342 | +.hljs-template-variable, | |
343 | +.hljs-strong, | |
344 | +.hljs-emphasis, | |
345 | +.hljs-quote { | |
346 | + color: #df5000; | |
347 | +} | |
348 | + | |
349 | +.hljs-keyword, | |
350 | +.hljs-selector-tag, | |
351 | +.hljs-type { | |
352 | + color: #a71d5d; | |
353 | +} | |
354 | + | |
355 | +.hljs-literal, | |
356 | +.hljs-symbol, | |
357 | +.hljs-bullet, | |
358 | +.hljs-attribute { | |
359 | + color: #0086b3; | |
360 | +} | |
361 | + | |
362 | +.hljs-section, | |
363 | +.hljs-name { | |
364 | + color: #63a35c; | |
365 | +} | |
366 | + | |
367 | +.hljs-tag { | |
368 | + color: #333333; | |
369 | +} | |
370 | + | |
371 | +.hljs-title, | |
372 | +.hljs-attr, | |
373 | +.hljs-selector-id, | |
374 | +.hljs-selector-class, | |
375 | +.hljs-selector-attr, | |
376 | +.hljs-selector-pseudo { | |
377 | + color: #795da3; | |
378 | +} | |
379 | + | |
380 | +.hljs-addition { | |
381 | + color: #55a532; | |
382 | + background-color: #eaffea; | |
383 | +} | |
384 | + | |
385 | +.hljs-deletion { | |
386 | + color: #bd2c00; | |
387 | + background-color: #ffecec; | |
388 | +} | |
389 | + | |
390 | +.hljs-link { | |
391 | + text-decoration: underline; | |
392 | +} | |
393 | + | |
394 | +/* 代码高亮 */ | |
395 | +/* PrismJS 1.15.0 | |
396 | +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */ | |
397 | +/** | |
398 | + * prism.js default theme for JavaScript, CSS and HTML | |
399 | + * Based on dabblet (http://dabblet.com) | |
400 | + * @author Lea Verou | |
401 | + */ | |
402 | +code[class*="language-"], | |
403 | +pre[class*="language-"] { | |
404 | + color: black; | |
405 | + background: none; | |
406 | + text-shadow: 0 1px white; | |
407 | + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; | |
408 | + text-align: left; | |
409 | + white-space: pre; | |
410 | + word-spacing: normal; | |
411 | + word-break: normal; | |
412 | + word-wrap: normal; | |
413 | + line-height: 1.5; | |
414 | + | |
415 | + -moz-tab-size: 4; | |
416 | + -o-tab-size: 4; | |
417 | + tab-size: 4; | |
418 | + | |
419 | + -webkit-hyphens: none; | |
420 | + -moz-hyphens: none; | |
421 | + -ms-hyphens: none; | |
422 | + hyphens: none; | |
423 | +} | |
424 | + | |
425 | +pre[class*="language-"]::-moz-selection, | |
426 | +pre[class*="language-"] ::-moz-selection, | |
427 | +code[class*="language-"]::-moz-selection, | |
428 | +code[class*="language-"] ::-moz-selection { | |
429 | + text-shadow: none; | |
430 | + background: #b3d4fc; | |
431 | +} | |
432 | + | |
433 | +pre[class*="language-"]::selection, | |
434 | +pre[class*="language-"] ::selection, | |
435 | +code[class*="language-"]::selection, | |
436 | +code[class*="language-"] ::selection { | |
437 | + text-shadow: none; | |
438 | + background: #b3d4fc; | |
439 | +} | |
440 | + | |
441 | +@media print { | |
442 | + | |
443 | + code[class*="language-"], | |
444 | + pre[class*="language-"] { | |
445 | + text-shadow: none; | |
446 | + } | |
447 | +} | |
448 | + | |
449 | +/* Code blocks */ | |
450 | +pre[class*="language-"] { | |
451 | + padding: 1em; | |
452 | + margin: .5em 0; | |
453 | + overflow: auto; | |
454 | +} | |
455 | + | |
456 | +:not(pre)>code[class*="language-"], | |
457 | +pre[class*="language-"] { | |
458 | + background: #f5f2f0; | |
459 | +} | |
460 | + | |
461 | +/* Inline code */ | |
462 | +:not(pre)>code[class*="language-"] { | |
463 | + padding: .1em; | |
464 | + border-radius: .3em; | |
465 | + white-space: normal; | |
466 | +} | |
467 | + | |
468 | +.token.comment, | |
469 | +.token.prolog, | |
470 | +.token.doctype, | |
471 | +.token.cdata { | |
472 | + color: slategray; | |
473 | +} | |
474 | + | |
475 | +.token.punctuation { | |
476 | + color: #999; | |
477 | +} | |
478 | + | |
479 | +.namespace { | |
480 | + opacity: .7; | |
481 | +} | |
482 | + | |
483 | +.token.property, | |
484 | +.token.tag, | |
485 | +.token.boolean, | |
486 | +.token.number, | |
487 | +.token.constant, | |
488 | +.token.symbol, | |
489 | +.token.deleted { | |
490 | + color: #905; | |
491 | +} | |
492 | + | |
493 | +.token.selector, | |
494 | +.token.attr-name, | |
495 | +.token.string, | |
496 | +.token.char, | |
497 | +.token.builtin, | |
498 | +.token.inserted { | |
499 | + color: #690; | |
500 | +} | |
501 | + | |
502 | +.token.operator, | |
503 | +.token.entity, | |
504 | +.token.url, | |
505 | +.language-css .token.string, | |
506 | +.style .token.string { | |
507 | + color: #9a6e3a; | |
508 | + background: hsla(0, 0%, 100%, .5); | |
509 | +} | |
510 | + | |
511 | +.token.atrule, | |
512 | +.token.attr-value, | |
513 | +.token.keyword { | |
514 | + color: #07a; | |
515 | +} | |
516 | + | |
517 | +.token.function, | |
518 | +.token.class-name { | |
519 | + color: #DD4A68; | |
520 | +} | |
521 | + | |
522 | +.token.regex, | |
523 | +.token.important, | |
524 | +.token.variable { | |
525 | + color: #e90; | |
526 | +} | |
527 | + | |
528 | +.token.important, | |
529 | +.token.bold { | |
530 | + font-weight: bold; | |
531 | +} | |
532 | + | |
533 | +.token.italic { | |
534 | + font-style: italic; | |
535 | +} | |
536 | + | |
537 | +.token.entity { | |
538 | + cursor: help; | |
539 | +} | |
... | ... |
web/WebMvc/wwwroot/css/iot/demo_index.html
0 → 100644
1 | +<!DOCTYPE html> | |
2 | +<html> | |
3 | +<head> | |
4 | + <meta charset="utf-8"/> | |
5 | + <title>iconfont Demo</title> | |
6 | + <link rel="shortcut icon" href="//img.alicdn.com/imgextra/i4/O1CN01Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82.svg" type="image/x-icon"/> | |
7 | + <link rel="icon" type="image/svg+xml" href="//img.alicdn.com/imgextra/i4/O1CN01Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82.svg"/> | |
8 | + <link rel="stylesheet" href="https://g.alicdn.com/thx/cube/1.3.2/cube.min.css"> | |
9 | + <link rel="stylesheet" href="demo.css"> | |
10 | + <link rel="stylesheet" href="iconfont.css"> | |
11 | + <script src="iconfont.js"></script> | |
12 | + <!-- jQuery --> | |
13 | + <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/7bfddb60-08e8-11e9-9b04-53e73bb6408b.js"></script> | |
14 | + <!-- 代码高亮 --> | |
15 | + <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/a3f714d0-08e6-11e9-8a15-ebf944d7534c.js"></script> | |
16 | + <style> | |
17 | + .main .logo { | |
18 | + margin-top: 0; | |
19 | + height: auto; | |
20 | + } | |
21 | + | |
22 | + .main .logo a { | |
23 | + display: flex; | |
24 | + align-items: center; | |
25 | + } | |
26 | + | |
27 | + .main .logo .sub-title { | |
28 | + margin-left: 0.5em; | |
29 | + font-size: 22px; | |
30 | + color: #fff; | |
31 | + background: linear-gradient(-45deg, #3967FF, #B500FE); | |
32 | + -webkit-background-clip: text; | |
33 | + -webkit-text-fill-color: transparent; | |
34 | + } | |
35 | + </style> | |
36 | +</head> | |
37 | +<body> | |
38 | + <div class="main"> | |
39 | + <h1 class="logo"><a href="https://www.iconfont.cn/" title="iconfont 首页" target="_blank"> | |
40 | + <img width="200" src="https://img.alicdn.com/imgextra/i3/O1CN01Mn65HV1FfSEzR6DKv_!!6000000000514-55-tps-228-59.svg"> | |
41 | + | |
42 | + </a></h1> | |
43 | + <div class="nav-tabs"> | |
44 | + <ul id="tabs" class="dib-box"> | |
45 | + <li class="dib active"><span>Unicode</span></li> | |
46 | + <li class="dib"><span>Font class</span></li> | |
47 | + <li class="dib"><span>Symbol</span></li> | |
48 | + </ul> | |
49 | + | |
50 | + <a href="https://www.iconfont.cn/manage/index?manage_type=myprojects&projectId=4427370" target="_blank" class="nav-more">查看项目</a> | |
51 | + | |
52 | + </div> | |
53 | + <div class="tab-container"> | |
54 | + <div class="content unicode" style="display: block;"> | |
55 | + <ul class="icon_lists dib-box"> | |
56 | + | |
57 | + <li class="dib"> | |
58 | + <span class="icon iconfont"></span> | |
59 | + <div class="name">效率</div> | |
60 | + <div class="code-name">&#xe663;</div> | |
61 | + </li> | |
62 | + | |
63 | + <li class="dib"> | |
64 | + <span class="icon iconfont"></span> | |
65 | + <div class="name">设备在线率</div> | |
66 | + <div class="code-name">&#xe742;</div> | |
67 | + </li> | |
68 | + | |
69 | + <li class="dib"> | |
70 | + <span class="icon iconfont"></span> | |
71 | + <div class="name">项目</div> | |
72 | + <div class="code-name">&#xe63d;</div> | |
73 | + </li> | |
74 | + | |
75 | + <li class="dib"> | |
76 | + <span class="icon iconfont"></span> | |
77 | + <div class="name">设备</div> | |
78 | + <div class="code-name">&#xe63c;</div> | |
79 | + </li> | |
80 | + | |
81 | + </ul> | |
82 | + <div class="article markdown"> | |
83 | + <h2 id="unicode-">Unicode 引用</h2> | |
84 | + <hr> | |
85 | + | |
86 | + <p>Unicode 是字体在网页端最原始的应用方式,特点是:</p> | |
87 | + <ul> | |
88 | + <li>支持按字体的方式去动态调整图标大小,颜色等等。</li> | |
89 | + <li>默认情况下不支持多色,直接添加多色图标会自动去色。</li> | |
90 | + </ul> | |
91 | + <blockquote> | |
92 | + <p>注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)</p> | |
93 | + </blockquote> | |
94 | + <p>Unicode 使用步骤如下:</p> | |
95 | + <h3 id="-font-face">第一步:拷贝项目下面生成的 <code>@font-face</code></h3> | |
96 | +<pre><code class="language-css" | |
97 | +>@font-face { | |
98 | + font-family: 'iconfont'; | |
99 | + src: url('iconfont.woff2?t=1706586924308') format('woff2'), | |
100 | + url('iconfont.woff?t=1706586924308') format('woff'), | |
101 | + url('iconfont.ttf?t=1706586924308') format('truetype'); | |
102 | +} | |
103 | +</code></pre> | |
104 | + <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3> | |
105 | +<pre><code class="language-css" | |
106 | +>.iconfont { | |
107 | + font-family: "iconfont" !important; | |
108 | + font-size: 16px; | |
109 | + font-style: normal; | |
110 | + -webkit-font-smoothing: antialiased; | |
111 | + -moz-osx-font-smoothing: grayscale; | |
112 | +} | |
113 | +</code></pre> | |
114 | + <h3 id="-">第三步:挑选相应图标并获取字体编码,应用于页面</h3> | |
115 | +<pre> | |
116 | +<code class="language-html" | |
117 | +><span class="iconfont">&#x33;</span> | |
118 | +</code></pre> | |
119 | + <blockquote> | |
120 | + <p>"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p> | |
121 | + </blockquote> | |
122 | + </div> | |
123 | + </div> | |
124 | + <div class="content font-class"> | |
125 | + <ul class="icon_lists dib-box"> | |
126 | + | |
127 | + <li class="dib"> | |
128 | + <span class="icon iconfont icon-xiaoshuai"></span> | |
129 | + <div class="name"> | |
130 | + 效率 | |
131 | + </div> | |
132 | + <div class="code-name">.icon-xiaoshuai | |
133 | + </div> | |
134 | + </li> | |
135 | + | |
136 | + <li class="dib"> | |
137 | + <span class="icon iconfont icon-shebeizaixianshuai"></span> | |
138 | + <div class="name"> | |
139 | + 设备在线率 | |
140 | + </div> | |
141 | + <div class="code-name">.icon-shebeizaixianshuai | |
142 | + </div> | |
143 | + </li> | |
144 | + | |
145 | + <li class="dib"> | |
146 | + <span class="icon iconfont icon-xiangmu"></span> | |
147 | + <div class="name"> | |
148 | + 项目 | |
149 | + </div> | |
150 | + <div class="code-name">.icon-xiangmu | |
151 | + </div> | |
152 | + </li> | |
153 | + | |
154 | + <li class="dib"> | |
155 | + <span class="icon iconfont icon-shebei"></span> | |
156 | + <div class="name"> | |
157 | + 设备 | |
158 | + </div> | |
159 | + <div class="code-name">.icon-shebei | |
160 | + </div> | |
161 | + </li> | |
162 | + | |
163 | + </ul> | |
164 | + <div class="article markdown"> | |
165 | + <h2 id="font-class-">font-class 引用</h2> | |
166 | + <hr> | |
167 | + | |
168 | + <p>font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。</p> | |
169 | + <p>与 Unicode 使用方式相比,具有如下特点:</p> | |
170 | + <ul> | |
171 | + <li>相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。</li> | |
172 | + <li>因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。</li> | |
173 | + </ul> | |
174 | + <p>使用步骤如下:</p> | |
175 | + <h3 id="-fontclass-">第一步:引入项目下面生成的 fontclass 代码:</h3> | |
176 | +<pre><code class="language-html"><link rel="stylesheet" href="./iconfont.css"> | |
177 | +</code></pre> | |
178 | + <h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3> | |
179 | +<pre><code class="language-html"><span class="iconfont icon-xxx"></span> | |
180 | +</code></pre> | |
181 | + <blockquote> | |
182 | + <p>" | |
183 | + iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p> | |
184 | + </blockquote> | |
185 | + </div> | |
186 | + </div> | |
187 | + <div class="content symbol"> | |
188 | + <ul class="icon_lists dib-box"> | |
189 | + | |
190 | + <li class="dib"> | |
191 | + <svg class="icon svg-icon" aria-hidden="true"> | |
192 | + <use xlink:href="#icon-xiaoshuai"></use> | |
193 | + </svg> | |
194 | + <div class="name">效率</div> | |
195 | + <div class="code-name">#icon-xiaoshuai</div> | |
196 | + </li> | |
197 | + | |
198 | + <li class="dib"> | |
199 | + <svg class="icon svg-icon" aria-hidden="true"> | |
200 | + <use xlink:href="#icon-shebeizaixianshuai"></use> | |
201 | + </svg> | |
202 | + <div class="name">设备在线率</div> | |
203 | + <div class="code-name">#icon-shebeizaixianshuai</div> | |
204 | + </li> | |
205 | + | |
206 | + <li class="dib"> | |
207 | + <svg class="icon svg-icon" aria-hidden="true"> | |
208 | + <use xlink:href="#icon-xiangmu"></use> | |
209 | + </svg> | |
210 | + <div class="name">项目</div> | |
211 | + <div class="code-name">#icon-xiangmu</div> | |
212 | + </li> | |
213 | + | |
214 | + <li class="dib"> | |
215 | + <svg class="icon svg-icon" aria-hidden="true"> | |
216 | + <use xlink:href="#icon-shebei"></use> | |
217 | + </svg> | |
218 | + <div class="name">设备</div> | |
219 | + <div class="code-name">#icon-shebei</div> | |
220 | + </li> | |
221 | + | |
222 | + </ul> | |
223 | + <div class="article markdown"> | |
224 | + <h2 id="symbol-">Symbol 引用</h2> | |
225 | + <hr> | |
226 | + | |
227 | + <p>这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇<a href="">文章</a> | |
228 | + 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:</p> | |
229 | + <ul> | |
230 | + <li>支持多色图标了,不再受单色限制。</li> | |
231 | + <li>通过一些技巧,支持像字体那样,通过 <code>font-size</code>, <code>color</code> 来调整样式。</li> | |
232 | + <li>兼容性较差,支持 IE9+,及现代浏览器。</li> | |
233 | + <li>浏览器渲染 SVG 的性能一般,还不如 png。</li> | |
234 | + </ul> | |
235 | + <p>使用步骤如下:</p> | |
236 | + <h3 id="-symbol-">第一步:引入项目下面生成的 symbol 代码:</h3> | |
237 | +<pre><code class="language-html"><script src="./iconfont.js"></script> | |
238 | +</code></pre> | |
239 | + <h3 id="-css-">第二步:加入通用 CSS 代码(引入一次就行):</h3> | |
240 | +<pre><code class="language-html"><style> | |
241 | +.icon { | |
242 | + width: 1em; | |
243 | + height: 1em; | |
244 | + vertical-align: -0.15em; | |
245 | + fill: currentColor; | |
246 | + overflow: hidden; | |
247 | +} | |
248 | +</style> | |
249 | +</code></pre> | |
250 | + <h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3> | |
251 | +<pre><code class="language-html"><svg class="icon" aria-hidden="true"> | |
252 | + <use xlink:href="#icon-xxx"></use> | |
253 | +</svg> | |
254 | +</code></pre> | |
255 | + </div> | |
256 | + </div> | |
257 | + | |
258 | + </div> | |
259 | + </div> | |
260 | + <script> | |
261 | + $(document).ready(function () { | |
262 | + $('.tab-container .content:first').show() | |
263 | + | |
264 | + $('#tabs li').click(function (e) { | |
265 | + var tabContent = $('.tab-container .content') | |
266 | + var index = $(this).index() | |
267 | + | |
268 | + if ($(this).hasClass('active')) { | |
269 | + return | |
270 | + } else { | |
271 | + $('#tabs li').removeClass('active') | |
272 | + $(this).addClass('active') | |
273 | + | |
274 | + tabContent.hide().eq(index).fadeIn() | |
275 | + } | |
276 | + }) | |
277 | + }) | |
278 | + </script> | |
279 | +</body> | |
280 | +</html> | |
... | ... |
web/WebMvc/wwwroot/css/iot/iconfont.css
0 → 100644
1 | +@font-face { | |
2 | + font-family: "iconfont"; /* Project id 4427370 */ | |
3 | + src: url('iconfont.woff2?t=1706586924308') format('woff2'), | |
4 | + url('iconfont.woff?t=1706586924308') format('woff'), | |
5 | + url('iconfont.ttf?t=1706586924308') format('truetype'); | |
6 | +} | |
7 | + | |
8 | +.iconfont { | |
9 | + font-family: "iconfont" !important; | |
10 | + font-size: 16px; | |
11 | + font-style: normal; | |
12 | + -webkit-font-smoothing: antialiased; | |
13 | + -moz-osx-font-smoothing: grayscale; | |
14 | +} | |
15 | + | |
16 | +.icon-xiaoshuai:before { | |
17 | + content: "\e663"; | |
18 | +} | |
19 | + | |
20 | +.icon-shebeizaixianshuai:before { | |
21 | + content: "\e742"; | |
22 | +} | |
23 | + | |
24 | +.icon-xiangmu:before { | |
25 | + content: "\e63d"; | |
26 | +} | |
27 | + | |
28 | +.icon-shebei:before { | |
29 | + content: "\e63c"; | |
30 | +} | |
31 | + | |
... | ... |
web/WebMvc/wwwroot/css/iot/iconfont.js
0 → 100644
1 | +window._iconfont_svg_string_4427370='<svg><symbol id="icon-xiaoshuai" viewBox="0 0 1024 1024"><path d="M65.3 64.2h10v896h-10z" fill="" ></path><path d="M960.958 949.558v10h-896v-10z" fill="" ></path><path d="M325.1 959.6H187V571h138v388.6z m-128.1-10h118V581H197v368.6zM581 959.6H443V378.8h138v580.8z m-128-10h118V388.8H453v560.8zM837.2 959.6h-138V186.8h138v772.8z m-128.1-10h118V196.8h-118v752.8z" fill="" ></path></symbol><symbol id="icon-shebeizaixianshuai" viewBox="0 0 1024 1024"><path d="M512 0A512 512 0 1 1 0 512 512 512 0 0 1 512 0z" fill="#9285EB" opacity=".5" ></path><path d="M505.008 512m-336 0a336 336 0 1 0 672 0 336 336 0 1 0-672 0Z" fill="#9285EB" ></path><path d="M529.92 519.296l-1.312-3.648a52.16 52.16 0 1 0-40.784-1.024l-24 201.6h87.408z" fill="#FFFFFF" ></path><path d="M655.488 525.936a159.072 159.072 0 1 0-221.152 82.592l4.16-34.944a126.672 126.672 0 1 1 181.536-47.648" fill="#FFFFFF" ></path><path d="M612.512 551.04a99.632 99.632 0 0 0-68.224 25.6l12.544 15.536a77.152 77.152 0 0 1 55.744-22.4 76.336 76.336 0 0 1 57.6 24.448l14.96-13.28a99.2 99.2 0 0 0-72.624-29.904z m-17.872 84.128l17.296 17.728 18.896-17.728a24.368 24.368 0 0 0-36.192 0z" fill="#FFFFFF" ></path><path d="M569.76 606.64l10.368 13.856a48.944 48.944 0 0 1 66.32-0.512l12.336-12.048a67.44 67.44 0 0 0-89.008-1.312z" fill="#FFFFFF" ></path></symbol><symbol id="icon-xiangmu" viewBox="0 0 1024 1024"><path d="M808.137329 63.045739H211.308429c-40.523333 0-73.495513 32.944534-73.495512 73.467867v749.346858c0 40.523333 32.971155 73.495513 73.495512 73.495512h596.8289c40.523333 0 73.482202-32.972179 73.482202-73.495512V136.513606c0-40.523333-32.958869-73.467868-73.482202-73.467867z m17.443934 822.814725c0 9.631689-7.825556 17.457245-17.443934 17.457244H211.308429c-9.631689 0-17.457245-7.825556-17.457244-17.457244V136.513606c0-9.604044 7.825556-17.4296 17.457244-17.429599h596.8289c9.618379 0 17.443934 7.825556 17.443934 17.429599v749.346858z" fill="#3E3A39" ></path><path d="M718.539172 266.895164H448.568256c-15.472955 0-28.018622 12.532356-28.018622 28.019646s12.545667 28.019646 28.018622 28.019645h269.970916c15.472955 0 28.018622-12.532356 28.018622-28.019645s-12.545667-28.019646-28.018622-28.019646zM718.539172 485.849969H448.568256c-15.472955 0-28.018622 12.532356-28.018622 28.018622 0 15.487289 12.545667 28.019646 28.018622 28.019646h269.970916c15.472955 0 28.018622-12.532356 28.018622-28.019646s-12.545667-28.018622-28.018622-28.018622zM718.539172 699.440639H448.568256c-15.472955 0-28.018622 12.532356-28.018622 28.019645s12.545667 28.018622 28.018622 28.018622h269.970916c15.472955 0 28.018622-12.532356 28.018622-28.018622 0-15.487289-12.545667-28.019646-28.018622-28.019645z" fill="#3E3A39" ></path><path d="M321.933095 294.921977m-46.177228 0a46.177228 46.177228 0 1 0 92.354457 0 46.177228 46.177228 0 1 0-92.354457 0Z" fill="#3E3A39" ></path><path d="M321.933095 513.881901m-46.177228 0a46.177228 46.177228 0 1 0 92.354457 0 46.177228 46.177228 0 1 0-92.354457 0Z" fill="#3E3A39" ></path><path d="M321.933095 727.468476m-46.177228 0a46.177228 46.177228 0 1 0 92.354457 0 46.177228 46.177228 0 1 0-92.354457 0Z" fill="#3E3A39" ></path></symbol><symbol id="icon-shebei" viewBox="0 0 1024 1024"><path d="M234.666667 554.666667h384c12.8 0 21.333333 8.533333 21.333333 21.333333s-8.533333 21.333333-21.333333 21.333333h-384c-12.8 0-21.333333-8.533333-21.333334-21.333333s8.533333-21.333333 21.333334-21.333333zM213.333333 448c0 12.8 8.533333 21.333333 21.333334 21.333333h256c12.8 0 21.333333-8.533333 21.333333-21.333333s-8.533333-21.333333-21.333333-21.333333h-256c-12.8 0-21.333333 8.533333-21.333334 21.333333zM938.666667 469.333333v85.333334h-42.666667v85.333333h-42.666667v42.666667c0 46.933333-38.4 85.333333-85.333333 85.333333h-170.666667v42.666667h106.666667c12.8 0 21.333333 8.533333 21.333333 21.333333s-8.533333 21.333333-21.333333 21.333333h-469.333333c-12.8 0-21.333333-8.533333-21.333334-21.333333s8.533333-21.333333 21.333334-21.333333H341.333333v-42.666667H170.666667c-46.933333 0-85.333333-38.4-85.333334-85.333333V341.333333c0-46.933333 38.4-85.333333 85.333334-85.333333h42.666666c0-46.933333 38.4-85.333333 85.333334-85.333333h85.333333c46.933333 0 85.333333 38.4 85.333333 85.333333h298.666667c46.933333 0 85.333333 38.4 85.333333 85.333333v42.666667h42.666667v85.333333h42.666667z m-170.666667-170.666666h-341.333333V256c0-25.6-17.066667-42.666667-42.666667-42.666667h-85.333333c-25.6 0-42.666667 17.066667-42.666667 42.666667v42.666667H170.666667c-25.6 0-42.666667 17.066667-42.666667 42.666666v341.333334c0 25.6 17.066667 42.666667 42.666667 42.666666h597.333333V298.666667z" fill="" ></path></symbol></svg>',function(i){var t=(t=document.getElementsByTagName("script"))[t.length-1],e=t.getAttribute("data-injectcss"),t=t.getAttribute("data-disable-injectsvg");if(!t){var a,n,h,c,l,o=function(t,e){e.parentNode.insertBefore(t,e)};if(e&&!i.__iconfont__svg__cssinject__){i.__iconfont__svg__cssinject__=!0;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(t){console&&console.log(t)}}a=function(){var t,e=document.createElement("div");e.innerHTML=i._iconfont_svg_string_4427370,(e=e.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",e=e,(t=document.body).firstChild?o(e,t.firstChild):t.appendChild(e))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(a,0):(n=function(){document.removeEventListener("DOMContentLoaded",n,!1),a()},document.addEventListener("DOMContentLoaded",n,!1)):document.attachEvent&&(h=a,c=i.document,l=!1,s(),c.onreadystatechange=function(){"complete"==c.readyState&&(c.onreadystatechange=null,d())})}function d(){l||(l=!0,h())}function s(){try{c.documentElement.doScroll("left")}catch(t){return void setTimeout(s,50)}d()}}(window); | |
0 | 2 | \ No newline at end of file |
... | ... |
web/WebMvc/wwwroot/css/iot/iconfont.json
0 → 100644
1 | +{ | |
2 | + "id": "4427370", | |
3 | + "name": "IOT", | |
4 | + "font_family": "iconfont", | |
5 | + "css_prefix_text": "icon-", | |
6 | + "description": "", | |
7 | + "glyphs": [ | |
8 | + { | |
9 | + "icon_id": "4722206", | |
10 | + "name": "效率", | |
11 | + "font_class": "xiaoshuai", | |
12 | + "unicode": "e663", | |
13 | + "unicode_decimal": 58979 | |
14 | + }, | |
15 | + { | |
16 | + "icon_id": "22105955", | |
17 | + "name": "设备在线率", | |
18 | + "font_class": "shebeizaixianshuai", | |
19 | + "unicode": "e742", | |
20 | + "unicode_decimal": 59202 | |
21 | + }, | |
22 | + { | |
23 | + "icon_id": "1263354", | |
24 | + "name": "项目", | |
25 | + "font_class": "xiangmu", | |
26 | + "unicode": "e63d", | |
27 | + "unicode_decimal": 58941 | |
28 | + }, | |
29 | + { | |
30 | + "icon_id": "3282374", | |
31 | + "name": "设备", | |
32 | + "font_class": "shebei", | |
33 | + "unicode": "e63c", | |
34 | + "unicode_decimal": 58940 | |
35 | + } | |
36 | + ] | |
37 | +} | |
... | ... |
web/WebMvc/wwwroot/css/iot/iconfont.ttf
0 → 100644
No preview for this file type
web/WebMvc/wwwroot/css/iot/iconfont.woff
0 → 100644
No preview for this file type
web/WebMvc/wwwroot/css/iot/iconfont.woff2
0 → 100644
No preview for this file type
web/WebMvc/wwwroot/js/index.js
1 | 1 | var $, tab, sysDic = { data: null, method: null }; |
2 | -var IdCard = document.getElementById("IdCard"), | |
3 | - canvas = document.createElement("canvas"), | |
4 | - btnTakeSnapshot = document.getElementById("btnTakeSnapshot"), | |
5 | - isSendFlag = false, | |
6 | - tabIndex = 0, | |
7 | - WebcamObj = null; | |
2 | + | |
8 | 3 | var timeout = null; |
9 | 4 | Date.prototype.format = function (format) { |
10 | 5 | var o = |
... | ... | @@ -48,12 +43,6 @@ function Cancellation() { |
48 | 43 | }); |
49 | 44 | } |
50 | 45 | |
51 | -function handle() { | |
52 | - if (IdCard.value == "") return; | |
53 | - var value = `username=''&password=''&webcam=&idcard=${IdCard.value}`; | |
54 | - login.LoginMethod(value); | |
55 | -} | |
56 | - | |
57 | 46 | layui.config({ |
58 | 47 | base: "/js/" |
59 | 48 | }).use(['bodyTab', 'form', 'element', 'layer', 'jquery'], function () { |
... | ... | @@ -160,18 +149,6 @@ layui.config({ |
160 | 149 | } |
161 | 150 | }); |
162 | 151 | |
163 | - //手机设备的简单适配 | |
164 | - var treeMobile = $('.site-tree-mobile'), | |
165 | - shadeMobile = $('.site-mobile-shade'); | |
166 | - | |
167 | - treeMobile.on('click', function () { | |
168 | - $('body').addClass('site-mobile'); | |
169 | - }); | |
170 | - | |
171 | - shadeMobile.on('click', function () { | |
172 | - $('body').removeClass('site-mobile'); | |
173 | - }); | |
174 | - | |
175 | 152 | // 添加新窗口 |
176 | 153 | $("body").on("click", ".layui-nav .layui-nav-item a", function () { |
177 | 154 | var thisInfo = $(this), |
... | ... | @@ -286,16 +263,6 @@ layui.config({ |
286 | 263 | e.preventDefault(); //Skip default behavior of the enter key |
287 | 264 | } |
288 | 265 | }); |
289 | - | |
290 | - element.on("tab(loginWebcam)", function (data) { | |
291 | - tabIndex = data.index; | |
292 | - if (data.index === 0) { | |
293 | - login.initWebCam(); | |
294 | - } else if (data.index === 1) { | |
295 | - IdCard.focus(); | |
296 | - login.cancalCloseVideo(); | |
297 | - } | |
298 | - }); | |
299 | 266 | }); |
300 | 267 | |
301 | 268 | var qp = { |
... | ... | @@ -450,144 +417,3 @@ setInterval(() => { |
450 | 417 | infoTips.LogTips(); |
451 | 418 | }, 15000); |
452 | 419 | |
453 | - | |
454 | - | |
455 | -//考勤记录 300000 | |
456 | -function WorkAttendanceLog() { | |
457 | - layer.open({ | |
458 | - title: "考勤记录", | |
459 | - area: ["900px", "600px"], | |
460 | - type: 2, | |
461 | - content: "/WorkAttendance/Index" | |
462 | - }); | |
463 | -}; | |
464 | - | |
465 | -//考勤功能 | |
466 | -function WorkAttendance() { | |
467 | - layer.open({ | |
468 | - title: "考勤", | |
469 | - area: ["800px", "600px"], | |
470 | - type: 1, | |
471 | - content: $('#clock'), | |
472 | - success: function () { | |
473 | - login.initWebCam(); | |
474 | - login.initEvents(); | |
475 | - login.initWebcamLogin(); | |
476 | - | |
477 | - }, | |
478 | - cancel: function () { | |
479 | - // 右上角关闭事件的逻辑 | |
480 | - login.cancalCloseVideo(); | |
481 | - } | |
482 | - }); | |
483 | -}; | |
484 | - | |
485 | -var login = { | |
486 | - initWebCam: () => { | |
487 | - Webcam.set({ | |
488 | - width: 420, | |
489 | - height: 440, | |
490 | - image_format: "jpeg", | |
491 | - jpeg_quality: 90 | |
492 | - }); | |
493 | - Webcam.attach("#webcam"); | |
494 | - WebcamObj = true; | |
495 | - }, | |
496 | - | |
497 | - //销毁摄像头 | |
498 | - cancalCloseVideo: () => { | |
499 | - Webcam.reset("#webcam"); | |
500 | - Webcam.reset(); | |
501 | - }, | |
502 | - //登入方法 | |
503 | - LoginMethod: (bodyValue) => { | |
504 | - isSendFlag = true; | |
505 | - var index = 0; | |
506 | - if (tabIndex != 0) index = layer.load(); | |
507 | - | |
508 | - fetch("/WorkAttendance/Clock", { | |
509 | - method: "post", | |
510 | - headers: new Headers({ | |
511 | - "Content-Type": "application/x-www-form-urlencoded" | |
512 | - }), | |
513 | - body: bodyValue | |
514 | - }).then(function (res) { | |
515 | - return res.json(); | |
516 | - }).then(function (data) { | |
517 | - isSendFlag = false; | |
518 | - document.getElementById("IdCard").value = ""; | |
519 | - var src; | |
520 | - if (data.Code === 200) { | |
521 | - src = "/mp3/成功.mp3"; | |
522 | - | |
523 | - layer.msg(data.Result.account + "用户,考勤成功 ", { icon: 6, shade: 0.4, time: 1000 }); | |
524 | - document.getElementById("loginMessage").innerHTML = data.Message; | |
525 | - | |
526 | - } else { | |
527 | - src = "/mp3/失败.mp3"; | |
528 | - document.getElementById("loginMessage").innerHTML = data.Message; | |
529 | - } | |
530 | - var mp3 = new Audio(src); | |
531 | - mp3.play(); | |
532 | - layer.close(index); | |
533 | - }).catch(function (error) { | |
534 | - isSendFlag = false; | |
535 | - if (layer != null) document.getElementById("loginMessage").innerHTML = "登入失败"; | |
536 | - }); | |
537 | - }, | |
538 | - | |
539 | - //自动刷脸登入 | |
540 | - initWebcamLogin: () => { | |
541 | - setInterval(() => { | |
542 | - if (WebcamObj == null) return; | |
543 | - if (isSendFlag) { | |
544 | - console.log("请求中 "); | |
545 | - return; | |
546 | - }; | |
547 | - if (tabIndex != 0) return; | |
548 | - var v = document.querySelector('#webcam video'); | |
549 | - if (v == null) return; | |
550 | - var ctx = canvas.getContext('2d'); | |
551 | - var height = v.videoHeight; | |
552 | - var width = v.videoWidth; | |
553 | - if (height == 0 || width == 0) return; | |
554 | - canvas.height = height; | |
555 | - canvas.width = width; | |
556 | - ctx.drawImage(v, 0, 0, width, height); | |
557 | - | |
558 | - var comp = ccv.detect_objects({ | |
559 | - "canvas": ccv.grayscale(ccv.pre(canvas)), | |
560 | - "cascade": cascade, | |
561 | - "interval": 5, | |
562 | - "min_neighbors": 1 | |
563 | - }); | |
564 | - if (comp.length > 0) { | |
565 | - btnTakeSnapshot.click(); | |
566 | - } | |
567 | - document.getElementById("ccvMessage").innerHTML = "检测图片结果: " + (comp.length ? '有人脸' : "没人脸"); | |
568 | - }, 6000); | |
569 | - }, | |
570 | - | |
571 | - //注册事件 | |
572 | - initEvents: () => { | |
573 | - //刷卡登入 | |
574 | - if (timeout != null) timeout = null; | |
575 | - IdCard.addEventListener('input', debounce(handle, 1000)) | |
576 | - | |
577 | - //拍照 | |
578 | - btnTakeSnapshot.addEventListener("click", function () { | |
579 | - if (WebcamObj == null) { | |
580 | - alert("请等待摄像启动完成后再拍照登入"); | |
581 | - return; | |
582 | - } | |
583 | - Webcam.snap(function (data_uri) { | |
584 | - if (data_uri == null) { | |
585 | - alert("请等待摄像启动完成后再拍照登入"); | |
586 | - return; | |
587 | - } | |
588 | - var value = `username=''&password=''&webcam=${data_uri}&idcard=`; | |
589 | - login.LoginMethod(value); | |
590 | - }); | |
591 | - }); | |
592 | - } | |
593 | -} | |
... | ... |
web/WebMvc/wwwroot/productjs/configure/BaseProject.js
... | ... | @@ -163,6 +163,8 @@ layui.config({ |
163 | 163 | |
164 | 164 | btnGetPoint: $("#btnGetPoint"), |
165 | 165 | txtProjectAddress: $("#modifyForm form input[name=projectAddress]"), |
166 | + btnCopyLonLat: document.querySelector("#btnCopyLonLat"), | |
167 | + | |
166 | 168 | |
167 | 169 | //下拉框配置 |
168 | 170 | selectOption: { |
... | ... | @@ -230,6 +232,26 @@ layui.config({ |
230 | 232 | |
231 | 233 | initFrom() { |
232 | 234 | sysU.initSelecteByEnum(app.data.selectOption); |
235 | + }, | |
236 | + initCopy() { | |
237 | + app.data.btnCopyLonLat.addEventListener("click", function (event) { | |
238 | + $("#modifyForm form input[name=longitude]").focus(); | |
239 | + // 获取剪贴板中的文本数据 | |
240 | + navigator.clipboard.readText() | |
241 | + .then(text => { | |
242 | + debugger | |
243 | + const pattern = /^\d+(\.\d+)?,\d+(\.\d+)?$/; | |
244 | + if (!pattern.test(text)) { | |
245 | + layer.alert('经纬度复制的值错误,正确的是格式【x,x】x是数字!', { icon: sysU.config.iconoError, shadeClose: true, title: sysU.config.titleOpen }); | |
246 | + return; | |
247 | + } | |
248 | + var tempValue = text.split(","); | |
249 | + form.val("modifyForm", { longitude: tempValue[0], latitude: tempValue[1] }); | |
250 | + }) | |
251 | + .catch(err => { | |
252 | + layer.alert('无法读取剪贴板数据:' + err, { icon: sysU.config.iconoError, shadeClose: true, title: sysU.config.titleError }); | |
253 | + }); | |
254 | + }); | |
233 | 255 | } |
234 | 256 | }, |
235 | 257 | registerEvent: function () { |
... | ... | @@ -240,6 +262,7 @@ layui.config({ |
240 | 262 | init: function () { |
241 | 263 | app.methods.initTable(); |
242 | 264 | app.methods.initFrom(); |
265 | + app.methods.initCopy(); | |
243 | 266 | app.registerEvent(); |
244 | 267 | } |
245 | 268 | }; |
... | ... |