Commit 55cfd4e084bd5786bbf50eec6b9c55eccdb8a215

Authored by HuXiYu
2 parents 8f39c416 8e026cc7

Merge branch 'dev' of http://172.16.29.40:8010/MES/IOT into dev

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"">&#xe9aa;</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="">&#xe6e7;</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="">&#xe642;</i><cite>打卡</cite></a></dd>
100   - <dd><a href="javascript:;" onclick="WorkAttendanceLog();"><i class="layui-icon" data-icon="">&#xe60f;</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="">&#xe642;</i><cite>修改密码</cite></a></dd>
109   - @*<dd><a href="javascript:;" class="lockcms"><i class="layui-icon" data-icon="">&#xe6e5;</i><cite>锁屏</cite></a></dd>*@
  94 +@* <dd><a href="javascript:;" class="lockcms"><i class="layui-icon" data-icon="">&#xe6e5;</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">&#xe602;</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(&quot;https://webmap0.bdimg.com/image/api/bg.png&quot;); 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">&#xe663;</span>
  59 + <div class="name">效率</div>
  60 + <div class="code-name">&amp;#xe663;</div>
  61 + </li>
  62 +
  63 + <li class="dib">
  64 + <span class="icon iconfont">&#xe742;</span>
  65 + <div class="name">设备在线率</div>
  66 + <div class="code-name">&amp;#xe742;</div>
  67 + </li>
  68 +
  69 + <li class="dib">
  70 + <span class="icon iconfont">&#xe63d;</span>
  71 + <div class="name">项目</div>
  72 + <div class="code-name">&amp;#xe63d;</div>
  73 + </li>
  74 +
  75 + <li class="dib">
  76 + <span class="icon iconfont">&#xe63c;</span>
  77 + <div class="name">设备</div>
  78 + <div class="code-name">&amp;#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 +>&lt;span class="iconfont"&gt;&amp;#x33;&lt;/span&gt;
  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">&lt;link rel="stylesheet" href="./iconfont.css"&gt;
  177 +</code></pre>
  178 + <h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>
  179 +<pre><code class="language-html">&lt;span class="iconfont icon-xxx"&gt;&lt;/span&gt;
  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">&lt;script src="./iconfont.js"&gt;&lt;/script&gt;
  238 +</code></pre>
  239 + <h3 id="-css-">第二步:加入通用 CSS 代码(引入一次就行):</h3>
  240 +<pre><code class="language-html">&lt;style&gt;
  241 +.icon {
  242 + width: 1em;
  243 + height: 1em;
  244 + vertical-align: -0.15em;
  245 + fill: currentColor;
  246 + overflow: hidden;
  247 +}
  248 +&lt;/style&gt;
  249 +</code></pre>
  250 + <h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3>
  251 +<pre><code class="language-html">&lt;svg class="icon" aria-hidden="true"&gt;
  252 + &lt;use xlink:href="#icon-xxx"&gt;&lt;/use&gt;
  253 +&lt;/svg&gt;
  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(() =&gt; {
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 };
... ...