| fzzy-igdss-core/src/main/java/com/fzzy/igds/data/Template.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| fzzy-igdss-core/src/main/java/com/fzzy/igds/data/TemplateParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SnapReplyService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/WxUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| fzzy-igdss-web/src/main/java/com/fzzy/appwx/controller/WeChatController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| fzzy-igdss-web/src/main/resources/static/group/video.css | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| fzzy-igdss-web/src/main/resources/static/group/video.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| fzzy-igdss-web/src/main/resources/templates/group/video.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
fzzy-igdss-core/src/main/java/com/fzzy/igds/data/Template.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,41 @@ package com.fzzy.igds.data; import lombok.Data; import java.util.Map; /** * æ¨¡æ¿æ¶æ¯ç±» * * @author chen */ @Data public class Template { /** * æ¥æ¶è openid */ private String touser; /** * 模æ¿id */ private String template_id; /** * 详æ è·¯å¾ */ private String url; /** * æ é¢é¢è² */ private String topcolor; /** * æ°æ® */ private Map<String, TemplateParam> data; } fzzy-igdss-core/src/main/java/com/fzzy/igds/data/TemplateParam.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,24 @@ package com.fzzy.igds.data; import lombok.Data; /** * æ¨¡æ¿æ¶æ¯æ°æ®ç±» * @author chen */ @Data public class TemplateParam { private String value; private String color; public TemplateParam() { } public TemplateParam(String value, String color) { this.value = value; this.color = color; } } fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SnapReplyService.java
@@ -8,6 +8,7 @@ import com.fzzy.igds.domain.SnapReply; import com.fzzy.igds.mapper.SnapReplyMapper; import com.fzzy.igds.utils.ContextUtil; import com.fzzy.igds.utils.WxUtil; import com.ruoyi.common.utils.StringUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -22,6 +23,8 @@ @Resource private SnapReplyMapper snapReplyMapper; @Resource private WxUtil wxUtil; /** @@ -53,7 +56,7 @@ } public void listPageByListDept(Page<SnapReply> page, IgdsBaseParam param, List<String> listDept) { if( listDept == null || listDept.isEmpty()){ if (listDept == null || listDept.isEmpty()) { return; } @@ -166,4 +169,55 @@ return snapReplyMapper.deleteById(snapReply) > 0 ? BaseResp.success() : BaseResp.error("å é¤å¤±è´¥"); } /** * åéè¦åå°å¾®ä¿¡ * @param deptId */ public BaseResp sendNotice(String deptId){ //todo æªå®æ if(StringUtils.isEmpty(deptId)){ return BaseResp.error("è¯·éæ©åºåº"); } // //éè¦æ¨éçç¨æ· // List<SysUser> users= new ArrayList<>(); // String res = ""; // //éåç¨æ·ï¼åéå¾®ä¿¡æ¶æ¯ // for (SysUser user : users) { // if(StringUtils.isNotEmpty(user.getOpenId())){ // boolean b = weChatUtil.sendMessage( // user.getOpenId(), // snapReply.getId(), // snapReply.getCompanyId(), // "åºåºåè¦æ¹å¤æµè¯æ¨é", // snapReply.getDeptId(), // snapReply.getContent(), // DateFormatUtils.format(snapReply.getCreateTime(),"yyyy-MM-dd HH:mm:ss"), // "", // "", // user.getUserName()); // if(!b){ // res += user.getUserName() + "ç¨æ·å¾®ä¿¡æ¨é失败,"; // return BaseResp.error(res); // // } // }else{ // log.debug("------ç¨æ·openidä¸åå¨ï¼ä¸è¿è¡æ¨é------"); // res += user.getUserName() + "ç¨æ·æªç»å®,"; // return BaseResp.error(res); // // } // } // if(StringUtils.isEmpty(res)){ // return BaseResp.success("微信:æ¨éæå;"); // }else{ // return BaseResp.error("微信:"+res+";"); // } return BaseResp.success("微信:æ¨éæå;"); } } fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/WxUtil.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,181 @@ package com.fzzy.igds.utils; import com.alibaba.fastjson.JSONObject; import com.fzzy.igds.data.ConfigData; import com.fzzy.igds.data.Template; import com.fzzy.igds.data.TemplateParam; import com.ruoyi.common.core.redis.RedisCache; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; @Slf4j @Component public class WxUtil { /** * å ¬ä¼å·è°ç¨å ¨å±æ¥å£çæ è¯ACCESS_TOKENç¼åkey */ public static final String ACCESS_TOKEN = "ACCESS_TOKEN"; /** * æ¨¡æ¿æ¶æ¯åéurl */ public static final String TEMPLATE_URL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN"; /** * è·åaccess_tokençæ¥å£å°å(GET , 2000次/天) */ public static final String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET"; @Autowired private RestTemplate restTemplate; @Autowired private ConfigData configData; @Resource private RedisCache redisCache; /** * å鿍¡æ¿æ¶æ¯ * @param openid ç¨æ·openid * @param warnId è¦åid * @param companyId ç»ç»id * @param title è¦åæ é¢ * @param keyword1 è¦å对象 * @param keyword2 è¦åç±»å * @param keyword3 è¦åæ¶é´ * @param keyword4 è¦åå 容 * @param remark è¦å详æ * @return */ public boolean sendMessage(String openid, String warnId, String companyId, String title, String keyword1, String keyword2, String keyword3, String keyword4,String remark, String userName){ Template tem = new Template(); tem.setTemplate_id(configData.getWxTempId()); tem.setTopcolor("#FF0000"); tem.setTouser(openid); tem.setUrl(configData.getWxServeUrl() + "/wx/view-gateway?state=warn-detail1&id=" + warnId + "&companyId=" + companyId + "&userName=" + userName); Map<String, TemplateParam> params = new HashMap<>(); params.put("first",new TemplateParam(title,"#173177")); //è¦å对象 params.put("keyword1",new TemplateParam( keyword1, "#173177")); //è¦åç±»å params.put("keyword2",new TemplateParam( keyword2, "#173177")); //è¦åæ¶é´ params.put("keyword3",new TemplateParam( keyword3, "#173177")); //è¦åå 容 params.put("keyword4",new TemplateParam( keyword4, "#173177")); params.put("remark",new TemplateParam( remark, "#173177")); tem.setData(params); log.debug("------微信éç¥å¼å§æ¨é------"); //æ¨éæ¶æ¯ return sendTemplateMsg(tem); } /** * æ¨éæ¨¡æ¿æ¶æ¯ * * @param template * @return */ public boolean sendTemplateMsg(Template template) { //è·åAccessToken String accessToken = getAccessToken(); if(StringUtils.isEmpty(accessToken)){ log.debug("------è·åAccessToken失败------"); return false; } boolean flag = false; String url = WxUtil.TEMPLATE_URL.replace("ACCESS_TOKEN",accessToken); String str = JSONObject.toJSONString(template); JSONObject jsonObject = doPost(url, str); if (jsonObject != null) { int errorCode = jsonObject.getIntValue("errcode"); String errorMessage = jsonObject.getString("errmsg"); if (errorCode == 0) { log.debug("æ¨éå¾®ä¿¡æ¶æ¯æåï¼" + str); flag = true; } else { log.info("æ¨¡æ¿æ¶æ¯åé失败{},{}", errorCode, errorMessage); log.error("ACCESS_TOKEN:" + accessToken); flag = false; } } log.debug("æ¨éå¾®ä¿¡æ¶æ¯å¤±è´¥ï¼" ); return flag; } /** * è·åå ¨å±AccessToken * * @return */ public String getAccessToken() { //å ä»ç¼åè·åï¼è¥ä¸åå¨åéè¿æ¥å£è·å String accessToken = (String)redisCache.getCacheObject(WxUtil.ACCESS_TOKEN); if(StringUtils.isNotEmpty(accessToken)){ return accessToken; } //请æ±è·åAccessTokenç微信æ¥å£ String resp = doGet(WxUtil.ACCESS_TOKEN_URL.replace("APPID", configData.getWxAppId()).replace("APPSECRET", configData.getWxSecret())); JSONObject json = JSONObject.parseObject(resp); if (json != null) { //è·åaccessToken accessToken = json.getString("access_token"); //è·åaccessTokenæææ¶é¿ï¼ä¸º7200s int expiresIn = json.getIntValue("expires_in"); //å°accessTokenåå ¥ç¼åï¼æææ¶é¿ä¸ºexpiresInï¼å³2å°æ¶ redisCache.setCacheObject(WxUtil.ACCESS_TOKEN, accessToken,expiresIn, TimeUnit.SECONDS); return accessToken; } log.error("è·åaccess_token失败"); return null; } /** * postè¯·æ± * @param url * @param data * @return */ public JSONObject doPost(String url, String data){ ResponseEntity<JSONObject> jsonObject = restTemplate.postForEntity(url, data, JSONObject.class); return jsonObject.getBody(); } /** * getè¯·æ± * * @param url * @return */ public String doGet(String url) { return restTemplate.getForObject(url, String.class); } } fzzy-igdss-web/src/main/java/com/fzzy/appwx/controller/WeChatController.java
@@ -19,6 +19,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.net.URLEncoder; import java.util.List; @Slf4j @@ -51,13 +52,13 @@ tag = "home"; } // String newUrl = WeChatConst.USER_AUTH_UPR // .replace("APPID", configData.getWxAppId()) // .replace("REDIRECT_URI", URLEncoder.encode(url, "UTF-8")) // .replace("STATE", tag); // // return "redirect:" + newUrl; return "redirect:" + url + "?state=" + tag; String newUrl = WeChatConst.USER_AUTH_UPR .replace("APPID", configData.getWxAppId()) .replace("REDIRECT_URI", URLEncoder.encode(url, "UTF-8")) .replace("STATE", tag); return "redirect:" + newUrl; // return "redirect:" + url + "?state=" + tag; } @@ -116,20 +117,20 @@ mv.addObject("deptList", deptList); // //æµè¯ä»£ç å¼å¯ String openid = "testOpenId"; mv.addObject("openid", openid); SysUser user = weChatManager.getUser(openid); if (StringUtils.isEmpty(userName)) { if (user != null) { userName = user.getUserName(); } } if (StringUtils.isNotEmpty(userName)) { mv.addObject("userName", userName); } // //æµè¯ä»£ç ç»æ //// //æµè¯ä»£ç å¼å¯ // String openid = "testOpenId"; // mv.addObject("openid", openid); // SysUser user = weChatManager.getUser(openid); // if (StringUtils.isEmpty(userName)) { // if (user != null) { // userName = user.getUserName(); // } // } // // if (StringUtils.isNotEmpty(userName)) { // mv.addObject("userName", userName); // } //// //æµè¯ä»£ç ç»æ return mv; } fzzy-igdss-web/src/main/resources/static/group/video.css
@@ -318,7 +318,7 @@ height: 255px; background: url("../img/web/group/left-box1-monitor.png") no-repeat; background-size: 100% 100%; margin-bottom: 30px; margin-bottom: 18px; padding: 36px 20px 8px 20px; box-sizing: border-box; } @@ -362,13 +362,14 @@ } .left-m2 { background: url("../img/web/group/left-box2.png") no-repeat; width: 100%; height: 362px; box-sizing: border-box; margin-bottom: 18px; position: relative; width: 430px; height: 610px; background: url("../img/web/group/left-box2-monitor.png") no-repeat; background-size: 100% 100%; padding: 56px 20px 20px 20px; box-sizing: border-box; } @@ -379,7 +380,7 @@ background: url("../img/web/group/left-m2-bg.png") no-repeat; background-size: 100% 100%; display: flex; font-size: 14px; font-size: 3px; color: #91ceff; box-sizing: border-box; } @@ -392,7 +393,6 @@ .left-m2 .panel-content .panel-content-head .head-item { flex: 1; } .left-m2 .panel-content .panel-content-body { width: 100%; @@ -418,18 +418,84 @@ height: 30px; line-height: 30px; display: flex; margin-top: 6px; } .left-m2 .panel-content .panel-content-body .panel-content-body-tr .body-item { flex: 1; font-size: 3px; color: #ffffff; } .left-m3 { width: 100%; height: 242px; background: url("../img/web/group/left-box3.png") no-repeat; box-sizing: border-box; position: relative; background-size: 100% 100%; padding: 56px 20px 20px 20px; } .left-m3 .panel-content .panel-content-head { width: 100%; height: 31px; line-height: 31px; background: url("../img/web/group/left-m2-bg.png") no-repeat; background-size: 100% 100%; display: flex; font-size: 14px; color: #91ceff; box-sizing: border-box; } .left-m3 .head-item, .left-m3 .body-item { text-align: center; } .left-m3 .panel-content .panel-content-head .head-item { flex: 1; } .left-m3 .panel-content .panel-content-body { width: 100%; height: calc(100% - 2vw); box-sizing: border-box; overflow: hidden; overflow-y: auto; } .left-m3 .panel-content .panel-content-body::-webkit-scrollbar { width: 6px; background-color: rgba(51, 238, 255, 0.2); } .left-m3 .panel-content .panel-content-body::-webkit-scrollbar-thumb { -webkit-box-shadow: inset 0 0 6px rgba(2, 160, 251, 0.3); background-color: rgba(2, 158, 249, 0.5); border-radius: 3px; } .left-m3 .panel-content .panel-content-body .panel-content-body-tr { width: 100%; height: 30px; line-height: 30px; display: flex; padding-top: 6px; padding-bottom: 5px; border-bottom: 1px solid #4c5354c7; } .left-m2 .panel-content .panel-content-body .panel-content-body-tr .body-item { .left-m3 .panel-content .panel-content-body .panel-content-body-tr .body-item { flex: 1; font-size: 14px; color: #ffffff; user-select: none; } .panel-box1-item{ width: 100%; @@ -716,7 +782,7 @@ .data-top-btn:last-child{ width: -webkit-calc(50% - 5px); width: calc(50% - 5px); } .data-top-btn:first-child{ @@ -768,7 +834,7 @@ min-width: 100%; height: 448px; overflow: auto; } .data-tableBox::-webkit-scrollbar { fzzy-igdss-web/src/main/resources/static/group/video.js
@@ -6,7 +6,11 @@ var cameraIndex = 0; //çæ§ä¸æ var cameraTimer; // åºåºå®æ¶ var windowsNum = 1; // var gundongTimer; //çæ§å表æ»å¨å®æ¶å¨ var gundongTimer; //AIäºä»¶æ»å¨å ¶ var gundongTimer1; //çæ§å表æ»å¨å®æ¶å¨ var eventDeptList = null; $(function () { // åå§åé¡µé¢ @@ -24,10 +28,15 @@ initDicSlogan(); //çæ§ç¹ä¿¡æ¯éåºæ»å¨ initScrollbar(60); initScrollbar1(60); //åºåºä¿¡æ¯ renderDeptArea(); //请æ±ç管åºåºä¿¡æ¯ ajaxDeptList(); initScrollbar(60); } // socketä¿¡æ¯è¿åèç @@ -38,6 +47,83 @@ dicSlogan = data; initDicSlogan(); } } /** * 请æ±è·ååºåºç¸å ³ä¿¡æ¯ */ function ajaxDeptList() { deptList = null; $.ajax({ type: "POST", url: "/group/index-dept-list", dataType: "json", contentType: "application/json;charset=UTF-8", data: JSON.stringify({ "companyId": companyId }), success: function (result) { if (result.code == "0000") { eventDeptList = result.data; renderMsg(); } }, error: function (error) { } }); } /** * æ´æ°AIå¨æåæ * @param data */ function renderMsg() { var html = ''; var num1 = ''; var num7 = ''; var flag = false; if (eventDeptList != null && eventDeptList.length > 0) { $.each(eventDeptList, function (index, item) { if (item.dailyTotal === 0) { num1 = '彿¥ä¸åæ£å¸¸'; } else if (item.dailyTotal < 0) { num1 = 'æªæ£æµå°ç½å ³'; } else { num1 = '彿¥æ°é' + item.dailyTotal + '个'; } if (item.warnNum7 === 0) { num7 = 'è¿ä¸å¤©ä¸åæ£å¸¸'; } else { num7 = 'è¿ä¸å¤©æ°é' + item.warnNum7 + '个'; } html += '<div class="panel-content-body-tr">'; if (item.dailyTotal > 0) { flag = true; } // if (item.warnNum7 > 10) { // flag = true; // html += '<span class="body-item sp" style="color: #bc2032;flex: 1.5;">' + item.deptName + '</span>'; // html += '<span class="body-item sp" style="color: #bc2032;">' + num1 + '</span>'; // html += '<span class="body-item sp" style="color: #bc2032;">' + num7 + '</span>'; // } else if (item.warnNum7 > 1 && item.warnNum7 < 10) { // flag = true; // html += '<span class="body-item sp" style="color: #f37b3d;flex: 1.5;">' + item.deptName + '</span>'; // html += '<span class="body-item sp" style="color: #f37b3d;">' + num1+ '</span>'; // html += '<span class="body-item sp" style="color: #f37b3d;">' + num7 + '</span>'; // }else { html += '<span class="body-item sp" style="flex: 1.5;">' + item.deptName + '</span>'; html += '<span class="body-item sp">' + num1 + '</span>'; html += '<span class="body-item sp">' + num7 + '</span>'; // } html += '</div>'; }) } if (flag) { $("#panel-title").html('åºåºAIäºä»¶ä¿¡æ¯ <i class="dot"></i>'); } $("#inventoryInfo").html(html); } // 渲æåºåºä¿¡æ¯ @@ -103,7 +189,7 @@ html += '<span class="body-item" style="flex: 0.6"></span>'; html += '</div>'; } $("#inventoryInfo").html(html); $("#inventoryInfo1").html(html); cameraSwitch1(); } @@ -337,6 +423,26 @@ return document.getElementById('inventoryInfo').clientHeight > document.getElementById('inventoryInfoBox').clientHeight; } //çæ§ç¹ä¿¡æ¯æ»å¨ function initScrollbar1(num) { gundongTimer1 = setInterval(function () { if (!hasScrollbar1()) { document.getElementById('inventoryInfoBox1').scrollTop = 0; } else { if (document.getElementById('inventoryInfoBox1').scrollTop >= (document.getElementById('inventoryInfo1').clientHeight - document.getElementById('inventoryInfoBox1').clientHeight)) { document.getElementById('inventoryInfoBox1').scrollTop = 0; } else { document.getElementById('inventoryInfoBox1').scrollTop++; } } }, num); } //夿åºé¨æ¯å¦åºç°æ»å¨æ¡ function hasScrollbar1() { return document.getElementById('inventoryInfo1').clientHeight > document.getElementById('inventoryInfoBox1').clientHeight; } // å³ä¸è§æéä¿¡æ¯ function showTip(msg) { layer.msg(msg); fzzy-igdss-web/src/main/resources/templates/group/video.html
@@ -108,26 +108,73 @@ width: unset; } .right-videoWrap { height: unset; height: unset; } .left-m2 .panel-content .panel-content-body .panel-content-body-tr { padding-top: unset; height: 40px; /* ========== AIäºä»¶åè¡¨æ ¸å¿æ ·å¼ ========== */ .left-m2 .panel-content .panel-content-head { line-height: 40px; font-size: 18px; display: flex; /* 表头flexå¸å±ï¼ç²¾ååé å宽 */ width: 100%; } /* 表头å宽精ååé ï¼æå±åºç¹å æ¯æé«ï¼è¿ä¸å¤©æ°éé¢çè¶³å¤å®½åº¦é²æ¢è¡ */ .left-m2 .panel-content .panel-content-head .head-item:nth-child(1) { flex: 2; /* æå±åºç¹ï¼å®½åï¼éé é¿åç§° */ white-space: nowrap; /* 强å¶ä¸æ¢è¡ */ text-align: center; } .left-m2 .panel-content .panel-content-head .head-item:nth-child(2) { flex: 1.2; /* 彿¥åæï¼ä¸ç宽度 */ white-space: nowrap; /* 强å¶ä¸æ¢è¡ */ text-align: center; } .left-m2 .panel-content .panel-content-head .head-item:nth-child(3) { flex: 1.2; /* è¿ä¸å¤©æ°éï¼å 宽å宽ï¼å¼ºå¶ä¸æ¢è¡ */ white-space: nowrap; /* æ ¸å¿ï¼ç¦æ¢è¡¨å¤´æ¢è¡ */ text-align: center; } /* åè¡¨é¡¹æ ·å¼ï¼å®æ´å±ç¤ºæåï¼èªéåºè¡é« */ .left-m2 .panel-content .panel-content-body .panel-content-body-tr { padding-top: unset; height: auto; /* èªéåºè¡é« */ line-height: 22px; /* éé æ¢è¡åçè¡é´è· */ padding: 8px 2px; display: flex; /* å表头åå®½å¯¹é½ */ width: 100%; box-sizing: border-box; } .left-m2 .panel-content .panel-content-body .panel-content-body-tr .body-item { font-size: 18px; font-size: 16px; padding: 0 8px; white-space: normal; /* å表项å 许æ¢è¡ï¼å®æ´å±ç¤ºå 容 */ word-wrap: break-word; /* é¿ææ¬å¼ºå¶æ¢è¡ */ text-align: center; box-sizing: border-box; } .left-m2 .panel-content .panel-content-head { line-height: unset; font-size: 18px; /* å表项å宽åè¡¨å¤´ä¸¥æ ¼å¯¹é½ */ .left-m2 .panel-content .panel-content-body .panel-content-body-tr .body-item:nth-child(1) { flex: 2; } .left-m2 .panel-content .panel-content-body .panel-content-body-tr .body-item:nth-child(2) { flex: 1.2; } .left-m2 .panel-content .panel-content-body .panel-content-body-tr .body-item:nth-child(3) { flex: 1.2; } /* ========== æ ¸å¿æ ·å¼ç»æ ========== */ .text_select_play { font-size: 16px; } .video { width: 100%; height: 100%; } /* å表容å¨ï¼å 容è¿å¤æ¶æ»å¨ï¼ä¸æ¤åå¸å± */ #inventoryInfoBox { width: 100%; box-sizing: border-box; overflow-y: auto; max-height: 300px; } </style> </head> @@ -192,7 +239,29 @@ </div><!-- i-m1 end --> <div class="left-m2"> <div> <div class="panel-title" id="panel-title">çæ§ç¹ä¿¡æ¯</div> <div class="panel-title" id="panel-title">åºåºAIäºä»¶ä¿¡æ¯</div> </div> <div class="panel-content"> <div class="panel-content-head"> <span class="head-item">æå±åºç¹</span> <span class="head-item">彿¥åæ</span> <span class="head-item">è¿ä¸å¤©æ°é</span> <!-- ä¿®æ£è¡¨å¤´æåï¼åæ¶æ¢è¡ --> </div> <div class="panel-content-body" id="inventoryInfoBox"> <div id="inventoryInfo"> <!-- <div class="panel-content-body-tr">--> <!-- <span class="body-item">å®é²-åå´å¢1</span>--> <!-- <span class="body-item">æªæº</span>--> <!-- <span class="body-item">12</span>--> <!-- </div>--> </div> </div> </div> </div> <div class="left-m3"> <div> <div class="panel-title" id="panel-title1">çæ§ç¹ä¿¡æ¯</div> </div> <div class="panel-content"> <div class="panel-content-head"> @@ -200,8 +269,8 @@ <span class="head-item" style="flex: 0.6">çæ§ç±»å</span> </div> <div class="panel-content-body" id="inventoryInfoBox"> <div id="inventoryInfo"> <div class="panel-content-body" id="inventoryInfoBox1"> <div id="inventoryInfo1"> <div class="panel-content-body-tr"> <span class="body-item" style="flex: 1.4">å®é²-åå´å¢1</span> <span class="body-item" style="flex: 0.6">æªæº</span> @@ -409,6 +478,7 @@ var dicSlogan = [[${dicSlogan}]]; var deptList = [[${deptList}]]; //è®¾ç½®å®æ¶å·æ°é¡µé¢ï¼ä¸»è¦ä¸ºäºé²æ¢æçº¿ var timer2; window.onload = function () { @@ -421,4 +491,4 @@ }; </script> </body> </html> </html>