Commit bc60adc6b0f2f0f09e42740f5f4d47d0709eb860
Merge branch 'pudong_jdk8_wvp' of http://192.168.168.245:8888/panzhaov5/bsth_con…
…trol into pudong_jdk8_wvp
Showing
15 changed files
with
319 additions
and
300 deletions
src/main/java/com/bsth/XDApplication.java
| @@ -259,7 +259,7 @@ public class XDApplication implements CommandLineRunner { | @@ -259,7 +259,7 @@ public class XDApplication implements CommandLineRunner { | ||
| 259 | sexec.scheduleWithFixedDelay(basicDataLoader, 1, 1, TimeUnit.HOURS);//基础数据更新 | 259 | sexec.scheduleWithFixedDelay(basicDataLoader, 1, 1, TimeUnit.HOURS);//基础数据更新 |
| 260 | sexec.scheduleWithFixedDelay(whiteIpDataLoader, 0, 1, TimeUnit.MINUTES);//IP白名单数据更新 | 260 | sexec.scheduleWithFixedDelay(whiteIpDataLoader, 0, 1, TimeUnit.MINUTES);//IP白名单数据更新 |
| 261 | sexec.scheduleWithFixedDelay(autoExecScanThread, 180, 50, TimeUnit.SECONDS);//班次自动执行 | 261 | sexec.scheduleWithFixedDelay(autoExecScanThread, 180, 50, TimeUnit.SECONDS);//班次自动执行 |
| 262 | - //DirectivePushQueue.start();//消息队列 -指令,系统下发的 | 262 | + DirectivePushQueue.start();//消息队列 -指令,系统下发的 |
| 263 | WebSocketPushQueue.start();//消息队列 -webSocket ,推送至线调web页面的 | 263 | WebSocketPushQueue.start();//消息队列 -webSocket ,推送至线调web页面的 |
| 264 | 264 | ||
| 265 | /** 线调为其他程序提供的数据 --写入数据库 */ | 265 | /** 线调为其他程序提供的数据 --写入数据库 */ |
src/main/java/com/bsth/controller/sys/UserController.java
| @@ -155,7 +155,8 @@ public class UserController extends BaseController<SysUser, Integer> { | @@ -155,7 +155,8 @@ public class UserController extends BaseController<SysUser, Integer> { | ||
| 155 | userName = RSAUtils.decryptBase64(userName); | 155 | userName = RSAUtils.decryptBase64(userName); |
| 156 | password = RSAUtils.decryptBase64(password); | 156 | password = RSAUtils.decryptBase64(password); |
| 157 | } catch (RuntimeException e) { | 157 | } catch (RuntimeException e) { |
| 158 | - return put(rs, "msg", "decrypt RSA fail!可能页面已过期,尝试刷新页面。"); | 158 | + //return put(rs, "msg", "decrypt RSA fail!可能页面已过期,尝试刷新页面。"); |
| 159 | + return put(rs, "msg", "page is expired, refresh it and try again"); | ||
| 159 | } | 160 | } |
| 160 | 161 | ||
| 161 | SysUser user = sysUserService.findByUserName(userName); | 162 | SysUser user = sysUserService.findByUserName(userName); |
| @@ -168,12 +169,14 @@ public class UserController extends BaseController<SysUser, Integer> { | @@ -168,12 +169,14 @@ public class UserController extends BaseController<SysUser, Integer> { | ||
| 168 | 169 | ||
| 169 | // 校验用户状态 | 170 | // 校验用户状态 |
| 170 | if (!user.isEnabled()) { | 171 | if (!user.isEnabled()) { |
| 171 | - return put(rs, "msg", "该用户已被锁定,请联系管理员"); | 172 | + //return put(rs, "msg", "该用户已被锁定,请联系管理员"); |
| 173 | + return put(rs, "msg", "your account is locked, please contact administrator"); | ||
| 172 | } | 174 | } |
| 173 | 175 | ||
| 174 | // 校验临时状态 | 176 | // 校验临时状态 |
| 175 | if (USER_LOCKTIME.get(userName) != null && USER_LOCKTIME.get(userName) >= System.currentTimeMillis()) { | 177 | if (USER_LOCKTIME.get(userName) != null && USER_LOCKTIME.get(userName) >= System.currentTimeMillis()) { |
| 176 | - return put(rs, "msg", "您的账户因密码错误次数过多,处于锁定状态中"); | 178 | + //return put(rs, "msg", "您的账户因密码错误次数过多,处于锁定状态中"); |
| 179 | + return put(rs, "msg", "your account is locked"); | ||
| 177 | } | 180 | } |
| 178 | 181 | ||
| 179 | // 校验验证码 | 182 | // 校验验证码 |
| @@ -183,7 +186,8 @@ public class UserController extends BaseController<SysUser, Integer> { | @@ -183,7 +186,8 @@ public class UserController extends BaseController<SysUser, Integer> { | ||
| 183 | return put(rs, "msg", I18n.getInstance().getMessage("txt-2321")); | 186 | return put(rs, "msg", I18n.getInstance().getMessage("txt-2321")); |
| 184 | } | 187 | } |
| 185 | if (!verCode.equals(captcha)) { | 188 | if (!verCode.equals(captcha)) { |
| 186 | - return put(rs, "msg", "验证码有误,请刷新后重新输入"); | 189 | + //return put(rs, "msg", "验证码有误,请刷新后重新输入"); |
| 190 | + return put(rs, "msg", I18n.getInstance().getMessage("captcha is error,please refresh and enter again")); | ||
| 187 | } | 191 | } |
| 188 | } | 192 | } |
| 189 | 193 | ||
| @@ -217,7 +221,8 @@ public class UserController extends BaseController<SysUser, Integer> { | @@ -217,7 +221,8 @@ public class UserController extends BaseController<SysUser, Integer> { | ||
| 217 | logger.error("用户:" + user.getUserName() + "登录"); | 221 | logger.error("用户:" + user.getUserName() + "登录"); |
| 218 | } catch (Exception e) { | 222 | } catch (Exception e) { |
| 219 | logger.error("", e); | 223 | logger.error("", e); |
| 220 | - rs.put("msg", "服务器出现异常,请联系管理员"); | 224 | + //rs.put("msg", "服务器出现异常,请联系管理员"); |
| 225 | + rs.put("msg", "server is abnormal, please contact administrator"); | ||
| 221 | } | 226 | } |
| 222 | return rs; | 227 | return rs; |
| 223 | } | 228 | } |
src/main/java/com/bsth/service/directive/DirectiveServiceImpl.java
| @@ -208,7 +208,7 @@ public class DirectiveServiceImpl extends BaseServiceImpl<D60, Integer> implemen | @@ -208,7 +208,7 @@ public class DirectiveServiceImpl extends BaseServiceImpl<D60, Integer> implemen | ||
| 208 | public int send60Operation(String nbbm, int state, int upDown, String sender) { | 208 | public int send60Operation(String nbbm, int state, int upDown, String sender) { |
| 209 | logger.info("切换运营状态, nbbm: " + nbbm + " ,state: " + state + " ,upDown:" + upDown); | 209 | logger.info("切换运营状态, nbbm: " + nbbm + " ,state: " + state + " ,upDown:" + upDown); |
| 210 | 210 | ||
| 211 | - String text = "切换为 " + (upDown == 0 ? I18n.getInstance().getMessage("txt-3858") : I18n.getInstance().getMessage("txt-3857")) + (state == 0 ? I18n.getInstance().getMessage("txt-3966") : I18n.getInstance().getMessage("txt-4457")); | 211 | + String text = I18n.getInstance().getMessage("txt-4531") + (upDown == 0 ? I18n.getInstance().getMessage("txt-3858") : I18n.getInstance().getMessage("txt-3857")) + "/" + (state == 0 ? I18n.getInstance().getMessage("txt-3966") : I18n.getInstance().getMessage("txt-4457")); |
| 212 | D60 d60 = new DirectiveCreator().createD60(nbbm, text, (short) 0x03, upDown, state, null); | 212 | D60 d60 = new DirectiveCreator().createD60(nbbm, text, (short) 0x03, upDown, state, null); |
| 213 | 213 | ||
| 214 | if (null == d60) | 214 | if (null == d60) |
src/main/resources/fatso/start.js
| 1 | -/** | ||
| 2 | - * @author PanZhao | ||
| 3 | - * @date 2016年3月17日 下午12:44:06 | ||
| 4 | - */ | ||
| 5 | -var fs = require('fs') | ||
| 6 | - , colors = require('colors') | ||
| 7 | - , child_process = require('child_process') | ||
| 8 | - , EventProxy = require('eventproxy') | ||
| 9 | - , parse = require('./parse') | ||
| 10 | - , minifier = require('./minifier') | ||
| 11 | - , crypto = require("crypto") | ||
| 12 | - , handle_real_ctl = require('./handle_real_ctl'); | ||
| 13 | - | ||
| 14 | - | ||
| 15 | -var platform = process.platform; | ||
| 16 | -var iswin = platform == 'win32'; | ||
| 17 | -var sp = platform == 'win32' ? '\\' : '/'; | ||
| 18 | -//不参与的目录 | ||
| 19 | -var excludes = ['scheduleApp', 'trafficManage', 'control', 'permission' + sp + 'authorize_all','permission' + sp + 'user', 'summary', 'history_sch', 'report' + sp + 'oil', 'base' + sp + 'geo_data_edit', 'base' + sp + 'carpark', 'forms', 'mforms', 'report', 'punctual', 'base' + sp + 'timesmodel', 'base' + sp + 'stationroute'] | ||
| 20 | - , ep = new EventProxy() | ||
| 21 | - , pName = 'bsth_control' | ||
| 22 | - , path = process.cwd() | ||
| 23 | - //根目录 | ||
| 24 | - , root = path.substr(0, path.indexOf(sp + 'src' + sp + 'main')) | ||
| 25 | - , workspace = root.substr(0, root.lastIndexOf(sp + pName)) | ||
| 26 | - //临时目录 | ||
| 27 | - , dest = (workspace + sp + pName + '@fatso_copy') | ||
| 28 | - , _static = sp + 'src' + sp + 'main' + sp + 'resources' + sp + 'static' | ||
| 29 | - , _pages = dest + _static + sp + 'pages'; | ||
| 30 | - | ||
| 31 | - | ||
| 32 | -//创建临时目录 | ||
| 33 | -fs.mkdir(dest, function (e) { | ||
| 34 | - if (e) | ||
| 35 | - logError('创建临时目录出错,请检查目录 ' + dest + '是否存在'); | ||
| 36 | - | ||
| 37 | - setTimeout(function () { | ||
| 38 | - ep.emit('mvn-clean'); | ||
| 39 | - }, 500); | ||
| 40 | -}); | ||
| 41 | -//子进程 | ||
| 42 | -var cProcess; | ||
| 43 | - | ||
| 44 | -ep.tail('mvn-clean', function () { | ||
| 45 | - //ep.emit('copy-project'); | ||
| 46 | - //清理target | ||
| 47 | - logInfo('mvn clean...'); | ||
| 48 | - cProcess = child_process.exec("mvn clean", {cwd: workspace + sp + pName}, function (error) { | ||
| 49 | - if (error) | ||
| 50 | - logError(error); | ||
| 51 | - | ||
| 52 | - logSuccess('mvn clean success'); | ||
| 53 | - | ||
| 54 | - ep.emit('copy-project'); | ||
| 55 | - }); | ||
| 56 | - output(cProcess); | ||
| 57 | -}); | ||
| 58 | - | ||
| 59 | -//复制项目副本 | ||
| 60 | -ep.tail('copy-project', function () { | ||
| 61 | - logInfo('copy project...'); | ||
| 62 | - var xcopyCom; | ||
| 63 | - if (iswin) | ||
| 64 | - xcopyCom = 'XCOPY ' + root.replace(/\//g, '\\') + ' ' + dest + ' /e /exclude:' + path + '\\exclude.txt'; | ||
| 65 | - else | ||
| 66 | - xcopyCom = 'cp -a ' + root + '/. ' + dest; | ||
| 67 | - | ||
| 68 | - cProcess = child_process.exec(xcopyCom, {cwd: workspace, maxBuffer: 5000 * 1024}, function (error) { | ||
| 69 | - if (error) | ||
| 70 | - logError(error); | ||
| 71 | - | ||
| 72 | - logSuccess('copy project success'); | ||
| 73 | - | ||
| 74 | - ep.emit('check-js'); | ||
| 75 | - }); | ||
| 76 | - //output(cProcess); | ||
| 77 | -}); | ||
| 78 | - | ||
| 79 | -//检查JS | ||
| 80 | -ep.tail('check-js', function () { | ||
| 81 | - ep.emit('minifier-js'); | ||
| 82 | -}); | ||
| 83 | - | ||
| 84 | -//合并压缩JS | ||
| 85 | -ep.tail('minifier-js', function () { | ||
| 86 | - logInfo('handle index.html...'); | ||
| 87 | - | ||
| 88 | - //再处理首页 | ||
| 89 | - ep.emit('handle-index', function () { | ||
| 90 | - //递归处理片段 | ||
| 91 | - walk(dest + _static + sp + 'pages', function (item) { | ||
| 92 | - ep.emit('handle-fragment', item); | ||
| 93 | - }, | ||
| 94 | - function () { | ||
| 95 | - //处理线调首页 | ||
| 96 | - handle_real_ctl.handleMain(function () { | ||
| 97 | - //处理线调地图 | ||
| 98 | - handle_real_ctl.handleMap(function () { | ||
| 99 | - //处理单屏地图页面 | ||
| 100 | - handle_real_ctl.handleAlonePage(function () { | ||
| 101 | - //处理单屏主页 | ||
| 102 | - handle_real_ctl.handleAloneHomePage(function () { | ||
| 103 | - ep.emit('package-jar'); | ||
| 104 | - }); | ||
| 105 | - }); | ||
| 106 | - }); | ||
| 107 | - }); | ||
| 108 | - }); | ||
| 109 | - }); | ||
| 110 | -}); | ||
| 111 | - | ||
| 112 | -//打包 | ||
| 113 | -ep.tail('package-jar', function (file) { | ||
| 114 | - var packageCom = 'mvn clean package -DskipTests'; | ||
| 115 | - cProcess = child_process.exec(packageCom, {maxBuffer: 5000 * 1024, cwd: dest}, function (error) { | ||
| 116 | - if (error) | ||
| 117 | - logError(error); | ||
| 118 | - | ||
| 119 | - logSuccess('mvn package success'); | ||
| 120 | - | ||
| 121 | - console.log(('成功打包在 ' + dest + sp + 'target 目录下').cyan); | ||
| 122 | - }); | ||
| 123 | - | ||
| 124 | - output(cProcess); | ||
| 125 | -}); | ||
| 126 | - | ||
| 127 | -//处理片段 | ||
| 128 | -ep.tail('handle-fragment', function (file) { | ||
| 129 | - //要排除的文件 | ||
| 130 | - for (var i = 0, ex; ex = excludes[i++];) { | ||
| 131 | - if (file.indexOf(_pages + sp + ex) != -1) | ||
| 132 | - return false; | ||
| 133 | - } | ||
| 134 | - handleJavascript(file, function (mini, $) { | ||
| 135 | - var jsMini; | ||
| 136 | - if (mini.inside) | ||
| 137 | - jsMini = '(function(){' + mini.inside + '\n' + mini.outside + '})();'; | ||
| 138 | - else | ||
| 139 | - jsMini = '(function(){' + mini.outside + '})();'; | ||
| 140 | - | ||
| 141 | - write(file, $.html() + '<script>' + jsMini + '</script>'); | ||
| 142 | - }); | ||
| 143 | - | ||
| 144 | -}); | ||
| 145 | - | ||
| 146 | -//处理首页 | ||
| 147 | -ep.tail('handle-index', function (cb) { | ||
| 148 | - var index = dest + _static + sp + 'index.html'; | ||
| 149 | - handleJavascript(index, function (mini, $) { | ||
| 150 | - var jsMiniText = mini.inside + mini.outside; | ||
| 151 | - | ||
| 152 | - var code = md5(jsMiniText); | ||
| 153 | - fs.open(dest + _static + sp + 'assets' + sp + 'js' + sp + code + '.js', 'a', function (err, fd) { | ||
| 154 | - if (err) | ||
| 155 | - logError(err); | ||
| 156 | - | ||
| 157 | - fs.write(fd, jsMiniText, function () { | ||
| 158 | - var ss = $('script'); | ||
| 159 | - | ||
| 160 | - $(ss[ss.length - 1]).before('<script src="/assets/js/' + code + '.js"></script>\n'); | ||
| 161 | - for (var i = 0, s; s = ss[i++];) { | ||
| 162 | - $(s).removeAttr('data-exclude') | ||
| 163 | - .removeAttr('flag') | ||
| 164 | - .removeAttr('data-autocephaly'); | ||
| 165 | - } | ||
| 166 | - write(index, $.html()); | ||
| 167 | - | ||
| 168 | - cb && cb(); | ||
| 169 | - }); | ||
| 170 | - }); | ||
| 171 | - }); | ||
| 172 | -}); | ||
| 173 | - | ||
| 174 | - | ||
| 175 | -function handleJavascript(item, cb) { | ||
| 176 | - //解析页面 | ||
| 177 | - var htmlResult = parse.html(item, dest + _static) | ||
| 178 | - , jsArray = htmlResult.jsArray | ||
| 179 | - , $ = htmlResult.$ | ||
| 180 | - , scrStr = htmlResult.scriptString; | ||
| 181 | - | ||
| 182 | - //合并压缩 | ||
| 183 | - var mini = minifier.mergeAndMini(jsArray, scrStr, dest + _static, item); | ||
| 184 | - | ||
| 185 | - cb && cb(mini, $); | ||
| 186 | -} | ||
| 187 | - | ||
| 188 | -function removeJsLink(s, e) { | ||
| 189 | - var newArray = [], flag; | ||
| 190 | - | ||
| 191 | - for (var i = 0, si; si = s[i++];) { | ||
| 192 | - flag = 0; | ||
| 193 | - for (var j = 0, ei; ei = e[j++];) { | ||
| 194 | - if (si.indexOf(ei) != -1) { | ||
| 195 | - flag = -1; | ||
| 196 | - break; | ||
| 197 | - } | ||
| 198 | - } | ||
| 199 | - | ||
| 200 | - if (flag == 0) { | ||
| 201 | - newArray.push(si); | ||
| 202 | - } | ||
| 203 | - } | ||
| 204 | - return newArray; | ||
| 205 | -} | ||
| 206 | - | ||
| 207 | -function write(file, text) { | ||
| 208 | - fs.writeFile(file, text, function (err) { | ||
| 209 | - if (err) { | ||
| 210 | - console.log(err.toString().red); | ||
| 211 | - process.exit(); | ||
| 212 | - } | ||
| 213 | - //console.log(file.green); | ||
| 214 | - }); | ||
| 215 | -} | ||
| 216 | - | ||
| 217 | -function md5(text) { | ||
| 218 | - return crypto.createHash("md5").update(text).digest("hex"); | ||
| 219 | -} | ||
| 220 | - | ||
| 221 | - | ||
| 222 | -function walk(path, handleFile, over) { | ||
| 223 | - fs.readdir(path, function (err, files) { | ||
| 224 | - if (err) { | ||
| 225 | - console.log('read dir error'.red); | ||
| 226 | - } else { | ||
| 227 | - files.forEach(function (item) { | ||
| 228 | - var tmpPath = path + sp + item; | ||
| 229 | - fs.stat(tmpPath, function (err1, stats) { | ||
| 230 | - if (err1) { | ||
| 231 | - console.log('stat error'); | ||
| 232 | - } else { | ||
| 233 | - if (stats.isDirectory()) { | ||
| 234 | - walk(tmpPath, handleFile); | ||
| 235 | - } else if (item.indexOf('.html') != -1) { | ||
| 236 | - handleFile(tmpPath); | ||
| 237 | - } | ||
| 238 | - } | ||
| 239 | - }) | ||
| 240 | - }); | ||
| 241 | - | ||
| 242 | - over && over(); | ||
| 243 | - } | ||
| 244 | - }); | ||
| 245 | -} | ||
| 246 | - | ||
| 247 | -function logInfo(t) { | ||
| 248 | - console.log(t); | ||
| 249 | -} | ||
| 250 | - | ||
| 251 | -function logSuccess(t) { | ||
| 252 | - console.log(t.green); | ||
| 253 | -} | ||
| 254 | - | ||
| 255 | -function logError(e) { | ||
| 256 | - console.log(e.toString().red); | ||
| 257 | - process.exit(); | ||
| 258 | -} | ||
| 259 | - | ||
| 260 | -function output(cProcess) { | ||
| 261 | - //标准输出 | ||
| 262 | - cProcess.stdout.on('data', function (s) { | ||
| 263 | - console.log(s); | ||
| 264 | - }); | 1 | +/** |
| 2 | + * @author PanZhao | ||
| 3 | + * @date 2016年3月17日 下午12:44:06 | ||
| 4 | + */ | ||
| 5 | +var fs = require('fs') | ||
| 6 | + , colors = require('colors') | ||
| 7 | + , child_process = require('child_process') | ||
| 8 | + , EventProxy = require('eventproxy') | ||
| 9 | + , parse = require('./parse') | ||
| 10 | + , minifier = require('./minifier') | ||
| 11 | + , crypto = require("crypto") | ||
| 12 | + , handle_real_ctl = require('./handle_real_ctl'); | ||
| 13 | + | ||
| 14 | + | ||
| 15 | +var platform = process.platform; | ||
| 16 | +var iswin = platform == 'win32'; | ||
| 17 | +var sp = platform == 'win32' ? '\\' : '/'; | ||
| 18 | +//不参与的目录 | ||
| 19 | +var excludes = ['scheduleApp', 'trafficManage', 'control', 'permission' + sp + 'authorize_all','permission' + sp + 'user', 'summary', 'history_sch', 'report' + sp + 'oil', 'base' + sp + 'geo_data_edit', 'base' + sp + 'carpark', 'forms', 'mforms', 'report', 'punctual', 'base' + sp + 'timesmodel', 'base' + sp + 'stationroute', 'kl', 'dsm'] | ||
| 20 | + , ep = new EventProxy() | ||
| 21 | + , pName = 'bsth_control' | ||
| 22 | + , path = process.cwd() | ||
| 23 | + //根目录 | ||
| 24 | + , root = path.substr(0, path.indexOf(sp + 'src' + sp + 'main')) | ||
| 25 | + , workspace = root.substr(0, root.lastIndexOf(sp + pName)) | ||
| 26 | + //临时目录 | ||
| 27 | + , dest = (workspace + sp + pName + '@fatso_copy') | ||
| 28 | + , _static = sp + 'src' + sp + 'main' + sp + 'resources' + sp + 'static' | ||
| 29 | + , _pages = dest + _static + sp + 'pages'; | ||
| 30 | + | ||
| 31 | + | ||
| 32 | +//创建临时目录 | ||
| 33 | +fs.mkdir(dest, function (e) { | ||
| 34 | + if (e) | ||
| 35 | + logError('创建临时目录出错,请检查目录 ' + dest + '是否存在'); | ||
| 36 | + | ||
| 37 | + setTimeout(function () { | ||
| 38 | + ep.emit('mvn-clean'); | ||
| 39 | + }, 500); | ||
| 40 | +}); | ||
| 41 | +//子进程 | ||
| 42 | +var cProcess; | ||
| 43 | + | ||
| 44 | +ep.tail('mvn-clean', function () { | ||
| 45 | + //ep.emit('copy-project'); | ||
| 46 | + //清理target | ||
| 47 | + logInfo('mvn clean...'); | ||
| 48 | + cProcess = child_process.exec("mvn clean", {cwd: workspace + sp + pName}, function (error) { | ||
| 49 | + if (error) | ||
| 50 | + logError(error); | ||
| 51 | + | ||
| 52 | + logSuccess('mvn clean success'); | ||
| 53 | + | ||
| 54 | + ep.emit('copy-project'); | ||
| 55 | + }); | ||
| 56 | + output(cProcess); | ||
| 57 | +}); | ||
| 58 | + | ||
| 59 | +//复制项目副本 | ||
| 60 | +ep.tail('copy-project', function () { | ||
| 61 | + logInfo('copy project...'); | ||
| 62 | + var xcopyCom; | ||
| 63 | + if (iswin) | ||
| 64 | + xcopyCom = 'XCOPY ' + root.replace(/\//g, '\\') + ' ' + dest + ' /e /exclude:' + path + '\\exclude.txt'; | ||
| 65 | + else | ||
| 66 | + xcopyCom = 'cp -a ' + root + '/. ' + dest; | ||
| 67 | + | ||
| 68 | + cProcess = child_process.exec(xcopyCom, {cwd: workspace, maxBuffer: 5000 * 1024}, function (error) { | ||
| 69 | + if (error) | ||
| 70 | + logError(error); | ||
| 71 | + | ||
| 72 | + logSuccess('copy project success'); | ||
| 73 | + | ||
| 74 | + ep.emit('check-js'); | ||
| 75 | + }); | ||
| 76 | + //output(cProcess); | ||
| 77 | +}); | ||
| 78 | + | ||
| 79 | +//检查JS | ||
| 80 | +ep.tail('check-js', function () { | ||
| 81 | + ep.emit('minifier-js'); | ||
| 82 | +}); | ||
| 83 | + | ||
| 84 | +//合并压缩JS | ||
| 85 | +ep.tail('minifier-js', function () { | ||
| 86 | + logInfo('handle index.html...'); | ||
| 87 | + | ||
| 88 | + //再处理首页 | ||
| 89 | + ep.emit('handle-index', function () { | ||
| 90 | + //递归处理片段 | ||
| 91 | + walk(dest + _static + sp + 'pages', function (item) { | ||
| 92 | + ep.emit('handle-fragment', item); | ||
| 93 | + }, | ||
| 94 | + function () { | ||
| 95 | + //处理线调首页 | ||
| 96 | + handle_real_ctl.handleMain(function () { | ||
| 97 | + //处理线调地图 | ||
| 98 | + handle_real_ctl.handleMap(function () { | ||
| 99 | + //处理单屏地图页面 | ||
| 100 | + handle_real_ctl.handleAlonePage(function () { | ||
| 101 | + //处理单屏主页 | ||
| 102 | + handle_real_ctl.handleAloneHomePage(function () { | ||
| 103 | + ep.emit('package-jar'); | ||
| 104 | + }); | ||
| 105 | + }); | ||
| 106 | + }); | ||
| 107 | + }); | ||
| 108 | + }); | ||
| 109 | + }); | ||
| 110 | +}); | ||
| 111 | + | ||
| 112 | +//打包 | ||
| 113 | +ep.tail('package-jar', function (file) { | ||
| 114 | + var packageCom = 'mvn clean package -DskipTests'; | ||
| 115 | + cProcess = child_process.exec(packageCom, {maxBuffer: 5000 * 1024, cwd: dest}, function (error) { | ||
| 116 | + if (error) | ||
| 117 | + logError(error); | ||
| 118 | + | ||
| 119 | + logSuccess('mvn package success'); | ||
| 120 | + | ||
| 121 | + console.log(('成功打包在 ' + dest + sp + 'target 目录下').cyan); | ||
| 122 | + }); | ||
| 123 | + | ||
| 124 | + output(cProcess); | ||
| 125 | +}); | ||
| 126 | + | ||
| 127 | +//处理片段 | ||
| 128 | +ep.tail('handle-fragment', function (file) { | ||
| 129 | + //要排除的文件 | ||
| 130 | + for (var i = 0, ex; ex = excludes[i++];) { | ||
| 131 | + if (file.indexOf(_pages + sp + ex) != -1) | ||
| 132 | + return false; | ||
| 133 | + } | ||
| 134 | + handleJavascript(file, function (mini, $) { | ||
| 135 | + var jsMini; | ||
| 136 | + if (mini.inside) | ||
| 137 | + jsMini = '(function(){' + mini.inside + '\n' + mini.outside + '})();'; | ||
| 138 | + else | ||
| 139 | + jsMini = '(function(){' + mini.outside + '})();'; | ||
| 140 | + | ||
| 141 | + write(file, $.html() + '<script>' + jsMini + '</script>'); | ||
| 142 | + }); | ||
| 143 | + | ||
| 144 | +}); | ||
| 145 | + | ||
| 146 | +//处理首页 | ||
| 147 | +ep.tail('handle-index', function (cb) { | ||
| 148 | + var index = dest + _static + sp + 'index.html'; | ||
| 149 | + handleJavascript(index, function (mini, $) { | ||
| 150 | + var jsMiniText = mini.inside + mini.outside; | ||
| 151 | + | ||
| 152 | + var code = md5(jsMiniText); | ||
| 153 | + fs.open(dest + _static + sp + 'assets' + sp + 'js' + sp + code + '.js', 'a', function (err, fd) { | ||
| 154 | + if (err) | ||
| 155 | + logError(err); | ||
| 156 | + | ||
| 157 | + fs.write(fd, jsMiniText, function () { | ||
| 158 | + var ss = $('script'); | ||
| 159 | + | ||
| 160 | + $(ss[ss.length - 1]).before('<script src="/assets/js/' + code + '.js"></script>\n'); | ||
| 161 | + for (var i = 0, s; s = ss[i++];) { | ||
| 162 | + $(s).removeAttr('data-exclude') | ||
| 163 | + .removeAttr('flag') | ||
| 164 | + .removeAttr('data-autocephaly'); | ||
| 165 | + } | ||
| 166 | + write(index, $.html()); | ||
| 167 | + | ||
| 168 | + cb && cb(); | ||
| 169 | + }); | ||
| 170 | + }); | ||
| 171 | + }); | ||
| 172 | +}); | ||
| 173 | + | ||
| 174 | + | ||
| 175 | +function handleJavascript(item, cb) { | ||
| 176 | + //解析页面 | ||
| 177 | + var htmlResult = parse.html(item, dest + _static) | ||
| 178 | + , jsArray = htmlResult.jsArray | ||
| 179 | + , $ = htmlResult.$ | ||
| 180 | + , scrStr = htmlResult.scriptString; | ||
| 181 | + | ||
| 182 | + //合并压缩 | ||
| 183 | + var mini = minifier.mergeAndMini(jsArray, scrStr, dest + _static, item); | ||
| 184 | + | ||
| 185 | + cb && cb(mini, $); | ||
| 186 | +} | ||
| 187 | + | ||
| 188 | +function removeJsLink(s, e) { | ||
| 189 | + var newArray = [], flag; | ||
| 190 | + | ||
| 191 | + for (var i = 0, si; si = s[i++];) { | ||
| 192 | + flag = 0; | ||
| 193 | + for (var j = 0, ei; ei = e[j++];) { | ||
| 194 | + if (si.indexOf(ei) != -1) { | ||
| 195 | + flag = -1; | ||
| 196 | + break; | ||
| 197 | + } | ||
| 198 | + } | ||
| 199 | + | ||
| 200 | + if (flag == 0) { | ||
| 201 | + newArray.push(si); | ||
| 202 | + } | ||
| 203 | + } | ||
| 204 | + return newArray; | ||
| 205 | +} | ||
| 206 | + | ||
| 207 | +function write(file, text) { | ||
| 208 | + fs.writeFile(file, text, function (err) { | ||
| 209 | + if (err) { | ||
| 210 | + console.log(err.toString().red); | ||
| 211 | + process.exit(); | ||
| 212 | + } | ||
| 213 | + //console.log(file.green); | ||
| 214 | + }); | ||
| 215 | +} | ||
| 216 | + | ||
| 217 | +function md5(text) { | ||
| 218 | + return crypto.createHash("md5").update(text).digest("hex"); | ||
| 219 | +} | ||
| 220 | + | ||
| 221 | + | ||
| 222 | +function walk(path, handleFile, over) { | ||
| 223 | + fs.readdir(path, function (err, files) { | ||
| 224 | + if (err) { | ||
| 225 | + console.log('read dir error'.red); | ||
| 226 | + } else { | ||
| 227 | + files.forEach(function (item) { | ||
| 228 | + var tmpPath = path + sp + item; | ||
| 229 | + fs.stat(tmpPath, function (err1, stats) { | ||
| 230 | + if (err1) { | ||
| 231 | + console.log('stat error'); | ||
| 232 | + } else { | ||
| 233 | + if (stats.isDirectory()) { | ||
| 234 | + walk(tmpPath, handleFile); | ||
| 235 | + } else if (item.indexOf('.html') != -1) { | ||
| 236 | + handleFile(tmpPath); | ||
| 237 | + } | ||
| 238 | + } | ||
| 239 | + }) | ||
| 240 | + }); | ||
| 241 | + | ||
| 242 | + over && over(); | ||
| 243 | + } | ||
| 244 | + }); | ||
| 245 | +} | ||
| 246 | + | ||
| 247 | +function logInfo(t) { | ||
| 248 | + console.log(t); | ||
| 249 | +} | ||
| 250 | + | ||
| 251 | +function logSuccess(t) { | ||
| 252 | + console.log(t.green); | ||
| 253 | +} | ||
| 254 | + | ||
| 255 | +function logError(e) { | ||
| 256 | + console.log(e.toString().red); | ||
| 257 | + process.exit(); | ||
| 258 | +} | ||
| 259 | + | ||
| 260 | +function output(cProcess) { | ||
| 261 | + //标准输出 | ||
| 262 | + cProcess.stdout.on('data', function (s) { | ||
| 263 | + console.log(s); | ||
| 264 | + }); | ||
| 265 | } | 265 | } |
| 266 | \ No newline at end of file | 266 | \ No newline at end of file |
src/main/resources/message_en_US.properties
| @@ -2930,7 +2930,7 @@ txt-2929=Station shift | @@ -2930,7 +2930,7 @@ txt-2929=Station shift | ||
| 2930 | txt-2930=Comparison time | 2930 | txt-2930=Comparison time |
| 2931 | txt-2931= | 2931 | txt-2931= |
| 2932 | txt-2932= | 2932 | txt-2932= |
| 2933 | -txt-2933=Route scheduling | 2933 | +txt-2933=Line scheduling |
| 2934 | txt-2934=Map monitoring | 2934 | txt-2934=Map monitoring |
| 2935 | txt-2935=Shift management | 2935 | txt-2935=Shift management |
| 2936 | txt-2936=Hydrogen use management | 2936 | txt-2936=Hydrogen use management |
| @@ -3176,7 +3176,7 @@ txt-3175=Based on shift | @@ -3176,7 +3176,7 @@ txt-3175=Based on shift | ||
| 3176 | txt-3176=Command type | 3176 | txt-3176=Command type |
| 3177 | txt-3177=Abnormal type | 3177 | txt-3177=Abnormal type |
| 3178 | txt-3178=Modify type | 3178 | txt-3178=Modify type |
| 3179 | -txt-3179=Program version | 3179 | +txt-3179=Version |
| 3180 | txt-3180=License number: | 3180 | txt-3180=License number: |
| 3181 | txt-3181=Run information | 3181 | txt-3181=Run information |
| 3182 | txt-3182=Shift plan | 3182 | txt-3182=Shift plan |
| @@ -4517,15 +4517,22 @@ txt-4517=Playback | @@ -4517,15 +4517,22 @@ txt-4517=Playback | ||
| 4517 | txt-4518=Select date | 4517 | txt-4518=Select date |
| 4518 | txt-4519=Channel list | 4518 | txt-4519=Channel list |
| 4519 | txt-4520=Split screen | 4519 | txt-4520=Split screen |
| 4520 | -txt-4521=Number of passenger | 4520 | +txt-4521=Number |
| 4521 | txt-4522=Passenger flow inquiry | 4521 | txt-4522=Passenger flow inquiry |
| 4522 | txt-4523=Abnormal type | 4522 | txt-4523=Abnormal type |
| 4523 | txt-4524=Safe driving inquiry | 4523 | txt-4524=Safe driving inquiry |
| 4524 | txt-4525=Format: 00:00 | 4524 | txt-4525=Format: 00:00 |
| 4525 | txt-4526=Live | 4525 | txt-4526=Live |
| 4526 | txt-4527=Historical data | 4526 | txt-4527=Historical data |
| 4527 | +txt-4528=Passenger flow showing setting | ||
| 4528 | +txt-4529=Passenger flow | ||
| 4529 | +txt-4530=There is a problem with the association between shifts and stations | ||
| 4530 | +txt-4531=Switch: | ||
| 4527 | txt-5000=Operation successfully | 4531 | txt-5000=Operation successfully |
| 4528 | txt-5001=Operation failed | 4532 | txt-5001=Operation failed |
| 4533 | +txt-5002=Comfortable | ||
| 4534 | +txt-5003=Normal | ||
| 4535 | +txt-5004=Crowded | ||
| 4529 | 4536 | ||
| 4530 | dataToolsServiceImpl-line132=not .xls .xlsx type file. | 4537 | dataToolsServiceImpl-line132=not .xls .xlsx type file. |
| 4531 | dataToolsServiceImpl-line143=table content is empty. | 4538 | dataToolsServiceImpl-line143=table content is empty. |
src/main/resources/message_zh_CN.properties
| @@ -4525,8 +4525,15 @@ txt-4524=安全驾驶查询 | @@ -4525,8 +4525,15 @@ txt-4524=安全驾驶查询 | ||
| 4525 | txt-4525=格式: 00:00 | 4525 | txt-4525=格式: 00:00 |
| 4526 | txt-4526=直播 | 4526 | txt-4526=直播 |
| 4527 | txt-4527=历史数据 | 4527 | txt-4527=历史数据 |
| 4528 | +txt-4528=客流显示设置 | ||
| 4529 | +txt-4529=客流信息 | ||
| 4530 | +txt-4530=o(* ̄▽ ̄*)o 班次和站点关联有点问题!! | ||
| 4531 | +txt-4531=切换为 | ||
| 4528 | txt-5000=操作成功 | 4532 | txt-5000=操作成功 |
| 4529 | txt-5001=操作失败 | 4533 | txt-5001=操作失败 |
| 4534 | +txt-5002=舒适 | ||
| 4535 | +txt-5003=一般 | ||
| 4536 | +txt-5004=拥挤 | ||
| 4530 | 4537 | ||
| 4531 | dataToolsServiceImpl-line132=非.xls .xlsx 格式文件! | 4538 | dataToolsServiceImpl-line132=非.xls .xlsx 格式文件! |
| 4532 | dataToolsServiceImpl-line143=表格内容为空! | 4539 | dataToolsServiceImpl-line143=表格内容为空! |
src/main/resources/static/pages/base/section/js/add-vmap-world.js
| @@ -80,14 +80,14 @@ var SectionVmapWorlds = function() { | @@ -80,14 +80,14 @@ var SectionVmapWorlds = function() { | ||
| 80 | }, | 80 | }, |
| 81 | // 根据名称获取坐标. | 81 | // 根据名称获取坐标. |
| 82 | sectionsNameToPoints : function(sectionNames, callback) { | 82 | sectionsNameToPoints : function(sectionNames, callback) { |
| 83 | - var arguments = new Array(); | 83 | + var args = new Array(); |
| 84 | for (var i = 0;i < sectionNames.length;i++) { | 84 | for (var i = 0;i < sectionNames.length;i++) { |
| 85 | - arguments.push('searchComplete' + i); | 85 | + args.push('searchComplete' + i); |
| 86 | } | 86 | } |
| 87 | - arguments.push(function(... args) { | ||
| 88 | - callback(args); | 87 | + args.push(function() { |
| 88 | + callback(arguments); | ||
| 89 | }) | 89 | }) |
| 90 | - var proxy = EventProxy.create(arguments); | 90 | + var proxy = EventProxy.create(args); |
| 91 | sectionNames.forEach(function(item, idx) { | 91 | sectionNames.forEach(function(item, idx) { |
| 92 | var localSearch = new BMap.LocalSearch(mapB); | 92 | var localSearch = new BMap.LocalSearch(mapB); |
| 93 | localSearch.setSearchCompleteCallback(function (searchResult) { | 93 | localSearch.setSearchCompleteCallback(function (searchResult) { |
src/main/resources/static/pages/home.html
| @@ -32,7 +32,7 @@ | @@ -32,7 +32,7 @@ | ||
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | .system_change_log .label{ | 34 | .system_change_log .label{ |
| 35 | - width: 55px; | 35 | + width: 75px; |
| 36 | display: inline-block; | 36 | display: inline-block; |
| 37 | padding: 0 10px; | 37 | padding: 0 10px; |
| 38 | line-height: 1.5; | 38 | line-height: 1.5; |
| @@ -59,11 +59,11 @@ | @@ -59,11 +59,11 @@ | ||
| 59 | } | 59 | } |
| 60 | </style> | 60 | </style> |
| 61 | <div class="system_change_log"> | 61 | <div class="system_change_log"> |
| 62 | - <h2 style="text-indent: 35px;margin: 10px 0 5px;">2023-09-16 更新说明 Changelog</h2> | 62 | + <h2 style="text-indent: 35px;margin: 10px 0 5px;">2024-06-16 System Changelog</h2> |
| 63 | <br><br> | 63 | <br><br> |
| 64 | <ul> | 64 | <ul> |
| 65 | - <li class="sub_title"><h6>线调、油电管理</h6></li> | ||
| 66 | - <li><span class="label s_c_change">$$$$$${txt-4028}</span></li> | 65 | + <li class="sub_title"><h6>Global</h6></li> |
| 66 | + <li><span class="label s_c_change">$$$$$${txt-4028}</span>1.System Internationalization</li> | ||
| 67 | </ul> | 67 | </ul> |
| 68 | 68 | ||
| 69 | </div> | 69 | </div> |
src/main/resources/static/pages/permission/authorize_all/user_auth.html
| @@ -76,7 +76,7 @@ | @@ -76,7 +76,7 @@ | ||
| 76 | <li><label><input class="uk-checkbox" type="checkbox" data-event="fbzdzx_config"> $$$$$${txt-1181}</label></li> | 76 | <li><label><input class="uk-checkbox" type="checkbox" data-event="fbzdzx_config"> $$$$$${txt-1181}</label></li> |
| 77 | <li><label><input class="uk-checkbox" type="checkbox" data-event="tts_config"> TTS</label></li> | 77 | <li><label><input class="uk-checkbox" type="checkbox" data-event="tts_config"> TTS</label></li> |
| 78 | <li><label><input class="uk-checkbox" type="checkbox" data-event="signal_state"> $$$$$${txt-3116}</label></li> | 78 | <li><label><input class="uk-checkbox" type="checkbox" data-event="signal_state"> $$$$$${txt-3116}</label></li> |
| 79 | - <li><label><input class="uk-checkbox" type="checkbox" data-event="kl_config"> 客流信息</label></li> | 79 | + <li><label><input class="uk-checkbox" type="checkbox" data-event="kl_config"> $$$$$${txt-4529}</label></li> |
| 80 | </ul> | 80 | </ul> |
| 81 | </div> | 81 | </div> |
| 82 | <div> | 82 | <div> |
src/main/resources/static/real_control_v2/fragments/home/tooltip.html
| @@ -61,13 +61,13 @@ | @@ -61,13 +61,13 @@ | ||
| 61 | <div><span class="field">$$$$$${txt-4521}:</span>{{kl.num}}</div> | 61 | <div><span class="field">$$$$$${txt-4521}:</span>{{kl.num}}</div> |
| 62 | {{/if}} | 62 | {{/if}} |
| 63 | {{if kl !=null && kl.num <= 5}} | 63 | {{if kl !=null && kl.num <= 5}} |
| 64 | - <div><span class="field">状态:</span><a href="javascript:;" style="color:green" onclick="javascript:gb_map_play_back.showPhoto('{{kl.photo}}');">舒适</a></div> | 64 | + <div><span class="field">$$$$$${txt-3621}</span><a href="javascript:;" style="color:green" onclick="javascript:gb_map_play_back.showPhoto('{{kl.photo}}');">$$$$$${txt-5002}</a></div> |
| 65 | {{/if}} | 65 | {{/if}} |
| 66 | {{if kl !=null && kl.num > 5 && kl.num <= 10}} | 66 | {{if kl !=null && kl.num > 5 && kl.num <= 10}} |
| 67 | - <div><span class="field">状态:</span><a href="javascript:;" style="color:chocolate" onclick="javascript:gb_map_play_back.showPhoto('{{kl.photo}}');">一般</a></div> | 67 | + <div><span class="field">$$$$$${txt-3621}</span><a href="javascript:;" style="color:chocolate" onclick="javascript:gb_map_play_back.showPhoto('{{kl.photo}}');">$$$$$${txt-5003}</a></div> |
| 68 | {{/if}} | 68 | {{/if}} |
| 69 | {{if kl !=null && kl.num > 10}} | 69 | {{if kl !=null && kl.num > 10}} |
| 70 | - <div><span class="field">状态:</span><a href="javascript:;" style="color:red" onclick="javascript:gb_map_play_back.showPhoto('{{kl.photo}}');">拥挤</a></div> | 70 | + <div><span class="field">$$$$$${txt-3621}</span><a href="javascript:;" style="color:red" onclick="javascript:gb_map_play_back.showPhoto('{{kl.photo}}');">$$$$$${txt-5004}</a></div> |
| 71 | {{/if}} | 71 | {{/if}} |
| 72 | </div> | 72 | </div> |
| 73 | 73 |
src/main/resources/static/real_control_v2/fragments/north/nav/all_devices.html
| @@ -353,7 +353,7 @@ | @@ -353,7 +353,7 @@ | ||
| 353 | }); | 353 | }); |
| 354 | }, | 354 | }, |
| 355 | delete: function(device){ | 355 | delete: function(device){ |
| 356 | - alt_confirm(i18n('txt-73'), function(){ | 356 | + alt_confirm(i18n('txt-73', [device]), function(){ |
| 357 | gb_common.$post('/gps/removeRealGps', {device: device}, function(){ | 357 | gb_common.$post('/gps/removeRealGps', {device: device}, function(){ |
| 358 | notify_succ(i18n('txt-2329')); | 358 | notify_succ(i18n('txt-2329')); |
| 359 | query(); | 359 | query(); |
src/main/resources/static/real_control_v2/fragments/north/nav/kl_config.html
| @@ -2,22 +2,22 @@ | @@ -2,22 +2,22 @@ | ||
| 2 | <div class="uk-modal-dialog" style="width: 530px;"> | 2 | <div class="uk-modal-dialog" style="width: 530px;"> |
| 3 | <a href="" class="uk-modal-close uk-close"></a> | 3 | <a href="" class="uk-modal-close uk-close"></a> |
| 4 | <div class="uk-modal-header"> | 4 | <div class="uk-modal-header"> |
| 5 | - <h2>客流显示设置</h2></div> | 5 | + <h2>$$$$$${txt-4528}</h2></div> |
| 6 | 6 | ||
| 7 | <p style="border-bottom: 1px solid #efefef;color: grey;padding-bottom: 9px;"> | 7 | <p style="border-bottom: 1px solid #efefef;color: grey;padding-bottom: 9px;"> |
| 8 | <small> | 8 | <small> |
| 9 | <i class="uk-icon-question-circle"> </i> | 9 | <i class="uk-icon-question-circle"> </i> |
| 10 | - 设置项将会保存在本地客户端,清理缓存和更换电脑会重置.</small> | 10 | + $$$$$${txt-30}</small> |
| 11 | </p> | 11 | </p> |
| 12 | <form class="uk-form uk-form-horizontal"> | 12 | <form class="uk-form uk-form-horizontal"> |
| 13 | <div class="uk-grid"> | 13 | <div class="uk-grid"> |
| 14 | <div class="uk-width-2-3 uk-container-center"> | 14 | <div class="uk-width-2-3 uk-container-center"> |
| 15 | <div class="uk-form-row"> | 15 | <div class="uk-form-row"> |
| 16 | - <label class="uk-form-label">是否启用</label> | 16 | + <label class="uk-form-label">$$$$$${txt-3199}</label> |
| 17 | <div class="uk-form-controls"> | 17 | <div class="uk-form-controls"> |
| 18 | <select name="enable"> | 18 | <select name="enable"> |
| 19 | - <option value="1">启用</option> | ||
| 20 | - <option value="0">禁用</option> | 19 | + <option value="1">$$$$$${txt-3861}</option> |
| 20 | + <option value="0">$$$$$${txt-4160}</option> | ||
| 21 | </select> | 21 | </select> |
| 22 | </div> | 22 | </div> |
| 23 | </div> | 23 | </div> |
| @@ -25,8 +25,8 @@ | @@ -25,8 +25,8 @@ | ||
| 25 | </div> | 25 | </div> |
| 26 | 26 | ||
| 27 | <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;"> | 27 | <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;"> |
| 28 | - <button type="button" class="uk-button uk-modal-close">取消</button> | ||
| 29 | - <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> 保存</button> | 28 | + <button type="button" class="uk-button uk-modal-close">$$$$$${txt-3817}</button> |
| 29 | + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> $$$$$${txt-3864}</button> | ||
| 30 | </div> | 30 | </div> |
| 31 | </form> | 31 | </form> |
| 32 | </div> | 32 | </div> |
src/main/resources/static/real_control_v2/js/data/data_toolbar.js
src/main/resources/static/real_control_v2/js/line_schedule/sch_table.js
| @@ -875,7 +875,7 @@ var gb_schedule_table = (function () { | @@ -875,7 +875,7 @@ var gb_schedule_table = (function () { | ||
| 875 | continue; | 875 | continue; |
| 876 | 876 | ||
| 877 | $(".schedule-wrap span.warn_multi_station[data-updown="+(k.split('_')[1])+"]", wrap) | 877 | $(".schedule-wrap span.warn_multi_station[data-updown="+(k.split('_')[1])+"]", wrap) |
| 878 | - .html('o(* ̄▽ ̄*)o 班次和站点关联有点问题!!').show(); | 878 | + .html(i18n('txt-4530')).show(); |
| 879 | } | 879 | } |
| 880 | 880 | ||
| 881 | errorCodeData = data; | 881 | errorCodeData = data; |
src/main/resources/static/real_control_v2/mapmonitor/fragments/map_infowindow.html
| @@ -36,13 +36,13 @@ | @@ -36,13 +36,13 @@ | ||
| 36 | <p>$$$$$${txt-4521}:{{kl.num}}</p> | 36 | <p>$$$$$${txt-4521}:{{kl.num}}</p> |
| 37 | {{/if}} | 37 | {{/if}} |
| 38 | {{if kl !=null && kl.num <= 5}} | 38 | {{if kl !=null && kl.num <= 5}} |
| 39 | - <p>$$$$$${txt-3621}<a href="javascript:;" style="color:green" onclick="javascript:gb_map_play_back.showPhoto('{{photo}}');">舒适</a></p> | 39 | + <p>$$$$$${txt-3621}<a href="javascript:;" style="color:green" onclick="javascript:gb_map_play_back.showPhoto('{{photo}}');">$$$$$${txt-5002}</a></p> |
| 40 | {{/if}} | 40 | {{/if}} |
| 41 | {{if kl !=null && kl.num > 5 && kl.num <= 10}} | 41 | {{if kl !=null && kl.num > 5 && kl.num <= 10}} |
| 42 | - <p>$$$$$${txt-3621}<a href="javascript:;" style="color:chocolate" onclick="javascript:gb_map_play_back.showPhoto('{{photo}}');">一般</a></p> | 42 | + <p>$$$$$${txt-3621}<a href="javascript:;" style="color:chocolate" onclick="javascript:gb_map_play_back.showPhoto('{{photo}}');">$$$$$${txt-5003}</a></p> |
| 43 | {{/if}} | 43 | {{/if}} |
| 44 | {{if kl !=null && kl.num > 10}} | 44 | {{if kl !=null && kl.num > 10}} |
| 45 | - <p>$$$$$${txt-3621}<a href="javascript:;" style="color:red" onclick="javascript:gb_map_play_back.showPhoto('{{photo}}');">拥挤</a></p> | 45 | + <p>$$$$$${txt-3621}<a href="javascript:;" style="color:red" onclick="javascript:gb_map_play_back.showPhoto('{{photo}}');">$$$$$${txt-5004}</a></p> |
| 46 | {{/if}} | 46 | {{/if}} |
| 47 | {{if energy == 0}} | 47 | {{if energy == 0}} |
| 48 | <div><span class="field">$$$$$${txt-4435}</span><span style="color: red;">{{energy}}% ($$$$$${txt-3832})</span></div> | 48 | <div><span class="field">$$$$$${txt-4435}</span><span style="color: red;">{{energy}}% ($$$$$${txt-3832})</span></div> |