From 05d4a24009faf7880e5f31f3e5b213c0367ad80b Mon Sep 17 00:00:00 2001 From: kangz Date: Thu, 26 Dec 2024 17:00:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 5 + app-saas-src/.apicloud/.project | 1 + app-saas-src/.filelist.txt | 203 + app-saas-src/.project | 11 + app-saas-src/.yonstudio/.project | 1 + app-saas-src/README.md | 92 + app-saas-src/config.xml | 52 + app-saas-src/css/about.css | 90 + app-saas-src/css/api.css | 82 + app-saas-src/css/contact.css | 3 + app-saas-src/css/feature/alarmDetail.css | 45 + app-saas-src/css/feature/alarmQuery.css | 159 + .../css/feature/alarmQueryRightPanel.css | 69 + app-saas-src/css/feature/camera.css | 65 + app-saas-src/css/feature/circuit.css | 104 + app-saas-src/css/feature/energy.css | 253 + app-saas-src/css/feature/energyRightPanel.css | 49 + app-saas-src/css/feature/historyData.css | 196 + .../css/feature/historyDataRightPanel.css | 73 + .../css/feature/inspectionArrange.css | 172 + .../css/feature/inspectionArrangeCreate.css | 212 + .../inspectionArrangeCreateRightPanel.css | 174 + .../css/feature/inspectionArrangeDetail.css | 369 + .../feature/logQuery/inspectArrangement.css | 42 + .../css/feature/logQuery/inspectBug.css | 49 + .../css/feature/logQuery/inspectBugList.css | 198 + .../logQuery/inspectBugListRightPanel.css | 69 + .../css/feature/logQuery/inspectLogDetail.css | 94 + .../feature/logQuery/inspectLogDetailNew.css | 111 + .../css/feature/logQuery/inspectLogList.css | 134 + .../feature/logQuery/inspectLogListNew.css | 134 + .../css/feature/logQuery/logQuery.css | 40 + .../feature/logQuery/operateTicketDetail.css | 37 + .../logQuery/operateTicketDetailFrame.css | 0 .../feature/logQuery/operateTicketList.css | 127 + .../css/feature/logQuery/repairLogDetail.css | 121 + .../css/feature/logQuery/repairLogList.css | 134 + .../css/feature/logQuery/workTicketDetail.css | 101 + .../css/feature/logQuery/workTicketList.css | 145 + app-saas-src/css/feature/rtData.css | 117 + app-saas-src/css/feature/rtDataRightPanel.css | 66 + app-saas-src/css/feature/statistic.css | 3 + app-saas-src/css/feature/systemOrder.css | 181 + .../css/feature/systemOrderCreate.css | 200 + .../css/feature/systemOrderDetail.css | 152 + app-saas-src/css/feature/systemOrderEdit.css | 193 + app-saas-src/css/guide.css | 3 + app-saas-src/css/index.css | 4 + app-saas-src/css/index/contactFrame.css | 60 + app-saas-src/css/index/featureFrame.css | 95 + app-saas-src/css/index/index.css | 132 + app-saas-src/css/index/inspectionFrame.css | 141 + app-saas-src/css/index/leftPanel.css | 119 + app-saas-src/css/index/messageFrame.css | 157 + app-saas-src/css/index/rtAlarmFrame.css | 136 + app-saas-src/css/index/systemOrderFrame.css | 141 + .../css/inspection/inspectionListDetail.css | 367 + .../css/inspection/inspectionPrDetail.css | 353 + .../css/inspection/inspectionTaskDetail.css | 367 + .../css/inspectionRepair/inspection.css | 391 + .../css/inspectionRepair/inspectionItem.css | 206 + .../inspectionRepair/inspectionLogDetail.css | 94 + .../inspectionRepair/inspectionProblem.css | 111 + app-saas-src/css/inspectionRepair/repair.css | 312 + .../css/inspectionRepair/repairLogDetail.css | 121 + .../css/inspectionRepair/repairProblem.css | 111 + app-saas-src/css/message/messageListFrame.css | 275 + app-saas-src/css/message/news.css | 13 + .../css/message/operateTicketCommon.css | 13 + app-saas-src/css/message/workTicketCommon.css | 13 + app-saas-src/css/report/reportData.css | 131 + .../css/report/reportDdhListFrame.css | 98 + app-saas-src/css/report/reportPrFrame.css | 98 + .../css/report/reportProjectFrame.css | 73 + app-saas-src/css/rtAlarm/rtAlarmList.css | 3 + app-saas-src/css/style.css | 321 + .../css/systemOrder/systemOrderDetail.css | 144 + .../css/systemOrder/systemOrderEdit.css | 339 + app-saas-src/css/user/findPassWord.css | 47 + app-saas-src/css/user/login.css | 173 + app-saas-src/css/user/protocol.css | 18 + app-saas-src/css/user/resetPassword.css | 29 + app-saas-src/css/user/updatePassword.css | 53 + app-saas-src/gulpFile.js | 77 + app-saas-src/html/about.html | 76 + app-saas-src/html/feature/alarmDetail.html | 55 + app-saas-src/html/feature/alarmQuery.html | 103 + .../html/feature/alarmQueryRightPanel.html | 58 + app-saas-src/html/feature/camera.html | 63 + app-saas-src/html/feature/circuit.html | 59 + app-saas-src/html/feature/energy.html | 106 + .../html/feature/energyRightPanel.html | 28 + app-saas-src/html/feature/historyData.html | 139 + .../html/feature/historyDataRightPanel.html | 91 + .../html/feature/inspectionArrange.html | 109 + .../html/feature/inspectionArrangeCreate.html | 100 + .../inspectionArrangeCreateRightPanel.html | 126 + .../html/feature/inspectionArrangeDetail.html | 84 + .../feature/logQuery/inspectArrangement.html | 48 + .../html/feature/logQuery/inspectBug.html | 61 + .../html/feature/logQuery/inspectBugList.html | 90 + .../logQuery/inspectBugListRightPanel.html | 33 + .../feature/logQuery/inspectLogDetail.html | 78 + .../feature/logQuery/inspectLogDetailNew.html | 86 + .../html/feature/logQuery/inspectLogList.html | 58 + .../feature/logQuery/inspectLogListNew.html | 57 + .../html/feature/logQuery/logQuery-main.html | 33 + .../html/feature/logQuery/logQuery.html | 62 + .../feature/logQuery/operateTicketDetail.html | 33 + .../logQuery/operateTicketDetailFrame.html | 25 + .../feature/logQuery/operateTicketList.html | 61 + .../feature/logQuery/repairLogDetail.html | 159 + .../html/feature/logQuery/repairLogList.html | 59 + .../feature/logQuery/workTicketDetail.html | 33 + .../logQuery/workTicketDetailFrame.html | 25 + .../html/feature/logQuery/workTicketList.html | 50 + app-saas-src/html/feature/rtData.html | 99 + .../html/feature/rtDataRightPanel.html | 59 + app-saas-src/html/feature/statistic.html | 25 + app-saas-src/html/feature/systemOrder.html | 92 + .../html/feature/systemOrderCreate.html | 93 + .../html/feature/systemOrderDetail.html | 98 + .../html/feature/systemOrderEdit.html | 80 + app-saas-src/html/guide.html | 24 + app-saas-src/html/index.html | 24 + app-saas-src/html/index/contactFrame.html | 45 + app-saas-src/html/index/featureFrame.html | 97 + app-saas-src/html/index/index.html | 72 + app-saas-src/html/index/inspectionFrame.html | 87 + app-saas-src/html/index/leftPanel.html | 92 + app-saas-src/html/index/messageFrame.html | 120 + app-saas-src/html/index/rtAlarmFrame.html | 69 + app-saas-src/html/index/systemOrderFrame.html | 83 + .../html/inspection/inspectionListDetail.html | 130 + .../html/inspection/inspectionPrDetail.html | 133 + .../html/inspection/inspectionTaskDetail.html | 138 + .../html/inspectionRepair/inspection.html | 159 + .../html/inspectionRepair/inspectionItem.html | 160 + .../inspectionRepair/inspectionLogDetail.html | 78 + .../inspectionRepair/inspectionProblem.html | 91 + .../html/inspectionRepair/repair.html | 103 + .../inspectionRepair/repairLogDetail.html | 159 + .../html/inspectionRepair/repairProblem.html | 77 + app-saas-src/html/message/messageList.html | 34 + .../html/message/messageListFrame.html | 39 + app-saas-src/html/message/news.html | 40 + .../html/message/operateTicketCommon.html | 40 + .../html/message/workTicketCommon.html | 40 + app-saas-src/html/report/reportData.html | 96 + app-saas-src/html/report/reportDdhList.html | 33 + .../html/report/reportDdhListFrame.html | 34 + app-saas-src/html/report/reportPr.html | 32 + app-saas-src/html/report/reportPrFrame.html | 34 + app-saas-src/html/report/reportProject.html | 32 + .../html/report/reportProjectFrame.html | 31 + app-saas-src/html/rtAlarm/rtAlarmList.html | 24 + .../html/systemOrder/systemOrderDetail.html | 94 + .../html/systemOrder/systemOrderEdit.html | 145 + app-saas-src/html/user/findPassWord.html | 50 + app-saas-src/html/user/login.html | 79 + app-saas-src/html/user/protocol.html | 62 + app-saas-src/html/user/resetPassword.html | 43 + app-saas-src/html/user/updatePassword.html | 70 + app-saas-src/icon/icon150x150.png | Bin 0 -> 4904 bytes app-saas-src/image/about.png | Bin 0 -> 1783 bytes app-saas-src/image/about.svg | 24 + app-saas-src/image/add.png | Bin 0 -> 3830 bytes app-saas-src/image/alarm-keeper-icon.png | Bin 0 -> 731 bytes app-saas-src/image/album.png | Bin 0 -> 5324 bytes app-saas-src/image/arrow-bottom.png | Bin 0 -> 1523 bytes app-saas-src/image/arrow-right.png | Bin 0 -> 1172 bytes app-saas-src/image/arrow.png | Bin 0 -> 1080 bytes app-saas-src/image/avatar.png | Bin 0 -> 1934 bytes app-saas-src/image/avatar.svg | 28 + app-saas-src/image/back.png | Bin 0 -> 1316 bytes app-saas-src/image/bee-icon-prev.png | Bin 0 -> 2693 bytes app-saas-src/image/bee-icon.png | Bin 0 -> 1531 bytes app-saas-src/image/black-pr-icon.png | Bin 0 -> 1564 bytes app-saas-src/image/camera.png | Bin 0 -> 6498 bytes app-saas-src/image/chang-pwd.png | Bin 0 -> 1425 bytes app-saas-src/image/chang-pwd.svg | 19 + app-saas-src/image/clear.png | Bin 0 -> 1378 bytes app-saas-src/image/clear.svg | 41 + app-saas-src/image/close.png | Bin 0 -> 10009 bytes app-saas-src/image/contact-active.png | Bin 0 -> 1514 bytes app-saas-src/image/contact-active.svg | 19 + app-saas-src/image/contact-normal.png | Bin 0 -> 1575 bytes app-saas-src/image/contact-normal.svg | 20 + app-saas-src/image/drop-down.png | Bin 0 -> 1089 bytes app-saas-src/image/empty-tips.png | Bin 0 -> 13385 bytes app-saas-src/image/error-dark.svg | 1 + app-saas-src/image/error-light.svg | 1 + app-saas-src/image/feature-active.png | Bin 0 -> 1517 bytes app-saas-src/image/feature-active.svg | 17 + app-saas-src/image/feature-normal.png | Bin 0 -> 1633 bytes app-saas-src/image/feature-normal.svg | 20 + app-saas-src/image/func-alarm.svg | 37 + app-saas-src/image/func-energy.svg | 77 + app-saas-src/image/func-history.svg | 35 + app-saas-src/image/func-inspectBug.svg | 108 + app-saas-src/image/func-log.svg | 22 + app-saas-src/image/func-rtdata.svg | 34 + app-saas-src/image/img-error.png | Bin 0 -> 58640 bytes app-saas-src/image/inspect-keeper-icon.png | Bin 0 -> 1866 bytes app-saas-src/image/inspect-log.svg | 30 + app-saas-src/image/inspection-active.svg | 1 + app-saas-src/image/inspection-normal.svg | 1 + app-saas-src/image/left-bg0.png | Bin 0 -> 180095 bytes app-saas-src/image/left-panel-logo-prev-1.png | Bin 0 -> 4693 bytes app-saas-src/image/left-panel-logo-prev.png | Bin 0 -> 6158 bytes app-saas-src/image/left-panel-logo.png | Bin 0 -> 2902 bytes app-saas-src/image/logo-prev-1.png | Bin 0 -> 13885 bytes app-saas-src/image/logo-prev.png | Bin 0 -> 13219 bytes app-saas-src/image/logo.png | Bin 0 -> 32335 bytes app-saas-src/image/logout.png | Bin 0 -> 1575 bytes app-saas-src/image/logout.svg | 20 + app-saas-src/image/malfunction.png | Bin 0 -> 1722 bytes app-saas-src/image/message-active.png | Bin 0 -> 1630 bytes app-saas-src/image/message-active.svg | 15 + app-saas-src/image/message-normal.png | Bin 0 -> 1701 bytes app-saas-src/image/message-normal.svg | 16 + app-saas-src/image/message_icon_2001.svg | 9 + app-saas-src/image/message_icon_2002.svg | 12 + app-saas-src/image/message_icon_3001.svg | 26 + app-saas-src/image/message_icon_3002.svg | 10 + app-saas-src/image/message_icon_4001.svg | 16 + app-saas-src/image/message_icon_4002.svg | 12 + app-saas-src/image/message_icon_5001.svg | 16 + app-saas-src/image/message_icon_5002.svg | 13 + app-saas-src/image/message_icon_6000.svg | 47 + app-saas-src/image/message_icon_6001.svg | 44 + app-saas-src/image/message_icon_7001.svg | 52 + app-saas-src/image/microphone.png | Bin 0 -> 6993 bytes app-saas-src/image/more.png | Bin 0 -> 1533 bytes .../image/oper-ticket-assistantor-icon.png | Bin 0 -> 1854 bytes app-saas-src/image/operate-ticket.svg | 50 + app-saas-src/image/picture.png | Bin 0 -> 6191 bytes app-saas-src/image/pre-pic.png | Bin 0 -> 9797 bytes app-saas-src/image/qrcode.png | Bin 0 -> 1344 bytes app-saas-src/image/red-alarm-icon.png | Bin 0 -> 1263 bytes app-saas-src/image/repair-active.svg | 1 + app-saas-src/image/repair-keeper-icon.png | Bin 0 -> 1705 bytes app-saas-src/image/repair-log.svg | 37 + app-saas-src/image/repair-normal.svg | 1 + app-saas-src/image/report-keeper-icon.png | Bin 0 -> 880 bytes app-saas-src/image/right-bottom-bg.png | Bin 0 -> 60289 bytes app-saas-src/image/right-middle-bg.png | Bin 0 -> 65224 bytes app-saas-src/image/right-top-bg.png | Bin 0 -> 62789 bytes app-saas-src/image/rtAlarm-active.png | Bin 0 -> 1390 bytes app-saas-src/image/rtAlarm-active.svg | 28 + app-saas-src/image/rtAlarm-normal.png | Bin 0 -> 1428 bytes app-saas-src/image/rtAlarm-normal.svg | 31 + app-saas-src/image/scheme.png | Bin 0 -> 1469 bytes app-saas-src/image/success-dark.svg | 1 + app-saas-src/image/success-light.svg | 1 + app-saas-src/image/text-logo.png | Bin 0 -> 3105 bytes app-saas-src/image/white-pr-icon.svg | 19 + .../image/work-ticket-assistantor-icon.png | Bin 0 -> 1177 bytes app-saas-src/image/work-ticket.svg | 38 + app-saas-src/index.html | 29 + app-saas-src/launch/launch1080x1920.png | Bin 0 -> 46051 bytes app-saas-src/package-lock.json | 6900 +++++++++++++++++ app-saas-src/package.json | 23 + app-saas-src/release_notice.txt | 11 + app-saas-src/res/raw/horse.mp3 | Bin 0 -> 37613 bytes app-saas-src/resource/isNew.txt | 1 + app-saas-src/resource/version.txt | 1 + app-saas-src/script/about.js | 142 + app-saas-src/script/api.js | 850 ++ app-saas-src/script/common.js | 148 + app-saas-src/script/dao/baseDao.js | 54 + app-saas-src/script/dao/messageDao.js | 382 + .../script/dao/userMaxMessageIdDao.js | 98 + app-saas-src/script/dateUtils.js | 223 + app-saas-src/script/echarts.min.js | 12 + app-saas-src/script/feature/alarmDetail.js | 186 + app-saas-src/script/feature/alarmQuery.js | 358 + .../script/feature/alarmQueryRightPanel.js | 217 + app-saas-src/script/feature/camera.js | 218 + app-saas-src/script/feature/circuit.js | 121 + app-saas-src/script/feature/energy.js | 1350 ++++ .../script/feature/energyRightPanel.js | 169 + app-saas-src/script/feature/historyData.js | 632 ++ .../script/feature/historyDataRightPanel.js | 603 ++ .../script/feature/inspectionArrange.js | 355 + .../script/feature/inspectionArrangeCreate.js | 473 ++ .../inspectionArrangeCreateRightPanel.js | 503 ++ .../script/feature/inspectionArrangeDetail.js | 193 + .../feature/logQuery/inspectArrangement.js | 88 + .../script/feature/logQuery/inspectBug.js | 219 + .../script/feature/logQuery/inspectBugList.js | 281 + .../logQuery/inspectBugListRightPanel.js | 108 + .../feature/logQuery/inspectLogDetail.js | 205 + .../feature/logQuery/inspectLogDetailNew.js | 223 + .../script/feature/logQuery/inspectLogList.js | 231 + .../feature/logQuery/inspectLogListNew.js | 208 + .../script/feature/logQuery/log-query-main.js | 84 + .../script/feature/logQuery/logQuery.js | 94 + .../feature/logQuery/operateTicketDetail.js | 45 + .../logQuery/operateTicketDetailFrame.js | 122 + .../feature/logQuery/operateTicketList.js | 206 + .../feature/logQuery/repairLogDetail.js | 426 + .../script/feature/logQuery/repairLogList.js | 219 + .../feature/logQuery/workTicketDetail.js | 45 + .../feature/logQuery/workTicketDetailFrame.js | 112 + .../script/feature/logQuery/workTicketList.js | 199 + app-saas-src/script/feature/rtData.js | 645 ++ .../script/feature/rtDataRightPanel.js | 318 + app-saas-src/script/feature/statistic.js | 0 app-saas-src/script/feature/systemOrder.js | 332 + .../script/feature/systemOrderCreate.js | 456 ++ .../script/feature/systemOrderDetail.js | 181 + .../script/feature/systemOrderEdit.js | 293 + app-saas-src/script/guide.js | 0 app-saas-src/script/index.js | 419 + app-saas-src/script/index/contactFrame.js | 82 + app-saas-src/script/index/featureFrame.js | 330 + app-saas-src/script/index/index.js | 1007 +++ app-saas-src/script/index/inspectionFrame.js | 373 + app-saas-src/script/index/leftPanel.js | 168 + app-saas-src/script/index/messageFrame.js | 382 + app-saas-src/script/index/rtAlaramFrame.js | 300 + app-saas-src/script/index/systemOrderFrame.js | 371 + .../script/inspection/inspectionListDetail.js | 363 + .../script/inspection/inspectionPrDetail.js | 616 ++ .../script/inspection/inspectionTaskDetail.js | 546 ++ .../script/inspectionRepair/inspection.js | 719 ++ .../script/inspectionRepair/inspectionItem.js | 1382 ++++ .../inspectionRepair/inspectionLogDetail.js | 204 + .../inspectionRepair/inspectionProblem.js | 401 + .../script/inspectionRepair/repair.js | 403 + .../inspectionRepair/repairLogDetail.js | 425 + .../script/inspectionRepair/repairProblem.js | 270 + app-saas-src/script/menu-privilege.js | 50 + app-saas-src/script/message/messageList.js | 119 + .../script/message/messageListFrame.js | 925 +++ app-saas-src/script/message/news.js | 44 + .../script/message/operateTicketCommon.js | 78 + .../script/message/workTicketCommon.js | 77 + app-saas-src/script/moment.min.js | 80 + app-saas-src/script/report/reportData.js | 252 + app-saas-src/script/report/reportDdhList.js | 57 + .../script/report/reportDdhListFrame.js | 112 + app-saas-src/script/report/reportPr.js | 49 + app-saas-src/script/report/reportPrFrame.js | 103 + app-saas-src/script/report/reportProject.js | 48 + .../script/report/reportProjectFrame.js | 103 + .../script/systemOrder/systemOrderDetail.js | 147 + .../script/systemOrder/systemOrderEdit.js | 728 ++ app-saas-src/script/user/findPassWord.js | 183 + app-saas-src/script/user/login.js | 635 ++ app-saas-src/script/user/protocol.js | 7 + app-saas-src/script/user/resetPassword.js | 115 + app-saas-src/script/user/updatePassword.js | 162 + app-saas-src/script/zepto.min.js | 2 + 355 files changed, 49533 insertions(+) create mode 100644 .gitignore create mode 100644 app-saas-src/.apicloud/.project create mode 100644 app-saas-src/.filelist.txt create mode 100644 app-saas-src/.project create mode 100644 app-saas-src/.yonstudio/.project create mode 100644 app-saas-src/README.md create mode 100644 app-saas-src/config.xml create mode 100644 app-saas-src/css/about.css create mode 100644 app-saas-src/css/api.css create mode 100644 app-saas-src/css/contact.css create mode 100644 app-saas-src/css/feature/alarmDetail.css create mode 100644 app-saas-src/css/feature/alarmQuery.css create mode 100644 app-saas-src/css/feature/alarmQueryRightPanel.css create mode 100644 app-saas-src/css/feature/camera.css create mode 100644 app-saas-src/css/feature/circuit.css create mode 100644 app-saas-src/css/feature/energy.css create mode 100644 app-saas-src/css/feature/energyRightPanel.css create mode 100644 app-saas-src/css/feature/historyData.css create mode 100644 app-saas-src/css/feature/historyDataRightPanel.css create mode 100644 app-saas-src/css/feature/inspectionArrange.css create mode 100644 app-saas-src/css/feature/inspectionArrangeCreate.css create mode 100644 app-saas-src/css/feature/inspectionArrangeCreateRightPanel.css create mode 100644 app-saas-src/css/feature/inspectionArrangeDetail.css create mode 100644 app-saas-src/css/feature/logQuery/inspectArrangement.css create mode 100644 app-saas-src/css/feature/logQuery/inspectBug.css create mode 100644 app-saas-src/css/feature/logQuery/inspectBugList.css create mode 100644 app-saas-src/css/feature/logQuery/inspectBugListRightPanel.css create mode 100644 app-saas-src/css/feature/logQuery/inspectLogDetail.css create mode 100644 app-saas-src/css/feature/logQuery/inspectLogDetailNew.css create mode 100644 app-saas-src/css/feature/logQuery/inspectLogList.css create mode 100644 app-saas-src/css/feature/logQuery/inspectLogListNew.css create mode 100644 app-saas-src/css/feature/logQuery/logQuery.css create mode 100644 app-saas-src/css/feature/logQuery/operateTicketDetail.css create mode 100644 app-saas-src/css/feature/logQuery/operateTicketDetailFrame.css create mode 100644 app-saas-src/css/feature/logQuery/operateTicketList.css create mode 100644 app-saas-src/css/feature/logQuery/repairLogDetail.css create mode 100644 app-saas-src/css/feature/logQuery/repairLogList.css create mode 100644 app-saas-src/css/feature/logQuery/workTicketDetail.css create mode 100644 app-saas-src/css/feature/logQuery/workTicketList.css create mode 100644 app-saas-src/css/feature/rtData.css create mode 100644 app-saas-src/css/feature/rtDataRightPanel.css create mode 100644 app-saas-src/css/feature/statistic.css create mode 100644 app-saas-src/css/feature/systemOrder.css create mode 100644 app-saas-src/css/feature/systemOrderCreate.css create mode 100644 app-saas-src/css/feature/systemOrderDetail.css create mode 100644 app-saas-src/css/feature/systemOrderEdit.css create mode 100644 app-saas-src/css/guide.css create mode 100644 app-saas-src/css/index.css create mode 100644 app-saas-src/css/index/contactFrame.css create mode 100644 app-saas-src/css/index/featureFrame.css create mode 100644 app-saas-src/css/index/index.css create mode 100644 app-saas-src/css/index/inspectionFrame.css create mode 100644 app-saas-src/css/index/leftPanel.css create mode 100644 app-saas-src/css/index/messageFrame.css create mode 100644 app-saas-src/css/index/rtAlarmFrame.css create mode 100644 app-saas-src/css/index/systemOrderFrame.css create mode 100644 app-saas-src/css/inspection/inspectionListDetail.css create mode 100644 app-saas-src/css/inspection/inspectionPrDetail.css create mode 100644 app-saas-src/css/inspection/inspectionTaskDetail.css create mode 100644 app-saas-src/css/inspectionRepair/inspection.css create mode 100644 app-saas-src/css/inspectionRepair/inspectionItem.css create mode 100644 app-saas-src/css/inspectionRepair/inspectionLogDetail.css create mode 100644 app-saas-src/css/inspectionRepair/inspectionProblem.css create mode 100644 app-saas-src/css/inspectionRepair/repair.css create mode 100644 app-saas-src/css/inspectionRepair/repairLogDetail.css create mode 100644 app-saas-src/css/inspectionRepair/repairProblem.css create mode 100644 app-saas-src/css/message/messageListFrame.css create mode 100644 app-saas-src/css/message/news.css create mode 100644 app-saas-src/css/message/operateTicketCommon.css create mode 100644 app-saas-src/css/message/workTicketCommon.css create mode 100644 app-saas-src/css/report/reportData.css create mode 100644 app-saas-src/css/report/reportDdhListFrame.css create mode 100644 app-saas-src/css/report/reportPrFrame.css create mode 100644 app-saas-src/css/report/reportProjectFrame.css create mode 100644 app-saas-src/css/rtAlarm/rtAlarmList.css create mode 100644 app-saas-src/css/style.css create mode 100644 app-saas-src/css/systemOrder/systemOrderDetail.css create mode 100644 app-saas-src/css/systemOrder/systemOrderEdit.css create mode 100644 app-saas-src/css/user/findPassWord.css create mode 100644 app-saas-src/css/user/login.css create mode 100644 app-saas-src/css/user/protocol.css create mode 100644 app-saas-src/css/user/resetPassword.css create mode 100644 app-saas-src/css/user/updatePassword.css create mode 100644 app-saas-src/gulpFile.js create mode 100644 app-saas-src/html/about.html create mode 100644 app-saas-src/html/feature/alarmDetail.html create mode 100644 app-saas-src/html/feature/alarmQuery.html create mode 100644 app-saas-src/html/feature/alarmQueryRightPanel.html create mode 100644 app-saas-src/html/feature/camera.html create mode 100644 app-saas-src/html/feature/circuit.html create mode 100644 app-saas-src/html/feature/energy.html create mode 100644 app-saas-src/html/feature/energyRightPanel.html create mode 100644 app-saas-src/html/feature/historyData.html create mode 100644 app-saas-src/html/feature/historyDataRightPanel.html create mode 100644 app-saas-src/html/feature/inspectionArrange.html create mode 100644 app-saas-src/html/feature/inspectionArrangeCreate.html create mode 100644 app-saas-src/html/feature/inspectionArrangeCreateRightPanel.html create mode 100644 app-saas-src/html/feature/inspectionArrangeDetail.html create mode 100644 app-saas-src/html/feature/logQuery/inspectArrangement.html create mode 100644 app-saas-src/html/feature/logQuery/inspectBug.html create mode 100644 app-saas-src/html/feature/logQuery/inspectBugList.html create mode 100644 app-saas-src/html/feature/logQuery/inspectBugListRightPanel.html create mode 100644 app-saas-src/html/feature/logQuery/inspectLogDetail.html create mode 100644 app-saas-src/html/feature/logQuery/inspectLogDetailNew.html create mode 100644 app-saas-src/html/feature/logQuery/inspectLogList.html create mode 100644 app-saas-src/html/feature/logQuery/inspectLogListNew.html create mode 100644 app-saas-src/html/feature/logQuery/logQuery-main.html create mode 100644 app-saas-src/html/feature/logQuery/logQuery.html create mode 100644 app-saas-src/html/feature/logQuery/operateTicketDetail.html create mode 100644 app-saas-src/html/feature/logQuery/operateTicketDetailFrame.html create mode 100644 app-saas-src/html/feature/logQuery/operateTicketList.html create mode 100644 app-saas-src/html/feature/logQuery/repairLogDetail.html create mode 100644 app-saas-src/html/feature/logQuery/repairLogList.html create mode 100644 app-saas-src/html/feature/logQuery/workTicketDetail.html create mode 100644 app-saas-src/html/feature/logQuery/workTicketDetailFrame.html create mode 100644 app-saas-src/html/feature/logQuery/workTicketList.html create mode 100644 app-saas-src/html/feature/rtData.html create mode 100644 app-saas-src/html/feature/rtDataRightPanel.html create mode 100644 app-saas-src/html/feature/statistic.html create mode 100644 app-saas-src/html/feature/systemOrder.html create mode 100644 app-saas-src/html/feature/systemOrderCreate.html create mode 100644 app-saas-src/html/feature/systemOrderDetail.html create mode 100644 app-saas-src/html/feature/systemOrderEdit.html create mode 100644 app-saas-src/html/guide.html create mode 100644 app-saas-src/html/index.html create mode 100644 app-saas-src/html/index/contactFrame.html create mode 100644 app-saas-src/html/index/featureFrame.html create mode 100644 app-saas-src/html/index/index.html create mode 100644 app-saas-src/html/index/inspectionFrame.html create mode 100644 app-saas-src/html/index/leftPanel.html create mode 100644 app-saas-src/html/index/messageFrame.html create mode 100644 app-saas-src/html/index/rtAlarmFrame.html create mode 100644 app-saas-src/html/index/systemOrderFrame.html create mode 100644 app-saas-src/html/inspection/inspectionListDetail.html create mode 100644 app-saas-src/html/inspection/inspectionPrDetail.html create mode 100644 app-saas-src/html/inspection/inspectionTaskDetail.html create mode 100644 app-saas-src/html/inspectionRepair/inspection.html create mode 100644 app-saas-src/html/inspectionRepair/inspectionItem.html create mode 100644 app-saas-src/html/inspectionRepair/inspectionLogDetail.html create mode 100644 app-saas-src/html/inspectionRepair/inspectionProblem.html create mode 100644 app-saas-src/html/inspectionRepair/repair.html create mode 100644 app-saas-src/html/inspectionRepair/repairLogDetail.html create mode 100644 app-saas-src/html/inspectionRepair/repairProblem.html create mode 100644 app-saas-src/html/message/messageList.html create mode 100644 app-saas-src/html/message/messageListFrame.html create mode 100644 app-saas-src/html/message/news.html create mode 100644 app-saas-src/html/message/operateTicketCommon.html create mode 100644 app-saas-src/html/message/workTicketCommon.html create mode 100644 app-saas-src/html/report/reportData.html create mode 100644 app-saas-src/html/report/reportDdhList.html create mode 100644 app-saas-src/html/report/reportDdhListFrame.html create mode 100644 app-saas-src/html/report/reportPr.html create mode 100644 app-saas-src/html/report/reportPrFrame.html create mode 100644 app-saas-src/html/report/reportProject.html create mode 100644 app-saas-src/html/report/reportProjectFrame.html create mode 100644 app-saas-src/html/rtAlarm/rtAlarmList.html create mode 100644 app-saas-src/html/systemOrder/systemOrderDetail.html create mode 100644 app-saas-src/html/systemOrder/systemOrderEdit.html create mode 100644 app-saas-src/html/user/findPassWord.html create mode 100644 app-saas-src/html/user/login.html create mode 100644 app-saas-src/html/user/protocol.html create mode 100644 app-saas-src/html/user/resetPassword.html create mode 100644 app-saas-src/html/user/updatePassword.html create mode 100644 app-saas-src/icon/icon150x150.png create mode 100644 app-saas-src/image/about.png create mode 100644 app-saas-src/image/about.svg create mode 100644 app-saas-src/image/add.png create mode 100644 app-saas-src/image/alarm-keeper-icon.png create mode 100644 app-saas-src/image/album.png create mode 100644 app-saas-src/image/arrow-bottom.png create mode 100644 app-saas-src/image/arrow-right.png create mode 100644 app-saas-src/image/arrow.png create mode 100644 app-saas-src/image/avatar.png create mode 100644 app-saas-src/image/avatar.svg create mode 100644 app-saas-src/image/back.png create mode 100644 app-saas-src/image/bee-icon-prev.png create mode 100644 app-saas-src/image/bee-icon.png create mode 100644 app-saas-src/image/black-pr-icon.png create mode 100644 app-saas-src/image/camera.png create mode 100644 app-saas-src/image/chang-pwd.png create mode 100644 app-saas-src/image/chang-pwd.svg create mode 100644 app-saas-src/image/clear.png create mode 100644 app-saas-src/image/clear.svg create mode 100644 app-saas-src/image/close.png create mode 100644 app-saas-src/image/contact-active.png create mode 100644 app-saas-src/image/contact-active.svg create mode 100644 app-saas-src/image/contact-normal.png create mode 100644 app-saas-src/image/contact-normal.svg create mode 100644 app-saas-src/image/drop-down.png create mode 100644 app-saas-src/image/empty-tips.png create mode 100644 app-saas-src/image/error-dark.svg create mode 100644 app-saas-src/image/error-light.svg create mode 100644 app-saas-src/image/feature-active.png create mode 100644 app-saas-src/image/feature-active.svg create mode 100644 app-saas-src/image/feature-normal.png create mode 100644 app-saas-src/image/feature-normal.svg create mode 100644 app-saas-src/image/func-alarm.svg create mode 100644 app-saas-src/image/func-energy.svg create mode 100644 app-saas-src/image/func-history.svg create mode 100644 app-saas-src/image/func-inspectBug.svg create mode 100644 app-saas-src/image/func-log.svg create mode 100644 app-saas-src/image/func-rtdata.svg create mode 100644 app-saas-src/image/img-error.png create mode 100644 app-saas-src/image/inspect-keeper-icon.png create mode 100644 app-saas-src/image/inspect-log.svg create mode 100644 app-saas-src/image/inspection-active.svg create mode 100644 app-saas-src/image/inspection-normal.svg create mode 100644 app-saas-src/image/left-bg0.png create mode 100644 app-saas-src/image/left-panel-logo-prev-1.png create mode 100644 app-saas-src/image/left-panel-logo-prev.png create mode 100644 app-saas-src/image/left-panel-logo.png create mode 100644 app-saas-src/image/logo-prev-1.png create mode 100644 app-saas-src/image/logo-prev.png create mode 100644 app-saas-src/image/logo.png create mode 100644 app-saas-src/image/logout.png create mode 100644 app-saas-src/image/logout.svg create mode 100644 app-saas-src/image/malfunction.png create mode 100644 app-saas-src/image/message-active.png create mode 100644 app-saas-src/image/message-active.svg create mode 100644 app-saas-src/image/message-normal.png create mode 100644 app-saas-src/image/message-normal.svg create mode 100644 app-saas-src/image/message_icon_2001.svg create mode 100644 app-saas-src/image/message_icon_2002.svg create mode 100644 app-saas-src/image/message_icon_3001.svg create mode 100644 app-saas-src/image/message_icon_3002.svg create mode 100644 app-saas-src/image/message_icon_4001.svg create mode 100644 app-saas-src/image/message_icon_4002.svg create mode 100644 app-saas-src/image/message_icon_5001.svg create mode 100644 app-saas-src/image/message_icon_5002.svg create mode 100644 app-saas-src/image/message_icon_6000.svg create mode 100644 app-saas-src/image/message_icon_6001.svg create mode 100644 app-saas-src/image/message_icon_7001.svg create mode 100644 app-saas-src/image/microphone.png create mode 100644 app-saas-src/image/more.png create mode 100644 app-saas-src/image/oper-ticket-assistantor-icon.png create mode 100644 app-saas-src/image/operate-ticket.svg create mode 100644 app-saas-src/image/picture.png create mode 100644 app-saas-src/image/pre-pic.png create mode 100644 app-saas-src/image/qrcode.png create mode 100644 app-saas-src/image/red-alarm-icon.png create mode 100644 app-saas-src/image/repair-active.svg create mode 100644 app-saas-src/image/repair-keeper-icon.png create mode 100644 app-saas-src/image/repair-log.svg create mode 100644 app-saas-src/image/repair-normal.svg create mode 100644 app-saas-src/image/report-keeper-icon.png create mode 100644 app-saas-src/image/right-bottom-bg.png create mode 100644 app-saas-src/image/right-middle-bg.png create mode 100644 app-saas-src/image/right-top-bg.png create mode 100644 app-saas-src/image/rtAlarm-active.png create mode 100644 app-saas-src/image/rtAlarm-active.svg create mode 100644 app-saas-src/image/rtAlarm-normal.png create mode 100644 app-saas-src/image/rtAlarm-normal.svg create mode 100644 app-saas-src/image/scheme.png create mode 100644 app-saas-src/image/success-dark.svg create mode 100644 app-saas-src/image/success-light.svg create mode 100644 app-saas-src/image/text-logo.png create mode 100644 app-saas-src/image/white-pr-icon.svg create mode 100644 app-saas-src/image/work-ticket-assistantor-icon.png create mode 100644 app-saas-src/image/work-ticket.svg create mode 100644 app-saas-src/index.html create mode 100644 app-saas-src/launch/launch1080x1920.png create mode 100644 app-saas-src/package-lock.json create mode 100644 app-saas-src/package.json create mode 100644 app-saas-src/release_notice.txt create mode 100644 app-saas-src/res/raw/horse.mp3 create mode 100644 app-saas-src/resource/isNew.txt create mode 100644 app-saas-src/resource/version.txt create mode 100644 app-saas-src/script/about.js create mode 100644 app-saas-src/script/api.js create mode 100644 app-saas-src/script/common.js create mode 100644 app-saas-src/script/dao/baseDao.js create mode 100644 app-saas-src/script/dao/messageDao.js create mode 100644 app-saas-src/script/dao/userMaxMessageIdDao.js create mode 100644 app-saas-src/script/dateUtils.js create mode 100644 app-saas-src/script/echarts.min.js create mode 100644 app-saas-src/script/feature/alarmDetail.js create mode 100644 app-saas-src/script/feature/alarmQuery.js create mode 100644 app-saas-src/script/feature/alarmQueryRightPanel.js create mode 100644 app-saas-src/script/feature/camera.js create mode 100644 app-saas-src/script/feature/circuit.js create mode 100644 app-saas-src/script/feature/energy.js create mode 100644 app-saas-src/script/feature/energyRightPanel.js create mode 100644 app-saas-src/script/feature/historyData.js create mode 100644 app-saas-src/script/feature/historyDataRightPanel.js create mode 100644 app-saas-src/script/feature/inspectionArrange.js create mode 100644 app-saas-src/script/feature/inspectionArrangeCreate.js create mode 100644 app-saas-src/script/feature/inspectionArrangeCreateRightPanel.js create mode 100644 app-saas-src/script/feature/inspectionArrangeDetail.js create mode 100644 app-saas-src/script/feature/logQuery/inspectArrangement.js create mode 100644 app-saas-src/script/feature/logQuery/inspectBug.js create mode 100644 app-saas-src/script/feature/logQuery/inspectBugList.js create mode 100644 app-saas-src/script/feature/logQuery/inspectBugListRightPanel.js create mode 100644 app-saas-src/script/feature/logQuery/inspectLogDetail.js create mode 100644 app-saas-src/script/feature/logQuery/inspectLogDetailNew.js create mode 100644 app-saas-src/script/feature/logQuery/inspectLogList.js create mode 100644 app-saas-src/script/feature/logQuery/inspectLogListNew.js create mode 100644 app-saas-src/script/feature/logQuery/log-query-main.js create mode 100644 app-saas-src/script/feature/logQuery/logQuery.js create mode 100644 app-saas-src/script/feature/logQuery/operateTicketDetail.js create mode 100644 app-saas-src/script/feature/logQuery/operateTicketDetailFrame.js create mode 100644 app-saas-src/script/feature/logQuery/operateTicketList.js create mode 100644 app-saas-src/script/feature/logQuery/repairLogDetail.js create mode 100644 app-saas-src/script/feature/logQuery/repairLogList.js create mode 100644 app-saas-src/script/feature/logQuery/workTicketDetail.js create mode 100644 app-saas-src/script/feature/logQuery/workTicketDetailFrame.js create mode 100644 app-saas-src/script/feature/logQuery/workTicketList.js create mode 100644 app-saas-src/script/feature/rtData.js create mode 100644 app-saas-src/script/feature/rtDataRightPanel.js create mode 100644 app-saas-src/script/feature/statistic.js create mode 100644 app-saas-src/script/feature/systemOrder.js create mode 100644 app-saas-src/script/feature/systemOrderCreate.js create mode 100644 app-saas-src/script/feature/systemOrderDetail.js create mode 100644 app-saas-src/script/feature/systemOrderEdit.js create mode 100644 app-saas-src/script/guide.js create mode 100644 app-saas-src/script/index.js create mode 100644 app-saas-src/script/index/contactFrame.js create mode 100644 app-saas-src/script/index/featureFrame.js create mode 100644 app-saas-src/script/index/index.js create mode 100644 app-saas-src/script/index/inspectionFrame.js create mode 100644 app-saas-src/script/index/leftPanel.js create mode 100644 app-saas-src/script/index/messageFrame.js create mode 100644 app-saas-src/script/index/rtAlaramFrame.js create mode 100644 app-saas-src/script/index/systemOrderFrame.js create mode 100644 app-saas-src/script/inspection/inspectionListDetail.js create mode 100644 app-saas-src/script/inspection/inspectionPrDetail.js create mode 100644 app-saas-src/script/inspection/inspectionTaskDetail.js create mode 100644 app-saas-src/script/inspectionRepair/inspection.js create mode 100644 app-saas-src/script/inspectionRepair/inspectionItem.js create mode 100644 app-saas-src/script/inspectionRepair/inspectionLogDetail.js create mode 100644 app-saas-src/script/inspectionRepair/inspectionProblem.js create mode 100644 app-saas-src/script/inspectionRepair/repair.js create mode 100644 app-saas-src/script/inspectionRepair/repairLogDetail.js create mode 100644 app-saas-src/script/inspectionRepair/repairProblem.js create mode 100644 app-saas-src/script/menu-privilege.js create mode 100644 app-saas-src/script/message/messageList.js create mode 100644 app-saas-src/script/message/messageListFrame.js create mode 100644 app-saas-src/script/message/news.js create mode 100644 app-saas-src/script/message/operateTicketCommon.js create mode 100644 app-saas-src/script/message/workTicketCommon.js create mode 100644 app-saas-src/script/moment.min.js create mode 100644 app-saas-src/script/report/reportData.js create mode 100644 app-saas-src/script/report/reportDdhList.js create mode 100644 app-saas-src/script/report/reportDdhListFrame.js create mode 100644 app-saas-src/script/report/reportPr.js create mode 100644 app-saas-src/script/report/reportPrFrame.js create mode 100644 app-saas-src/script/report/reportProject.js create mode 100644 app-saas-src/script/report/reportProjectFrame.js create mode 100644 app-saas-src/script/systemOrder/systemOrderDetail.js create mode 100644 app-saas-src/script/systemOrder/systemOrderEdit.js create mode 100644 app-saas-src/script/user/findPassWord.js create mode 100644 app-saas-src/script/user/login.js create mode 100644 app-saas-src/script/user/protocol.js create mode 100644 app-saas-src/script/user/resetPassword.js create mode 100644 app-saas-src/script/user/updatePassword.js create mode 100644 app-saas-src/script/zepto.min.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..01ee035 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +node_modules/ +dist/ +https/ +app-saas/ +.git/ \ No newline at end of file diff --git a/app-saas-src/.apicloud/.project b/app-saas-src/.apicloud/.project new file mode 100644 index 0000000..674a966 --- /dev/null +++ b/app-saas-src/.apicloud/.project @@ -0,0 +1 @@ +{"appid":"A6073227892248","appname":"电务通SaaS","apptype":"app"} \ No newline at end of file diff --git a/app-saas-src/.filelist.txt b/app-saas-src/.filelist.txt new file mode 100644 index 0000000..bae7171 --- /dev/null +++ b/app-saas-src/.filelist.txt @@ -0,0 +1,203 @@ +/A6949758164458/image/avatar.png +/A6949758164458/script/feature/logQuery/inspectLogList.js +/A6949758164458/image/func-energy.svg +/A6949758164458/html/feature/rtDataRightPanel.html +/A6949758164458/script/index/messageFrame.js +/A6949758164458/config.xml +/A6949758164458/css/message/messageList.css +/A6949758164458/script/feature/logQuery/workTicketList.js +/A6949758164458/html/feature/historyData.html +/A6949758164458/script/feature/historyDataRightPanel.js +/A6949758164458/image/repair-keeper-icon.png +/A6949758164458/css/feature/logQuery/workTicketDetail.css +/A6949758164458/html/feature/alarmQuery.html +/A6949758164458/image/chang-pwd.png +/A6949758164458/css/feature/energyRightPanel.css +/A6949758164458/image/bottombtn0102.png +/A6949758164458/script/common.js +/A6949758164458/html/feature/statistic.html +/A6949758164458/image/scheme.png +/A6949758164458/image/left-panel-logo.png +/A6949758164458/html/message/messageListFrame.html +Query/workTicketList.html +/A6949758164458/launch/launch1080x1920.png +/A6949758164458/html/feature/logQuery/operateTicketDetail.html +/A6949758164458/html/feature/historyDataRightPanel.html +/A6949758164458/script/feature/logQuery/log-query-main.js +/A6949758164458/css/index/rtAlaramFrame.css +/A6949758164458/image/right-middle-bg.png +/A6949758164458/html/about.html +/A6949758164458/script/user/updatePassword.js +/A6949758164458/image/rtAlarm-active.png +/A6949758164458/css/feature/rtDataRightPanel.css +/A6949758164458/image/log.png +/A6949758164458/image/work-ticket-assistantor-icon.png +/A6949758164458/css/user/login.css +/A6949758164458/css/feature/logQuery/inspectLogList.css +/A6949758164458/image/img-error.png +/A6949758164458/html/feature/alarmQueryRightPanel.html +/A6949758164458/html/feature/logQuery/operateTicketList.html +/A6949758164458/script/user/resetPassword.js +/A6949758164458/电务通APP 需求说明说.docx +/A6949758164458/image/func-alarm.png +/A6949758164458/script/rtAlarm/rtAlarmList.js +/A6949758164458/css/feature/logQuery/workTicketList.css +/A/A6949758164458/image/avatar.png +/A6949758164458/image/bottombtn0301.png +/A6949758164458/image/contact-active.png +/A6949758164458/css/user/updatePassword.css +/A6949758164458/html/index/contactFrame.html +/A6949758164458/html/index/featureFrame.html +/A6949758164458/html/user/login.html +/A6949758164458/image/func-log.png +tml/user/updatePassword.html +/A6949758164458/css/index.css +/A6949758164458/script/dao/messageDao.js +/A6949758164458/script/feature/rtDataRightPanel.js +/A6949758164458/css/index/contactFrame.css +/A6949758164458/html/message/messageList.html +/A6949758164458/script/feature/historyData.js +/A6949758164458/css/feature/energy.css +/A6949758164458/image/work-ticket.svg +/A6949758164458/html/user/protocol.html +/A6949758164458/css/index/messageFrame.css +/A6949758164458/css/feature/logQuery/operateTicketDetail.css +/A6949758164458/image/more.png +/A6949758164458/css/index/index.css +/A6949758164458/image/func-rtdata.svg +/A6949758164458/html/index/rtAlaramFrame.html +/A6949758164458/image/left-bg.png +6949758164458/image/drop-down.png +8/html/feature/energyRightPanel.html +/A6949758164458/image/bottombtn0202.png +/A6949758164458/css/feature/logQuery/logQuery.css +/A6949758164458/image/func-rtdata.png +/A6949758164458/script/feature/energyRightPanel.js +/A6949758164458/h/A6949758164458/image/avatar.png +/A6949758164458/css/index/featureFrame.css +/A6949758164458/html/user/resetPassword.html +/A6949758164458/image/operate-ticket.svg +/A694/A6949758164458/image/avatar.png +/A6949758164458/script/user/findPassWord.js +/A6949758164458/image/shishishuju.svg +/A6949758164458/script/feature/logQuery/repairLogDetail.js +/A6949758164458/html/feature/logQuery/repairLogList.html +/A6949758164458/css/feature/logQuery/repairLogDetail.css +/A6949758164458/image/bottombtn0101.png +/A6949758164458/script/zepto.min.js +/A6949758164458/image/qrcode.png +/A6949758164458/css/user/findPassWord.css +/A6949758164458/image/right-bottom-bg.png +/A6949758164458/css/about.css +/A6949758164458/html/index/rtAlarmFrame.html +/A6949758164458/script/user/protocol.js +/A6949758164458/script/echarts.min.js +/A6949758164458/script/about.js +/A6949758164458/script/guide.js +/A6949758164458/script/feature/logQuery/repairLogList.js +/A6949758164458/html/feature/energy.html +/A6949758164458/html/guide.html +/A6949758164458/image/red-alarm-icon.png +/A6949758164458/image/func-history.png +/A6949758164458/script/feature/logQuery/operateTicketList.js +/A6949758164458/css/feature/alarmQuery.css +/A6949758164458/image/rtAlarm-normal.png +/A6949758164458/script/user/login.js +/A6949758164458/image/contact-normal.png +/A6949758164458/image/empty-tips.png +/A6949758164458/css/feature/alarmQueryRightPanel.css +/A6949758164458/css/user/resetPassword.css +/A6949758164458/script/index/rtAlaramFrame.js +/A6949758164458/image/feature-active.png +/A6949758164458/image/func-log.svg +/A6949758164458/image/bottombtn0401.png +/A6949758164458/index.html +/A6949758164458/html/feature/logQuery/repairLogDetail.html +/A6949758164458/image/inspect-log.svg +/A6949758164458/css/feature/logQuery/repairLogList.css +/A6949758164458/image/message-active.png +/A6949758164458/css/index/rtAlarmFrame.css +/A6949758164458/css/feature/statistic.css +/A6949758164458/html/feature/logQuery/workTicketList.html +/A6949758164458/script/feature/logQuery/operateTicketDetail.js +/A6949758164458/image/repair-log.svg +/A6949758164458/image/work-ticket.png +/A6949758164458/image/operate-ticket.png +/A6949758164458/html/index.html +/A6949758164458/resource/isNew.txt +/A6949758164458/image/message-normal.png +/A6949758164458/css/style.css +/A6949758164458/image/bee-icon.png +/A6949758164458/css/feature/historyData.css +/A6949758164458/script/index/index.js +/A6949758164458/image/bottombtn0402.png +/A6949758164458/script/feature/statistic.js +/A6949758164458/image/loading_more.gif +/A6949758164458/html/user/findPassWord.html +/A6949758164458/css/feature/logQuery/operateTicketList.css +/A6949758164458/image/bottombtn0302.png +/A6949758164458/image/oper-ticket-assistantor-icon.png +/A6949758164458/image/arrow.png +/A6949758164458/css/api.css +/A6949758164458/script/message/messageList.js +/A6949758164458/html/feature/logQuery/logQuery.html +/A6949758164458/css/index/leftPanel.css +/A6949758164458/image/arrow-right.png +/A6949758164458/image/right-top-bg.png +/A6949758164458/image/func-history.svg +/A694975816445/A6949758164458/image/avatar.png +/A6949758164458/css/feature/logQuery/inspectLogDetail.css +/A6949758164458/css/contact.css +/A6949758164458/html/index/index.html +/A6949758164458/image/about.png +/A6949758164458/css/user/protocol.css +/A6949758164458/image/text-logo.png +/A6949758164458/image/arrow-bottom.png +/A6949758164458/script/feature/logQuery/workTicketDetail.js +/A6949758164458/html/rtAlarm/rtAlarmList.html +/A6949758164458/script/moment.min.js +/A6949758164458/image/func-alarm.svg +/A6949758164458/script/feature/logQuery/logQuery.js +/A6949758164458/html/feature/logQuery/inspectLogList.html +/A6949758164458/css/feature/historyDataRightPanel.css +/A6949758164458/image/malfunction.png +/A6949758164458/css/feature/rtData.css +/A6949758164458/html/index/messageFrame.html +/A6949758164458/script/feature/alarmQueryRightPanel.js +/A6949758164458/image/clear.png +/A6949758164458/html/feature/rtData.html +/A6949758164458/script/index/featureFrame.js +/A6949758164458/image/logout.png +/A6949758164458/image/func-energy.png +/A6949758164458/css/message/messageListFrame.css +/A6949758164458/icon/icon150x150.png +/A6949758164458/script/feature/energy.js +/A6949758164458/script/feature/alarmQuery.js +/A6949758164458/html/feature/logQuery/workTicketDetail.html +/A6949758164458/script/feature/logQuery/inspectLogDetail.js +/A6949758164458/resource/version.txt +/A6949758164458/image/inspect-keeper-icon.png +/A6949758164458/image/back.png +/A6949758164458/html/feature/logQuery/logQuery-main.html +/A6949758164458/image/logo.png +/A6949758164458/script/feature/rtData.js +/A6949758164458/image/inspect-log.png +/A6949758164458/css/rtAlarm/rtAlarmList.css +/A6949758164458/script/api.js +/A6949758164458/script/message/messageListFrame.js +/A6949758164458/image/black-pr-icon.png +/A6949758164458/html/user/updatePassword.html +/A6949758164458/image/feature-normal.png +/A6949758164458/html/feature/energyRightPanel.html +/A6949758164458/image/drop-down.png +/A6949758164458/css/guide.css +9758164458/image/repair-log.png +/A6949758164458/script/index/contactFrame.js +/A6949758164458/script/index/leftPanel.js +/A6949758164458/script/index.js +/A6949758164458/image/logo-.png +/A6949758164458/html/feature/logQuery/inspectLogDetail.html +/A6949758164458/image/repair-log.png +/A6949758164458/image/bottombtn0201.png +/A6949758164458/html/index/leftPanel.html +/A6949758164458/html/feature/log/A6949758164458/script/feature/logQuery/inspectLogList.js diff --git a/app-saas-src/.project b/app-saas-src/.project new file mode 100644 index 0000000..91d9812 --- /dev/null +++ b/app-saas-src/.project @@ -0,0 +1,11 @@ + + + dianwutong + + + + + + + + diff --git a/app-saas-src/.yonstudio/.project b/app-saas-src/.yonstudio/.project new file mode 100644 index 0000000..ef65297 --- /dev/null +++ b/app-saas-src/.yonstudio/.project @@ -0,0 +1 @@ +{"appid":"A6073227892248","appname":"电务通SaaS","apptype":"mx-app"} \ No newline at end of file diff --git a/app-saas-src/README.md b/app-saas-src/README.md new file mode 100644 index 0000000..ef610fe --- /dev/null +++ b/app-saas-src/README.md @@ -0,0 +1,92 @@ +# App Saas Src + + + +## Getting started + +To make it easy for you to get started with GitLab, here's a list of recommended next steps. + +Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! + +## Add your files + +- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files +- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: + +``` +cd existing_repo +git remote add origin https://git.saas.dianwutong.com/dwt/front-end/app-saas-src.git +git branch -M master +git push -uf origin master +``` + +## Integrate with your tools + +- [ ] [Set up project integrations](http://59.110.13.144:9980/dwt/front-end/app-saas-src/-/settings/integrations) + +## Collaborate with your team + +- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/) +- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) +- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) +- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/) +- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) + +## Test and Deploy + +Use the built-in continuous integration in GitLab. + +- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html) +- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/) +- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html) +- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/) +- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html) + +*** + +# Editing this README + +When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template. + +## Suggestions for a good README +Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. + +## Name +Choose a self-explaining name for your project. + +## Description +Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors. + +## Badges +On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. + +## Visuals +Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. + +## Installation +Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. + +## Usage +Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. + +## Support +Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. + +## Roadmap +If you have ideas for releases in the future, it is a good idea to list them in the README. + +## Contributing +State if you are open to contributions and what your requirements are for accepting them. + +For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. + +You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. + +## Authors and acknowledgment +Show your appreciation to those who have contributed to the project. + +## License +For open source projects, say how it is licensed. + +## Project status +If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. diff --git a/app-saas-src/config.xml b/app-saas-src/config.xml new file mode 100644 index 0000000..b1756fe --- /dev/null +++ b/app-saas-src/config.xml @@ -0,0 +1,52 @@ + + + 电务通SaaS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app-saas-src/css/about.css b/app-saas-src/css/about.css new file mode 100644 index 0000000..9c83c8c --- /dev/null +++ b/app-saas-src/css/about.css @@ -0,0 +1,90 @@ +.blackMask { + position: fixed; + top: 0; + left: 0; + z-index: 100; + background-color: white; + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; +} + +.hidden { + display: none; +} + +.item { + display:flex; + height:4.08rem; + align-items:center; + border-bottom: 1px solid #e5e5e5; + padding:0 0.7rem; + justify-content:space-between; +} + +.item>div:nth-child(1) { + display:flex; + align-items:center; + margin: 0 0 0 1rem; +} + +.item>div:nth-child(2) { + margin: 0 1rem 0 0; +} + +.item img { + height: 1rem; + width: 1rem; +} + +.banner { + height: 13rem; + background: #e4e4e4; + display: flex; + align-items: center; + justify-content: center; +} + +.stackpanel-vertical { + display: flex; + flex-direction: column; +} + +.stackpanel-horizontal { + display: flex; + flex-direction: row; +} + +.horizon-center { + align-items: center; +} + +.logo { + display: flex; + background: white; + border-radius: 1rem; + height: 6.66rem; + width: 6.66rem; + align-items: center; + justify-content: center; + margin: 0.5rem 0 0 0; +} + +.logo img { + width: 60%; +} + +.text-logo { + width: 5.25rem; + margin: 1.32rem 0 0 0; +} + +.text-version { + margin: 0.5rem 0 0 0; +} + +.article{ + padding:1.7rem; +} diff --git a/app-saas-src/css/api.css b/app-saas-src/css/api.css new file mode 100644 index 0000000..85246f2 --- /dev/null +++ b/app-saas-src/css/api.css @@ -0,0 +1,82 @@ +html{ + font-family: sans-serif; +} +html,body,header,section,footer,div,ul,ol,li,img,a,span,em,del,legend,center,strong,var,fieldset,form,label,dl,dt,dd,cite,input,hr,time,mark,code,figcaption,figure,textarea,h1,h2,h3,h4,h5,h6,p{ + margin:0; + border:0; + padding:0; + font-style:normal; +} +html,body { + -webkit-touch-callout:none; + -webkit-text-size-adjust:none; + -webkit-tap-highlight-color:rgba(0, 0, 0, 0); + -webkit-user-select:none; + background-color: #fff; +} +nav,article,aside,details,main,header,footer,section,fieldset,figcaption,figure{ + display: block; +} +img,a,button,em,del,strong,var,label,cite,small,time,mark,code,textarea{ + display:inline-block; +} +header,section,footer { + position:relative; +} +ol,ul{ + list-style:none; +} +input,button,textarea { + border:0; + margin:0; + padding:0; + border-radius:0; + font-size:1em; + line-height:1em; + /* -webkit-appearance:none; */ + background-color:rgba(0, 0, 0, 0); +} +span{ + display:inline-block; +} +a:active, a:hover { + outline: 0; +} +a, a:visited{ + text-decoration:none; +} + +label, .wordWrap{ + word-wrap: break-word; + word-break: break-all; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +td,th { + padding: 0; +} +.clearfix:after{ + content: ' '; + display: block; + clear: both; + visibility:hidden; + line-height: 0; + height:0; +} +.loading_more{ + display: block; + height: 1.5em; + width: 100%; +} +.loading_more:before { + display: inline-block; vertical-align: text-bottom; + content: ' '; height: 16px; width: 16px; margin-right: 6px; + background: url(../image/loading_more.gif) no-repeat center; + -webkit-background-size: contain; + background-size: contain; +} +.loading_more:after { + content: '加载更多'; +} \ No newline at end of file diff --git a/app-saas-src/css/contact.css b/app-saas-src/css/contact.css new file mode 100644 index 0000000..5b7e679 --- /dev/null +++ b/app-saas-src/css/contact.css @@ -0,0 +1,3 @@ +body { + +} diff --git a/app-saas-src/css/feature/alarmDetail.css b/app-saas-src/css/feature/alarmDetail.css new file mode 100644 index 0000000..4f5b7e8 --- /dev/null +++ b/app-saas-src/css/feature/alarmDetail.css @@ -0,0 +1,45 @@ +body { + background: #f4f4f4; +} + +.content { + padding: 0 1.42rem; + background: #ffffff; + font-size: 1rem; +} + +.content-head { + height: 4.75rem; + padding: 0 0.2rem; + display: flex; + justify-content: space-between; + align-items: center; + border-bottom: 1px solid #d9d9d9; +} + +.pr-name { + font-size: 1.33rem; +} + +.alarm-time { + font-size: 0.83rem; +} + +.content-body { + padding: 1.5rem 0.2rem; +} + +.content-body>div { + padding: 0.5rem 0; +} +#create-order-btn { + position: fixed; + bottom: 0; + width: 100%; + height: 3rem; + line-height: 3rem; + font-size: 1.3rem; + text-align: center; + background-color: #e9be2b; + display: none; + } \ No newline at end of file diff --git a/app-saas-src/css/feature/alarmQuery.css b/app-saas-src/css/feature/alarmQuery.css new file mode 100644 index 0000000..2a57aa6 --- /dev/null +++ b/app-saas-src/css/feature/alarmQuery.css @@ -0,0 +1,159 @@ +.stackpanel-vertical { + display: flex; + flex-direction: column; +} +.alarmList-content{ + overflow-y: scroll; + /*-webkit-overflow-scrolling: touch;*/ +} +.stackpanel-horizontal { + display: flex; + flex-direction: row; +} + +.fix-top { + top: 5.34rem; + width: 100%; + background: white; + position: fixed; + z-index: 100; +} + +.search-line { + display: flex; + width: 100%; + justify-content: space-between; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} + +.search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} + +.datetime-line { + width: 70%; + display: flex; + justify-content: space-between; + align-items: center; +} + +.datetime { + height: 2.5rem; + line-height: 2.5rem; + text-align: center; + width: 6rem; +} + +.center { + display: flex; + align-items: center; +} + +.datetime { + line-height: 2.5rem; + text-align: center; +} + +.underline-yellow { + border-bottom: 1px solid #e9be2b +} + +.img-drop-down { + height: 1.2rem; + width: 1.2rem; + margin: 0 0.625rem 0 0; +} + +.iptime-group { + position: relative; +} + +.iptime { + position: absolute; + top: 0; + left: 0; + width: 7.825rem; + height: 2.5rem; + opacity: 0; +} + + +.alarm{ + display:flex; + padding:0.58rem; + border-bottom: 1px solid #dad9da; + flex-wrap:nowrap; + font-size:1rem; +} + +.alarm .left{ + display:flex; + flex-grow:1; + width:0; + align-items: center; +} + +.alarm .left .content{ + flex-grow:1; + width: 80%; +} + +.alarm .pr-name-con{ + display:flex; + align-items:center; +} + +.alarm .pr-name-con img{ + height:1.2rem; +} + +.alarm .pr-name{ + font-size : 1.16rem; +} + +.alarm .icon-con{ + flex-shrink:0; + width:3rem; + height:3rem; + display:flex; + border-radius:50%; + justify-content:center; + align-items:center; + margin-right:1rem; + font-size:1.25rem; + background:#E9BE2B; +} + +.alarm .right{ + /*width:7rem;*/ +} + +.text-gray { + color:#6d6d6d; +} + +.text-red { + color:#ff0000; +} + +.text-yellow { + color:#ff9c00; +} + +.text-green { + color:#03b679; +} + +.icon-con img{ + width:2rem; +} + +body { + overflow: auto; +} + diff --git a/app-saas-src/css/feature/alarmQueryRightPanel.css b/app-saas-src/css/feature/alarmQueryRightPanel.css new file mode 100644 index 0000000..741fbce --- /dev/null +++ b/app-saas-src/css/feature/alarmQueryRightPanel.css @@ -0,0 +1,69 @@ +.container { + padding: 2.9rem 1rem 3rem 1rem +} + +.container span { + font-size: 1.2rem +} + +.stackpanel-vertical { + display: flex; + flex-direction: column; +} + +.stackpanel-horizontal { + display: flex; + flex-wrap: wrap; + flex-direction: row; +} + +.btngroup { + margin: 0.5rem 0 +} + +.btn { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.4rem; + width: 23%; + line-height: 2.4rem; + color: #000000; + font-size: 0.8rem; + margin: 0 0 1.25rem 0; +} + +#pr-group .btn { + width: 100%; + box-sizing: border-box; + margin-left: 0; + margin-right: 0; +} + +.btn:nth-child(4n+2) { + margin: 0 0 1.25rem 2.6%; +} + +.btn:nth-child(4n+3) { + margin: 0 2.6% 1.25rem 2.6%; +} + +.btn-highlight { + color: #eabe2a; + border: 1px solid #eabe2a; +} + +.bottom { + position: fixed; + width: 100%; + bottom: 0; +} + +.submitbtn-common { + width: 50%; + height: 3.2rem; + line-height: 3.2rem; +} + +.submitbtn-gray { + background: #f2f2f2; +} \ No newline at end of file diff --git a/app-saas-src/css/feature/camera.css b/app-saas-src/css/feature/camera.css new file mode 100644 index 0000000..d4c479b --- /dev/null +++ b/app-saas-src/css/feature/camera.css @@ -0,0 +1,65 @@ +html,body{ + background:#f4f4f4; +} + +.panel{ + width:100%; + height:10%; + background:black; +} + +.panel video { + width: 100%; + border: 0; + vertical-align: bottom; +} + +.stackpanel-horizontal { + display: flex; + flex-wrap: wrap; + flex-direction: row; +} + +.btngroup { + margin: 1.25rem 0 1.5rem 0 +} + +.btn { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.4rem; + width: 23%; + line-height: 2.4rem; + color: #000000; + font-size: 0.8rem; + margin: 0 0.2rem 1.25rem 0.2rem; +} + +.btn-free-width { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.4rem; + line-height: 2.4rem; + color: #000000; + min-width: 23%; + font-size: 0.8rem; + margin: 0 0.2rem 1.25rem 0.2rem; + padding:0 0.4rem; + box-sizing: border-box; +} + + +/*.btn-free-width:nth-child(4n+4){ + margin: 0 0rem 1.25rem 0; +}*/ + +.btn-highlight { + color: #eabe2a; + border: 1px solid #eabe2a; +} +.btns-container { + padding: 2rem 1rem 0 1rem; +} +.btns-title { + font-size: 1.2rem; +} diff --git a/app-saas-src/css/feature/circuit.css b/app-saas-src/css/feature/circuit.css new file mode 100644 index 0000000..52a555b --- /dev/null +++ b/app-saas-src/css/feature/circuit.css @@ -0,0 +1,104 @@ +html,body{ + background:#f4f4f4; +} + +.panel{ + width:100%; + height:10%; + background:black; +} + +.panel video { + width: 100%; + border: 0; + vertical-align: bottom; +} + +.stackpanel-horizontal { + display: flex; + flex-wrap: wrap; + flex-direction: row; +} + +#content { + position: relative; +} + +.btngroup { + padding: 1rem 1.2rem; + display: none; + width: 100%; + background-color: #fff; + position: absolute; + top: 3rem; + left: 0; + z-index: 10; +} + +.btn { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + /* height: 2.4rem; */ + /* width: 6rem; */ + line-height: 2.4rem; + color: #000000; + font-size: 0.8rem; + margin: 0 0.2rem 0.5rem 0.2rem; +} + +.btn-free-width { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.4rem; + line-height: 2.4rem; + color: #000000; + min-width: 23%; + font-size: 0.8rem; + margin: 0 0.2rem 1.25rem 0.2rem; + padding:0 0.4rem; + box-sizing: border-box; +} + + +/*.btn-free-width:nth-child(4n+4){ + margin: 0 0rem 1.25rem 0; +}*/ + +.btn-highlight { + color: #eabe2a; + border: 1px solid #eabe2a; +} +.btns-container { + padding: 0.5rem 1rem 0 1rem; +} +.btns-title { + font-size: 1.2rem; +} + +.circuit-content { + width: 100%; + /* height: 100%; */ +} + +#circuit-selector { + display: flex; + justify-content: space-between; + align-items: center; + background-color: #eabe2a; + height: 3rem; + width: 100%; + line-height: 3rem; + padding: 0 1rem; + margin-top: 0.4rem; + box-sizing: border-box; +} + +#circuit-selector img, #circuit-selector span { + vertical-align: middle; +} + +#circuit-selector img { + width: 1rem; + /* height: 1rem; */ + +} \ No newline at end of file diff --git a/app-saas-src/css/feature/energy.css b/app-saas-src/css/feature/energy.css new file mode 100644 index 0000000..c19f5e3 --- /dev/null +++ b/app-saas-src/css/feature/energy.css @@ -0,0 +1,253 @@ +body{ + background: #ffffff; +} + +header{ + position: fixed; + padding:0; + margin:0; + padding-top:1.25rem; + height: 2.75rem; + z-index:99999999; +} +.content-container{ + overflow-y: scroll; +} +.top-bar { + height: 2.75rem; + line-height: 2.75rem; + display:flex; + align-items:center; + padding:0px; + font-size:1.125rem; +} + +.top-bar .left{ + width:2rem; + height:100%; + display:flex; + align-items:center; + justify-content:center; +} + +.top-bar .left img{ + width:0.656rem; + height:1.1875rem; +} + +.top-bar span{ + margin:auto; + color:rgba(0,0,0,1) +} + +.top-bar .right{ + width: 2rem; + height: 100%; +} +.top{ + background:#ffffff; +} + +.tabs{ + display: flex; + font-size:1.125rem; + position:fixed; + top:4rem; + width: 100%; + z-index:99999999; +} + +.tab{ + flex-grow:1; + height:2.5rem; + display:flex; + align-items:center; + justify-content:center; + background:#f2f2f2; +} + +.tab.active{ + background:#ffffff; +} + +.searcher{ + /*padding:0.4rem 1rem 0 1rem;*/ + padding-top: 0.4rem; + display:flex; + font-size:1rem; + justify-content: center; +} + +.btn{ + border-radius:0.25rem; + border:1px solid #dad9da; + box-sizing:border-box; + height:1.875rem; + width:5.125rem; + display:flex; + justify-content:center; + align-items:center; + margin-right:0.8rem; + font-size:1rem; +} + +.btn.active{ + background:#e9be2b; + color:#ffffff; +} + +.picker{ + display:flex; + justify-content:space-around; + align-items:center; + height:2rem; + line-height: 2rem; + font-size:1rem; + min-width:14rem; +} + +.picker .date{ + background: red; + border-bottom:1px solid #E9BE2B; + width:6rem; + height: 1.875rem; + text-align:center; + display:block; + line-height:1.875rem; +} + + +.compare-AChart{ + width:100%; + height:16rem; + +} + +.time-AChart{ + width:100%; + height:16rem; +} + +.time-BCChart-con{ + display:flex; + justify-content:space-between; +} + +.time-BCChart-con>div{ + width:49%; + height:16rem; +} + +.compare-ATable-con{ + padding:1rem; +} + +table{ + padding:1rem; + table-layout:fixed ; + width:100%; + text-align:center; + border:1px solid red; +} + +table tr{ + border-bottom:1px solid #eeeeee; +} + +table tr:first-child{ + border-top:2px solid #03b679; +} + +table tr td{ + line-height:2.0rem; +} + +table tr>td{ + border-left:1px solid #eeeeee; +} + +table tr>td:last-child{ + border-right:1px solid #eeeeee; +} +.tab-panel{ + padding-left: 1.5rem; + font-size: 0.8rem; +} + +.time-select{ + border-radius:0.25rem; + border:1px solid #dad9da; + box-sizing:border-box; + height:1.875rem; + display:flex; + align-items:center; + font-size:1rem; + width:5.125rem; + margin-right: 1rem; + background-color: white; + -webkit-appearance: none; +} + + + +/*日期选择器*/ +.datetime-line { + display: flex; + justify-content: space-between; + align-items: center; +} + +.datetime { + font-size:0.9rem; + color:rgba(0,0,0,0.7) + height: 1.875rem; + line-height: 1.875rem; + text-align: center; + width: 7rem; +} +.datetime-range{ + height: 1.875rem; + line-height: 1.875rem; + text-align: center; + width: 3rem; +} +.center { + display: flex; + align-items: center; +} + +.datetime { + line-height: 1.875rem; + text-align: center; +} + +.underline-yellow { + border-bottom: 1px solid #e9be2b +} + +.img-drop-down { + width: 0.83rem; + height: 0.4rem; + margin: 0 0.625rem 0 0; +} + +.iptime-group { + position: relative; +} + +.iptime { + position: absolute; + top: 0; + left: 0; + width: 7.825rem; + height:1.875rem; + opacity: 0; +} +.search-criteria { + margin-left: 2%; + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 1.7rem; + width: 23%; + font-size:0.9rem; +} diff --git a/app-saas-src/css/feature/energyRightPanel.css b/app-saas-src/css/feature/energyRightPanel.css new file mode 100644 index 0000000..be987b0 --- /dev/null +++ b/app-saas-src/css/feature/energyRightPanel.css @@ -0,0 +1,49 @@ +body { + background:#ffffff; +} + +.container{ + padding:1.25rem 0.5rem 3rem 0.5rem; +} + +.class-name{ + font-size:1rem; + color:#000000; + padding-top:0.6rem; +} + +.number{ + font-size:0.9rem; + color:#4c4c4c; + padding-top:0.3rem; +} + +.number.active{ + color:#E9BE2B; +} + +.btns{ + position:fixed; + bottom:0; + height:2.5rem; + width:100%; + display:flex; +} + +.btns .btn{ + height:2.5rem; + display:block; + line-height:2.5rem; + text-align:center; + font-size:1rem; + flex-grow:1; + outline:none; +} + +.btns .btn.cancel{ + background:#f2f2f2; +} + +.btns .btn.ok{ + background:#e9be2b; +} \ No newline at end of file diff --git a/app-saas-src/css/feature/historyData.css b/app-saas-src/css/feature/historyData.css new file mode 100644 index 0000000..a90014a --- /dev/null +++ b/app-saas-src/css/feature/historyData.css @@ -0,0 +1,196 @@ +::-webkit-scrollbar{width:0px} + +td{ + white-space:nowrap; + vertical-align:middle; + text-align:center; +} + +.stackpanel-vertical { + display: flex; + flex-direction: column; +} + +.stackpanel-horizontal { + display: flex; + flex-direction: row; +} + +.fix-top { + top: 5.34rem; + width: 100%; + background: white; + position: fixed; + z-index: 100; +} + +.search-line { + display: flex; + width: 100%; + justify-content: space-between; + padding: 0 0.83rem; + box-sizing: border-box; + -moz-box-sizing:border-box; /* Firefox */ + -webkit-box-sizing:border-box; /* Safari */ + align-items: center; +} + +.search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} + +.datetime-line { + width: 70%; + display: flex; + justify-content: space-between; + align-items: center; +} + +.center { + display: flex; + align-items: center; +} + +.datetime { + line-height: 2.5rem; + text-align: center; +} + +.underline-yellow { + border-bottom: 1px solid #e9be2b +} + +.img-drop-down { + height: 1.2rem; + width: 1.2rem; + margin: 0 0.625rem 0 0; +} + +.table-panel{ + /* Add start 2018/8/23 15:00 kangzhi */ + /* 给 echarts 表留出位置 */ + margin-top: 18.5rem; + /* Add end 2018/8/23 15:00 kangzhi */ + position:absolute; + display:flex; + width:100%; + overflow: hidden; +} + +.table-head{ + position:absolute; + left:0px; + top:0px; + width:100%; + height:5.16rem; + z-index:1000; +} + +.table-head-right{ + overflow:scroll; + position:absolute; + top:0px; +} + +#header-table{ + border-top:1px solid #d9d9d9; + border-bottom:1px solid #d9d9d9; + box-sizing:content-box; + -moz-box-sizing:content-box; /* Firefox */ + -webkit-box-sizing:content-box; /* Safari */ +} + +#table-head-left { + position:relative; + z-index: 10000; +} + +.time-title-cell{ + height:5.2rem; + width:10.4rem; + display:table-cell; + align-items:center; + justify-content:center; + background:#E9BE2B; + border-top:2px solid #E9BE2B; + border-bottom:1px solid #d9d9d9; + +} + + +.table-head-right td{ + height:2.6rem; +} + +#table-header-list td:not(:last-child){ + border-right:1px solid #d9d9d9; + box-sizing:border-box; + -moz-box-sizing:content-box; /* Firefox */ + -webkit-box-sizing:content-box; /* Safari */ +} + +#table-title-list { + border-top:1px solid #d9d9d9; + box-sizing:border-box; + -moz-box-sizing:border-box; /* Firefox */ + -webkit-box-sizing:border-box; /* Safari */ + height:2.58rem; +} + +#table-title-list td:nth-child(even){ + background:#f7f7f7; +} + +.table-body{ + width:100%; + position:absolute; + overflow: hidden; +} + +.table-body-right tr,.table-body-left tr{ + border-bottom:1px solid #d9d9d9; + box-sizing:content-box; + -moz-box-sizing:content-box; /* Firefox */ + -webkit-box-sizing:content-box; /* Safari */ +} + +.table-body-right td, .table-body-left td{ + height:2.6rem; + +} + +.table-body-left{ + position:absolute; + top:0; + width:10.4rem; + overflow: scroll; +} + +.table-body-right{ + position:absolute; + top:0; + overflow: scroll; +} + +.table-body-left td{ + width:10.4rem; + text-align:center; + vertical-align:center; + background:#f7f7f7; +} + +#tbHistroyValue tr>td:nth-child(even){ + background:#f7f7f7; +} +/* Add start 2018/8/23 10:01 kangzhi */ +/* echarts 容器样式 */ +#echarts-container { + box-sizing: border-box; + margin-top: 11.5rem; + height: 19rem; + width: 100%; +} +/* Add end 2018/8/23 10:01 kangzhi */ diff --git a/app-saas-src/css/feature/historyDataRightPanel.css b/app-saas-src/css/feature/historyDataRightPanel.css new file mode 100644 index 0000000..2613934 --- /dev/null +++ b/app-saas-src/css/feature/historyDataRightPanel.css @@ -0,0 +1,73 @@ +.container { + padding: 2.9rem 1rem 0 1rem +} + +.container span { + font-size: 1.2rem +} + +.stackpanel-vertical { + display: flex; + flex-direction: column; +} + +.stackpanel-horizontal { + display: flex; + flex-wrap: wrap; + -webkit-flex-wrap:wrap; + flex-direction: row; +} + +.btngroup { + margin: 1.25rem 0 4.5rem 0 +} + +.btn { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.4rem; + width: 23%; + line-height: 2.4rem; + color: #000000; + font-size: 0.8rem; + margin: 0 0.2rem 1.25rem 0.2rem; +} + +.btn-free-width { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.4rem; + line-height: 2.4rem; + color: #000000; + min-width: 23%; + font-size: 0.8rem; + margin: 0 0.2rem 1.25rem 0.2rem; + padding:0 0.4rem; + box-sizing: border-box; +} + + +/*.btn-free-width:nth-child(4n+4){ + margin: 0 0rem 1.25rem 0; +}*/ + +.btn-highlight { + color: #eabe2a; + border: 1px solid #eabe2a; +} + +.bottom { + position: fixed; + width: 100%; + bottom: 0; +} + +.submitbtn-common { + width: 50%; + height: 3.2rem; + line-height: 3.2rem; +} + +.submitbtn-gray { + background: #f2f2f2; +} diff --git a/app-saas-src/css/feature/inspectionArrange.css b/app-saas-src/css/feature/inspectionArrange.css new file mode 100644 index 0000000..ba6afa6 --- /dev/null +++ b/app-saas-src/css/feature/inspectionArrange.css @@ -0,0 +1,172 @@ +.container { + padding-bottom: 3.1rem; +} +.stackpanel-vertical { + display: flex; + flex-direction: column; +} +.inspectionList-content{ + overflow-y: scroll; + /*-webkit-overflow-scrolling: touch;*/ +} +.stackpanel-horizontal { + display: flex; + flex-direction: row; +} + +.fix-top { + top: 5.34rem; + width: 100%; + background: white; + position: fixed; + z-index: 100; +} + +.search-line { + display: flex; + width: 100%; + justify-content: space-between; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} + +.search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 18%; +} + +.datetime-line { + width: 70%; + display: flex; + justify-content: space-between; + align-items: center; +} + +.datetime { + height: 2.5rem; + line-height: 2.5rem; + text-align: center; + width: 6rem; +} + +.center { + display: flex; + align-items: center; +} + +.datetime { + line-height: 2.5rem; + text-align: center; +} + +.underline-yellow { + border-bottom: 1px solid #e9be2b +} + +.img-drop-down { + height: 1.2rem; + width: 1.2rem; + margin: 0 0.625rem 0 0; +} + +.iptime-group { + position: relative; +} + +.iptime { + position: absolute; + top: 0; + left: 0; + width: 7.825rem; + height: 2.5rem; + opacity: 0; +} + +.inspection{ + display:flex; + padding:0.58rem; + border-bottom: 1px solid #dad9da; + flex-wrap:nowrap; + font-size:1rem; +} + +.inspection .left{ + display:flex; + flex-grow:1; + width:0; + align-items: center; +} + +.inspection .left .content{ + flex-grow:1; + width: 80%; +} + +.inspection .pr-name-con{ + display:flex; + align-items:center; +} + +.inspection .pr-name-con img{ + height:1.2rem; +} + +.inspection .pr-name{ + font-size : 1.16rem; +} + +.inspection .icon-con{ + flex-shrink:0; + width:3rem; + height:3rem; + display:flex; + border-radius:50%; + justify-content:center; + align-items:center; + margin-right:1rem; + font-size:1.25rem; + background:#E9BE2B; +} + +.inspection .right{ + /*width:7rem;*/ +} + +.text-gray { + color:#6d6d6d; +} + +.text-red { + color:#ff0000; +} + +.text-yellow { + color:#ff9c00; +} + +.text-green { + color:#03b679; +} + +.icon-con img{ + width:2rem; +} + +body { + overflow: auto; +} + +#create-inspection-btn { + position: fixed; + bottom: 0; + width: 100%; + height: 3rem; + line-height: 3rem; + font-size: 1.3rem; + text-align: center; + background-color: #e9be2b; + display: none; +} diff --git a/app-saas-src/css/feature/inspectionArrangeCreate.css b/app-saas-src/css/feature/inspectionArrangeCreate.css new file mode 100644 index 0000000..2735842 --- /dev/null +++ b/app-saas-src/css/feature/inspectionArrangeCreate.css @@ -0,0 +1,212 @@ +.container { + padding-bottom: 3.1rem; +} +.stackpanel-vertical { + display: flex; + flex-direction: column; +} +.prList-content{ + overflow-y: scroll; + /*-webkit-overflow-scrolling: touch;*/ +} +.stackpanel-horizontal { + display: flex; + flex-direction: row; +} + +.fix-top { + top: 5.34rem; + width: 100%; + background: white; + position: fixed; + z-index: 100; + padding: 2rem; + box-sizing: border-box; + border-bottom:1px solid #d9d9d9 +} + +.search-line { + display: flex; + justify-content: space-between; + width: 100%; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} + +.btn-normal { + display: inline-block; + border: 1px solid #d9d9d9; + border-radius: 10%; + padding: 0.4rem 0.6rem; + color: #e9be2b; + font-size: 12px; +} + +.btn-danger { + display: inline-block; + vertical-align: middle; + border: 1px solid #d9d9d9; + border-radius: 10%; + padding: 0.4rem 0.6rem; + color: #ff0000; + font-size: 12px; +} +.pr-num-box { + padding: 0.6rem 2rem; + display: flex; + justify-content: space-between; + align-items: center; + border-bottom: 1px solid #d9d9d9; +} +.pr-num-box .btn-normal { + vertical-align: middle; +} +.pr-num { + color: red; +} + +.search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} + +.datetime-line { + width: 70%; + display: flex; + justify-content: space-between; + align-items: center; +} + +.datetime { + height: 2.5rem; + line-height: 2.5rem; + text-align: center; + width: 6rem; +} + +.center { + display: flex; + align-items: center; +} + +.datetime { + line-height: 2.5rem; + text-align: center; +} + +.underline-yellow { + border-bottom: 1px solid #e9be2b +} + +.img-drop-down { + height: 1.2rem; + width: 1.2rem; + margin: 0 0.625rem 0 0; +} + +.iptime-group { + position: relative; +} + +.iptime { + position: absolute; + top: 0; + left: 0; + width: 7.825rem; + height: 2.5rem; + opacity: 0; +} + + +.pr{ + display:flex; + padding:0.58rem; + border-bottom: 1px solid #dad9da; + flex-wrap:nowrap; + font-size:1rem; +} + +.pr .left{ + display:flex; + flex-grow:1; + width:0; + align-items: center; +} + +.pr .left .content{ + flex-grow:1; + width: 80%; +} + +.pr .pr-name-con{ + display:flex; + align-items:center; +} + +.pr .pr-name-con img{ + height:1.2rem; +} + +.pr .pr-name{ + font-size : 1.16rem; +} + +.pr .icon-con{ + flex-shrink:0; + width:3rem; + height:3rem; + display:flex; + border-radius:50%; + justify-content:center; + align-items:center; + margin-right:1rem; + font-size:1.25rem; + background:#E9BE2B; +} + +.pr .right{ + display: flex; + align-items: center; +} + +.text-gray { + color:#6d6d6d; +} + +.text-red { + color:#ff0000; +} + +.text-yellow { + color:#ff9c00; +} + +.text-green { + color:#03b679; +} + +.icon-con img{ + width:2rem; +} + +body { + overflow: auto; +} + +.inspect-type { + color: #e9be2b; +} + +#save-btn { + position: fixed; + bottom: 0; + width: 100%; + height: 3rem; + line-height: 3rem; + font-size: 1.3rem; + text-align: center; + background-color: #e9be2b; +} diff --git a/app-saas-src/css/feature/inspectionArrangeCreateRightPanel.css b/app-saas-src/css/feature/inspectionArrangeCreateRightPanel.css new file mode 100644 index 0000000..544930a --- /dev/null +++ b/app-saas-src/css/feature/inspectionArrangeCreateRightPanel.css @@ -0,0 +1,174 @@ +.container { + padding: 2.9rem 1rem 5rem 1rem; + overflow-y: scroll; +} + +.container span { + font-size: 1.2rem +} + +.stackpanel-vertical { + display: flex; + flex-direction: column; +} + +.stackpanel-horizontal { + display: flex; + flex-wrap: wrap; + -webkit-flex-wrap:wrap; + flex-direction: row; +} + +.btngroup { + margin: 1.25rem 0 1.25rem 0 +} + +.btn { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.4rem; + width: 23%; + line-height: 2.4rem; + color: #000000; + font-size: 0.8rem; + margin: 0 0.2rem 1.25rem 0.2rem; +} + +.btn-free-width { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.4rem; + line-height: 2.4rem; + color: #000000; + min-width: 23%; + font-size: 0.8rem; + margin: 0 0.2rem 1.25rem 0.2rem; + padding:0 0.4rem; + box-sizing: border-box; +} + + +/*.btn-free-width:nth-child(4n+4){ + margin: 0 0rem 1.25rem 0; +}*/ + +.btn-highlight { + color: #eabe2a; + border: 1px solid #eabe2a; +} + +.bottom { + position: fixed; + width: 100%; + bottom: 0; +} + +.submitbtn-common { + width: 50%; + height: 3.2rem; + line-height: 3.2rem; +} + +.submitbtn-gray { + background: #f2f2f2; +} + +.pr-list { + +} + +.pr-item { + width: 100%; + display: flex; + justify-content: space-between; + flex-wrap: wrap; + align-items: center; + margin: 0.6rem 0; + padding: 0 1rem; + border-bottom: 1px solid #d9d9d9; +} +.pr-name { + width: 59%; + font-size: 1rem; + font-weight: 700; + overflow-wrap: break-all; +} +.count-controler { + width: 39%; +} + +.inspect-type-radio { + padding: 0.6rem 0 0.5rem 0; +} + +.inspect-type-radio input, .inspect-type-radio label { + vertical-align: middle; +} + +.inspect-type-radio label { + margin-right: 0.6rem; +} + +.count-controler { + display: flex; + justify-content: space-between; + align-items: center; + width: 6rem; +} + +.sub, .sum { + display: inline-block; + width: 1.2rem; + height: 1.2rem; + text-align: center; + line-height: 1.2rem; + vertical-align: middle; + border: 1px solid #d9d9d9; +} + +.datetime-line { + width: 70%; + display: flex; + justify-content: space-between; + align-items: center; +} + +.datetime { + height: 2.5rem; + line-height: 2.5rem; + text-align: center; + width: 9rem; +} + +.center { + display: flex; + align-items: center; +} + +.datetime { + line-height: 2.5rem; + text-align: center; +} + +.underline-yellow { + border-bottom: 1px solid #e9be2b +} + +.img-drop-down { + height: 1.2rem; + width: 1.2rem; + margin: 0 0.625rem 0 0; +} + +.iptime-group { + position: relative; +} + +.iptime { + position: absolute; + top: 0; + left: 0; + width: 9rem; + height: 2.5rem; + opacity: 0; +} \ No newline at end of file diff --git a/app-saas-src/css/feature/inspectionArrangeDetail.css b/app-saas-src/css/feature/inspectionArrangeDetail.css new file mode 100644 index 0000000..c9e69da --- /dev/null +++ b/app-saas-src/css/feature/inspectionArrangeDetail.css @@ -0,0 +1,369 @@ +.container { + padding-bottom: 1rem; +} +.tabs{ + display: flex; + font-size:1.125rem; + position:fixed; + top:6rem; + width: 100%; + z-index:999; +} +.tab{ + flex-grow:1; + height:2.5rem; + display:flex; + align-items:center; + justify-content:center; + background:#f2f2f2; +} +.tab.active{ + background:#ffffff; +} + +.content-container { + position: relative; + overflow-y: scroll; +} + +#problem-panel { + display: none; +} + +.fix-top { + /* top: 5.34rem; */ + width: 100%; + background: white; + position: absolute; + /* z-index: 100; */ + padding: 2rem; + box-sizing: border-box; + border-bottom:1px solid #d9d9d9 +} + +.search-line { + display: flex; + justify-content: space-between; + width: 100%; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} +.stackpanel-vertical { + display: flex; + flex-direction: column; + overflow: scroll; +} +.pr-num-box { + padding: 0.6rem 2rem; + border-bottom: 1px solid #d9d9d9; + text-align: center; +} +.pr-num-box .btn-normal { + vertical-align: middle; +} +.pr-num { + color: red; +} + +.search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} + +.datetime-line { + width: 70%; + display: flex; + justify-content: space-between; + align-items: center; +} + +.datetime { + height: 2.5rem; + line-height: 2.5rem; + text-align: center; + width: 6rem; +} + +.center { + display: flex; + align-items: center; +} + +.datetime { + line-height: 2.5rem; + text-align: center; +} + +.underline-yellow { + border-bottom: 1px solid #e9be2b +} + +.img-drop-down { + height: 1.2rem; + width: 1.2rem; + margin: 0 0.625rem 0 0; +} + +.iptime-group { + position: relative; +} + +.iptime { + position: absolute; + top: 0; + left: 0; + width: 7.825rem; + height: 2.5rem; + opacity: 0; +} + + +.pr{ + display:flex; + padding:0.58rem; + border-bottom: 1px solid #dad9da; + flex-wrap:nowrap; + font-size:1rem; +} + +.pr .left{ + display:flex; + flex-grow:1; + width:0; + align-items: center; +} + +.pr .left .content{ + flex-grow:1; + width: 80%; +} + +.pr .pr-name-con{ + display:flex; + align-items:center; +} + +.pr .pr-name-con img{ + height:1.2rem; +} + +.pr .pr-name{ + font-size : 1.16rem; +} + +.pr .icon-con{ + flex-shrink:0; + width:3rem; + height:3rem; + display:flex; + border-radius:50%; + justify-content:center; + align-items:center; + margin-right:1rem; + font-size:1.25rem; + background:#E9BE2B; +} + +.pr .right{ + display: flex; + align-items: center; + text-align: right; +} + +.text-gray { + color:#6d6d6d; +} + +.text-red { + color:#ff0000; +} + +.text-yellow { + color:#ff9c00; +} + +.text-green { + color:#03b679; +} + +.icon-con img{ + width:2rem; +} + +body { + overflow: auto; +} + +#start-inspect-btn, #finish-inspect-btn { + position: fixed; + bottom: 0; + width: 100%; + height: 3rem; + line-height: 3rem; + font-size: 1.3rem; + text-align: center; + background-color: #e9be2b; + display: none; +} + +.inspect-type { + color: #e9be2b; +} + +.start-btn { + width: 4rem; + height: 2rem; + line-height: 2rem; + text-align: center; + background-color: #E9BE2B; + border-radius: 1rem; +} + +.empty-tips { + display: none; + margin: 2rem 0 0 0; +} + +#problem-panel { + overflow: scroll; +} + +.problem-list-container { + padding: 0 1rem; + padding-top: 4.6rem; +} + +.problem-item { + padding: 0.8rem 0; + border-top: 1px solid #e9be2b; + border-bottom: 1px solid #e9be2b; +} + +.problem-index, .problem-desc, .problem-pic { + margin-top: 0.3rem; +} + +.problem-index { + display: flex; + align-items: center; + justify-content: space-between; + height: 2.6rem; + line-height: 2.6rem; +} +.problem-item-title { + height: 3rem; + line-height: 3rem; + font-size: 1.25rem; +} + +.problem-desc textarea { + width: 100%; + height: 100%; + padding: 0.3rem; + border: 1px solid #e5e5e5; + box-sizing: border-box; +} + +.problem-pic img, .problem-audio img { + width: 4rem; + height: 4rem; +} + +.problem-item-content { + padding: 0 1rem; + width: 100%; + box-sizing: border-box; + display: flex; + flex-wrap: wrap; +} + +.desc { + width: 100%; + padding-left: 1rem; + box-sizing: border-box; + white-space: normal; + word-break: break-all; +} + +.text-red { + color:#ff0000; +} + +.text-yellow { + color:#ff9c00; +} + +.pic-item, .audio-item { + display: inline-block; + width: 4rem; + height: 4rem; + border: 1px solid #e5e5e5; + box-sizing: border-box; + margin: 0 1rem 1rem 0; + position: relative; +} + +.pic-item i, .audio-item i { + position: absolute; + right: -0.8rem; + top: -0.8rem; + display: inline-block; + width: 1.6rem; + height: 1.6rem; + border-radius: 50%; + background-image: url('../../image/close.png'); + background-size: contain; + background-color: #fff; +} + +.pic-item img { + width: 100%; +} +#pic-review { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 9999; + background-color: black; + display: none; +} + +#pic-review img { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 100%; +} +#problem-status-btns { + padding: 1rem 0; + border-bottom: 1px solid #d9d9d9; + position: fixed; + z-index: 999; + width: 100%; + /* height: 2rem; */ + background-color: white; +} + +.search-line { + display: flex; + width: 100%; + justify-content: space-between; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} + +.search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} diff --git a/app-saas-src/css/feature/logQuery/inspectArrangement.css b/app-saas-src/css/feature/logQuery/inspectArrangement.css new file mode 100644 index 0000000..68a1b6a --- /dev/null +++ b/app-saas-src/css/feature/logQuery/inspectArrangement.css @@ -0,0 +1,42 @@ +html,body{ + background:#DFDFDF; +} + +.list:nth-child(1){ + margin-top: 0.41rem; +} + +.list .item{ + background:#fff; + padding:0 0.83rem; + margin-bottom: 0.41rem; +} + +.list .item .nav{ + display:flex; + display:-webkit-flex; + align-items: center; + justify-content:space-between; + font-size:1.25rem; + height: 2.3rem; + line-height: 2.3rem; + border-bottom: 1px solid #f4f4f4; +} + +.list .item .con{ + padding:0.67rem 0rem; + font-size:1rem; +} + +.item .con .con-item{ + padding: 0.17rem 0; +} + +.con .con-item span{ + margin-left:0rem; +} + +.date-time{ + font-size:0.9rem; + color:rgba(0,0,0,0.7) +} diff --git a/app-saas-src/css/feature/logQuery/inspectBug.css b/app-saas-src/css/feature/logQuery/inspectBug.css new file mode 100644 index 0000000..0fc44f1 --- /dev/null +++ b/app-saas-src/css/feature/logQuery/inspectBug.css @@ -0,0 +1,49 @@ +.content{ + padding:1.833rem 1.67rem 4rem 1.833rem; + background: white; + font-size: 1rem; + line-height: 1.8rem; +} + +/*.content .pic-con{ + display:flex; + flex-wrap: wrap; + +}*/ +.content .pic-con{ + min-height: 6rem; + width: 100%; +} +/*.content .pic-con img { + width: 31%; + margin-top: 1rem +}*/ +.content .pic-con img { + display: inline-block; + max-height: 100%; + max-width: 31%; + margin: 0 0.2rem; +} + +.content .pic-con img:nth-child(3n+2){ + margin-right: 3%; + margin-left: 3%; +} +.toRepairDetail:active{ + color: #e9be2b; + text-decoration: underline; +} +.hide{ + display: none; +} +#create-order-btn { + position: fixed; + bottom: 0; + width: 100%; + height: 3rem; + line-height: 3rem; + font-size: 1.3rem; + text-align: center; + background-color: #e9be2b; + display: none; +} \ No newline at end of file diff --git a/app-saas-src/css/feature/logQuery/inspectBugList.css b/app-saas-src/css/feature/logQuery/inspectBugList.css new file mode 100644 index 0000000..2c28265 --- /dev/null +++ b/app-saas-src/css/feature/logQuery/inspectBugList.css @@ -0,0 +1,198 @@ +.stackpanel-vertical { + display: flex; + flex-direction: column; +} +.alarmList-content{ +overflow-y: scroll; +/*-webkit-overflow-scrolling: touch;*/ +} +.stackpanel-horizontal { + display: flex; + flex-direction: row; +} + +.pr-select { + margin: 1rem 0; + font-size: 1rem; +} + +.pr-select .btn { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} + +.fix-top { + /* top: 5.34rem; */ + width: 100%; + background: white; + position: fixed; + z-index: 100; +} + +.search-line { + display: flex; + width: 100%; + justify-content: space-between; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} + +.search-criteria { + border: 1px solid #d9d9d9; +border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} + +.datetime-line { + width: 70%; + display: flex; + justify-content: space-between; + align-items: center; +} + +.datetime { + height: 2.5rem; + line-height: 2.5rem; + text-align: center; + width: 6rem; +} + +.center { + display: flex; + align-items: center; +} + +.datetime { + line-height: 2.5rem; + text-align: center; +} + +.underline-yellow { + border-bottom: 1px solid #e9be2b +} + +.img-drop-down { + height: 1.2rem; + width: 1.2rem; + margin: 0 0.625rem 0 0; +} + +.iptime-group { + position: relative; +} + +.iptime { + position: absolute; + top: 0; + left: 0; + width: 7.825rem; + height: 2.5rem; + opacity: 0; +} +.select-panel { + width: 100%; + position: fixed; + z-index: 3; + background: #fff; + border-bottom: 1px solid #dad9da; +} + +.select-btn-groups { + display: flex; + width: 100%; + justify-content: space-between; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} +.select-btn-groups .btn { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} +.select-btn-groups .btn-active { + background: #e9be2b; +} +.record-tip { + text-align: center; + font-size: 1rem; +} +.text-gray { + color:#6d6d6d; +} +.record-tip span { + color: red; +} + +.text-red { + color:#ff0000; +} + +.text-yellow { + color:#ff9c00; +} + +.text-green { + color:#03b679; +} +.bug-item { + display:flex; + padding:0.58rem 0.83rem; + border-bottom: 1px solid #dad9da; + flex-wrap:nowrap; + font-size:1rem; +} +.bug-item .left { + display:flex; + flex-grow:1; + width:0; + align-items: center; +} +.bug-item .left .content{ + flex-grow:1; + width: 80%; +} +.bug-item .pr-name-con{ + display:flex; + align-items:center; +} + +.bug-item .pr-name-con img{ + height:1.2rem; +} + +.bug-item .pr-name{ + font-size : 1.25rem; + display:inline-block; + padding-right: 0.3rem; +} + +.bug-item .icon-con{ + flex-shrink:0; + width:3rem; + height:3rem; + display:flex; + border-radius:50%; + justify-content:center; + align-items:center; + margin-right:1rem; + font-size:1.25rem; + background:#E9BE2B; +} +.icon-con img{ + width:2rem; +} +.status { + padding-right: 1rem; +} +.right div:nth-child(1),.right div:nth-child(5) { + font-size: 0.8rem; +} +.right div:nth-child(4) { + font-size: 0.83rem; +} diff --git a/app-saas-src/css/feature/logQuery/inspectBugListRightPanel.css b/app-saas-src/css/feature/logQuery/inspectBugListRightPanel.css new file mode 100644 index 0000000..741fbce --- /dev/null +++ b/app-saas-src/css/feature/logQuery/inspectBugListRightPanel.css @@ -0,0 +1,69 @@ +.container { + padding: 2.9rem 1rem 3rem 1rem +} + +.container span { + font-size: 1.2rem +} + +.stackpanel-vertical { + display: flex; + flex-direction: column; +} + +.stackpanel-horizontal { + display: flex; + flex-wrap: wrap; + flex-direction: row; +} + +.btngroup { + margin: 0.5rem 0 +} + +.btn { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.4rem; + width: 23%; + line-height: 2.4rem; + color: #000000; + font-size: 0.8rem; + margin: 0 0 1.25rem 0; +} + +#pr-group .btn { + width: 100%; + box-sizing: border-box; + margin-left: 0; + margin-right: 0; +} + +.btn:nth-child(4n+2) { + margin: 0 0 1.25rem 2.6%; +} + +.btn:nth-child(4n+3) { + margin: 0 2.6% 1.25rem 2.6%; +} + +.btn-highlight { + color: #eabe2a; + border: 1px solid #eabe2a; +} + +.bottom { + position: fixed; + width: 100%; + bottom: 0; +} + +.submitbtn-common { + width: 50%; + height: 3.2rem; + line-height: 3.2rem; +} + +.submitbtn-gray { + background: #f2f2f2; +} \ No newline at end of file diff --git a/app-saas-src/css/feature/logQuery/inspectLogDetail.css b/app-saas-src/css/feature/logQuery/inspectLogDetail.css new file mode 100644 index 0000000..75df520 --- /dev/null +++ b/app-saas-src/css/feature/logQuery/inspectLogDetail.css @@ -0,0 +1,94 @@ +html,body { + background:#fff; +} +.list .item,.detail{ + padding:0 1.4rem; + margin-bottom: 2px; +} +.list .item .nav{ + display:flex; + display:-webkit-flex; + align-items: center; + justify-content:space-between; + font-size:1.25rem; + height: 2.3rem; + line-height: 2.3rem; + border-bottom: 1px solid #f4f4f4; +} +.list .item .con{ + padding:0.67rem 0rem; + font-size:1rem; +} +.item .con .con-item{ + padding: 0.17rem 0; +} +/*.con .con-item span{ + margin-left:0.17rem; +}*/ +.title{ + font-size:1.25rem; + height:2.25rem;/* //3.08-0.83 */ + line-height:2.25rem; +} +.more{ + width: 1rem; + height: 1rem; + padding:0.5rem; + vertical-align:middle; +} + +.more.close{ + transform:rotate(-90deg); +-ms-transform:rotate(-90deg); /* IE 9 */ +-moz-transform:rotate(-90deg); /* Firefox */ +-webkit-transform:rotate(-90deg); /* Safari 和 Chrome */ +-o-transform:rotate(-90deg); /* Opera */ +} + +.inspect-con{ + padding:0.67rem 1.4rem; + font-size:1rem; +} + +.inspect-con table{ + width:100%; +} + +.inspect-con table thead td{ + padding:0.2rem; + vertical-align: center; +} + +.inspect-con table tbody td{ + padding:0.2rem; + vertical-align: top; +} + +.inspect-con table tr td:last-child{ + text-align: right; +} + +.detail-con{ + padding:0.67rem 0rem; + font-size:1rem; +} +.detail-con .detail-item{ + display:flex; + display:-webkit-flex; + align-items: center; + justify-content:space-between; + margin-bottom:0.83rem; +} +.detail-desc{ + display:flex; + display:-webkit-flex; + align-items: flex-top; + justify-content:space-between; +} +.detail-item p{ + display:inline-block; + margin-right:2.83rem; +} +.detail-status{ + white-space:nowrap; +} diff --git a/app-saas-src/css/feature/logQuery/inspectLogDetailNew.css b/app-saas-src/css/feature/logQuery/inspectLogDetailNew.css new file mode 100644 index 0000000..2e831ab --- /dev/null +++ b/app-saas-src/css/feature/logQuery/inspectLogDetailNew.css @@ -0,0 +1,111 @@ +html,body { + background:#fff; +} +.list .item,.detail,.problem-content{ + padding:0 1.4rem; + margin-bottom: 2px; +} +.nav, .problem-title{ + font-size:1.25rem; + height: 2.3rem; + line-height: 2.3rem; + border-bottom: 1px solid #f4f4f4; +} +.list .item .con{ + padding:0.67rem 0rem; + font-size:1rem; +} +.item .con .con-item{ + padding: 0.17rem 0; +} +/*.con .con-item span{ + margin-left:0.17rem; +}*/ +.title{ + font-size:1.25rem; + height:2.25rem;/* //3.08-0.83 */ + line-height:2.25rem; +} + +.problem-list{ + padding:0.67rem 1.4rem; + font-size:1rem; +} +.problem-item { + display: flex; + justify-content: space-between; + border-bottom: 1px solid #f4f4f4; + padding: 0.6rem 0; +} +.problem-desc { + word-wrap: break-word; + max-width: 70%; +} +.detail-btn { + color: #e9be2b; +} + +.detail-status{ + white-space:nowrap; +} + +.guide { + padding: 0 1rem 1rem 1rem; + /* border-bottom: 1px solid #e5e5e5; */ +} + +.guide-title { + font-size: 1.2rem; + margin: 0.6rem 0; +} + +.task-item { + display: flex; + justify-content: space-between; +} + +.task-item img { + width: 2rem; + margin-left: 0.8rem; +} + +.task-item-desc { + max-width: 70%; + min-height: 3rem; + line-height: 3rem; +} + +.category-name { + border-bottom: 1px solid #e5e5e5; + padding: 0 0.5rem; + font-size: 1.25rem; + height: 3rem; + line-height: 3rem; +} + +.category-name img { + width: 1rem; + margin: 0 0.5rem; +} + +.task-panel { + padding-top: 1rem; + padding-bottom: 3.8rem; +} + +.category-item li { + padding: 0 1rem; + font-size: 1rem; +} + +.category-item li:nth-child(even) { + background-color: #eee; +} + +#guide-panel-ul .hide { + display: none; +} + +#guide-panel-ul .transform { + transform: rotate(-90deg); +} \ No newline at end of file diff --git a/app-saas-src/css/feature/logQuery/inspectLogList.css b/app-saas-src/css/feature/logQuery/inspectLogList.css new file mode 100644 index 0000000..5f84cd9 --- /dev/null +++ b/app-saas-src/css/feature/logQuery/inspectLogList.css @@ -0,0 +1,134 @@ +html,body{ + background:#DFDFDF; +} + +.time-fixed{ + position:fixed; + width:100%; + background:#fff; + z-index:999; +} +.stackpanel-vertical { + background:white; + display: flex; + flex-direction: column; +} + +.stackpanel-horizontal { + display: flex; + flex-direction: row; +} + +.fix-top { + top: 5.34rem; + width: 100%; + background: white; + position: fixed; + z-index: 100; +} + +.search-line { + background:white; + display: flex; + width: 100%; + height:3.33rem; + line-height:3.33rem; + justify-content: space-between; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} + +.search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} + +.datetime-line { + width: 70%; + display: flex; + justify-content: space-between; + align-items: center; +} + +.datetime { + height: 2.5rem; + line-height: 2.5rem; + text-align: center; + width: 6rem; +} + +.center { + display: flex; + align-items: center; +} + +.datetime { + line-height: 2.5rem; + text-align: center; +} + +.underline-yellow { + border-bottom: 1px solid #e9be2b +} + +.img-drop-down { + height: 1.2rem; + width: 1.2rem; + margin: 0 0.625rem 0 0; +} + +.iptime-group { + position: relative; +} + +.iptime { + position: absolute; + top: 0; + left: 0; + width: 7.825rem; + height: 2.5rem; + opacity: 0; +} + + +.list:nth-child(1){ + margin-top: 0.41rem; +} +.list .item{ + background:#fff; + padding:0 0.83rem; + margin-bottom: 0.41rem; +} +.list .item:active{ + background:rgba(255,255,255,0.7); +} +.list .item .nav{ + display:flex; + display:-webkit-flex; + align-items: center; + justify-content:space-between; + font-size:1.25rem; + height: 2.3rem; + line-height: 2.3rem; + border-bottom: 1px solid #f4f4f4; +} +.list .item .con{ + padding:0.67rem 0rem; + font-size:1rem; +} +.item .con .con-item{ + padding: 0.17rem 0; + display: flex; +} +.con-item > div{ + width: 30%; +} +.con .con-item span{ + margin-left:0rem; +} +.date-time{ + font-size:0.9rem; +} diff --git a/app-saas-src/css/feature/logQuery/inspectLogListNew.css b/app-saas-src/css/feature/logQuery/inspectLogListNew.css new file mode 100644 index 0000000..5f84cd9 --- /dev/null +++ b/app-saas-src/css/feature/logQuery/inspectLogListNew.css @@ -0,0 +1,134 @@ +html,body{ + background:#DFDFDF; +} + +.time-fixed{ + position:fixed; + width:100%; + background:#fff; + z-index:999; +} +.stackpanel-vertical { + background:white; + display: flex; + flex-direction: column; +} + +.stackpanel-horizontal { + display: flex; + flex-direction: row; +} + +.fix-top { + top: 5.34rem; + width: 100%; + background: white; + position: fixed; + z-index: 100; +} + +.search-line { + background:white; + display: flex; + width: 100%; + height:3.33rem; + line-height:3.33rem; + justify-content: space-between; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} + +.search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} + +.datetime-line { + width: 70%; + display: flex; + justify-content: space-between; + align-items: center; +} + +.datetime { + height: 2.5rem; + line-height: 2.5rem; + text-align: center; + width: 6rem; +} + +.center { + display: flex; + align-items: center; +} + +.datetime { + line-height: 2.5rem; + text-align: center; +} + +.underline-yellow { + border-bottom: 1px solid #e9be2b +} + +.img-drop-down { + height: 1.2rem; + width: 1.2rem; + margin: 0 0.625rem 0 0; +} + +.iptime-group { + position: relative; +} + +.iptime { + position: absolute; + top: 0; + left: 0; + width: 7.825rem; + height: 2.5rem; + opacity: 0; +} + + +.list:nth-child(1){ + margin-top: 0.41rem; +} +.list .item{ + background:#fff; + padding:0 0.83rem; + margin-bottom: 0.41rem; +} +.list .item:active{ + background:rgba(255,255,255,0.7); +} +.list .item .nav{ + display:flex; + display:-webkit-flex; + align-items: center; + justify-content:space-between; + font-size:1.25rem; + height: 2.3rem; + line-height: 2.3rem; + border-bottom: 1px solid #f4f4f4; +} +.list .item .con{ + padding:0.67rem 0rem; + font-size:1rem; +} +.item .con .con-item{ + padding: 0.17rem 0; + display: flex; +} +.con-item > div{ + width: 30%; +} +.con .con-item span{ + margin-left:0rem; +} +.date-time{ + font-size:0.9rem; +} diff --git a/app-saas-src/css/feature/logQuery/logQuery.css b/app-saas-src/css/feature/logQuery/logQuery.css new file mode 100644 index 0000000..b3da41f --- /dev/null +++ b/app-saas-src/css/feature/logQuery/logQuery.css @@ -0,0 +1,40 @@ +html,body{ + background:#f4f4f4; +} + +section{ + display: flex; + display:-webkit-flex; + flex-wrap: wrap; + align-content: space-between; +} + +section .item{ + padding-top:3.1rem; + /*margin:auto;*/ + text-align:center; + width:49%; + height:8.33rem; + background:white; + margin-bottom:2%; + +} + +section .item:nth-child(2n+1){ + margin-right:2%; +} +.column { + flex-basis: 100%; + display: flex; + display:-webkit-flex; + justify-content: space-between; + flex-wrap: wrap; +} +img{ + width: 2.83rem; + height:2.83rem; +} +.title{ + font-size:1.2rem; + margin-top:0.7rem; +} diff --git a/app-saas-src/css/feature/logQuery/operateTicketDetail.css b/app-saas-src/css/feature/logQuery/operateTicketDetail.css new file mode 100644 index 0000000..b95951a --- /dev/null +++ b/app-saas-src/css/feature/logQuery/operateTicketDetail.css @@ -0,0 +1,37 @@ +html,body{ + background:#dfdfdf; +} +.con .item{ + display:flex; + display:-webkit-flex; + align-items: center; + font-size:1rem; + box-sizing:border-box; + justify-content:space-between; + padding: 1.2rem 2.5rem; + /* height:3.33rem; + line-height: 3.33rem; */ + border-bottom: 1px solid #F4F4F4 + +} +.title{ + width:30%; +} +.item-con{ + width:70%; +} +.task{ + display:flex; + display:-webkit-flex; + align-items: flex-start; + justify-content:space-between; + padding: 1.25rem 2.5rem; +} + +.task-list{ + padding-bottom:1.25rem; +} + +.task-item{ + width:70%; +} diff --git a/app-saas-src/css/feature/logQuery/operateTicketDetailFrame.css b/app-saas-src/css/feature/logQuery/operateTicketDetailFrame.css new file mode 100644 index 0000000..e69de29 diff --git a/app-saas-src/css/feature/logQuery/operateTicketList.css b/app-saas-src/css/feature/logQuery/operateTicketList.css new file mode 100644 index 0000000..1ca46e4 --- /dev/null +++ b/app-saas-src/css/feature/logQuery/operateTicketList.css @@ -0,0 +1,127 @@ +html,body{ + background:#dfdfdf; + +} +.time-fixed{ + position:fixed; + width:100%; + background:#fff; + z-index:999; +} +.stackpanel-vertical { + background:white; + display: flex; + flex-direction: column; +} + +.stackpanel-horizontal { + display: flex; + flex-direction: row; +} + +.fix-top { + top: 5.34rem; + width: 100%; + background: white; + position: fixed; + z-index: 100; +} + +.search-line { + background:white; + display: flex; + width: 100%; + height:3.33rem; + line-height:3.33rem; + justify-content: space-between; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} + +.search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} + +.datetime-line { + width: 70%; + display: flex; + justify-content: space-between; + align-items: center; +} + +.datetime { + height: 2.5rem; + line-height: 2.5rem; + text-align: center; + width: 6rem; +} + +.center { + display: flex; + align-items: center; +} + +.datetime { + line-height: 2.5rem; + text-align: center; +} + +.underline-yellow { + border-bottom: 1px solid #e9be2b +} + +.img-drop-down { + height: 1.2rem; + width: 1.2rem; + margin: 0 0.625rem 0 0; +} + +.iptime-group { + position: relative; +} + +.iptime { + position: absolute; + top: 0; + left: 0; + width: 7.825rem; + height: 2.5rem; + opacity: 0; +} +.list .item:first-child{ + margin-top: 0.41rem; +} +.list .item{ + background:#fff; + padding:0.58rem 0.83rem; + margin-bottom: 0.41rem; + } + .list .item:active{ + background:rgba(255,255,255,0.7); + } +.list .item .nav{ + display:flex; + display:-webkit-flex; + align-items: center; + justify-content:space-between; + font-size:1.25rem; + /*height: 2.3rem; + line-height: 2.3rem;*/ +} +.list .item .con{ + font-size:1rem; +} +.list .item:nth-child(1) .con{ + padding-top:0; +} + +.date-time{ + font-size:0.9rem; +} +.con-item span{ + line-height: 1.5rem; +} diff --git a/app-saas-src/css/feature/logQuery/repairLogDetail.css b/app-saas-src/css/feature/logQuery/repairLogDetail.css new file mode 100644 index 0000000..a6f460f --- /dev/null +++ b/app-saas-src/css/feature/logQuery/repairLogDetail.css @@ -0,0 +1,121 @@ +html,body { + background:#fff; +} +.con{ + padding:0 0.41rem; + font-size: 1rem; +} +.con .header{ + padding:0 0.8rem; + border-bottom:1px solid #F4F4F4; + display:flex; + display:-webkit-flex; + align-items: center; + justify-content:space-between; + height:3.33rem; + line-height: 3.33rem; + font-size:1.25rem; + z-index: 999; +} +.title{ + display:flex; + display:-webkit-flex; + align-items: center; + height:3.33rem; + line-height: 3.33rem; +} +.title img{ + width:1.5rem; + height:1.5rem; + margin-right:1rem; +} +.bt-detail{ + height:100%; + padding-left:3rem; +} +.bt-detail img{ + width:0.83rem; + height:0.5rem; +} +.con .item{ + padding:1.2rem 3.2rem; + border-bottom:1px solid #F4F4F4; +} +.malfunction-item:not(:first-child){ + margin-top:0.5rem; +} +.rectangle{ + width: 6.1rem; + height: 2.9rem; + border-right: 1px solid #D9D9D9; + padding-bottom:0.5rem; + position: relative; + padding-right:0.7rem; +} +.circle,.circle-green,.circle-start{ + width:0.4rem; + height:0.4rem; + border-radius:50%; + position: absolute; + right:-0.3rem; + top:0; + z-index: 99; + border: 1px solid #D9D9D9; + background:#fff; +} +.circle-green{ + border-radius:50%; + border: 1px solid #00b75f; + background:#00b75f; +} +.process-item{ + display:flex; + display:-webkit-flex; +} +.item-desc{ + padding-left:0.7rem; +} +.circle-start{ + position: absolute; + right:-0.3rem; + top:3.4rem; +} +.circle-start-green{ + position: absolute; + right:-0.3rem; + top:3.4rem; + border-radius:50%; + border: 1px solid #00b75f; + background:#00b75f; +} + +.pic{ + min-height: 4rem; + width: 100%; +} +.pic img{ + display: inline-block; + max-height: 100%; + max-width: 31%; + margin: 0.1rem 0.2rem; +} +.displayNone{ + display:none; +} +.close{ + transform:rotate(-90deg); + -ms-transform:rotate(-90deg); /* IE 9 */ + -moz-transform:rotate(-90deg); /* Firefox */ + -webkit-transform:rotate(-90deg); /* Safari 和 Chrome */ + -o-transform:rotate(-90deg); /* Opera */ +} +.survey-pic{ + min-height: 4rem; + width: 100%; +} +.survey-pic img{ + display: inline-block; + max-height: 100%; + max-width: 31%; + margin: 0.3rem 0.2rem; +} diff --git a/app-saas-src/css/feature/logQuery/repairLogList.css b/app-saas-src/css/feature/logQuery/repairLogList.css new file mode 100644 index 0000000..146ff1f --- /dev/null +++ b/app-saas-src/css/feature/logQuery/repairLogList.css @@ -0,0 +1,134 @@ +html,body{ + background:#dfdfdf; + +} +.time-fixed{ + position:fixed; + width:100%; + z-index:999; +} +.time-fixed{ + position:fixed; + width:100%; + background:#fff; + z-index:999; +} +.stackpanel-vertical { + background:white; + display: flex; + flex-direction: column; +} + +.stackpanel-horizontal { + display: flex; + flex-direction: row; +} + +.fix-top { + top: 5.34rem; + width: 100%; + background: white; + position: fixed; + z-index: 100; +} + +.search-line { + background:white; + display: flex; + width: 100%; + height:3.33rem; + line-height:3.33rem; + justify-content: space-between; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} + +.search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} + +.datetime-line { + width: 70%; + display: flex; + justify-content: space-between; + align-items: center; +} + +.datetime { + height: 2.5rem; + line-height: 2.5rem; + text-align: center; + width: 6rem; +} + +.center { + display: flex; + align-items: center; +} + +.datetime { + line-height: 2.5rem; + text-align: center; +} + +.underline-yellow { + border-bottom: 1px solid #e9be2b +} + +.img-drop-down { + height: 1.2rem; + width: 1.2rem; + margin: 0 0.625rem 0 0; +} + +.iptime-group { + position: relative; +} + +.iptime { + position: absolute; + top: 0; + left: 0; + width: 7.825rem; + height: 2.5rem; + opacity: 0; +} + +.list .item:first-child{ + margin-top: 0.41rem; +} +.list .item:active{ + background:rgba(255,255,255,0.7); +} +.list .item{ + background:#fff; + padding:0.58rem 0.83rem; + margin-bottom: 0.41rem; +} +.list .item .nav{ + display:flex; + display:-webkit-flex; + align-items: center; + justify-content:space-between; + font-size:1.25rem; + /*height: 2.3rem; + line-height: 2.3rem;*/ +} +.list .item .con{ + /*padding:0.58rem 0rem;*/ + font-size:1rem; + margin-right:0rem; +} +.item .con .con-item{ + padding-bottom: 0.17rem; +} +.con .con-item span{ + margin-left:0rem; +} +.date-time{ + font-size:0.9rem; +} diff --git a/app-saas-src/css/feature/logQuery/workTicketDetail.css b/app-saas-src/css/feature/logQuery/workTicketDetail.css new file mode 100644 index 0000000..c7767cd --- /dev/null +++ b/app-saas-src/css/feature/logQuery/workTicketDetail.css @@ -0,0 +1,101 @@ +html,body{ + +} +a:focus, button:focus { + outline: none; +} +textarea { + + + border: none; +} +img { + border: none; +} +textarea:focus { + outline: none; +} + +.height-tip { + position: absolute; + width: 3px; + background-color: #ccc; + left: 0; + transition: top .2s; +} + +.content { + /*background:red; + -webkit-transform:scale(0.5);*/ + text-align: left; + padding: 10px; + margin: 0 auto; + overflow-y: auto; + width: 880px; + font-size: 16px; + overflow: hidden; +} + +.content p, .content h1, .content h2, .content h3, .content h4, .content h5 { + margin: 10px 0; + line-height: 1.8; +} + +.content p *, .content h1 *, .content h2 *, .content h3 *, .content h4 *, .content h5 * { + line-height: 1.8; +} + +.content ul, .content ol { + padding-left: 20px; +} + +.content img { + cursor: pointer; +} + +.content img.clicked { + box-shadow: 1px 1px 10px #999; +} + +.content table.clicked { + box-shadow: 1px 1px 10px #999; +} + +.content pre code { + line-height: 1.5; +} + +.content:focus { + outline: none; +} + +.content blockquote { + display: block; + border-left: 8px solid #d0e5f2; + padding: 5px 10px; + margin: 10px 0; + line-height: 1.4; + font-size: 100%; + background-color: #f1f1f1; +} + +.content table { + border: none; + border-collapse: collapse; +} + +.content table td, .content table th { + border: 1px solid #999; + padding: 3px 5px; + min-width: 50px; + height: 20px; +} + +.content pre { + border: 1px solid #ccc; + background-color: #f8f8f8; + padding: 10px; + margin: 5px 0px; + font-size: 0.8em; + border-radius: 3px; +} diff --git a/app-saas-src/css/feature/logQuery/workTicketList.css b/app-saas-src/css/feature/logQuery/workTicketList.css new file mode 100644 index 0000000..90a8092 --- /dev/null +++ b/app-saas-src/css/feature/logQuery/workTicketList.css @@ -0,0 +1,145 @@ +html, body { + background: #dfdfdf; +} + +.time-fixed { + position: fixed; + width: 100%; + background: #fff; + z-index: 999; +} + +.stackpanel-vertical { + background: white; + display: flex; + flex-direction: column; +} + +.stackpanel-horizontal { + display: flex; + flex-direction: row; +} + +.fix-top { + top: 5.34rem; + width: 100%; + background: white; + position: fixed; + z-index: 100; +} + +.search-line { + background: white; + display: flex; + width: 100%; + height: 3.33rem; + line-height: 3.33rem; + justify-content: space-between; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} + +.search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} + +.datetime-line { + width: 70%; + display: flex; + justify-content: space-between; + align-items: center; +} + +.datetime { + height: 2.5rem; + line-height: 2.5rem; + text-align: center; + width: 6rem; +} + +.center { + display: flex; + align-items: center; +} + +.datetime { + line-height: 2.5rem; + text-align: center; +} + +.underline-yellow { + border-bottom: 1px solid #e9be2b +} + +.img-drop-down { + height: 1.2rem; + width: 1.2rem; + margin: 0 0.625rem 0 0; +} + +.iptime-group { + position: relative; +} + +.iptime { + position: absolute; + top: 0; + left: 0; + width: 7.825rem; + height: 2.5rem; + opacity: 0; +} + +.ticket-item:first-child { + margin-top: 0.41rem; +} +.ticket-item:active{ + background:rgba(255,255,255,0.7); +} +.ticket-item { + background: #fff; + padding: 0.58rem 0.83rem; + margin-bottom: 0.41rem; + /*display: flex; + display: -webkit-flex; + justify-content: space-between;*/ + /*margin:0.5rem 0.83rem; + padding:1.0rem 1rem; + background:#ffffff; + border:1px solid #ffffff; + box-shadow: 0px 2px 2px rgba(0,0,0,0.10); + border-radius: 4px; + line-height:1.4rem; + color:#585858;*/ +} + +.ticket-item div { + display: flex; + display: -webkit-flex; + align-items: center; + justify-content: space-between; +} +.isComplete{ + font-size:0.9rem; + text-align: left; +} + +/*.ticket-item:hover{ + border:1px solid #B7B7B7; +}*/ + +.power-room { + color: #000; + font-size: 1.25rem; +} +.number{ + padding: 0.17rem 0; + font-size: 1rem; +} +.time{ + font-size:0.9rem; +} diff --git a/app-saas-src/css/feature/rtData.css b/app-saas-src/css/feature/rtData.css new file mode 100644 index 0000000..adff39a --- /dev/null +++ b/app-saas-src/css/feature/rtData.css @@ -0,0 +1,117 @@ +.stackpanel-vertical { + display: flex; + flex-direction: column; +} + +.fix-top { + top: 5.34rem; + width: 100%; + background: white; + position: fixed; +} +.search-line { + display: flex; + width: 100%; + justify-content: space-around; + padding: 0 0.83rem; + box-sizing: border-box; +} + +.search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} + +.search-criteria:nth-child(2) { + margin: 0 0 0 2.6%; +} + +.search-criteria:nth-child(3) { + margin: 0 2.6%; +} + +table { + width: 100% +} + +tr { + border-top: 1px solid #d9d9d9; + background: white; +} + +tr td:nth-child(odd) { + background: #f7f7f7; +} + +tr:last-child { + border-bottom: 1px solid #d9d9d9; +} + + +td { + text-align: center; + height: 2.58rem; +} + +.ai-table td:nth-child(1) { + width: 40%; +} + +.ai-table td:nth-child(2) { + width: 25%; +} + +.ai-table td:nth-child(3) { + width: 15%; + display: table-cell; +} +.ai-table td:nth-child(4) { + width: 20%; + display: table-cell; +} + +.di-table td:nth-child(1) { + width: 70%; +} + +.di-table td:nth-child(2) { + width: 30%; +} + +.di-table td:nth-child(3) { + width: 0%; + display: none; +} +.di-table td:nth-child(4) { + width: 0%; + display: none; +} +.enableClick { + color: #e9be2b; +} +.disableClick { + color: rgba(148,148,147,0.8); +} +.table-content { + /*加上此样式后,子元素table-header 的fixed将相对此父类名来说*/ + transform:translate(0,0); + position: fixed; + width: 100%; + /*top: 16rem;*/ +} +.table-header { + position: fixed; + width: 100%; + box-sizing: border-box; +} +.chart { + height:20rem; + position:fixed; + width:100%; + background:white; +} +.table-body tr:nth-child(1) { + border-top: none; +} diff --git a/app-saas-src/css/feature/rtDataRightPanel.css b/app-saas-src/css/feature/rtDataRightPanel.css new file mode 100644 index 0000000..648669d --- /dev/null +++ b/app-saas-src/css/feature/rtDataRightPanel.css @@ -0,0 +1,66 @@ +.container { + padding: 2.9rem 1rem 0 1rem +} + +historyDataRightPanel.container { + padding: 2.9rem 1rem 0 1rem +} + +.container span { + font-size: 1.2rem +} + +.stackpanel-vertical { + display: flex; + flex-direction: column; +} + +.stackpanel-horizontal { + display: flex; + flex-wrap: wrap; + flex-direction: row; +} + +.btngroup { + margin: 1.25rem 0 4.5rem 0 +} + +.btn { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.4rem; + width: 23%; + line-height: 2.4rem; + color: #000000; + font-size: 0.8rem; + margin: 0 0 1.25rem 0; +} + +.btn:nth-child(4n+2) { + margin: 0 0 1.25rem 2.6%; +} + +.btn:nth-child(4n+3) { + margin: 0 2.6% 1.25rem 2.6%; +} + +.btn-highlight { + color: #eabe2a; + border: 1px solid #eabe2a; +} + +.bottom { + position: fixed; + width: 100%; + bottom: 0; +} + +.submitbtn-common { + width: 50%; + height: 3.2rem; + line-height: 3.2rem; +} + +.submitbtn-gray { + background: #f2f2f2; +} \ No newline at end of file diff --git a/app-saas-src/css/feature/statistic.css b/app-saas-src/css/feature/statistic.css new file mode 100644 index 0000000..5b7e679 --- /dev/null +++ b/app-saas-src/css/feature/statistic.css @@ -0,0 +1,3 @@ +body { + +} diff --git a/app-saas-src/css/feature/systemOrder.css b/app-saas-src/css/feature/systemOrder.css new file mode 100644 index 0000000..08fb8b0 --- /dev/null +++ b/app-saas-src/css/feature/systemOrder.css @@ -0,0 +1,181 @@ +.container { + padding-bottom: 3.1rem; +} +.stackpanel-vertical { + display: flex; + flex-direction: column; +} +.workorderList-content{ + overflow-y: scroll; + /*-webkit-overflow-scrolling: touch;*/ +} +.stackpanel-horizontal { + display: flex; + flex-direction: row; +} + +.fix-top { + top: 5.34rem; + width: 100%; + background: white; + position: fixed; + z-index: 100; +} + +.search-line { + display: flex; + width: 100%; + justify-content: space-between; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} + +.search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 18%; +} + +.datetime-line { + width: 70%; + display: flex; + justify-content: space-between; + align-items: center; +} + +.datetime { + height: 2.5rem; + line-height: 2.5rem; + text-align: center; + width: 6rem; +} + +.center { + display: flex; + align-items: center; +} + +.datetime { + line-height: 2.5rem; + text-align: center; +} + +.underline-yellow { + border-bottom: 1px solid #e9be2b +} + +.img-drop-down { + height: 1.2rem; + width: 1.2rem; + margin: 0 0.625rem 0 0; +} + +.iptime-group { + position: relative; +} + +.iptime { + position: absolute; + top: 0; + left: 0; + width: 7.825rem; + height: 2.5rem; + opacity: 0; +} + +.systemOrder{ + display:flex; + padding:0.58rem; + border-bottom: 1px solid #dad9da; + flex-wrap:nowrap; + font-size:1rem; +} + +.systemOrder .left{ + display:flex; + flex-grow:1; + width:0; + align-items: center; +} + +.systemOrder .left .content{ + flex-grow:1; + width: 80%; +} + +.systemOrder .pr-name-con{ + display:flex; + align-items:center; +} + +.systemOrder .pr-name-con img{ + height:1.2rem; +} + +.systemOrder .pr-name{ + font-size : 1.16rem; +} + +.systemOrder .icon-con{ + flex-shrink:0; + width:3rem; + height:3rem; + display:flex; + border-radius:50%; + justify-content:center; + align-items:center; + margin-right:1rem; + font-size:1.25rem; + background:#E9BE2B; +} + +.systemOrder .right{ + /*width:7rem;*/ +} + +.text-gray { + color:#6d6d6d; +} + +.text-red { + color:#ff0000; +} + +.text-yellow { + color:#ff9c00; +} + +.text-green { + color:#03b679; +} + +.icon-con img{ + width:2rem; +} + +body { + overflow: auto; +} + +.delivery-btn { + width: 4rem; + height: 2rem; + line-height: 2rem; + margin-left: 0.4rem; + text-align: center; + background-color: #E9BE2B; + border-radius: 1rem; +} + +#create-systemOrder-btn { + position: fixed; + bottom: 0; + width: 100%; + height: 3rem; + line-height: 3rem; + font-size: 1.3rem; + text-align: center; + background-color: #e9be2b; +} diff --git a/app-saas-src/css/feature/systemOrderCreate.css b/app-saas-src/css/feature/systemOrderCreate.css new file mode 100644 index 0000000..9f04fe7 --- /dev/null +++ b/app-saas-src/css/feature/systemOrderCreate.css @@ -0,0 +1,200 @@ +.content { + padding: 0 2rem 3.1rem 2rem; +} + +.title { + margin-bottom: 1.5rem; +} + +.pr-select { + margin-top: 1.5rem; +} + +.pr-selector { + position: relative; + width: 100%; +} + +.pr-selected { + display: flex; + justify-content: space-between; + height: 2.2rem; + line-height: 2.2rem; + border: 1px solid #dad9da; + padding: 0 0.5rem; + color: #666; +} + +.pr-selected img { + width: 1rem; +} + +.pr-picker-modal{ + position: absolute; + top: 2.4rem; + width:100%; + height:30vh; + overflow-y: auto; + border: 1px solid #dad9da; + display: none; +} + +.pr-picker-modal .pr{ + display: flex; + flex-direction: row; + background:#ffffff; + color:#000000; + border-top:1px solid #dad9da; + height:2.6rem; + line-height:2.6rem; + font-size: 1.25rem; + align-items:center; +} + +.pr-picker-modal .pr .icon-con{ + margin: 0 0.5rem 0 0.5rem; + flex-shrink:0; + width:2rem; + height:2rem; + display:flex; + border-radius:50%; + justify-content:center; + align-items:center; + font-size:1rem; + background:#E9BE2B; +} + +.pr-picker-modal .icon-con img{ + width:1.6rem; +} + +.show { + display: block; +} + +.btngroup { + display: flex; + flex-wrap: wrap; + -webkit-flex-wrap:wrap; + flex-direction: row; + margin: 1.25rem 0 0 0 +} + +.btn { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.4rem; + width: 23%; + line-height: 2.4rem; + color: #000000; + font-size: 0.8rem; + margin: 0 0.2rem 1.25rem 0.2rem; +} + +.btn-free-width { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.4rem; + line-height: 2.4rem; + color: #000000; + min-width: 23%; + font-size: 0.8rem; + margin: 0 0.2rem 1.25rem 0.2rem; + padding:0 0.4rem; + box-sizing: border-box; +} + + +/*.btn-free-width:nth-child(4n+4){ + margin: 0 0rem 1.25rem 0; +}*/ + +.btn-highlight { + color: #eabe2a; + border: 1px solid #eabe2a; +} + +.problem-desc { + width: 100%; + margin-top: 1.5rem; +} + +#problem-text { + width: 100%; + box-sizing: border-box; + font-size: 1.25rem; + border: 1px solid #dad9da; + padding: 0.4rem; +} + +.problem-pic img { + width: 4rem; + height: 4rem; +} + +.problem-pic { + margin-top: 1.5rem; +} + +.pic-item { + display: inline-block; + width: 4rem; + height: 4rem; + border: 1px solid #e5e5e5; + box-sizing: border-box; + margin: 0 1rem 1rem 0; + position: relative; +} + +.pic-item i { + position: absolute; + right: -0.8rem; + top: -0.8rem; + display: inline-block; + width: 1.6rem; + height: 1.6rem; + border-radius: 50%; + background-image: url('../../image/close.png'); + background-size: contain; + background-color: #fff; +} + +.pic-item img { + width: 100%; +} + +#pic-review { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 9999; + background-color: black; + display: none; +} + +#pic-review img { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 100%; +} + +#save-btn { + position: fixed; + bottom: 0; + width: 100%; + height: 3rem; + line-height: 3rem; + font-size: 1.3rem; + text-align: center; + background-color: #e9be2b; +} + +b { + color: red; +} \ No newline at end of file diff --git a/app-saas-src/css/feature/systemOrderDetail.css b/app-saas-src/css/feature/systemOrderDetail.css new file mode 100644 index 0000000..b78cf9e --- /dev/null +++ b/app-saas-src/css/feature/systemOrderDetail.css @@ -0,0 +1,152 @@ +.content { + padding: 0 2rem 3rem 2rem; + overflow: scroll; +} + +.title { + margin-bottom: 1.5rem; +} + +.pr-select, .order-person, .order-result-person, .order-result, .order-pic { + margin-top: 1.5rem; +} + +.pr-selector { + position: relative; + width: 100%; +} + +.pr-selected { + display: flex; + justify-content: space-between; + height: 2.2rem; + line-height: 2.2rem; + border: 1px solid #dad9da; + padding: 0 0.5rem; + color: #666; +} + +.pr-selected img { + width: 1rem; +} + +.pr-picker-modal{ + position: absolute; + top: 2.4rem; + width:100%; + height:30vh; + overflow-y: auto; + border: 1px solid #dad9da; + display: none; +} + +.pr-picker-modal .pr{ + display: flex; + flex-direction: row; + background:#ffffff; + color:#000000; + border-top:1px solid #dad9da; + height:2.6rem; + line-height:2.6rem; + font-size: 1.25rem; + align-items:center; +} + +.pr-picker-modal .pr .icon-con{ + margin: 0 0.5rem 0 0.5rem; + flex-shrink:0; + width:2rem; + height:2rem; + display:flex; + border-radius:50%; + justify-content:center; + align-items:center; + font-size:1rem; + background:#E9BE2B; +} + +.pr-picker-modal .icon-con img{ + width:1.6rem; +} + +.show { + display: block; +} + +.order-desc { + width: 100%; + margin-top: 1.5rem; +} + +#order-text { + width: 100%; + box-sizing: border-box; + font-size: 1.25rem; + border: 1px solid #dad9da; + padding: 0.4rem; +} + +.order-pic img { + width: 4rem; + height: 4rem; +} + +.pic-item { + display: inline-block; + width: 4rem; + height: 4rem; + border: 1px solid #e5e5e5; + box-sizing: border-box; + margin: 0 1rem 1rem 0; + position: relative; +} + +.pic-item i { + position: absolute; + right: -0.8rem; + top: -0.8rem; + display: inline-block; + width: 1.6rem; + height: 1.6rem; + border-radius: 50%; + background-image: url('../../image/close.png'); + background-size: contain; + background-color: #fff; +} + +.pic-item img { + width: 100%; +} + +#pic-review { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 9999; + background-color: black; + display: none; +} + +#pic-review img { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 100%; +} + +#delete-btn { + position: fixed; + bottom: 0; + width: 100%; + height: 3rem; + line-height: 3rem; + font-size: 1.3rem; + text-align: center; + background-color: #e9be2b; + display: none; +} \ No newline at end of file diff --git a/app-saas-src/css/feature/systemOrderEdit.css b/app-saas-src/css/feature/systemOrderEdit.css new file mode 100644 index 0000000..e82fa83 --- /dev/null +++ b/app-saas-src/css/feature/systemOrderEdit.css @@ -0,0 +1,193 @@ +.content { + padding: 0 2rem 3rem 2rem; + overflow: scroll; +} + +.title { + margin-bottom: 1.5rem; +} + +.pr-select, .order-person, .order-result-person, .order-result, .order-pic { + margin-top: 1.5rem; +} + +.pr-selector { + position: relative; + width: 100%; +} + +.pr-selected { + display: flex; + justify-content: space-between; + height: 2.2rem; + line-height: 2.2rem; + border: 1px solid #dad9da; + padding: 0 0.5rem; + color: #666; +} + +.pr-selected img { + width: 1rem; +} + +.pr-picker-modal{ + position: absolute; + top: 2.4rem; + width:100%; + height:30vh; + overflow-y: auto; + border: 1px solid #dad9da; + display: none; +} + +.pr-picker-modal .pr{ + display: flex; + flex-direction: row; + background:#ffffff; + color:#000000; + border-top:1px solid #dad9da; + height:2.6rem; + line-height:2.6rem; + font-size: 1.25rem; + align-items:center; +} + +.pr-picker-modal .pr .icon-con{ + margin: 0 0.5rem 0 0.5rem; + flex-shrink:0; + width:2rem; + height:2rem; + display:flex; + border-radius:50%; + justify-content:center; + align-items:center; + font-size:1rem; + background:#E9BE2B; +} + +.pr-picker-modal .icon-con img{ + width:1.6rem; +} + +.show { + display: block; +} + +.order-desc { + width: 100%; + margin-top: 1.5rem; +} + +#order-text { + width: 100%; + box-sizing: border-box; + font-size: 1.25rem; + border: 1px solid #dad9da; + padding: 0.4rem; +} + +.order-pic img { + width: 4rem; + height: 4rem; +} + +.pic-item { + display: inline-block; + width: 4rem; + height: 4rem; + border: 1px solid #e5e5e5; + box-sizing: border-box; + margin: 0 1rem 1rem 0; + position: relative; +} + +.pic-item i { + position: absolute; + right: -0.8rem; + top: -0.8rem; + display: inline-block; + width: 1.6rem; + height: 1.6rem; + border-radius: 50%; + background-image: url('../../image/close.png'); + background-size: contain; + background-color: #fff; +} + +.pic-item img { + width: 100%; +} + +#pic-review { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 9999; + background-color: black; + display: none; +} + +#pic-review img { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 100%; +} + +#save-btn { + position: fixed; + bottom: 0; + width: 100%; + height: 3rem; + line-height: 3rem; + font-size: 1.3rem; + text-align: center; + background-color: #e9be2b; +} + +.btngroup { + display: flex; + flex-wrap: wrap; + -webkit-flex-wrap:wrap; + flex-direction: row; + margin: 1.25rem 0 0 0 +} + +.btn { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.4rem; + width: 23%; + line-height: 2.4rem; + color: #000000; + font-size: 0.8rem; + margin: 0 0.2rem 1.25rem 0.2rem; +} + +.btn-free-width { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.4rem; + line-height: 2.4rem; + color: #000000; + min-width: 23%; + font-size: 0.8rem; + margin: 0 0.2rem 1.25rem 0.2rem; + padding:0 0.4rem; + box-sizing: border-box; +} + + +/*.btn-free-width:nth-child(4n+4){ + margin: 0 0rem 1.25rem 0; +}*/ + +.btn-highlight { + color: #eabe2a; + border: 1px solid #eabe2a; +} \ No newline at end of file diff --git a/app-saas-src/css/guide.css b/app-saas-src/css/guide.css new file mode 100644 index 0000000..5b7e679 --- /dev/null +++ b/app-saas-src/css/guide.css @@ -0,0 +1,3 @@ +body { + +} diff --git a/app-saas-src/css/index.css b/app-saas-src/css/index.css new file mode 100644 index 0000000..0dec9fb --- /dev/null +++ b/app-saas-src/css/index.css @@ -0,0 +1,4 @@ + +header .user img{ + height:2rem; +} \ No newline at end of file diff --git a/app-saas-src/css/index/contactFrame.css b/app-saas-src/css/index/contactFrame.css new file mode 100644 index 0000000..298e45a --- /dev/null +++ b/app-saas-src/css/index/contactFrame.css @@ -0,0 +1,60 @@ +.item { + display:flex; + height:4.08rem; + align-items:center; + border-bottom: 1px solid #e5e5e5; + padding:0 0.7rem; + justify-content:space-between; +} + +.label{ + font-size: 1.25rem; +} + +.value{ + font-size: 1.0rem; + color:rgba(0, 0, 0, 0.8); +} + +.item>div:nth-child(1) { + display:flex; + align-items:center; + margin: 0 0 0 1rem; +} + +.item>div:nth-child(2) { + margin: 0 1rem 0 0; +} + +.item img { + height: 1rem; + width: 1rem; +} + +.blackMask { + position: fixed; + top: 0; + left: 0; + z-index: 100; + opacity: 0.9; + background-color: #333; + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; +} + +.hidden { + display: none; +} + +.qrcodeContianer { + width: 60vw; + z-index: 101; +} + +.qrcodeContianer img { + width: 100%; + height: 100%; +} diff --git a/app-saas-src/css/index/featureFrame.css b/app-saas-src/css/index/featureFrame.css new file mode 100644 index 0000000..9d5bf4d --- /dev/null +++ b/app-saas-src/css/index/featureFrame.css @@ -0,0 +1,95 @@ +html,body{ + background:#f4f4f4; +} +.func-line { + display: flex; + flex-direction: row; + justify-content: center; + margin: 0rem 0rem 0.16rem 0rem; +} + +.func-block { + /*width: 32%;*/ + height: 9rem; + background: #FFFFFF; + text-align: center; + display: flex; + flex-grow: 1; + justify-content: center; + flex-direction: column; +} + +.func-block:nth-child(2) { + margin: 0 0.16rem; +} + +.func-block span { + margin: 0.5rem 0 0 0; + font-size: 1.25rem; +} + +.func-block img{ + margin: 0 auto; + width: 3rem; + height: 3rem; +} + +.func-block-hide { + /*width: 32%;*/ + height: 9rem; + text-align: center; + flex-grow: 1; + display: flex; + justify-content: center; + flex-direction: column; +} + +.func-block-hide span { + margin: 1rem 0 0 0; + font-size:1.25rem; +} + +.pr-picker-modal{ + position:fixed; + width:100vw; + height:100vh; + overflow-y: auto; + background:rgba(0,0,0,0.2); + z-index:100; + top:0px; + display: none; +} + +.pr-picker-modal .pr{ + display: flex; + flex-direction: row; + background:#ffffff; + color:#000000; + border-top:1px solid #dad9da; + height:4rem; + line-height:4rem; + font-size: 1.5rem; + align-items:center; + opacity: 0.9; +} + +.pr-picker-modal .pr .icon-con{ + margin: 0 0 0 1rem; + flex-shrink:0; + width:3rem; + height:3rem; + display:flex; + border-radius:50%; + justify-content:center; + align-items:center; + margin-right:1rem; + font-size:1.25rem; + background:#E9BE2B; +} + +.icon-con img{ + width:2rem; +} +.bg-touch:active{ + background: rgba(0,0,0,0.15); +} diff --git a/app-saas-src/css/index/index.css b/app-saas-src/css/index/index.css new file mode 100644 index 0000000..b970750 --- /dev/null +++ b/app-saas-src/css/index/index.css @@ -0,0 +1,132 @@ + +.index-header{ + width:100%; + position:fixed; + z-index:99; + background: #E9BE2B; + font-size:1.5rem; +} +.index-header .icon-con{ + width: 2.5rem; + height:100%; + display:flex; + align-items:center; +} + +.index-header .content{ + display: flex; + justify-content:space-between; + align-items:center; + padding:0 0.67rem; + margin:0; + height: 3.67rem; + position: relative; +} +.project-picker { + font-size: 1.25rem; + padding: 0.5rem; +} +.header-container { + position: relative; +} + + +.index-header .user img{ + height:2.4rem; +} +.user img:active{ + opacity:0.5; + filter:alpha(opacity=50); +} +#pr-name-con{ + text-align:center; +} + +#pr-name{ + display:none; + padding:0 1.6rem 0 0.8rem; + background:url("../../image/arrow.png"); + background-position:right; + background-repeat:no-repeat; + background-size:1.2rem; +} + +#pr-arrow{ + width:0.9rem; + height:0.5rem; +} + +footer{ + height:4.08rem; + background:#1b1708; + display:flex; + justify-content:space-between; + position:absolute; + bottom:0; + color:white; + width: 100%; + align-items:center; + font-size: 0.83rem; + overflow: hidden; + /*box-sizing: border-box;*/ +} + +footer>div{ + flex-grow: 1; + text-align:center; + opacity: 0.7; + +} + +footer>div img{ + width: 2.4rem; + height:2.4rem; + display:block; + margin:auto; +} + +footer .active{ + color:#e9be2b; + opacity: 1; +} + +.nav-item{ + position: relative; +} + +.badge{ + position:absolute; + right:1.5rem; + top:0rem; + min-width:12px; + height:12px; + line-height:12px; + text-align:center; + padding:1px; + color:#FFFFFF; + font-size:8px; + border-radius:7px; + background:#ff0000; + display: none; + -webkit-transform: scale(1); +} + +.litlle-badge{ + position:absolute; + right:2rem; + top:0.5rem; + min-width:6px; + height:6px; + line-height:12px; + text-align:center; + padding:1px; + color:#FFFFFF; + font-size:8px; + border-radius:7px; + background:#ff0000; + display: none; +} + +#inspectionFrame, #systemOrderFrame { + display: none; +} diff --git a/app-saas-src/css/index/inspectionFrame.css b/app-saas-src/css/index/inspectionFrame.css new file mode 100644 index 0000000..6aa56df --- /dev/null +++ b/app-saas-src/css/index/inspectionFrame.css @@ -0,0 +1,141 @@ +body { + background: white; +} + +.top{ + background:#ffffff; +} + +.tabs{ + display: flex; + font-size:1.125rem; + position:fixed; + /* top:1rem; */ + width: 100%; + z-index:99999999; +} + +.tab{ + flex-grow:1; + height:2.5rem; + display:flex; + align-items:center; + justify-content:center; + background:#f2f2f2; +} + +.tab.active{ + background:#ffffff; +} + +.container { + overflow-y: scroll; + padding: 2.5rem 0 1.6rem 0; +} + +.inspection .icon-con { + background: #E9BE2B; +} + +.inspection>div:nth-child(1) img { + width: 2rem; +} + +.inspection>div:nth-child(2) { + font-size: 0.9rem; + text-align: right; + width: 8rem; +} + +.inspection{ + display:flex; + padding:0.58rem; + border-bottom: 1px solid #dad9da; + flex-wrap:nowrap; + font-size:1rem; +} + +.inspection .left{ + display:flex; + flex-grow:1; + width:0; + align-items: center; +} + +.inspection .left .content{ + flex-grow:1; + width: 80%; +} + +.inspection .pr-name-con{ + display:flex; + align-items:center; +} + +.inspection .pr-name-con img{ + height:1.2rem; +} + +.inspection .pr-name{ + font-size : 1.16rem; +} + +.inspection .icon-con{ + flex-shrink:0; + width:3rem; + height:3rem; + display:flex; + border-radius:50%; + justify-content:center; + align-items:center; + margin-right:1rem; + font-size:1.25rem; + background:#E9BE2B; +} + +.accept-btn { + width: 4rem; + height: 2rem; + line-height: 2rem; + text-align: center; + background-color: #E9BE2B; + border-radius: 1rem; +} + +#inspection-task-panel { + display: none; +} + +#inspect-type-btns { + padding: 1rem 0; + border-bottom: 1px solid #d9d9d9; + position: fixed; + z-index: 999; + width: 100%; + /* height: 2rem; */ + background-color: white; +} + +.search-line { + display: flex; + width: 100%; + justify-content: space-between; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} + +.search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} + +#inspection-content { + margin-top: 4.6rem; +} + +#inspection-empty-tips { + display: none; +} diff --git a/app-saas-src/css/index/leftPanel.css b/app-saas-src/css/index/leftPanel.css new file mode 100644 index 0000000..14d16a3 --- /dev/null +++ b/app-saas-src/css/index/leftPanel.css @@ -0,0 +1,119 @@ +/* .menu>div{ + display:block; + font-size:1.2rem; + color:white; + padding:1rem 2rem; +} */ + +.real-name{ + font-size: 1.5rem; +} + +.user-img { + position: relative; + width: 5rem; + height: 5rem; + line-height: 5rem; + border-radius: 50%; + margin: auto; +} + +.user-img img { + width: 50%; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; +} + +.menu .item { + display: flex; + display: -webkit-flex; + align-items:center; + justify-content: space-between; + height: 4.5rem; + line-height: 4.5rem; + padding: 0 2rem 0 2rem; + border-bottom: 1px solid #dfdfdf; + font-size:1.1rem; +} + +.item .left img { + width: 2.0rem; + height: 2.0rem; + margin-right: 1.6rem; + vertical-align: middle; +} + +.item .right{ + text-align: right; + height:4.5rem; + line-height: 4.5rem; +} +.item .right img { + width: 1.25rem; + height: 1.25rem; + vertical-align: middle; +} + +/* add s 2023/7/11 */ +#roles { + /* border-bottom: 0; */ +} + +#roles .right img { + width: 1rem; + height: 0.6rem; +} + +#role-list { + border-bottom: 1px solid #dfdfdf; + max-height: 10rem; + overflow-y: scroll; + display: none; +} + +.role-item { + padding: 0 2rem 0 6rem; + margin:0; + /* width:100%; */ + height:3rem; + line-height:3rem; + font-size:1.1rem; + text-align:left; +} + +.role-item b, .role-item span { + vertical-align: middle; +} + +.role-item b { + font-weight: normal; +} + +.role-item span { + display: inline-block; + border-radius: 50%; + width: 0.6rem; + height: 0.6rem; + background: #fff; + border: 0.1rem solid #555; + position: relative; + margin-right: 1rem; +} +.role-item-active i { + display: inline-block; + border-radius: 50%; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 0; + height: 0; + border: 0.2rem solid #555; +} +/* add e 2023/7/11 */ diff --git a/app-saas-src/css/index/messageFrame.css b/app-saas-src/css/index/messageFrame.css new file mode 100644 index 0000000..7c6036d --- /dev/null +++ b/app-saas-src/css/index/messageFrame.css @@ -0,0 +1,157 @@ +body { + background: white; +} + +.projectName { + line-height: 2.5rem; + padding-left: 0.67rem; + background: #eaeaea; + font-size: 1rem; + color: #5a5a5a; +} + +.project-panel { + position: fixed; + z-index: 10000; + top: 0rem; + right: 1.5rem; + width: 50vw; + max-height: 100vh; + background: #FFF; + box-shadow: 0px 0px 1px rgba(0,0, 0, 0.3); +} + +.project-panel li { + box-sizing: border-box; + line-height: 3rem; + padding-left: 0.67rem; + width: 100%; +} + +.project-panel li.active { + background: #eaeaea; +} + +.item { + display: flex; + height: 55px; + align-items: center; + border-bottom: 1px solid #e5e5e5; + padding: 0 0.7rem; + justify-content: space-between; + width: 100%; + overflow: hidden; + box-sizing: border-box; +} + +.item .name { + font-size: 1.25rem; + white-space: nowrap; + ; + text-overflow: ellipsis; + overflow: hidden; +} + +.item .status, .safe-content { + white-space: nowrap; +} + +.safe-content, .time { + color: rgba(0, 0, 0, 0.7) +} + +.item .days { + font-size: 1.2rem; + line-height: 1.2rem; +} + +.item .icon-con { + width: 3rem; + height: 3rem; + display: flex; + border-radius: 50%; + justify-content: center; + align-items: center; + margin-right: 1rem; + font-size: 1.25rem; + flex-shrink: 0; +} + +.pr .icon-con { + background: #E9BE2B; +} + +.item>div:nth-child(1) { + display: flex; + align-items: center; + width: 40vw; + width: calc(100% - 8rem); +} + +.pr>div:nth-child(1) img { + width: 2rem; +} + +.item>div:nth-child(2) { + font-size: 0.9rem; + text-align: right; + width: 8rem; +} + +.messager .icon-con { + width: 3rem; + height: 3rem; + display: flex; + border-radius: 50%; + justify-content: center; + align-items: center; + position: relative; +} + +.messager .icon-con img { + width: 1.6rem; +} + +.messager .icon-con .badge { + min-width: 12px; + height: 12px; + line-height: 12px; + text-align: center; + padding: 1px; + color: #FFFFFF; + font-size: 8px; + border-radius: 7px; + position: absolute; + left: 2rem; + top: 0rem; + background: #ff0000; + display: none; +} + +.repair-keeper .icon-con { + background: #ffb400; +} + +.inspect-keeper .icon-con { + background: #00b7ee; +} + +.report-keeper .icon-con { + background: #fa759e; +} + +.alarm-keeper .icon-con { + background: #ff6363; +} + +.oper-ticket-assistantor .icon-con { + background: #03b679; +} + +.work-ticket-assistantor .icon-con { + background: #b23bf0; +} + +.bee .icon-con { + background: #eeeeee; +} diff --git a/app-saas-src/css/index/rtAlarmFrame.css b/app-saas-src/css/index/rtAlarmFrame.css new file mode 100644 index 0000000..e710300 --- /dev/null +++ b/app-saas-src/css/index/rtAlarmFrame.css @@ -0,0 +1,136 @@ +.top{ + padding:0.83rem; + display:flex; + font-size:1rem; + position:fixed; + width:100%; + box-sizing: border-box; + background:white; + z-index: 1000; +} + +.top-placeholder{ + height:14.82rem; + width:100px; +} + +.top .left{ + position:relative; + background-image:url("../../image/left-bg0.png"); + background-size:cover; + height:13.16rem; + flex-grow:1; + margin-right:0.33rem; + border-radius:0.25rem; + display: flex; + align-items:center; + justify-content:center; + +} +.top .right{ + height:13.16rem; + flex-grow:1; +} + +.top .right .item{ + position:relative; + height:4.16rem; + border-radius:0.25rem; + display: flex; + align-items:center; + justify-content:center; +} + +.top .right .item:nth-child(2){ + margin:0.33rem 0; +} + +.alarm{ + display:flex; + justify-content:center; + align-items:center; + padding:0.58rem; + border-top:1px solid #dad9da; + flex-wrap:nowrap; + font-size:1rem; +} + +.alarm:last-child{ + border-bottom:1px solid #dad9da; +} + +.alarm .left{ + display:flex; + align-items:center; + flex-grow:1; + +} +.alarm .left .content{ + flex-grow:1; +} + +.alarm .pr-name-con{ + display:flex; + align-items:center; +} + +.alarm .pr-name-con img{ + height:1.2rem; +} + +.alarm .pr-name{ + font-size : 1.25rem; +} + +.alarm .icon-con{ + flex-shrink:0; + width:3rem; + height:3rem; + display:flex; + border-radius:50%; + justify-content:center; + align-items:center; + margin-right:1rem; + font-size:1.25rem; + background:#E9BE2B; +} + +.alarm .right{ + width:8rem; + color: rgba(0,0,0,0.7); + font-size: 0.9rem; +} + +.icon-con img{ + width:2rem; +} +.bg-shadow{ + position:absolute; + top:0; + left:0; + background:rgba(0,0,0,0.5); + width:100%; + height:100%; + border-radius: 0.25rem; +} + +.top .left-con{ + color:#E9BE2B; + z-index: 999; +} +.item-top{ + background:url('../../image/right-top-bg.png'); + background-size:cover; +} +.item-middle{ + background-image:url("../../image/right-middle-bg.png"); + background-size:cover; +} +.item-bottom{ + background-image:url("../../image/right-bottom-bg.png"); + background-size:cover; +} +.item-con{ + color:#fff; + z-index: 999; +} diff --git a/app-saas-src/css/index/systemOrderFrame.css b/app-saas-src/css/index/systemOrderFrame.css new file mode 100644 index 0000000..544cadf --- /dev/null +++ b/app-saas-src/css/index/systemOrderFrame.css @@ -0,0 +1,141 @@ +body { + background: white; +} + +.top{ + background:#ffffff; +} + +.tabs{ + display: flex; + font-size:1.125rem; + position:fixed; + /* top:1rem; */ + width: 100%; + z-index:99999999; +} + +.tab{ + flex-grow:1; + height:2.5rem; + display:flex; + align-items:center; + justify-content:center; + background:#f2f2f2; +} + +.tab.active{ + background:#ffffff; +} + +.container { + overflow-y: scroll; + padding: 2.5rem 0 1.6rem 0; +} + +.order .icon-con { + background: #E9BE2B; +} + +.order>div:nth-child(1) img { + width: 2rem; +} + +.order>div:nth-child(2) { + font-size: 0.9rem; + text-align: right; + width: 8rem; +} + +.order{ + display:flex; + padding:0.58rem; + border-bottom: 1px solid #dad9da; + flex-wrap:nowrap; + font-size:1rem; +} + +.order .left{ + display:flex; + flex-grow:1; + width:0; + align-items: center; +} + +.order .left .content{ + flex-grow:1; + width: 80%; +} + +.order .pr-name-con{ + display:flex; + align-items:center; +} + +.order .pr-name-con img{ + height:1.2rem; +} + +.order .pr-name{ + font-size : 1.16rem; +} + +.order .icon-con{ + flex-shrink:0; + width:3rem; + height:3rem; + display:flex; + border-radius:50%; + justify-content:center; + align-items:center; + margin-right:1rem; + font-size:1.25rem; + background:#E9BE2B; +} + +.accept-btn { + width: 4rem; + height: 2rem; + line-height: 2rem; + text-align: center; + background-color: #E9BE2B; + border-radius: 1rem; +} + +#order-task-panel { + display: none; +} + +#order-type-btns { + padding: 1rem 0; + border-bottom: 1px solid #d9d9d9; + position: fixed; + z-index: 999; + width: 100%; + /* height: 2rem; */ + background-color: white; +} + +.search-line { + display: flex; + width: 100%; + justify-content: space-between; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} + +.search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} + +#order-content { + margin-top: 4.6rem; +} + +#order-empty-tips { + display: none; +} diff --git a/app-saas-src/css/inspection/inspectionListDetail.css b/app-saas-src/css/inspection/inspectionListDetail.css new file mode 100644 index 0000000..92a9f38 --- /dev/null +++ b/app-saas-src/css/inspection/inspectionListDetail.css @@ -0,0 +1,367 @@ +.container { + padding-bottom: 3.1rem; +} +.tabs{ + display: flex; + font-size:1.125rem; + position:fixed; + top:6rem; + width: 100%; + z-index:999; +} +.tab{ + flex-grow:1; + height:2.5rem; + display:flex; + align-items:center; + justify-content:center; + background:#f2f2f2; +} +.tab.active{ + background:#ffffff; +} + +.content-container { + position: relative; + overflow-y: scroll; +} + +#problem-panel { + display: none; +} + +.fix-top { + /* top: 5.34rem; */ + width: 100%; + background: white; + position: absolute; + /* z-index: 100; */ + padding: 2rem; + box-sizing: border-box; + border-bottom:1px solid #d9d9d9 +} + +.search-line { + display: flex; + justify-content: space-between; + width: 100%; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} +.stackpanel-vertical { + display: flex; + flex-direction: column; +} +.pr-num-box { + padding: 0.6rem 2rem; + border-bottom: 1px solid #d9d9d9; + text-align: center; +} +.pr-num-box .btn-normal { + vertical-align: middle; +} +.pr-num { + color: red; +} + +.search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} + +.datetime-line { + width: 70%; + display: flex; + justify-content: space-between; + align-items: center; +} + +.datetime { + height: 2.5rem; + line-height: 2.5rem; + text-align: center; + width: 6rem; +} + +.center { + display: flex; + align-items: center; +} + +.datetime { + line-height: 2.5rem; + text-align: center; +} + +.underline-yellow { + border-bottom: 1px solid #e9be2b +} + +.img-drop-down { + height: 1.2rem; + width: 1.2rem; + margin: 0 0.625rem 0 0; +} + +.iptime-group { + position: relative; +} + +.iptime { + position: absolute; + top: 0; + left: 0; + width: 7.825rem; + height: 2.5rem; + opacity: 0; +} + + +.pr{ + display:flex; + padding:0.58rem; + border-bottom: 1px solid #dad9da; + flex-wrap:nowrap; + font-size:1rem; +} + +.pr .left{ + display:flex; + flex-grow:1; + width:0; + align-items: center; +} + +.pr .left .content{ + flex-grow:1; + width: 80%; +} + +.pr .pr-name-con{ + display:flex; + align-items:center; +} + +.pr .pr-name-con img{ + height:1.2rem; +} + +.pr .pr-name{ + font-size : 1.16rem; +} + +.pr .icon-con{ + flex-shrink:0; + width:3rem; + height:3rem; + display:flex; + border-radius:50%; + justify-content:center; + align-items:center; + margin-right:1rem; + font-size:1.25rem; + background:#E9BE2B; +} + +.pr .right{ + display: flex; + align-items: center; +} + +.text-gray { + color:#6d6d6d; +} + +.text-red { + color:#ff0000; +} + +.text-yellow { + color:#ff9c00; +} + +.text-green { + color:#03b679; +} + +.icon-con img{ + width:2rem; +} + +body { + overflow: auto; +} + +#start-inspect-btn, #finish-inspect-btn { + position: fixed; + bottom: 0; + width: 100%; + height: 3rem; + line-height: 3rem; + font-size: 1.3rem; + text-align: center; + background-color: #e9be2b; + display: none; +} + +.inspect-type { + color: #e9be2b; +} + +.start-btn { + width: 4rem; + height: 2rem; + line-height: 2rem; + text-align: center; + background-color: #E9BE2B; + border-radius: 1rem; +} + +.empty-tips { + display: none; + margin: 2rem 0 0 0; +} + +#problem-panel { + overflow: scroll; +} + +.problem-list-container { + padding: 0 1rem; + padding-top: 4.6rem; +} + +.problem-item { + padding: 0.8rem 0; + border-top: 1px solid #e9be2b; + border-bottom: 1px solid #e9be2b; +} + +.problem-index, .problem-desc, .problem-pic { + margin-top: 0.3rem; +} + +.problem-index { + display: flex; + align-items: center; + justify-content: space-between; + height: 2.6rem; + line-height: 2.6rem; +} +.problem-item-title { + height: 3rem; + line-height: 3rem; + font-size: 1.25rem; +} + +.problem-desc textarea { + width: 100%; + height: 100%; + padding: 0.3rem; + border: 1px solid #e5e5e5; + box-sizing: border-box; +} + +.problem-pic img, .problem-audio img { + width: 4rem; + height: 4rem; +} + +.problem-item-content { + padding: 0 1rem; + width: 100%; + box-sizing: border-box; + display: flex; + flex-wrap: wrap; +} + +.desc { + width: 100%; + padding-left: 1rem; + box-sizing: border-box; + white-space: normal; + word-break: break-all; +} + +.text-red { + color:#ff0000; +} + +.text-yellow { + color:#ff9c00; +} + +.pic-item, .audio-item { + display: inline-block; + width: 4rem; + height: 4rem; + border: 1px solid #e5e5e5; + box-sizing: border-box; + margin: 0 1rem 1rem 0; + position: relative; +} + +.pic-item i, .audio-item i { + position: absolute; + right: -0.8rem; + top: -0.8rem; + display: inline-block; + width: 1.6rem; + height: 1.6rem; + border-radius: 50%; + background-image: url('../../image/close.png'); + background-size: contain; + background-color: #fff; +} + +.pic-item img { + width: 100%; +} +#pic-review { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 9999; + background-color: black; + display: none; +} + +#pic-review img { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 100%; +} +#problem-status-btns { + padding: 1rem 0; + border-bottom: 1px solid #d9d9d9; + position: fixed; + z-index: 999; + width: 100%; + /* height: 2rem; */ + background-color: white; +} + +.search-line { + display: flex; + width: 100%; + justify-content: space-between; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} + +.search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} diff --git a/app-saas-src/css/inspection/inspectionPrDetail.css b/app-saas-src/css/inspection/inspectionPrDetail.css new file mode 100644 index 0000000..291d2d2 --- /dev/null +++ b/app-saas-src/css/inspection/inspectionPrDetail.css @@ -0,0 +1,353 @@ +body{ + background: #ffffff; +} + +.empty-div { + height: 4rem; +} +.top{ + background:#ffffff; +} + +.tabs{ + display: flex; + font-size:1.125rem; + position:fixed; + top:6rem; + width: 100%; + z-index:999; +} + +.tab{ + flex-grow:1; + height:2.5rem; + display:flex; + align-items:center; + justify-content:center; + background:#f2f2f2; +} + +.tab.active{ + background:#ffffff; +} + +.content-container{ + overflow-y: scroll; +} + +#problem-panel { + display: none; +} + +.task-item { + display: flex; + justify-content: space-between; +} + +.task-item img { + width: 2rem; + margin-left: 0.8rem; + vertical-align: middle; +} + +.task-item-img { + height: 3rem; + line-height: 3rem; +} + +.success-light { + display: none; +} + +.error-light { + display: none; +} + +.task-item-img .light .success-dark { + display: none; +} + +.task-item-img .light .success-light { + display: inline-block; +} + +.task-item-img .light .error-dark { + display: none; +} + +.task-item-img .light .error-light { + display: inline-block; +} + +.category-name { + height: 3rem; + line-height: 3rem; +} + +.task-item-desc { + max-width: 70%; + min-height: 3rem; + line-height: 3rem; +} + +/* 底部功能按钮 */ +#bottom-btn { + width: 100%; + position: fixed; + bottom: 0; + display: flex; + justify-content: space-between; + padding: 0.3rem 0.6rem; + box-sizing: border-box; + text-align: center; + background-color: #ffffff; +} + +/* 巡检完成按钮 */ +#inspection-finished { + width: 8rem; + height: 3rem; + line-height: 3rem; + font-size: 1.3rem; + background-color: #e9be2b; + border-radius: 1.5rem; +} +/* 自动勾选剩余项 */ +#auto-checked-all { + width: 8rem; + height: 3rem; + line-height: 3rem; + font-size: 0.8rem; +} +#auto-checked-all img { + width: 1.4rem; + margin: 0 0.4rem; + vertical-align: middle; +} +/* 日常检查项 */ + +.category-name { + border-bottom: 1px solid #e5e5e5; + padding: 0 0.5rem; + font-size: 1.25rem; +} + +.category-name img { + width: 1rem; + margin: 0 0.5rem; +} + +.task-panel { + padding-top: 1rem; + padding-bottom: 3.8rem; +} + +.category-item li { + padding: 0 1rem; + font-size: 1rem; +} + +.category-item li:nth-child(even) { + background-color: #eee; +} + +#guide-panel .hide { + display: none; +} + +#guide-panel .transform { + transform: rotate(-90deg); +} + +#inspectionitem-empty-tips { + position: absolute; + top: 15rem; + width: 100%; +} + +#new-add-btn { + font-size:1.5rem; + text-align: center; + padding: 0.5rem 0; +} +#new-add-btn>div { + display: inline-block; + width: 100%; + height: 3.5rem; + line-height: 3.5rem; + border: 1px solid #e5e5e5; + border-radius: 0.5rem; + box-sizing: border-box; + background-color: #f5f5f5; +} + +#new-add-btn span { + margin-right: 1rem; +} + +#inspect-finish-btn { + position: fixed; + bottom: 0; + width: 100%; + height: 3rem; + line-height: 3rem; + font-size: 1.3rem; + text-align: center; + background-color: #e9be2b; + /* display: none; */ +} + +.problem-list-container { + /* overflow-y: scroll; */ + padding: 0 1rem; +} + +.problem-item { + padding: 0.8rem 0; + border-top: 1px solid #e9be2b; + border-bottom: 1px solid #e9be2b; +} + +.problem-index, .problem-desc, .problem-pic { + margin-top: 0.3rem; +} + +.problem-index { + display: flex; + align-items: center; + justify-content: space-between; + height: 2.6rem; + line-height: 2.6rem; + /* background-color: #e5e5e5; */ +} + +.btns { + display: flex; + justify-content: space-between; +} + +.delete-btn { + width: 3.6rem; + height: 2rem; + line-height: 2rem; + text-align: center; + box-sizing: border-box; + border: 1px solid #e5e5e5; + border-radius: 1rem; + margin-right: 0.4rem; +} + +.submit-btn { + width: 3.6rem; + height: 2rem; + line-height: 2rem; + background-color: #e9be2b; + text-align: center; + border-radius: 1rem; +} + +.finished { + display: none; + color: #03b679; +} + +.problem-item-title { + height: 3rem; + line-height: 3rem; + font-size: 1.25rem; +} + +.problem-desc textarea, .remark textarea { + width: 100%; + height: 100%; + padding: 0.3rem; + border: 1px solid #e5e5e5; + box-sizing: border-box; +} + +.problem-pic img, .problem-audio img { + width: 4rem; + height: 4rem; +} + +.problem-item-content { + padding: 0 1rem; + width: 100%; + box-sizing: border-box; + display: flex; + flex-wrap: wrap; +} + +.pic-item, .audio-item { + display: inline-block; + width: 4rem; + height: 4rem; + border: 1px solid #e5e5e5; + box-sizing: border-box; + margin: 0 1rem 1rem 0; + position: relative; +} + +.pic-item i, .audio-item i { + position: absolute; + right: -0.8rem; + top: -0.8rem; + display: inline-block; + width: 1.6rem; + height: 1.6rem; + border-radius: 50%; + background-image: url('../../image/close.png'); + background-size: contain; + background-color: #fff; +} + +.pic-item img { + width: 100%; +} + +#pic-review { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 9999; + background-color: black; + display: none; +} + +#pic-review img { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 100%; +} + +.weather-selector, .remark, .guide { + padding: 0 1rem 1rem 1rem; + border-bottom: 1px solid #e5e5e5; +} + +.weather-selector-title, .remark-title, .guide-title { + font-size: 1.2rem; + margin: 0.6rem 0; +} + +.weather-type-radio, .remark-box { + padding-top: 0.6rem; +} + +.weather-type-radio input, .weather-type-radio label { + vertical-align: middle; +} + +.weather-type-radio label { + margin-right: 0.6rem; +} + +b { + color: red; +} \ No newline at end of file diff --git a/app-saas-src/css/inspection/inspectionTaskDetail.css b/app-saas-src/css/inspection/inspectionTaskDetail.css new file mode 100644 index 0000000..92a9f38 --- /dev/null +++ b/app-saas-src/css/inspection/inspectionTaskDetail.css @@ -0,0 +1,367 @@ +.container { + padding-bottom: 3.1rem; +} +.tabs{ + display: flex; + font-size:1.125rem; + position:fixed; + top:6rem; + width: 100%; + z-index:999; +} +.tab{ + flex-grow:1; + height:2.5rem; + display:flex; + align-items:center; + justify-content:center; + background:#f2f2f2; +} +.tab.active{ + background:#ffffff; +} + +.content-container { + position: relative; + overflow-y: scroll; +} + +#problem-panel { + display: none; +} + +.fix-top { + /* top: 5.34rem; */ + width: 100%; + background: white; + position: absolute; + /* z-index: 100; */ + padding: 2rem; + box-sizing: border-box; + border-bottom:1px solid #d9d9d9 +} + +.search-line { + display: flex; + justify-content: space-between; + width: 100%; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} +.stackpanel-vertical { + display: flex; + flex-direction: column; +} +.pr-num-box { + padding: 0.6rem 2rem; + border-bottom: 1px solid #d9d9d9; + text-align: center; +} +.pr-num-box .btn-normal { + vertical-align: middle; +} +.pr-num { + color: red; +} + +.search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} + +.datetime-line { + width: 70%; + display: flex; + justify-content: space-between; + align-items: center; +} + +.datetime { + height: 2.5rem; + line-height: 2.5rem; + text-align: center; + width: 6rem; +} + +.center { + display: flex; + align-items: center; +} + +.datetime { + line-height: 2.5rem; + text-align: center; +} + +.underline-yellow { + border-bottom: 1px solid #e9be2b +} + +.img-drop-down { + height: 1.2rem; + width: 1.2rem; + margin: 0 0.625rem 0 0; +} + +.iptime-group { + position: relative; +} + +.iptime { + position: absolute; + top: 0; + left: 0; + width: 7.825rem; + height: 2.5rem; + opacity: 0; +} + + +.pr{ + display:flex; + padding:0.58rem; + border-bottom: 1px solid #dad9da; + flex-wrap:nowrap; + font-size:1rem; +} + +.pr .left{ + display:flex; + flex-grow:1; + width:0; + align-items: center; +} + +.pr .left .content{ + flex-grow:1; + width: 80%; +} + +.pr .pr-name-con{ + display:flex; + align-items:center; +} + +.pr .pr-name-con img{ + height:1.2rem; +} + +.pr .pr-name{ + font-size : 1.16rem; +} + +.pr .icon-con{ + flex-shrink:0; + width:3rem; + height:3rem; + display:flex; + border-radius:50%; + justify-content:center; + align-items:center; + margin-right:1rem; + font-size:1.25rem; + background:#E9BE2B; +} + +.pr .right{ + display: flex; + align-items: center; +} + +.text-gray { + color:#6d6d6d; +} + +.text-red { + color:#ff0000; +} + +.text-yellow { + color:#ff9c00; +} + +.text-green { + color:#03b679; +} + +.icon-con img{ + width:2rem; +} + +body { + overflow: auto; +} + +#start-inspect-btn, #finish-inspect-btn { + position: fixed; + bottom: 0; + width: 100%; + height: 3rem; + line-height: 3rem; + font-size: 1.3rem; + text-align: center; + background-color: #e9be2b; + display: none; +} + +.inspect-type { + color: #e9be2b; +} + +.start-btn { + width: 4rem; + height: 2rem; + line-height: 2rem; + text-align: center; + background-color: #E9BE2B; + border-radius: 1rem; +} + +.empty-tips { + display: none; + margin: 2rem 0 0 0; +} + +#problem-panel { + overflow: scroll; +} + +.problem-list-container { + padding: 0 1rem; + padding-top: 4.6rem; +} + +.problem-item { + padding: 0.8rem 0; + border-top: 1px solid #e9be2b; + border-bottom: 1px solid #e9be2b; +} + +.problem-index, .problem-desc, .problem-pic { + margin-top: 0.3rem; +} + +.problem-index { + display: flex; + align-items: center; + justify-content: space-between; + height: 2.6rem; + line-height: 2.6rem; +} +.problem-item-title { + height: 3rem; + line-height: 3rem; + font-size: 1.25rem; +} + +.problem-desc textarea { + width: 100%; + height: 100%; + padding: 0.3rem; + border: 1px solid #e5e5e5; + box-sizing: border-box; +} + +.problem-pic img, .problem-audio img { + width: 4rem; + height: 4rem; +} + +.problem-item-content { + padding: 0 1rem; + width: 100%; + box-sizing: border-box; + display: flex; + flex-wrap: wrap; +} + +.desc { + width: 100%; + padding-left: 1rem; + box-sizing: border-box; + white-space: normal; + word-break: break-all; +} + +.text-red { + color:#ff0000; +} + +.text-yellow { + color:#ff9c00; +} + +.pic-item, .audio-item { + display: inline-block; + width: 4rem; + height: 4rem; + border: 1px solid #e5e5e5; + box-sizing: border-box; + margin: 0 1rem 1rem 0; + position: relative; +} + +.pic-item i, .audio-item i { + position: absolute; + right: -0.8rem; + top: -0.8rem; + display: inline-block; + width: 1.6rem; + height: 1.6rem; + border-radius: 50%; + background-image: url('../../image/close.png'); + background-size: contain; + background-color: #fff; +} + +.pic-item img { + width: 100%; +} +#pic-review { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 9999; + background-color: black; + display: none; +} + +#pic-review img { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 100%; +} +#problem-status-btns { + padding: 1rem 0; + border-bottom: 1px solid #d9d9d9; + position: fixed; + z-index: 999; + width: 100%; + /* height: 2rem; */ + background-color: white; +} + +.search-line { + display: flex; + width: 100%; + justify-content: space-between; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} + +.search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} diff --git a/app-saas-src/css/inspectionRepair/inspection.css b/app-saas-src/css/inspectionRepair/inspection.css new file mode 100644 index 0000000..8fd6ab0 --- /dev/null +++ b/app-saas-src/css/inspectionRepair/inspection.css @@ -0,0 +1,391 @@ +body{ + background: #ffffff; +} +.content-container{ + overflow-y: scroll; +} + +.content-container>div { + padding-bottom: 3.6rem; +} +.top{ + background:#ffffff; +} + +.tabs{ + display: flex; + font-size:1.125rem; + position:fixed; + top:6rem; + width: 100%; + z-index:99999999; +} + +.tab{ + flex-grow:1; + height:2.5rem; + display:flex; + align-items:center; + justify-content:center; + background:#f2f2f2; +} + +.tab.active{ + background:#ffffff; +} + +.pr-msg:nth-child(1) { + border-bottom: 2px solid #ccc; +} + +.pr-msg { + box-sizing: border-box; + padding: 0 1rem; +} + +.pr-msg .title { + display: flex; + align-items: center; + height: 3rem; + line-height: 3rem; + font-size: 1.25rem; + border-bottom: 1px solid #e5e5e5; +} + +.pr-msg .title .name { + text-align: right; +} + +.icon-con { + width: 3rem; + height: 3rem; + display: flex; + justify-content: center; + align-items: center; + margin-right: 0.5rem; +} + +.pr-msg .title img { + width: 2rem; + vertical-align: middle; +} + +.pr-msg .msg { + line-height: 2rem; + padding: 0 0.5rem; + word-break: break-all; +} + + +.list .item:active{ + background:rgba(255,255,255,0.7); +} +.list .item{ + background:#fff; + padding:0.58rem 0.83rem; + border-bottom: 0.1rem solid #dfdfdf; +} +.list .item .nav{ + display:flex; + display:-webkit-flex; + align-items: center; + justify-content:space-between; + font-size:1.25rem; + /*height: 2.3rem; + line-height: 2.3rem;*/ +} +.list .item .con{ + /*padding:0.58rem 0rem;*/ + font-size:1rem; + margin-right:0rem; +} +.item .con .con-item{ + padding-bottom: 0.17rem; +} +.con .con-item span{ + margin-left:0rem; +} +.date-time{ + font-size:0.9rem; +} +#start-inspect-btn { + position: fixed; + bottom: 0; + width: 100%; + height: 3rem; + line-height: 3rem; + font-size: 1.3rem; + text-align: center; + background-color: #e9be2b; +} + +.empty-div { + height: 3.6rem; +} + +/* 巡检日志 */ +#inspection-log-panel, #repair-log-panel { + display: none; +} + +#inspection-log-panel .time-fixed{ + position:fixed; + width:100%; + background:#fff; + z-index:999; +} +#inspection-log-panel .stackpanel-vertical { + background:white; + display: flex; + flex-direction: column; +} + +#inspection-log-panel .stackpanel-horizontal { + display: flex; + flex-direction: row; +} + +#inspection-log-panel .fix-top { + top: 5.34rem; + width: 100%; + background: white; + position: fixed; + z-index: 100; +} + +#inspection-log-panel .search-line { + background:white; + display: flex; + width: 100%; + height:3.33rem; + line-height:3.33rem; + justify-content: space-between; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} + +#inspection-log-panel .search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} + +#inspection-log-panel .datetime-line { + width: 70%; + display: flex; + justify-content: space-between; + align-items: center; +} + +#inspection-log-panel .datetime { + height: 2.5rem; + line-height: 2.5rem; + text-align: center; + width: 6rem; +} + +#inspection-log-panel .center { + display: flex; + align-items: center; +} + +#inspection-log-panel .datetime { + line-height: 2.5rem; + text-align: center; +} + +#inspection-log-panel .underline-yellow { + border-bottom: 1px solid #e9be2b +} + +#inspection-log-panel .img-drop-down { + height: 1.2rem; + width: 1.2rem; + margin: 0 0.625rem 0 0; +} + +#inspection-log-panel .iptime-group { + position: relative; +} + +#inspection-log-panel .iptime { + position: absolute; + top: 0; + left: 0; + width: 7.825rem; + height: 2.5rem; + opacity: 0; +} + +#inspection-log-panel .list:nth-child(1){ + margin-top: 0.41rem; +} +#inspection-log-panel .list .item{ + background:#fff; + padding:0 0.83rem; + margin-bottom: 0.41rem; +} +#inspection-log-panel .list .item:active{ + background:rgba(255,255,255,0.7); +} +#inspection-log-panel .list .item .nav{ + display:flex; + display:-webkit-flex; + align-items: center; + justify-content:space-between; + font-size:1.25rem; + height: 2.3rem; + line-height: 2.3rem; + border-bottom: 1px solid #f4f4f4; +} +#inspection-log-panel .list .item .con{ + padding:0.67rem 0rem; + font-size:1rem; +} +#inspection-log-panel .item .con .con-item{ + padding: 0.17rem 0; + display: flex; +} +#inspection-log-panel .con-item > div{ + width: 30%; +} +#inspection-log-panel .con .con-item span{ + margin-left:0rem; +} +#inspection-log-panel .date-time{ + font-size:0.9rem; +} + +/* 抢修日志 */ +#repair-log-panel .time-fixed{ + position:fixed; + width:100%; + z-index:999; +} +#repair-log-panel .time-fixed{ + position:fixed; + width:100%; + background:#fff; + z-index:999; +} +#repair-log-panel .stackpanel-vertical { + background:white; + display: flex; + flex-direction: column; +} + +#repair-log-panel .stackpanel-horizontal { + display: flex; + flex-direction: row; +} + +#repair-log-panel .fix-top { + top: 5.34rem; + width: 100%; + background: white; + position: fixed; + z-index: 100; +} + +#repair-log-panel .search-line { + background:white; + display: flex; + width: 100%; + height:3.33rem; + line-height:3.33rem; + justify-content: space-between; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} + +#repair-log-panel .search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} + +#repair-log-panel .datetime-line { + width: 70%; + display: flex; + justify-content: space-between; + align-items: center; +} + +#repair-log-panel .datetime { + height: 2.5rem; + line-height: 2.5rem; + text-align: center; + width: 6rem; +} + +#repair-log-panel .center { + display: flex; + align-items: center; +} + +#repair-log-panel .datetime { + line-height: 2.5rem; + text-align: center; +} + +#repair-log-panel .underline-yellow { + border-bottom: 1px solid #e9be2b +} + +#repair-log-panel .img-drop-down { + height: 1.2rem; + width: 1.2rem; + margin: 0 0.625rem 0 0; +} + +#repair-log-panel .iptime-group { + position: relative; +} + +#repair-log-panel .iptime { + position: absolute; + top: 0; + left: 0; + width: 7.825rem; + height: 2.5rem; + opacity: 0; +} + +#repair-log-panel .list .item:first-child{ + margin-top: 0.41rem; +} +#repair-log-panel .list .item:active{ + background:rgba(255,255,255,0.7); +} +#repair-log-panel .list .item{ + background:#fff; + padding:0.58rem 0.83rem; + margin-bottom: 0.41rem; +} +#repair-log-panel .list .item .nav{ + display:flex; + display:-webkit-flex; + align-items: center; + justify-content:space-between; + font-size:1.25rem; + /*height: 2.3rem; + line-height: 2.3rem;*/ +} +#repair-log-panel .list .item .con{ + /*padding:0.58rem 0rem;*/ + font-size:1rem; + margin-right:0rem; +} +#repair-log-panel .item .con .con-item{ + padding-bottom: 0.17rem; +} +#repair-log-panel .con .con-item span{ + margin-left:0rem; +} +#repair-log-panel .date-time{ + font-size:0.9rem; +} diff --git a/app-saas-src/css/inspectionRepair/inspectionItem.css b/app-saas-src/css/inspectionRepair/inspectionItem.css new file mode 100644 index 0000000..194c750 --- /dev/null +++ b/app-saas-src/css/inspectionRepair/inspectionItem.css @@ -0,0 +1,206 @@ +body{ + background: #ffffff; +} +.content-container{ + overflow-y: scroll; +} +.empty-div { + height: 4rem; +} +.top{ + background:#ffffff; +} + +.tabs{ + display: flex; + font-size:1.125rem; + position:fixed; + top:6rem; + width: 100%; + z-index:99999999; +} + +.tab{ + flex-grow:1; + height:2.5rem; + display:flex; + align-items:center; + justify-content:center; + background:#f2f2f2; +} + +.tab.active{ + background:#ffffff; +} + +#review-task-panel, #new-task-panel { + display: none; +} + +.task-item { + display: flex; + justify-content: space-between; +} + +.task-item img { + width: 2rem; + margin-left: 0.8rem; + vertical-align: middle; +} + +.task-item-img { + height: 3rem; + line-height: 3rem; +} + +.success-light { + display: none; +} + +.error-light { + display: none; +} + +.task-item-img .light .success-dark { + display: none; +} + +.task-item-img .light .success-light { + display: inline-block; +} + +.task-item-img .light .error-dark { + display: none; +} + +.task-item-img .light .error-light { + display: inline-block; +} + +.category-name { + height: 3rem; + line-height: 3rem; +} + +.task-item-desc { + max-width: 70%; + min-height: 3rem; + line-height: 3rem; +} + +.task-item-status-box { + position: relative; +} + +.task-item-status-ok { + position: absolute; + top: -2.2rem; + left: -5.8rem; + width: 12rem; + background-color: #eee; + line-height: 2rem; + border: 1px solid #e5e5e5; + padding: 0 0.2rem; + display: none; + z-index: 9999; +} +.task-item-status-ok>label, .task-item-status-ok>input { + vertical-align: middle; +} +.task-item-status-ok.display { + display: inline-block; +} + +/* 底部功能按钮 */ +#bottom-btn { + width: 100%; + position: fixed; + bottom: 0; + display: flex; + justify-content: space-between; + padding: 0.3rem 0.6rem; + box-sizing: border-box; + text-align: center; + background-color: #ffffff; +} + +/* 巡检完成按钮 */ +#inspection-finished { + width: 8rem; + height: 3rem; + line-height: 3rem; + font-size: 1.3rem; + background-color: #e9be2b; + border-radius: 1.5rem; +} +/* 自动勾选剩余项 */ +#auto-checked-all { + width: 8rem; + height: 3rem; + line-height: 3rem; + font-size: 0.8rem; +} +#auto-checked-all img { + width: 1.4rem; + margin: 0 0.4rem; + vertical-align: middle; +} +/* 日常检查项 */ + +.category-name { + border-bottom: 1px solid #e5e5e5; + padding: 0 0.5rem; + font-size: 1.25rem; +} + +.category-name img { + width: 1rem; + margin: 0 0.5rem; +} + +.task-panel { + padding-bottom: 3.8rem; +} + +.category-item li { + padding: 0 1rem; + font-size: 1rem; +} + +.category-item li:nth-child(even) { + background-color: #eee; +} + +#usual-task-panel .hide { + display: none; +} + +#usual-task-panel .transform { + transform: rotate(-90deg); +} + +#inspectionitem-empty-tips { + position: absolute; + top: 15rem; + width: 100%; +} + +#new-add-btn { + font-size:1.5rem; + text-align: center; + padding: 0.5rem 0; +} +#new-add-btn>div { + display: inline-block; + width: 100%; + height: 3.5rem; + line-height: 3.5rem; + border: 1px solid #e5e5e5; + border-radius: 0.5rem; + box-sizing: border-box; + background-color: #f5f5f5; +} + +#new-add-btn span { + margin-right: 1rem; +} \ No newline at end of file diff --git a/app-saas-src/css/inspectionRepair/inspectionLogDetail.css b/app-saas-src/css/inspectionRepair/inspectionLogDetail.css new file mode 100644 index 0000000..75df520 --- /dev/null +++ b/app-saas-src/css/inspectionRepair/inspectionLogDetail.css @@ -0,0 +1,94 @@ +html,body { + background:#fff; +} +.list .item,.detail{ + padding:0 1.4rem; + margin-bottom: 2px; +} +.list .item .nav{ + display:flex; + display:-webkit-flex; + align-items: center; + justify-content:space-between; + font-size:1.25rem; + height: 2.3rem; + line-height: 2.3rem; + border-bottom: 1px solid #f4f4f4; +} +.list .item .con{ + padding:0.67rem 0rem; + font-size:1rem; +} +.item .con .con-item{ + padding: 0.17rem 0; +} +/*.con .con-item span{ + margin-left:0.17rem; +}*/ +.title{ + font-size:1.25rem; + height:2.25rem;/* //3.08-0.83 */ + line-height:2.25rem; +} +.more{ + width: 1rem; + height: 1rem; + padding:0.5rem; + vertical-align:middle; +} + +.more.close{ + transform:rotate(-90deg); +-ms-transform:rotate(-90deg); /* IE 9 */ +-moz-transform:rotate(-90deg); /* Firefox */ +-webkit-transform:rotate(-90deg); /* Safari 和 Chrome */ +-o-transform:rotate(-90deg); /* Opera */ +} + +.inspect-con{ + padding:0.67rem 1.4rem; + font-size:1rem; +} + +.inspect-con table{ + width:100%; +} + +.inspect-con table thead td{ + padding:0.2rem; + vertical-align: center; +} + +.inspect-con table tbody td{ + padding:0.2rem; + vertical-align: top; +} + +.inspect-con table tr td:last-child{ + text-align: right; +} + +.detail-con{ + padding:0.67rem 0rem; + font-size:1rem; +} +.detail-con .detail-item{ + display:flex; + display:-webkit-flex; + align-items: center; + justify-content:space-between; + margin-bottom:0.83rem; +} +.detail-desc{ + display:flex; + display:-webkit-flex; + align-items: flex-top; + justify-content:space-between; +} +.detail-item p{ + display:inline-block; + margin-right:2.83rem; +} +.detail-status{ + white-space:nowrap; +} diff --git a/app-saas-src/css/inspectionRepair/inspectionProblem.css b/app-saas-src/css/inspectionRepair/inspectionProblem.css new file mode 100644 index 0000000..8e2a283 --- /dev/null +++ b/app-saas-src/css/inspectionRepair/inspectionProblem.css @@ -0,0 +1,111 @@ +body{ + background: #ffffff; +} + +.top{ + background:#ffffff; +} + +.content-container{ + overflow-y: scroll; + padding: 0 1rem; +} + +.problem-item { + margin-top: 1rem; +} + +.problem-item-title { + height: 3rem; + line-height: 3rem; + font-size: 1.25rem; +} + +.problem-grade .problem-grade-item { + padding: 1rem 1.5rem; + border: 1px solid #e5e5e5; +} + +.problem-grade .problem-grade-item label, .problem-grade .problem-grade-item input{ + vertical-align: middle; +} + +.problem-desc textarea { + width: 100%; + height: 100%; + padding: 0.3rem; + border: 1px solid #e5e5e5; + box-sizing: border-box; +} + +.problem-pic img, .problem-audio img { + width: 4rem; + height: 4rem; +} + +.problem-item-content { + padding: 0 1rem; + width: 100%; + box-sizing: border-box; + display: flex; + flex-wrap: wrap; +} + +.pic-item, .audio-item { + display: inline-block; + width: 4rem; + height: 4rem; + border: 1px solid #e5e5e5; + box-sizing: border-box; + margin: 0 1rem 1rem 0; + position: relative; +} + +.pic-item i, .audio-item i { + position: absolute; + right: -0.8rem; + top: -0.8rem; + display: inline-block; + width: 1.6rem; + height: 1.6rem; + border-radius: 50%; + background-image: url('../../image/close.png'); + background-size: contain; + background-color: #fff; +} + +.pic-item img { + width: 100%; +} + +#pic-review { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 9999; + background-color: black; + display: none; +} + +#pic-review img { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 100%; +} + +#problem-submit-btn { + position: fixed; + bottom: 0; + width: 100%; + height: 3rem; + line-height: 3rem; + font-size: 1.3rem; + text-align: center; + background-color: #e9be2b; +} diff --git a/app-saas-src/css/inspectionRepair/repair.css b/app-saas-src/css/inspectionRepair/repair.css new file mode 100644 index 0000000..c5a748f --- /dev/null +++ b/app-saas-src/css/inspectionRepair/repair.css @@ -0,0 +1,312 @@ +body{ + background: #ffffff; +} +.content-container{ + overflow-y: scroll; +} + +.content-container>div { + padding-bottom: 3.6rem; +} +.top{ + background:#ffffff; +} + +.tabs{ + display: flex; + font-size:1.125rem; + position:fixed; + top:6rem; + width: 100%; + z-index:99999999; +} + +.tab{ + flex-grow:1; + height:2.5rem; + display:flex; + align-items:center; + justify-content:center; + background:#f2f2f2; +} + +.tab.active{ + background:#ffffff; +} + +.pr-msg:nth-child(1) { + border-bottom: 2px solid #ccc; +} + +.pr-msg { + box-sizing: border-box; + padding: 0 1rem; +} + +.pr-msg .title { + display: flex; + align-items: center; + height: 3rem; + line-height: 3rem; + font-size: 1.25rem; + border-bottom: 1px solid #e5e5e5; +} + +.pr-msg .title .name { + text-align: right; +} + +.icon-con { + width: 3rem; + height: 3rem; + display: flex; + justify-content: center; + align-items: center; + margin-right: 0.5rem; +} + +.pr-msg .title img { + width: 2rem; + vertical-align: middle; +} + +.pr-msg .msg { + line-height: 2rem; + padding: 0 0.5rem; + word-break: break-all; +} + + +.list .item:active{ + background:rgba(255,255,255,0.7); +} +.list .item{ + background:#fff; + padding:0.58rem 0.83rem; + border-bottom: 0.1rem solid #dfdfdf; +} +.list .item .nav{ + display:flex; + display:-webkit-flex; + align-items: center; + justify-content:space-between; + font-size:1.25rem; + /*height: 2.3rem; + line-height: 2.3rem;*/ +} +.list .item .con{ + /*padding:0.58rem 0rem;*/ + font-size:1rem; + margin-right:0rem; +} +.item .con .con-item{ + padding-bottom: 0.17rem; +} +.con .con-item span{ + margin-left:0rem; +} +.date-time{ + font-size:0.9rem; +} +#start-repair-btn { + position: fixed; + bottom: 0; + width: 100%; + height: 3rem; + line-height: 3rem; + font-size: 1.3rem; + text-align: center; + background-color: #e9be2b; +} + +.empty-div { + height: 3.6rem; +} + +#pr-msg-panel, #task-log-panel { + display: none; +} + +/* 任务详情 */ +#order-detail-panel .order-detail-item{ + border-bottom: 1px solid #d9d9d9; + padding: 0.6rem 1.6rem; +} + +#order-detail-panel .order-detail-item:last-child{ + border-bottom: 0px; +} + +#order-detail-panel .title { + font-size: 1.25rem; + padding-bottom: 0.6rem; +} + +#order-detail-panel .problem-item-content { + /* padding: 0 1rem; */ + width: 100%; + box-sizing: border-box; + display: flex; + flex-wrap: wrap; +} + +#order-detail-panel .pic-item { + display: inline-block; + width: 4rem; + height: 4rem; + border: 1px solid #e5e5e5; + box-sizing: border-box; + margin: 0 1rem 0 0; + position: relative; +} + +#order-detail-panel #pic-place { + text-align: center; +} + +#pic-place { + border-radius: 0.3rem; + color: #e5e5e5; + padding-top: 0.3rem; + font-size: 0.8rem; +} + +#pic-place img { + width: 1.6rem; + height: 1.6rem; +} +.pic-item img{ + width: 100%; +} + +/* 抢修日志 */ +#task-log-panel .time-fixed{ + position:fixed; + width:100%; + z-index:999; +} +#task-log-panel .time-fixed{ + position:fixed; + width:100%; + background:#fff; + z-index:999; +} +#task-log-panel .stackpanel-vertical { + background:white; + display: flex; + flex-direction: column; +} + +#task-log-panel .stackpanel-horizontal { + display: flex; + flex-direction: row; +} + +#task-log-panel .fix-top { + top: 5.34rem; + width: 100%; + background: white; + position: fixed; + z-index: 100; +} + +#task-log-panel .search-line { + background:white; + display: flex; + width: 100%; + height:3.33rem; + line-height:3.33rem; + justify-content: space-between; + padding: 0 0.83rem; + box-sizing: border-box; + align-items: center; +} + +#task-log-panel .search-criteria { + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height: 2.5rem; + width: 23%; +} + +#task-log-panel .datetime-line { + width: 70%; + display: flex; + justify-content: space-between; + align-items: center; +} + +#task-log-panel .datetime { + height: 2.5rem; + line-height: 2.5rem; + text-align: center; + width: 6rem; +} + +#task-log-panel .center { + display: flex; + align-items: center; +} + +#task-log-panel .datetime { + line-height: 2.5rem; + text-align: center; +} + +#task-log-panel .underline-yellow { + border-bottom: 1px solid #e9be2b +} + +#task-log-panel .img-drop-down { + height: 1.2rem; + width: 1.2rem; + margin: 0 0.625rem 0 0; +} + +#task-log-panel .iptime-group { + position: relative; +} + +#task-log-panel .iptime { + position: absolute; + top: 0; + left: 0; + width: 7.825rem; + height: 2.5rem; + opacity: 0; +} + +#task-log-panel .list .item:first-child{ + margin-top: 0.41rem; +} +#task-log-panel .list .item:active{ + background:rgba(255,255,255,0.7); +} +#task-log-panel .list .item{ + background:#fff; + padding:0.58rem 0.83rem; + margin-bottom: 0.41rem; +} +#task-log-panel .list .item .nav{ + display:flex; + display:-webkit-flex; + align-items: center; + justify-content:space-between; + font-size:1.25rem; + /*height: 2.3rem; + line-height: 2.3rem;*/ +} +#task-log-panel .list .item .con{ + /*padding:0.58rem 0rem;*/ + font-size:1rem; + margin-right:0rem; +} +#task-log-panel .item .con .con-item{ + padding-bottom: 0.17rem; +} +#task-log-panel .con .con-item span{ + margin-left:0rem; +} +#task-log-panel .date-time{ + font-size:0.9rem; +} diff --git a/app-saas-src/css/inspectionRepair/repairLogDetail.css b/app-saas-src/css/inspectionRepair/repairLogDetail.css new file mode 100644 index 0000000..a6f460f --- /dev/null +++ b/app-saas-src/css/inspectionRepair/repairLogDetail.css @@ -0,0 +1,121 @@ +html,body { + background:#fff; +} +.con{ + padding:0 0.41rem; + font-size: 1rem; +} +.con .header{ + padding:0 0.8rem; + border-bottom:1px solid #F4F4F4; + display:flex; + display:-webkit-flex; + align-items: center; + justify-content:space-between; + height:3.33rem; + line-height: 3.33rem; + font-size:1.25rem; + z-index: 999; +} +.title{ + display:flex; + display:-webkit-flex; + align-items: center; + height:3.33rem; + line-height: 3.33rem; +} +.title img{ + width:1.5rem; + height:1.5rem; + margin-right:1rem; +} +.bt-detail{ + height:100%; + padding-left:3rem; +} +.bt-detail img{ + width:0.83rem; + height:0.5rem; +} +.con .item{ + padding:1.2rem 3.2rem; + border-bottom:1px solid #F4F4F4; +} +.malfunction-item:not(:first-child){ + margin-top:0.5rem; +} +.rectangle{ + width: 6.1rem; + height: 2.9rem; + border-right: 1px solid #D9D9D9; + padding-bottom:0.5rem; + position: relative; + padding-right:0.7rem; +} +.circle,.circle-green,.circle-start{ + width:0.4rem; + height:0.4rem; + border-radius:50%; + position: absolute; + right:-0.3rem; + top:0; + z-index: 99; + border: 1px solid #D9D9D9; + background:#fff; +} +.circle-green{ + border-radius:50%; + border: 1px solid #00b75f; + background:#00b75f; +} +.process-item{ + display:flex; + display:-webkit-flex; +} +.item-desc{ + padding-left:0.7rem; +} +.circle-start{ + position: absolute; + right:-0.3rem; + top:3.4rem; +} +.circle-start-green{ + position: absolute; + right:-0.3rem; + top:3.4rem; + border-radius:50%; + border: 1px solid #00b75f; + background:#00b75f; +} + +.pic{ + min-height: 4rem; + width: 100%; +} +.pic img{ + display: inline-block; + max-height: 100%; + max-width: 31%; + margin: 0.1rem 0.2rem; +} +.displayNone{ + display:none; +} +.close{ + transform:rotate(-90deg); + -ms-transform:rotate(-90deg); /* IE 9 */ + -moz-transform:rotate(-90deg); /* Firefox */ + -webkit-transform:rotate(-90deg); /* Safari 和 Chrome */ + -o-transform:rotate(-90deg); /* Opera */ +} +.survey-pic{ + min-height: 4rem; + width: 100%; +} +.survey-pic img{ + display: inline-block; + max-height: 100%; + max-width: 31%; + margin: 0.3rem 0.2rem; +} diff --git a/app-saas-src/css/inspectionRepair/repairProblem.css b/app-saas-src/css/inspectionRepair/repairProblem.css new file mode 100644 index 0000000..8e2a283 --- /dev/null +++ b/app-saas-src/css/inspectionRepair/repairProblem.css @@ -0,0 +1,111 @@ +body{ + background: #ffffff; +} + +.top{ + background:#ffffff; +} + +.content-container{ + overflow-y: scroll; + padding: 0 1rem; +} + +.problem-item { + margin-top: 1rem; +} + +.problem-item-title { + height: 3rem; + line-height: 3rem; + font-size: 1.25rem; +} + +.problem-grade .problem-grade-item { + padding: 1rem 1.5rem; + border: 1px solid #e5e5e5; +} + +.problem-grade .problem-grade-item label, .problem-grade .problem-grade-item input{ + vertical-align: middle; +} + +.problem-desc textarea { + width: 100%; + height: 100%; + padding: 0.3rem; + border: 1px solid #e5e5e5; + box-sizing: border-box; +} + +.problem-pic img, .problem-audio img { + width: 4rem; + height: 4rem; +} + +.problem-item-content { + padding: 0 1rem; + width: 100%; + box-sizing: border-box; + display: flex; + flex-wrap: wrap; +} + +.pic-item, .audio-item { + display: inline-block; + width: 4rem; + height: 4rem; + border: 1px solid #e5e5e5; + box-sizing: border-box; + margin: 0 1rem 1rem 0; + position: relative; +} + +.pic-item i, .audio-item i { + position: absolute; + right: -0.8rem; + top: -0.8rem; + display: inline-block; + width: 1.6rem; + height: 1.6rem; + border-radius: 50%; + background-image: url('../../image/close.png'); + background-size: contain; + background-color: #fff; +} + +.pic-item img { + width: 100%; +} + +#pic-review { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 9999; + background-color: black; + display: none; +} + +#pic-review img { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 100%; +} + +#problem-submit-btn { + position: fixed; + bottom: 0; + width: 100%; + height: 3rem; + line-height: 3rem; + font-size: 1.3rem; + text-align: center; + background-color: #e9be2b; +} diff --git a/app-saas-src/css/message/messageListFrame.css b/app-saas-src/css/message/messageListFrame.css new file mode 100644 index 0000000..b86f6ad --- /dev/null +++ b/app-saas-src/css/message/messageListFrame.css @@ -0,0 +1,275 @@ +html, body { + background: #dfdfdf; +} + +body.edit-mode .content { + padding-bottom: 60px; +} + +.list { + padding-top: .4rem; +} + +.msg_title { + font-size: 1.2rem; +} + +.time { + font-size: 0.9rem; + color: rgba(0, 0, 0, 0.7); +} + +.message { + margin-bottom: 0.4rem; + display: flex; + align-items: center; + justify-content: center; +} + +.unread .unread-badge { + position: absolute; + width: 8px; + height: 8px; + background: red; + border-radius: 50%; + top: 0rem; + right: 0.7rem; +} + +@keyframes checkboxFadeIn { + from { + opacity: 0 + } + to { + opacity: 1 + } +} + +@-webkit-keyframes checkboxFadeIn { + from { + opacity: 0 + } + to { + opacity: 1 + } +} + +body .message .check-panel { + display: none; +} + +body.edit-mode .message .check-panel { + display: flex; + width: 25px; + animation: checkboxFadeIn .6s normal forwards; + -webkit-animation: checkboxFadeIn .6s normal forwards; + /* Safari 和 Chrome */ + flex-grow: 0; + flex-shrink: 0; + align-items: center; +} + +.more-arrow { + width: 1rem; +} + +.icon-con.icon_2001 { + background: #efc44b; +} + +.icon-con.icon_2002 { + background: #80ccff; +} + +.icon-con.icon_3001 { + background: #9e83ff; +} + +.icon-con.icon_3002 { + background: #80ccff; +} + +.icon-con.icon_4001 { + background: #3ebaff; +} + +.icon-con.icon_4002 { + background: #42d39f; +} + +.icon-con.icon_5001 { + background: #3ebaff; +} + +/*.icon-con.icon_5002 { + background: #42d39f; +}*/ +.icon-con.icon_5002 { + background: #c58fff; +} + +.icon-con.icon_6001 { + background: #ffd237; +} +.icon-con.icon_6002 { + background: #ffa752; +} +.icon-con.icon_6003 { + background: #ff6363; +} +.icon-con.icon_7001 { + background: #c58fff; +} +@keyframes actPanelShow { + from { + bottom: -60px + } + to { + bottom: 0px + } +} + +@-webkit-keyframes actPanelShow { + from { + bottom: -60px + } + to { + bottom: 0px + } +} + +body .act-panel { + display: none; +} + +body.edit-mode .act-panel { + font-size: 1.2rem; + height: 60px; + width: 100%; + background: #eee; + padding: 0px 1rem; + line-height: 60px; + border-top: 1px solid #ccc; + box-sizing: border-box; + display: flex; + justify-content: space-between; + position: fixed; + bottom: 0px; + animation: actPanelShow .3s normal forwards; + -webkit-animation: actPanelShow .3s normal forwards; + /* Safari 和 Chrome */ +} + +/*新闻消息的样式*/ + +.news-message { + padding: 0.1rem 1rem; + background: #ffffff; +} + +.news-message .left { + padding: 0.8rem 0; + padding-right: 1rem; + overflow: hidden; + position: relative; + -webkit-flex-grow: 1; + flex-grow: 1; +} + +.news-message .right { + -webkit-flex-grow: 0; + flex-shrink-grow: 0; + -webkit-flex-shrink: 0; + flex-shrink-shrink: 0; + overflow: hidden; +} + +.news-message .right .img { + width: 6rem; + height: 6rem; + background-size: cover; +} + +.news-message.unread .msg_title { + color: #000; +} + +.news-message.unread .message-content { + color: rgba(0, 0, 0, 0.8); +} + +.news-message .msg_title { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + color: rgba(0, 0, 0, 0.6); + width: 100%; +} + +.news-message .message-content { + word-wrap: break-word; + color: rgba(0, 0, 0, 0.6); +} + +.news-message img { + margin-left: 1rem; + max-height: 2rem; +} + + +/*默认消息样式*/ + +.default-message { + display: -webkit-flex; + /* Safari */ + display: flex; + width: 100%; + padding: 0.9rem 1rem; + box-sizing: border-box; + background: #ffffff; +} + +.default-message .left { + padding-right: 1rem; + position: relative; + -webkit-flex-shrink: 0; + flex-shrink: 0; +} + +.default-message .middle { + -webkit-flex-grow: 1; + flex-grow: 1; + width: 50%; +} + +.default-message .right { + -webkit-flex-shrink: 0; + flex-shrink: 0; +} + +.default-message .msg_title { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + width: 100%; +} + +.default-message .message-content { + color: #7e7e7e; + padding-right: 1rem; + flex-grow: 1; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.default-message .icon-con { + width: 3rem; + height: 3rem; + border-radius: 50%; +} + +.default-message .icon-con img { + width: 3rem; + height: 3rem; +} diff --git a/app-saas-src/css/message/news.css b/app-saas-src/css/message/news.css new file mode 100644 index 0000000..3917c6c --- /dev/null +++ b/app-saas-src/css/message/news.css @@ -0,0 +1,13 @@ +.content-con{ + padding:0.5rem; +} + +.title{ + font-size: 1.25rem; + text-align: center; +} + +.extra{ + display: flex; + justify-content: space-between; +} diff --git a/app-saas-src/css/message/operateTicketCommon.css b/app-saas-src/css/message/operateTicketCommon.css new file mode 100644 index 0000000..6cede60 --- /dev/null +++ b/app-saas-src/css/message/operateTicketCommon.css @@ -0,0 +1,13 @@ +.content{ + padding:1rem; + text-indent: 2rem; + font-size: 1.2rem; + color: #333; +} + +.time{ + padding: 1rem; + text-align: right; + color: #999; + font-size: .9rem +} diff --git a/app-saas-src/css/message/workTicketCommon.css b/app-saas-src/css/message/workTicketCommon.css new file mode 100644 index 0000000..6cede60 --- /dev/null +++ b/app-saas-src/css/message/workTicketCommon.css @@ -0,0 +1,13 @@ +.content{ + padding:1rem; + text-indent: 2rem; + font-size: 1.2rem; + color: #333; +} + +.time{ + padding: 1rem; + text-align: right; + color: #999; + font-size: .9rem +} diff --git a/app-saas-src/css/report/reportData.css b/app-saas-src/css/report/reportData.css new file mode 100644 index 0000000..98d25f0 --- /dev/null +++ b/app-saas-src/css/report/reportData.css @@ -0,0 +1,131 @@ +::-webkit-scrollbar{width:0px} +body { + background:#fff; +} +.heightGap { + background:#DFDFDF; + height: 0.41rem; + width: 100%; +} +td{ + white-space:nowrap; + vertical-align:middle; + text-align:center; +} +.center { + display: flex; + align-items: center; +} + +.table-panel{ + position:absolute; + display:flex; + width:100%; + overflow: hidden; +} + +.table-head{ + position:absolute; + left:0px; + top:0px; + width:100%; + height:5.16rem; + z-index:1000; +} + +.table-head-right{ + overflow:scroll; + position:absolute; + top:0px; +} + +#header-table{ + /*border-top:1px solid #d9d9d9;*/ + border-bottom:1px solid #d9d9d9; + box-sizing:content-box; + -moz-box-sizing:content-box; /* Firefox */ + -webkit-box-sizing:content-box; /* Safari */ +} + +#table-head-left { + position:relative; + z-index: 10000; +} + +.time-title-cell{ + height:5.2rem; + width:10.4rem; + display:table-cell; + align-items:center; + justify-content:center; + background:#E9BE2B; + border-top:2px solid #E9BE2B; + border-bottom:1px solid #d9d9d9; + +} + + +.table-head-right td{ + height:2.6rem; +} + +#table-header-list td:not(:last-child){ + border-right:1px solid #d9d9d9; + box-sizing:border-box; + -moz-box-sizing:content-box; /* Firefox */ + -webkit-box-sizing:content-box; /* Safari */ +} + +#table-title-list { + border-top:1px solid #d9d9d9; + box-sizing:border-box; + -moz-box-sizing:border-box; /* Firefox */ + -webkit-box-sizing:border-box; /* Safari */ + height:2.58rem; +} + +#table-title-list td:nth-child(even){ + background:#f7f7f7; +} + +.table-body{ + width:100%; + position:absolute; + overflow: hidden; +} + +.table-body-right tr,.table-body-left tr{ + border-bottom:1px solid #d9d9d9; + box-sizing:content-box; + -moz-box-sizing:content-box; /* Firefox */ + -webkit-box-sizing:content-box; /* Safari */ +} + +.table-body-right td, .table-body-left td{ + height:2.6rem; + +} + +.table-body-left{ + position:absolute; + top:0; + width:10.4rem; + overflow: scroll; +} + +.table-body-right{ + position:absolute; + top:0; + overflow: scroll; +} + +.table-body-left td{ + width:10.4rem; + text-align:center; + vertical-align:center; + background:#f7f7f7; +} + +#tbHistroyValue tr>td:nth-child(even){ + background:#f7f7f7; +} diff --git a/app-saas-src/css/report/reportDdhListFrame.css b/app-saas-src/css/report/reportDdhListFrame.css new file mode 100644 index 0000000..ebf0248 --- /dev/null +++ b/app-saas-src/css/report/reportDdhListFrame.css @@ -0,0 +1,98 @@ +html, body { + background: #dfdfdf; +} +.search-content { + position: fixed; + z-index: 3; + top: 0rem; + width: 100%; + background: #fff; + padding: 0.9rem 1rem; + display: flex; + align-items: center; + justify-content: center; + box-sizing: border-box; +} +.search-content .search-box { + width: 100%; + height: 2.5rem; + border: 1px solid #eee; + padding: 0.1rem 0.2rem; + vertical-align: middle; + outline: none; + -webkit-appearance: none; +} +.search-placeholder { + height:5rem; + width: 100%; + background: #dfdfdf; +} +.item { + margin-bottom: 0.4rem; + display: flex; + align-items: center; + justify-content: center; + width: 100%; + padding: 0.9rem 1rem; + box-sizing: border-box; + background: #ffffff; +} +.item .left { + padding-right: 1rem; + position: relative; + -webkit-flex-shrink: 0; + flex-shrink: 0; +} +.item .middle { + -webkit-flex-grow: 1; + flex-grow: 1; + width: 50%; +} +.item .prName { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + width: 100%; + font-size: 1.2rem; +} +.item .content { + color: #7e7e7e; + padding-right: 1rem; + flex-grow: 1; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.item .icon-con { + width: 3rem; + height: 3rem; + border-radius: 50%; +} +.more-arrow { + width: 1rem; +} +.pr .icon-con img { + width: 3rem; + height: 3rem; +} +.item .right { + -webkit-flex-shrink: 0; + flex-shrink: 0; +} + +.item .icon-con { + width:3rem; + height:3rem; + display:flex; + border-radius:50%; + justify-content:center; + align-items:center; + margin-right:1rem; + font-size:1.25rem; + flex-shrink:0; + background: rgb(197,143,255); +} +.item .icon-con img { + width:1.6rem; + display: block; +} diff --git a/app-saas-src/css/report/reportPrFrame.css b/app-saas-src/css/report/reportPrFrame.css new file mode 100644 index 0000000..155b431 --- /dev/null +++ b/app-saas-src/css/report/reportPrFrame.css @@ -0,0 +1,98 @@ +html, body { + background: #dfdfdf; +} +.search-content { + position: fixed; + z-index: 3; + top: 0rem; + width: 100%; + background: #fff; + padding: 0.9rem 1rem; + display: flex; + align-items: center; + justify-content: center; + box-sizing: border-box; +} +.search-content .search-box { + width: 100%; + height: 2.5rem; + border: 1px solid #eee; + padding: 0.1rem 0.2rem; + vertical-align: middle; + outline: none; + -webkit-appearance: none; +} +.search-placeholder { + height:5rem; + width: 100%; + background: #dfdfdf; +} +.pr { + margin-bottom: 0.4rem; + display: flex; + align-items: center; + justify-content: center; + width: 100%; + padding: 0.9rem 1rem; + box-sizing: border-box; + background: #ffffff; +} +.pr .left { + padding-right: 1rem; + position: relative; + -webkit-flex-shrink: 0; + flex-shrink: 0; +} +.pr .middle { + -webkit-flex-grow: 1; + flex-grow: 1; + width: 50%; +} +.pr .prName { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + width: 100%; + font-size: 1.2rem; +} +.pr .content { + color: #7e7e7e; + padding-right: 1rem; + flex-grow: 1; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.pr .icon-con { + width: 3rem; + height: 3rem; + border-radius: 50%; +} +.more-arrow { + width: 1rem; +} +.pr .icon-con img { + width: 3rem; + height: 3rem; +} +.pr .right { + -webkit-flex-shrink: 0; + flex-shrink: 0; +} + +.pr .icon-con { + width:3rem; + height:3rem; + display:flex; + border-radius:50%; + justify-content:center; + align-items:center; + margin-right:1rem; + font-size:1.25rem; + flex-shrink:0; + background: rgb(197,143,255); +} +.pr .icon-con img { + width:1.6rem; + display: block; +} diff --git a/app-saas-src/css/report/reportProjectFrame.css b/app-saas-src/css/report/reportProjectFrame.css new file mode 100644 index 0000000..2c90d8c --- /dev/null +++ b/app-saas-src/css/report/reportProjectFrame.css @@ -0,0 +1,73 @@ +html, body { + background: #dfdfdf; +} + +.list { + padding-top: .4rem; +} + +.title { + font-size: 1.2rem; +} + +.time { + font-size: 0.9rem; + color: rgba(0, 0, 0, 0.7); +} + +.project { + margin-bottom: 0.4rem; + display: flex; + align-items: center; + justify-content: center; +} + +.more-arrow { + width: 1rem; +} +.default-project { + display: flex; + width: 100%; + padding: 0.9rem 1rem; + box-sizing: border-box; + background: #ffffff; +} + + +.default-project .left { + -webkit-flex-grow: 1; + flex-grow: 1; + width: 50%; +} + +.default-project .right { + -webkit-flex-shrink: 0; + flex-shrink: 0; +} + +.default-project .title { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + width: 100%; +} + +.default-project .content { + color: #7e7e7e; + padding-right: 1rem; + flex-grow: 1; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.default-project .icon-con { + width: 3rem; + height: 3rem; + border-radius: 50%; +} + +.default-project .icon-con img { + width: 3rem; + height: 3rem; +} diff --git a/app-saas-src/css/rtAlarm/rtAlarmList.css b/app-saas-src/css/rtAlarm/rtAlarmList.css new file mode 100644 index 0000000..5b7e679 --- /dev/null +++ b/app-saas-src/css/rtAlarm/rtAlarmList.css @@ -0,0 +1,3 @@ +body { + +} diff --git a/app-saas-src/css/style.css b/app-saas-src/css/style.css new file mode 100644 index 0000000..f63a6cd --- /dev/null +++ b/app-saas-src/css/style.css @@ -0,0 +1,321 @@ +input[type="button"], input[type="submit"], input[type="reset"] ,input[type="month"],input[type="date"] { +-webkit-appearance: none; +} + +html,body { margin:0; padding:0;font-family:"Microsoft YaHei", Verdana, arial, sans-serif; height: 100%;} +.hover{ opacity: .8; } + +.flex-wrap{ display: -webkit-box; display: -webkit-flex; display: flex; } +.flex-con{ -webkit-box-flex: 1; -webkit-flex: 1; flex: 1;} +.flex-vertical{ -webkit-box-orient: vertical;-webkit-flex-flow: column;flex-flow: column;} + +.border-t, +.border-b{ position:relative; } +.border-t:before, +.border-b:after{ content: ''; position: absolute; left: 0; top:0; background: #ddd; right:0; height: 1px; -webkit-transform: scaleY(0.5); transform: scaleY(0.5); -webkit-transform-origin: 0 0; transform-origin: 0 0; } +.border-b:after{ top:auto; bottom:0; } + +#wrap{ height: 100%; } +@media screen and (max-width:375px){ + html{ + font-size:13px; + } +} + +@media screen and (min-width:376px) and (max-width:414px){ + html{ + font-size:14px; + } +} + +@media screen and (min-width:415px){ + html{ + font-size:16px; + } +} + +a{ + text-decoration: none; + color:rgba(0,0,0,1) +} +input:focus{ + outline:none; +} +button:focus{ + outline:none; +} +.text-align-c{ + text-align:center; +} +.text-align-r{ + text-align:right; +} +.text-align-l{ + text-align:left; +} + +.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;} + +.color-yellow{color:#E9BE2B} +.color-green{color:#00b75f} +.color-red{color:#fe0000} +.color-white{color:#ffffff} +.color-gray{color:#B2B2B2} +.color-title {color: #7e7e7e;} + +.bg-yellow{background:#E9BE2B} +.bg-white{background:#ffffff} +.bg-red{background:red} +/* 阻止换行 */ +.noWrap{white-space: nowrap} + +.displayNone{ + display:none; +} +.height1{height:0.1rem;width:100%} +.height2{height:0.2rem;width:100%} +.height3{height:0.3rem;width:100%} +.height4{height:0.4rem;width:100%} +.height5{height:0.5rem;width:100%} +.height6{height:0.6rem;width:100%} +.height7{height:0.7rem;width:100%} +.height8{height:0.8rem;width:100%} +.height9{height:0.9rem;width:100%} +.height10{height:1.0rem;width:100%} +.height11{height:1.1rem;width:100%} +.height12{height:1.2rem;width:100%} +.height13{height:1.3rem;width:100%} +.height14{height:1.4rem;width:100%} +.height15{height:1.5rem;width:100%} +.height16{height:1.6rem;width:100%} +.height17{height:1.7rem;width:100%} +.height18{height:1.8rem;width:100%} +.height19{height:1.9rem;width:100%} +.height20{height:2.0rem;width:100%} +.height25{height:2.5rem;width:100%} +.height30{height:3.0rem;width:100%} +.height40{height:4.0rem;width:100%} +.height50{height:5.0rem;width:100%} +.height60{height:6.0rem;width:100%} +.height70{height:7.0rem;width:100%} +.height80{height:8.0rem;width:100%} +.height90{height:9.0rem;width:100%} +.height100{height:100.0rem;width:100%} +.heightHeader{height:5.34rem;width:100%} + +.width10{width:10%} +.width20{width:20%} +.width30{width:30%} +.width40{width:40%} +.width50{width:50%} +.width60{width:60%} +.width70{width:70%} +.width80{width:80%} +.width90{width:90%} +.width100{width:100%} + + +/* 头部 */ +header { + width:100%; + position:fixed; + z-index:99; + background: #E9BE2B; + font-size:1.5rem; +} + +.top-bar { + padding-left:1.08rem; + height: 3.67rem; + line-height: 3.67rem; + display:flex; + align-items:center; + +} +.top-bar .back{ + height: 3.67rem; + width:3.5rem; + line-height: 3.67rem; + +} +.top-bar .back img{ + vertical-align:middle; + width:0.875rem; + height:1.58rem; +} +.back img:active{ + opacity:0.5; + filter:alpha(opacity=50); +} +.top-bar span{ + margin:auto; + color:rgba(0,0,0,1) +} +.width-back{ + width:3.5rem; + height: 100%; +} +.empty-tips{ + text-align:center; + position:relative; + display: none; +} + +.empty-tips div{ + width:10rem; + height:9rem; + background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAAEKCAYAAACytIjQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozRjREMEVGOTM2MkIxMUU3OUE0QkJEOUNDM0YyOUREMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozRjREMEVGQTM2MkIxMUU3OUE0QkJEOUNDM0YyOUREMyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNGNEQwRUY3MzYyQjExRTc5QTRCQkQ5Q0MzRjI5REQzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNGNEQwRUY4MzYyQjExRTc5QTRCQkQ5Q0MzRjI5REQzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+tpfBLQAAML5JREFUeNrsXQe4FPX1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'); + background-size:100% 100%; + display:inline-block; + margin-left:4rem; +} + +.empty-tips span{ + display:block; + font-size:0.9rem; + color:#666666; +} +.bg-touch{ + position: relative; +} +.bg-touch:active{ + background: rgba(0,0,0,0.15); + opacity:0.5; + filter:alpha(opacity=50); +} +.bg-touch::before{ + content: ""; + display: none; + position: absolute; + left:0px; + top:0px; + width: 100%; + height: 100%; + z-index: 10000; + background: rgba(0,0,0,0.15); +} + +.bg-touch:active::before { + display: block; + } + +.radio-group{ + display: inline-block; + height: 30px; + line-height: 30px; + margin-right:16px; +} + +.radio-group input[type="radio"]{ + -webkit-appearance:none; + -moz-appearance:none; + -ms-appearance:none; + width:0px; + height:0px; + border:0px; + padding:0px; + margin: 0px; + + +} + +.radio-group input[type="radio"]:checked + label::before{ + border:2px solid #e9be2b; +} + +.radio-group input[type="radio"]:checked + label::after{ + content:' '; + width:8px; + height:8px; + left: 5px; + top: 11px; + display: block; + border-radius: 50%; + position: absolute; + background:#e9be2b; +} + +.radio-group label{ + padding-left: 26px; + position: relative; + height:30px; + line-height: 30px; + display: inline-block; + cursor: pointer; + top:0px; +} + +.radio-group label::before{ + content:' '; + width:14px; + height:14px; + border:2px solid #666; + left: 0px; + top:6px; + display: block; + border-radius: 50%; + position: absolute; +} + +//重写checkbox +.checkbox-group{ + display: inline-block; + height: 30px; + line-height: 30px; + margin-right: 8px; + overflow: hidden; + position: relative; +} + +.checkbox-group input[type="checkbox"]{ + -webkit-appearance:none; + -moz-appearance:none; + -ms-appearance:none; + width:0px; + height:0px; + border:0px; + padding:0px; + margin: 0px; + position: absolute; + top:-10px; +} +.checkbox-group label{ + padding-left: 26px; + position: relative; + height:30px; + line-height: 30px; + display: inline-block; + cursor: pointer; +} + +.checkbox-group label::before{ + content:' '; + width:14px; + height:14px; + border:1px solid #666; + left: 0px; + top:8px; + display: block; + border-radius: 5px; + position: absolute; +} + +.checkbox-group>input[type='checkbox']:checked + label::before{ + border:1px solid #e9be2b; + background:#e9be2b; +} + +.checkbox-group>input[type='checkbox']:checked + label::after{ + width:15px; + height:15px; + left: 0px; + top:8px; + display: block; + content:'\2713'; + display: block; + position: absolute; + color:white; + text-align: center; + line-height: 15px; + font-size:13px; +} diff --git a/app-saas-src/css/systemOrder/systemOrderDetail.css b/app-saas-src/css/systemOrder/systemOrderDetail.css new file mode 100644 index 0000000..0e89d0d --- /dev/null +++ b/app-saas-src/css/systemOrder/systemOrderDetail.css @@ -0,0 +1,144 @@ +.content { + padding: 0 2rem 5rem 2rem; + overflow: scroll; +} + +.title { + margin-bottom: 1.5rem; +} + +.pr-select, .order-person, .order-result-person, .order-result, .order-pic { + margin-top: 1.5rem; +} + +.pr-selector { + position: relative; + width: 100%; +} + +.pr-selected { + display: flex; + justify-content: space-between; + height: 2.2rem; + line-height: 2.2rem; + border: 1px solid #dad9da; + padding: 0 0.5rem; + color: #666; +} + +.pr-selected img { + width: 1rem; +} + +.pr-picker-modal{ + position: absolute; + top: 2.4rem; + width:100%; + height:30vh; + overflow-y: auto; + border: 1px solid #dad9da; + display: none; +} + +.pr-picker-modal .pr{ + display: flex; + flex-direction: row; + background:#ffffff; + color:#000000; + border-top:1px solid #dad9da; + height:2.6rem; + line-height:2.6rem; + font-size: 1.25rem; + align-items:center; +} + +.pr-picker-modal .pr .icon-con{ + margin: 0 0.5rem 0 0.5rem; + flex-shrink:0; + width:2rem; + height:2rem; + display:flex; + border-radius:50%; + justify-content:center; + align-items:center; + font-size:1rem; + background:#E9BE2B; +} + +.pr-picker-modal .icon-con img{ + width:1.6rem; +} + +.show { + display: block; +} + +.order-desc { + width: 100%; + margin-top: 1.5rem; +} + +#order-text { + width: 100%; + box-sizing: border-box; + font-size: 1.25rem; + border: 1px solid #dad9da; + padding: 0.4rem; +} + +.order-pic img { + width: 4rem; + height: 4rem; +} + +.pic-item { + display: inline-block; + width: 4rem; + height: 4rem; + border: 1px solid #e5e5e5; + box-sizing: border-box; + margin: 0 1rem 1rem 0; + position: relative; +} + +.pic-item i { + position: absolute; + right: -0.8rem; + top: -0.8rem; + display: inline-block; + width: 1.6rem; + height: 1.6rem; + border-radius: 50%; + background-image: url('../../image/close.png'); + background-size: contain; + background-color: #fff; +} + +.pic-item img { + width: 100%; +} + +#pic-review { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 9999; + background-color: black; + display: none; +} + +#pic-review img { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 100%; +} + +.handle-detail { + display: none; +} \ No newline at end of file diff --git a/app-saas-src/css/systemOrder/systemOrderEdit.css b/app-saas-src/css/systemOrder/systemOrderEdit.css new file mode 100644 index 0000000..a34317f --- /dev/null +++ b/app-saas-src/css/systemOrder/systemOrderEdit.css @@ -0,0 +1,339 @@ +.tabs{ + display: flex; + font-size:1.125rem; + position:fixed; + top:6rem; + width: 100%; + z-index:999; +} + +.tab{ + flex-grow:1; + height:2.5rem; + display:flex; + align-items:center; + justify-content:center; + background:#f2f2f2; +} + +.tab.active{ + background:#ffffff; +} + +.content { + padding: 0 2rem 3.1rem 3rem; + overflow: scroll; +} + +.title { + margin-bottom: 1.5rem; +} + +.pr-select, .order-person, .order-result-person, .order-result, .order-pic { + margin-top: 1.5rem; +} + +.pr-selector { + position: relative; + width: 100%; +} + +.pr-selected { + display: flex; + justify-content: space-between; + height: 2.2rem; + line-height: 2.2rem; + border: 1px solid #dad9da; + padding: 0 0.5rem; + color: #666; +} + +.pr-selected img { + width: 1rem; +} + +.pr-picker-modal{ + position: absolute; + top: 2.4rem; + width:100%; + height:30vh; + overflow-y: auto; + border: 1px solid #dad9da; + display: none; +} + +.pr-picker-modal .pr{ + display: flex; + flex-direction: row; + background:#ffffff; + color:#000000; + border-top:1px solid #dad9da; + height:2.6rem; + line-height:2.6rem; + font-size: 1.25rem; + align-items:center; +} + +.pr-picker-modal .pr .icon-con{ + margin: 0 0.5rem 0 0.5rem; + flex-shrink:0; + width:2rem; + height:2rem; + display:flex; + border-radius:50%; + justify-content:center; + align-items:center; + font-size:1rem; + background:#E9BE2B; +} + +.pr-picker-modal .icon-con img{ + width:1.6rem; +} + +.show { + display: block; +} + +.order-desc { + width: 100%; + margin-top: 1.5rem; +} + +#result-desc { + width: 100%; + box-sizing: border-box; + font-size: 1.25rem; + border: 1px solid #dad9da; + padding: 0.4rem; +} + +.order-pic img { + width: 4rem; + height: 4rem; +} + +.pic-item { + display: inline-block; + width: 4rem; + height: 4rem; + border: 1px solid #e5e5e5; + box-sizing: border-box; + margin: 0 1rem 1rem 0; + position: relative; +} + +.pic-item i { + position: absolute; + right: -0.8rem; + top: -0.8rem; + display: inline-block; + width: 1.6rem; + height: 1.6rem; + border-radius: 50%; + background-image: url('../../image/close.png'); + background-size: contain; + background-color: #fff; +} + +.pic-item img { + width: 100%; +} + +#pic-review { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 9999; + background-color: black; + display: none; + overflow: hidden; +} + +#pic-review img { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 100%; +} + +#start-btn, #finish-btn { + position: fixed; + bottom: 0; + width: 100%; + height: 3rem; + line-height: 3rem; + font-size: 1.3rem; + text-align: center; + background-color: #e9be2b; + display: none; +} + +.start-show { + display: none; +} + +b { + color: red; +} + + +/* 设备缺陷tab */ + +#problem-panel { + display: none; +} + +#new-add-btn { + font-size:1.5rem; + text-align: center; + padding: 0.5rem 0; +} +#new-add-btn>div { + display: inline-block; + width: 100%; + height: 3.5rem; + line-height: 3.5rem; + border: 1px solid #e5e5e5; + border-radius: 0.5rem; + box-sizing: border-box; + background-color: #f5f5f5; +} + +#new-add-btn span { + margin-right: 1rem; +} + +.problem-list-container { + /* overflow-y: scroll; */ + padding: 0 1rem; +} + +.problem-item { + padding: 0.8rem 0; + border-top: 1px solid #e9be2b; + border-bottom: 1px solid #e9be2b; +} + +.problem-index, .problem-desc, .problem-pic { + margin-top: 0.3rem; +} + +.problem-index { + display: flex; + align-items: center; + justify-content: space-between; + height: 2.6rem; + line-height: 2.6rem; + /* background-color: #e5e5e5; */ +} + +.btns { + display: flex; + justify-content: space-between; +} + +.delete-btn { + width: 3.6rem; + height: 2rem; + line-height: 2rem; + text-align: center; + box-sizing: border-box; + border: 1px solid #e5e5e5; + border-radius: 1rem; + margin-right: 0.4rem; +} + +.submit-btn { + width: 3.6rem; + height: 2rem; + line-height: 2rem; + background-color: #e9be2b; + text-align: center; + border-radius: 1rem; +} + +.finished { + display: none; + color: #03b679; +} + +.problem-item-title { + height: 3rem; + line-height: 3rem; + font-size: 1.25rem; +} + +.problem-desc textarea, .remark textarea { + width: 100%; + height: 100%; + padding: 0.3rem; + border: 1px solid #e5e5e5; + box-sizing: border-box; +} + +.problem-pic img, .problem-audio img { + width: 4rem; + height: 4rem; +} + +.problem-item-content { + padding: 0 1rem; + width: 100%; + box-sizing: border-box; + display: flex; + flex-wrap: wrap; +} + +.pic-item, .audio-item { + display: inline-block; + width: 4rem; + height: 4rem; + border: 1px solid #e5e5e5; + box-sizing: border-box; + margin: 0 1rem 1rem 0; + position: relative; +} + +.pic-item i, .audio-item i { + position: absolute; + right: -0.8rem; + top: -0.8rem; + display: inline-block; + width: 1.6rem; + height: 1.6rem; + border-radius: 50%; + background-image: url('../../image/close.png'); + background-size: contain; + background-color: #fff; +} + +.pic-item img { + width: 100%; +} + +#pic-review { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 9999; + background-color: black; + display: none; +} + +#pic-review img { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 100%; +} \ No newline at end of file diff --git a/app-saas-src/css/user/findPassWord.css b/app-saas-src/css/user/findPassWord.css new file mode 100644 index 0000000..2a66b73 --- /dev/null +++ b/app-saas-src/css/user/findPassWord.css @@ -0,0 +1,47 @@ +section{ + padding: 0 0.83rem; +} +.form-control{ + width:100%; +} +.form-control .phone{ + display:flex; + justify-content:space-between; + padding:0 1.25rem; + border: 1px solid #d9d9d9; + border-radius: 0.25rem; + height:3.33rem; + line-height: 3.33rem; +} +.form-control .phone-tip,.form-control .code-tip{ + color:red; + white-space:noWrap; +} + .code-tip{ + width:30%; +} +.form-control .confirm-code{ + display:flex; + justify-content:space-between; + border: 1px solid #d9d9d9; + height:3.33rem; + border-radius: 6px; + line-height: 3.33rem; +} +.form-control .code-value{ + padding-left:1.25rem; +} +.form-control .get-code{ + width:30%; + height:3.33rem; + background:#E9BE2B; +} +.submit{ + display:block; + width:100%; + height:3.33rem; + line-height: 3.33rem; + border: 1px solid #d9d9d9; + background:#e4e4e4; + border-radius: 6px; +} diff --git a/app-saas-src/css/user/login.css b/app-saas-src/css/user/login.css new file mode 100644 index 0000000..959d30e --- /dev/null +++ b/app-saas-src/css/user/login.css @@ -0,0 +1,173 @@ +body,html { + background:#e9be2b; + text-align:center; + width:100%; + height:100%; +} +.container{ + padding:0 0.08rem; +} +.logo{ + margin:auto; + width:8.3rem; + height:9.25rem; +} + .logo img{ + display:inline-block; + width: 100%; + height:100%; +} +.user-panel{ + padding:0 0.83rem; +} +.control-group{ + width: 100%; + background: #fff; + border-radius: 6px; + color: rgba(0,0,0,1); + +} +.control-group .account{ + + border-bottom: 1px solid #d9d9d9; +} +.control-group .password,.control-group .account{ + width:100%; + height:3.33rem; + line-height: 3.33rem; + display: flex; +} +.control-group .input-line{ + display:flex; + width:76%; + height:3.33rem; + line-height:3.33rem; + font-size:0.91rem; + color:rgba(0,0,0,0.7); + padding-right: 0.4rem; +} +.control-group .input-line input{ + display:block; + width:100%; + height:100%; +} +.control-group .label{ + width: 20%; + font-size:0.92rem; +} +.user-panel .button{ + margin:auto; + width:100%; + height:3.33rem; + line-height:3.33rem; + background:#fff; + border-radius: 0.25rem; +} +.user-panel .forget-password{ + margin:auto; + width:100%; + height:1rem; + line-height:1rem; + font-size:0.83rem; + text-align:right; +} +.user-panel .forget-password a{ + display:inline-block; + color:rgba(0,0,0,1); + font-size:0.83rem; +} +.user-bottom{ + display:flex; + align-items: center; + width:100%; + margin:auto; +} +.user-bottom .protocol{ + text-align:left; +} + +.user-bottom .protocol input{ + vertical-align:middle; +} +.user-bottom .cus,.protocol{ + display:inline-block; + color:rgba(0,0,0,1); + font-size:0.83rem; +} + +.cus-experence{ + text-align:right; + padding-left: 2rem; +} +.cus{ + width: 100%; + padding: 0.5rem ; +} +.account-tip,.password-tip{ + color:red; + white-space:nowrap +} +.protocol-detail{ + text-decoration: underline; +} +.btn-success:active{ + background: #efefef; +} +.touch-color:active{ + color: rgba(0,0,0,0.5); +} +input::-webkit-input-placeholder{ + line-height: 1.2rem; +} +/*add start 2019/4/29 kangzhi*/ +.rem-forget-password { + display: flex; + justify-content: space-between; +} +.rem-forget-password b, .rem-forget-password span{ + vertical-align: middle; +} +.rem-forget-password input { + position: absolute; + display: inline-block; + top: 0; + left: 0; + -webkit-appearance: none; +} +.remember { + margin:0; + width:100%; + height:1rem; + line-height:1rem; + font-size:0.83rem; + text-align:left; +} +.remember b { + font-weight: normal; +} +.remember span { + display: inline-block; + border-radius: 50%; + width: 0.6rem; + height: 0.6rem; + background: #fff; + border: 0.2rem solid #fff; + position: relative; +} +.is-remember i { + display: inline-block; + border-radius: 50%; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 0; + height: 0; + border: 0.2rem solid #555; +} +.is-remember span { + +} +/*add end 2019/4/29 kangzhi*/ diff --git a/app-saas-src/css/user/protocol.css b/app-saas-src/css/user/protocol.css new file mode 100644 index 0000000..9dde8a1 --- /dev/null +++ b/app-saas-src/css/user/protocol.css @@ -0,0 +1,18 @@ + +.stackpanel-vertical { + display: flex; + flex-direction: column; +} + +.stackpanel-horizontal { + display: flex; + flex-direction: row; +} + +.horizon-center { + align-items: center; +} + +.article span { + margin: 0 0.83rem; +} \ No newline at end of file diff --git a/app-saas-src/css/user/resetPassword.css b/app-saas-src/css/user/resetPassword.css new file mode 100644 index 0000000..0d277ca --- /dev/null +++ b/app-saas-src/css/user/resetPassword.css @@ -0,0 +1,29 @@ +section{ + padding: 0 0.83rem; +} +.form-control{ + width:100%; +} +.form-control .password,.form-control .confirm-password{ + display:flex; + justify-content:space-between; + padding:0 1.25rem; + border: 1px solid #d9d9d9; + border-radius: 6px; + height:3.33rem; + line-height: 3.33rem; +} +.form-control .password-tip{ + color:red; + white-space:noWrap; +} + +.submit{ + display:block; + width:100%; + height:3.33rem; + line-height: 3.33rem; + border: 1px solid #d9d9d9; + background:#d9d9d9; + border-radius: 6px; +} diff --git a/app-saas-src/css/user/updatePassword.css b/app-saas-src/css/user/updatePassword.css new file mode 100644 index 0000000..63d94c1 --- /dev/null +++ b/app-saas-src/css/user/updatePassword.css @@ -0,0 +1,53 @@ +html,body{ + background:#fff; +} +section{ + padding:0 0.83rem; + margin:auto; +} +.form{ + display:flex; + display:-webkit-flex; + align-items: center; + justify-content:space-between; + width:100%; + box-sizing:border-box; + height:3.25rem; + border: 1px solid #dad9da; + padding: 0rem 0.375rem; + margin:auto; + border-radius:0.25rem; +} +.form .title{ + font-size:0.83rem; + color:#737373; + width:6.25rem; + height:2.5rem; + line-height:2.5rem; + border-right:1px solid #dad9da; +} +.form .title img{ + padding-right:0.83rem; + width:1.25rem; + height:1.25rem; + vertical-align:text-top; +} +.pwd-con{ + border-box:border-box; + font-size:0.83rem; + width:70%; + padding:0 0.5rem; + display:flex; + display:-webkit-flex; + align-items: center; + justify-content:space-between; +} +.confirm { + text-align:center; + background:#e4e4e4; + border: none; +} +.confirm input{ + display:inline-block; + width:100%; +} \ No newline at end of file diff --git a/app-saas-src/gulpFile.js b/app-saas-src/gulpFile.js new file mode 100644 index 0000000..9432f2d --- /dev/null +++ b/app-saas-src/gulpFile.js @@ -0,0 +1,77 @@ +var gulp = require('gulp'); +var gutil = require('gulp-util'); +var watch = require('gulp-watch'); +var uglify = require('gulp-uglify'); +var livereload = require('gulp-livereload'); +var imagemin = require('gulp-imagemin'); +var cleancss = require('gulp-clean-css'); + +var distBase = "../app-saas/widget" + +gulp.task("watch", function () { + + watch("./script/**/*.js", function (e) { + gulp.src(e.path, { base: './script' }) + //.pipe(uglify()) + .pipe(gulp.dest(distBase + "/script")) + }) + + watch("./css/**/*.css", function (e) { + gulp.src(e.path, { base: './css' }) + .pipe(gulp.dest(distBase + "/css")) + }) + + watch("./image/**/*", function (e) { + gulp.src(e.path, { base: './image' }) + .pipe(gulp.dest(distBase + "/image")) + }) + + + watch(["./index.html", "./config.xml"], function (e) { + gulp.src(e.path, { base: './' }) + .pipe(gulp.dest(distBase)) + }) + + watch("./resource/**/*", function (e) { + gulp.src(e.path, { base: './resource' }) + .pipe(gulp.dest(distBase + "/resource")) + }) + + watch("./icon/**/*", function (e) { + gulp.src(e.path, { base: './icon' }) + .pipe(gulp.dest(distBase + "/icon")) + }) + + watch("./html/**/*", function (e) { + gulp.src(e.path, { base: './html' }) + .pipe(gulp.dest(distBase + "/html")) + }) + +}) + +gulp.task("release", function () { + gulp.src("./script/**/*.js", { base: './script' }) + .pipe(uglify()) + .on('error', function (err) { + gutil.log(gutil.colors.red('[Error1]'), err.toString()) + }) + .pipe(gulp.dest(distBase + "/script")) + + gulp.src("./css/**/*.css", { base: "./css" }) + .pipe(gulp.dest(distBase + "/css")) + + gulp.src("./image/**/*", { base: "./image" }) + .pipe(gulp.dest(distBase + "/image")) + + gulp.src(["./index.html", "./config.xml"], { base: './' }) + .pipe(gulp.dest(distBase)) + + gulp.src("./resource/**/*", { base: './resource' }) + .pipe(gulp.dest(distBase + "/resource")) + + gulp.src("./icon/**/*", { base: './icon' }) + .pipe(gulp.dest(distBase + "/icon")) + + gulp.src("./html/**/*", { base: './html' }) + .pipe(gulp.dest(distBase + "/html")) +}) diff --git a/app-saas-src/html/about.html b/app-saas-src/html/about.html new file mode 100644 index 0000000..12d2e42 --- /dev/null +++ b/app-saas-src/html/about.html @@ -0,0 +1,76 @@ + + + + + + + + 关于我们 + + + + + + + +
+
+
+
+
+ 关于我们 +
+
+
+
+ +
+
+
给我评分
+
+
+ +
+
+
+
+ 电话   +
+
+ 010-87927007 +
+
+
+
+ 地址   +
+
+ 北京经济技术开发区经海四路35号院2号楼 +
+
+ +
+   北京电务通能源科技(集团)有限公司坐落于北京经济技术开发区,是一家专业致力于变配电设施智能运维,系统软硬件研发并提供解决方案为一体的国家级高新技术企业。凭借在电力运维、数据传输、移动互联、大数据、云计算等方面的综合优势,已经成为了物联网时代的开拓者。 +
+   电务通以“倡导、链接、共享”为企业经营理念;立足增长快速、收益稳定的能源互联网行业,通过“现代电力运维和数据服务”产业整合者的角色定位,打造全方位的增值服务和大数据服务平台,帮助用户提升经济效益和运行效率,建设全新的用电生态,引领中国能源行业管理创新。 +
+
+ + + + + + + diff --git a/app-saas-src/html/feature/alarmDetail.html b/app-saas-src/html/feature/alarmDetail.html new file mode 100644 index 0000000..ce48529 --- /dev/null +++ b/app-saas-src/html/feature/alarmDetail.html @@ -0,0 +1,55 @@ + + + + + + + + + + + + + +
+
+
+
+
+ 报警详情 +
+
+
+
+
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+ 生成工单 +
+ + + + + + diff --git a/app-saas-src/html/feature/alarmQuery.html b/app-saas-src/html/feature/alarmQuery.html new file mode 100644 index 0000000..4d69293 --- /dev/null +++ b/app-saas-src/html/feature/alarmQuery.html @@ -0,0 +1,103 @@ + + + + + + + + 报警查询 + + + + + + + +
+
+
+
+
+ 报警查询 +
+
+
+
+
+
+
+ + + + +
+
+
+
+
+ + 开始日期 + +
+ +
+ + 结束日期 + +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+ + + + + + + + diff --git a/app-saas-src/html/feature/alarmQueryRightPanel.html b/app-saas-src/html/feature/alarmQueryRightPanel.html new file mode 100644 index 0000000..022a3b5 --- /dev/null +++ b/app-saas-src/html/feature/alarmQueryRightPanel.html @@ -0,0 +1,58 @@ + + + + + + + + 筛选条件 + + + + + + +
+ 位置 +
+ + + + + + + +
+ 全部时效 +
+ + + +
+ 处理状态 +
+ + + + + + +
+ 配电室 +
+ + + +
+
+ + + + + + + + diff --git a/app-saas-src/html/feature/camera.html b/app-saas-src/html/feature/camera.html new file mode 100644 index 0000000..fdb42c6 --- /dev/null +++ b/app-saas-src/html/feature/camera.html @@ -0,0 +1,63 @@ + + + + + + + + title + + + + + + + +
+
+
+
+
+ +
+ 视频监控 +
+
+
+
+
+
+ + + +
+
+
清晰度
+
+ + +
+
摄像头列表
+
+ +
+
+
+ +
+

+
+ 查找不到监控资源 +
+
+ + + + + + + + + diff --git a/app-saas-src/html/feature/circuit.html b/app-saas-src/html/feature/circuit.html new file mode 100644 index 0000000..cd3e419 --- /dev/null +++ b/app-saas-src/html/feature/circuit.html @@ -0,0 +1,59 @@ + + + + + + + + title + + + + + + + +
+
+
+
+
+ +
+ 一次系统图 +
+
+
+
+
+
+ 111 + +
+
+ +
+
+
+
+ +
+
+
+ +
+

+
+ 查找不到一次图 +
+
+ + + + + + + + diff --git a/app-saas-src/html/feature/energy.html b/app-saas-src/html/feature/energy.html new file mode 100644 index 0000000..3e207d8 --- /dev/null +++ b/app-saas-src/html/feature/energy.html @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + +
+
+
+
+ 能耗分析 +
+
+
+
+ + +
+
对比分析
+
分时分析
+
+
+
+ +
选择回路
+
+ +
+ +
+ +
+
+ + 开始日期 + +
+ +
+ + 结束日期 + +
+ +
+ + +
+ + +
+
+
+
+
+
+ +
+
+
+
+ 查找不到数据 +
+
+
+ + +
+
+ +
+ + + + + + + + + + + diff --git a/app-saas-src/html/feature/energyRightPanel.html b/app-saas-src/html/feature/energyRightPanel.html new file mode 100644 index 0000000..4ed8791 --- /dev/null +++ b/app-saas-src/html/feature/energyRightPanel.html @@ -0,0 +1,28 @@ + + + + + + + title + + + + + +
+ +
+ +
+ + +
+ + + + + + + + diff --git a/app-saas-src/html/feature/historyData.html b/app-saas-src/html/feature/historyData.html new file mode 100644 index 0000000..c1f3f40 --- /dev/null +++ b/app-saas-src/html/feature/historyData.html @@ -0,0 +1,139 @@ + + + + + + + + 历史数据 + + + + + + + + +
+ +
+
+
+
+ + + + +
+
+
+
+
+ + 2017-01-16 +
+ +
+ + 2017-03-16 +
+
+ +
+
+
+
+ + +
+ + + +
+ + + +
+

+
+ 没有数据,请重新选择查询条件 +
+
+
+ + + + +
时间
+
+ + + + + + + + + + + +
-
---
+
+
+
+ +
+ + + + + + + +
-
-
+
+
+ + + + + + + + + + + + + +
---
---
+
+ +
+ +
+
+ + + + + + + + + + + + + diff --git a/app-saas-src/html/feature/historyDataRightPanel.html b/app-saas-src/html/feature/historyDataRightPanel.html new file mode 100644 index 0000000..5e4b57a --- /dev/null +++ b/app-saas-src/html/feature/historyDataRightPanel.html @@ -0,0 +1,91 @@ + + + + + + + + 筛选条件 + + + + + + +
+ 位置 +
+ + + + + + +
+ 调度号 +
+ +
+ + + 时间粒度 +
+ + + + + + + +
+ 类型 +
+ +
+ + + + + + + 选择查看类型曲线 +
+ +
+ + + + + +
+ + + + + + + + diff --git a/app-saas-src/html/feature/inspectionArrange.html b/app-saas-src/html/feature/inspectionArrange.html new file mode 100644 index 0000000..f3e8755 --- /dev/null +++ b/app-saas-src/html/feature/inspectionArrange.html @@ -0,0 +1,109 @@ + + + + + + + + title + + + + + + + +
+
+
+
+
+ 巡检安排 +
+
+
+
+
+
+
+ + + + + +
+
+
+
+
+ + 开始日期 + +
+ +
+ + 结束日期 + +
+
+ +
+
+
+
+ +
+
+
+
+
+
+
敦豪配电室等共10个  +
+
共3个设备缺陷
+
+
+
+
2023-11-12
+
+
张三
+
+
+
+
+
+
+
敦豪配电室等共4个  + +
+
共1个设备缺陷
+
+
+
+
2023-11-13
+
+
+
+
+
+
+ +
+ +
+ 新增巡检任务 +
+ + + + + + + + diff --git a/app-saas-src/html/feature/inspectionArrangeCreate.html b/app-saas-src/html/feature/inspectionArrangeCreate.html new file mode 100644 index 0000000..b33c7c0 --- /dev/null +++ b/app-saas-src/html/feature/inspectionArrangeCreate.html @@ -0,0 +1,100 @@ + + + + + + + + title + + + + + + + +
+
+
+
+
+ 新增巡检单 +
+
+
+
+
+
+ 巡检日期: +
+ 2023-11-21 +
+
+ 日期选择 +
+
+
+
+ 巡检人员: +
+ 无 +
+
+ 人员选择 +
+
+ +
+
+
+
已选择0个配电室
+
+ 选择配电室 +
+
+ +
+
+ +
+
+ +
+ +
+ 保存 +
+ + + + + + + + diff --git a/app-saas-src/html/feature/inspectionArrangeCreateRightPanel.html b/app-saas-src/html/feature/inspectionArrangeCreateRightPanel.html new file mode 100644 index 0000000..37cf896 --- /dev/null +++ b/app-saas-src/html/feature/inspectionArrangeCreateRightPanel.html @@ -0,0 +1,126 @@ + + + + + + + + 巡检信息修改 + + + + + + +
+ 巡检日期 +
+
+ 巡检日期 + +
+
+ 巡检人员 +
+ +
+ + + + 配电室 +
+ +
+ + +
+ + + + + + + + diff --git a/app-saas-src/html/feature/inspectionArrangeDetail.html b/app-saas-src/html/feature/inspectionArrangeDetail.html new file mode 100644 index 0000000..1e24c41 --- /dev/null +++ b/app-saas-src/html/feature/inspectionArrangeDetail.html @@ -0,0 +1,84 @@ + + + + + + + + title + + + + + + + +
+
+
+
+
+ 安排详情 +
+
+
+
+
+
+ 巡检日期: +
+ +
+
+
+
+ 巡检人员: +
+ +
+
+ +
+
+
+
+
个配电室
+
+
+ +
+
+ +
+ + + + + + + + + diff --git a/app-saas-src/html/feature/logQuery/inspectArrangement.html b/app-saas-src/html/feature/logQuery/inspectArrangement.html new file mode 100644 index 0000000..f454ba4 --- /dev/null +++ b/app-saas-src/html/feature/logQuery/inspectArrangement.html @@ -0,0 +1,48 @@ + + + + + + + + 巡检安排 + + + + + + +
+
+
+
+
+
+ 巡检安排 +
+
+
+
+
+
+ +
+
+
+ + + + + + + diff --git a/app-saas-src/html/feature/logQuery/inspectBug.html b/app-saas-src/html/feature/logQuery/inspectBug.html new file mode 100644 index 0000000..3272916 --- /dev/null +++ b/app-saas-src/html/feature/logQuery/inspectBug.html @@ -0,0 +1,61 @@ + + + + + + + + 巡检安排 + + + + + + +
+
+
+
+
+
+ 设备缺陷 +
+
+
+
+
+
+
配电室:
+ +
巡检人:
+ +
提交时间:
+ +
问题描述:
+ + + +
+
+ +
+
+
+
+ 查找不到数据 +
+
+
+ +
+ 生成工单 +
+ + + + + + + + diff --git a/app-saas-src/html/feature/logQuery/inspectBugList.html b/app-saas-src/html/feature/logQuery/inspectBugList.html new file mode 100644 index 0000000..0589f05 --- /dev/null +++ b/app-saas-src/html/feature/logQuery/inspectBugList.html @@ -0,0 +1,90 @@ + + + + + + + + 设备缺陷 + + + + + + +
+
+ 配电室选择:全部配电室 +
+
+ + + + +
+
+
+
+
+ + 开始日期 + +
+ +
+ + 结束日期 + +
+
+ +
+
+
+ 共搜索到0条记录 +
+ +
+
+
+
+
+ + +
+ +
+

+
+ 查找不到数据 +
+
+ + + + + + + + + + \ No newline at end of file diff --git a/app-saas-src/html/feature/logQuery/inspectBugListRightPanel.html b/app-saas-src/html/feature/logQuery/inspectBugListRightPanel.html new file mode 100644 index 0000000..78317fe --- /dev/null +++ b/app-saas-src/html/feature/logQuery/inspectBugListRightPanel.html @@ -0,0 +1,33 @@ + + + + + + + + 筛选条件 + + + + + + +
+ 配电室 +
+ +
+
+ + + + + + + + diff --git a/app-saas-src/html/feature/logQuery/inspectLogDetail.html b/app-saas-src/html/feature/logQuery/inspectLogDetail.html new file mode 100644 index 0000000..c113d35 --- /dev/null +++ b/app-saas-src/html/feature/logQuery/inspectLogDetail.html @@ -0,0 +1,78 @@ + + + + + + + title + + + + + +
+
+
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+ 巡检日期: +
+
+ 开始时间: +
+
+ 完成时间: +
+
+ 巡检组长: +
+
+ 日检项目:项 +
+
+ 周检项目:项 +
+
+ 月检项目:项 +
+
+ 复检项目:项 +
+
+ 突发项目:项 +
+
+ 异常项目:项 +
+
+
+
+
+
+ +
+ +
+
+ + + + + + + + diff --git a/app-saas-src/html/feature/logQuery/inspectLogDetailNew.html b/app-saas-src/html/feature/logQuery/inspectLogDetailNew.html new file mode 100644 index 0000000..6e38faa --- /dev/null +++ b/app-saas-src/html/feature/logQuery/inspectLogDetailNew.html @@ -0,0 +1,86 @@ + + + + + + + title + + + + + +
+
+
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+ 完成时间: +
+
+ 天气: +
+
+ 巡检人: +
+
+ 备注: +
+
+
+
+
+
+ +
    + +
+
+
+
+ +
    + +
+
+ +
+
+ + + + + + + + diff --git a/app-saas-src/html/feature/logQuery/inspectLogList.html b/app-saas-src/html/feature/logQuery/inspectLogList.html new file mode 100644 index 0000000..30987ae --- /dev/null +++ b/app-saas-src/html/feature/logQuery/inspectLogList.html @@ -0,0 +1,58 @@ + + + + + + + + 巡检日志 + + + + + + +
+
+
+
+
+
+ + 开始日期 + +
+ +
+ + 结束日期 + +
+
+ +
+
+ +
+ +
+
+
+
+
+

+
+ 查找不到数据 +
+
+ + + + + + + + + + \ No newline at end of file diff --git a/app-saas-src/html/feature/logQuery/inspectLogListNew.html b/app-saas-src/html/feature/logQuery/inspectLogListNew.html new file mode 100644 index 0000000..a1e94c6 --- /dev/null +++ b/app-saas-src/html/feature/logQuery/inspectLogListNew.html @@ -0,0 +1,57 @@ + + + + + + + + 巡检日志新 + + + + + + +
+
+
+
+
+
+ + 开始日期 + +
+ +
+ + 结束日期 + +
+
+ +
+
+
+ +
+
+
+
+
+

+
+ 查找不到数据 +
+
+ + + + + + + + + + \ No newline at end of file diff --git a/app-saas-src/html/feature/logQuery/logQuery-main.html b/app-saas-src/html/feature/logQuery/logQuery-main.html new file mode 100644 index 0000000..d2abd57 --- /dev/null +++ b/app-saas-src/html/feature/logQuery/logQuery-main.html @@ -0,0 +1,33 @@ + + + + + + + title + + + + + +
+ +
+ + + + + + diff --git a/app-saas-src/html/feature/logQuery/logQuery.html b/app-saas-src/html/feature/logQuery/logQuery.html new file mode 100644 index 0000000..81953c7 --- /dev/null +++ b/app-saas-src/html/feature/logQuery/logQuery.html @@ -0,0 +1,62 @@ + + + + + + + title + + + + + + +
+
+
+
+
+
+ 日志查询 +
+
+
+
+
+
+
+
+ +
操作票
+
+
+ +
工作票
+
+
+
+
+ +
巡检日志
+
+ +
+ +
+
+ + + + + + + diff --git a/app-saas-src/html/feature/logQuery/operateTicketDetail.html b/app-saas-src/html/feature/logQuery/operateTicketDetail.html new file mode 100644 index 0000000..9be58db --- /dev/null +++ b/app-saas-src/html/feature/logQuery/operateTicketDetail.html @@ -0,0 +1,33 @@ + + + + + + + 工作票详情 + + + + + +
+ + +
+ + + + + + diff --git a/app-saas-src/html/feature/logQuery/operateTicketDetailFrame.html b/app-saas-src/html/feature/logQuery/operateTicketDetailFrame.html new file mode 100644 index 0000000..3309725 --- /dev/null +++ b/app-saas-src/html/feature/logQuery/operateTicketDetailFrame.html @@ -0,0 +1,25 @@ + + + + + + + 操作票详情 + + + + + +
+
+
+
+
+
+
+ + + + + + diff --git a/app-saas-src/html/feature/logQuery/operateTicketList.html b/app-saas-src/html/feature/logQuery/operateTicketList.html new file mode 100644 index 0000000..14bca74 --- /dev/null +++ b/app-saas-src/html/feature/logQuery/operateTicketList.html @@ -0,0 +1,61 @@ + + + + + + + title + + + + + +
+
+
+
+
+
+ + 开始日期 + +
+ +
+ + 结束日期 + +
+
+ +
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+

+
+ 查找不到数据 +
+
+
+ + + + + + + diff --git a/app-saas-src/html/feature/logQuery/repairLogDetail.html b/app-saas-src/html/feature/logQuery/repairLogDetail.html new file mode 100644 index 0000000..eb74bb1 --- /dev/null +++ b/app-saas-src/html/feature/logQuery/repairLogDetail.html @@ -0,0 +1,159 @@ + + + + + + + title + + + + + +
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+ + 故障信息 +
+
+ +
+
+
+

+
+
+
+
+
+ + 抢修过程 +
+
+ +
+
+
+
+
+
+
+

+

+
+
+ +
+
+
抢修完成
+
+
+
+
+
+

+

+
+
+ +
+
+
开始抢修
+
+
+
+
+
+

+

+
+
+ +
+
+
开始查勘
+
+
+
+
+
+

+

+
+
+
+
+
+
开始报警
+
+
+
+
+
+
+ + 查勘结果 +
+
+ +
+
+
+ +
+ + +
+
+
+
+ + 抢修方案 +
+
+ +
+
+
+
+
+
+
+ + 抢修结果 +
+
+ +
+
+
+
+
+
+
+
+
+
+ + + + + + + diff --git a/app-saas-src/html/feature/logQuery/repairLogList.html b/app-saas-src/html/feature/logQuery/repairLogList.html new file mode 100644 index 0000000..827d5ce --- /dev/null +++ b/app-saas-src/html/feature/logQuery/repairLogList.html @@ -0,0 +1,59 @@ + + + + + + + + title + + + + + + + +
+
+
+
+
+
+ + 开始日期 + +
+ +
+ + 结束日期 + +
+
+ +
+
+ +
+
+
+
+
+ +
+
+

+
+ 查找不到数据 +
+ + + + + + + + + + \ No newline at end of file diff --git a/app-saas-src/html/feature/logQuery/workTicketDetail.html b/app-saas-src/html/feature/logQuery/workTicketDetail.html new file mode 100644 index 0000000..11e82b1 --- /dev/null +++ b/app-saas-src/html/feature/logQuery/workTicketDetail.html @@ -0,0 +1,33 @@ + + + + + + + 工作票详情 + + + + + +
+ + +
+ + + + + + diff --git a/app-saas-src/html/feature/logQuery/workTicketDetailFrame.html b/app-saas-src/html/feature/logQuery/workTicketDetailFrame.html new file mode 100644 index 0000000..e631d20 --- /dev/null +++ b/app-saas-src/html/feature/logQuery/workTicketDetailFrame.html @@ -0,0 +1,25 @@ + + + + + + + 工作票详情 + + + + + +
+
+
+
+
+
+
+ + + + + + diff --git a/app-saas-src/html/feature/logQuery/workTicketList.html b/app-saas-src/html/feature/logQuery/workTicketList.html new file mode 100644 index 0000000..1d29454 --- /dev/null +++ b/app-saas-src/html/feature/logQuery/workTicketList.html @@ -0,0 +1,50 @@ + + + + + + + title + + + + + +
+
+
+
+
+
+ + 开始日期 + +
+ +
+ + 结束日期 + +
+
+ +
+
+
+
+
+
+
+

+
+ 查找不到数据 +
+
+
+ + + + + + + diff --git a/app-saas-src/html/feature/rtData.html b/app-saas-src/html/feature/rtData.html new file mode 100644 index 0000000..db0de9c --- /dev/null +++ b/app-saas-src/html/feature/rtData.html @@ -0,0 +1,99 @@ + + + + + + + + 实时数据 + + + + + + + +
+
+
+
+
+ 实时数据 +
+
+
+
+
+
+
+ + + + +
+
+ + +
+
+ + +
+
+
+
+
+
+ +
+ + + + + + + + + +
用途实时值单位查看曲线
+
+
+ + + + + + +
+
+ + + + + + + + + diff --git a/app-saas-src/html/feature/rtDataRightPanel.html b/app-saas-src/html/feature/rtDataRightPanel.html new file mode 100644 index 0000000..57e2e54 --- /dev/null +++ b/app-saas-src/html/feature/rtDataRightPanel.html @@ -0,0 +1,59 @@ + + + + + + + + 筛选条件 + + + + + + +
+ 类型 +
+ + +
+ 位置 +
+ + + + + + +
+ 调度号 +
+ + +
+ +
+ +
+
+ +
+ + + + + + + diff --git a/app-saas-src/html/feature/statistic.html b/app-saas-src/html/feature/statistic.html new file mode 100644 index 0000000..5862dee --- /dev/null +++ b/app-saas-src/html/feature/statistic.html @@ -0,0 +1,25 @@ + + + + + + + title + + + + +
+ 这里有日志查询 + + + + diff --git a/app-saas-src/html/feature/systemOrder.html b/app-saas-src/html/feature/systemOrder.html new file mode 100644 index 0000000..c9a751e --- /dev/null +++ b/app-saas-src/html/feature/systemOrder.html @@ -0,0 +1,92 @@ + + + + + + + + title + + + + + + + +
+
+
+
+
+ 系统工单 +
+
+
+
+
+
+
+ + + + + +
+
+
+
+
+ + 开始日期 + +
+ +
+ + 结束日期 + +
+
+ +
+
+
+
+
+
+ +
+
+ +
+ +
+ 创建工单 +
+ + + + + + + + diff --git a/app-saas-src/html/feature/systemOrderCreate.html b/app-saas-src/html/feature/systemOrderCreate.html new file mode 100644 index 0000000..ceacc69 --- /dev/null +++ b/app-saas-src/html/feature/systemOrderCreate.html @@ -0,0 +1,93 @@ + + + + + + + + title + + + + + + + +
+
+
+
+ 新建工单 +
+
+
+
+
+
+

配电室选择 *

+
+
+
点击选择配电室
+
+ +
+
+
+ +
+
+
+
+

人员选择

+
+ +
+
+
+

问题描述 *

+
+ +
+
+
+

现场照片

+
+ + + + + +
+
+
+ +
+ 保存 +
+ +
+ +
+ + + + + + + + diff --git a/app-saas-src/html/feature/systemOrderDetail.html b/app-saas-src/html/feature/systemOrderDetail.html new file mode 100644 index 0000000..1b6b0cf --- /dev/null +++ b/app-saas-src/html/feature/systemOrderDetail.html @@ -0,0 +1,98 @@ + + + + + + + title + + + + + +
+
+
+
+ 工单详情 +
+
+
+
+
+
+

配电室

+
+ 配电室 +
+
+
+

创建人

+
+ +
+
+
+

创建时间

+
+ +
+
+
+

问题描述

+
+ +
+
+
+

现场照片

+
+ +
+
+
+

处理人

+
+ +
+
+
+

处理开始时间

+
+ +
+
+
+

处理完成时间

+
+ +
+
+
+

处理结果

+
+ +
+
+
+

处理照片

+
+ +
+
+
+ +
+ 删除工单 +
+ +
+ +
+ + + + + + + diff --git a/app-saas-src/html/feature/systemOrderEdit.html b/app-saas-src/html/feature/systemOrderEdit.html new file mode 100644 index 0000000..ae392a7 --- /dev/null +++ b/app-saas-src/html/feature/systemOrderEdit.html @@ -0,0 +1,80 @@ + + + + + + + title + + + + + +
+
+
+
+ 派单 +
+
+
+
+
+
+

配电室

+
+ 配电室 +
+
+
+

创建人

+
+ +
+
+
+

创建时间

+
+ +
+
+
+

问题描述

+
+ +
+
+
+

现场照片

+
+ +
+
+
+

处理人

+
+ +
+
+
+ +
+ 派单保存 +
+ +
+ +
+ + + + + + + diff --git a/app-saas-src/html/guide.html b/app-saas-src/html/guide.html new file mode 100644 index 0000000..2483569 --- /dev/null +++ b/app-saas-src/html/guide.html @@ -0,0 +1,24 @@ + + + + + + + title + + + + + + + + + \ No newline at end of file diff --git a/app-saas-src/html/index.html b/app-saas-src/html/index.html new file mode 100644 index 0000000..6c037e8 --- /dev/null +++ b/app-saas-src/html/index.html @@ -0,0 +1,24 @@ + + + + + + + title + + + + + index + + + + diff --git a/app-saas-src/html/index/contactFrame.html b/app-saas-src/html/index/contactFrame.html new file mode 100644 index 0000000..b6bfd00 --- /dev/null +++ b/app-saas-src/html/index/contactFrame.html @@ -0,0 +1,45 @@ + + + + + + + + 一键直通 + + + + + + + + +
+
+
+
运营中心
+
+
+
+
+
+
运营中心电话
+
+
+ + +
+
+
+ + + + + + + diff --git a/app-saas-src/html/index/featureFrame.html b/app-saas-src/html/index/featureFrame.html new file mode 100644 index 0000000..112e4b1 --- /dev/null +++ b/app-saas-src/html/index/featureFrame.html @@ -0,0 +1,97 @@ + + + + + + + + 功能 + + + + + + + +
+
+
+
+
+
+ + 实时数据 +
+
+ + 历史数据 +
+
+ + 报警查询 +
+
+
+
+ + 能耗分析 +
+
+ + 日志查询 +
+
+ + 设备缺陷 +
+
+
+ +
+ + 视频监控 +
+ + + + +
+ + 巡检安排 +
+
+ + 系统工单 +
+
+
+
+ +
+
+ +
+
+ + + + + + + + diff --git a/app-saas-src/html/index/index.html b/app-saas-src/html/index/index.html new file mode 100644 index 0000000..941883c --- /dev/null +++ b/app-saas-src/html/index/index.html @@ -0,0 +1,72 @@ + + + + + + + + title + + + + + + + +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+
+ +
+ + + + + + + + + + + + diff --git a/app-saas-src/html/index/inspectionFrame.html b/app-saas-src/html/index/inspectionFrame.html new file mode 100644 index 0000000..fd43de1 --- /dev/null +++ b/app-saas-src/html/index/inspectionFrame.html @@ -0,0 +1,87 @@ + + + + + + + + 巡检 + + + + + + +
+
巡检单
+
巡检任务
+
+ +
+ +
+ +
+ +
+
+
+ + + +
+
+
+ +
+
+
+ +
+

+
+ 查找不到数据 +
+ + + + + + + + + + \ No newline at end of file diff --git a/app-saas-src/html/index/leftPanel.html b/app-saas-src/html/index/leftPanel.html new file mode 100644 index 0000000..d882772 --- /dev/null +++ b/app-saas-src/html/index/leftPanel.html @@ -0,0 +1,92 @@ + + + + + + + title + + + + + +
+
+
+ +
+
+

+
+
+ + + + + + + + + diff --git a/app-saas-src/html/index/messageFrame.html b/app-saas-src/html/index/messageFrame.html new file mode 100644 index 0000000..5bdd05b --- /dev/null +++ b/app-saas-src/html/index/messageFrame.html @@ -0,0 +1,120 @@ + + + + + + + title + + + + + +
+ + +
+
+
+ + + + + +
+
+
+
1
+ + +
+
报表管家
+
+
+
+ + + + +
+
+
+
1
+ + +
+
报警管家
+
+
+
+ + +
+
+
+
0
+ + +
+
操作票助手
+
+
+
+
+
+
+
0
+ +
+
工作票助手
+
+
+
+ +
+
+
+
0
+ +
+
电务小蜜蜂
+
+
+
+
+
+ + + + + + + + + + + + + diff --git a/app-saas-src/html/index/rtAlarmFrame.html b/app-saas-src/html/index/rtAlarmFrame.html new file mode 100644 index 0000000..1670673 --- /dev/null +++ b/app-saas-src/html/index/rtAlarmFrame.html @@ -0,0 +1,69 @@ + + + + + + + title + + + + + +
+
+
+
+
+
0
+
+ 今日总量 次 +
+
+
+
+
+
+
+
0
+
+ 昨日总量 次 +
+
+
+
+
+
+
+ 0 +
+
+ 本月总量 次 +
+
+
+
+
+
+
0
+
+ 上月总量 次 +
+
+
+
+
+
+ +
+
+
+ 没有报警 +
+ + + + + + + diff --git a/app-saas-src/html/index/systemOrderFrame.html b/app-saas-src/html/index/systemOrderFrame.html new file mode 100644 index 0000000..58066b5 --- /dev/null +++ b/app-saas-src/html/index/systemOrderFrame.html @@ -0,0 +1,83 @@ + + + + + + + + 工单 + + + + + + +
+
工单列表
+
我的工单
+
+ +
+ +
+ +
+ +
+
+
+ + + +
+
+
+ +
+
+
+ +
+

+
+ 查找不到工单数据 +
+ + + + + + + + + + \ No newline at end of file diff --git a/app-saas-src/html/inspection/inspectionListDetail.html b/app-saas-src/html/inspection/inspectionListDetail.html new file mode 100644 index 0000000..f86ce3e --- /dev/null +++ b/app-saas-src/html/inspection/inspectionListDetail.html @@ -0,0 +1,130 @@ + + + + + + + + 巡检单详情 + + + + + + + +
+
+
+
+
+ 巡检单详情 +
+
+
+ +
+ +
+
巡检内容
+
设备缺陷
+
+ +
+ +
+
+
+
+ 巡检日期: +
+ 2023-11-21 +
+
+
+
+ 巡检人员: +
+ 无 +
+
+ +
+
+
+
0个配电室
+
+ +
+
+ +
+
+
+
+
+
+ + +
+
+
    + +
+
+
+ 未查询到设备缺陷 +
+
+
+
+ +
+ +
+ + + + + + + + diff --git a/app-saas-src/html/inspection/inspectionPrDetail.html b/app-saas-src/html/inspection/inspectionPrDetail.html new file mode 100644 index 0000000..129d7e9 --- /dev/null +++ b/app-saas-src/html/inspection/inspectionPrDetail.html @@ -0,0 +1,133 @@ + + + + + + + + 巡检配电室详情 + + + + + + + +
+
+
+
+
+ 配电室 +
+
+
+ +
+ +
+
巡检内容
+
设备缺陷
+
+ +
+ +
+ +
+
+
天气选择:
+
+ + + + +
+
+
+
备注:
+
+ +
+
+
+
巡检指导书:
+
    + +
+
+
+ +
+
+
+ +新增设备缺陷 +
+
+
    + +
+
+
+
+
+ 巡检完成 +
+ +
+ +
+
+

+
+ 没有检查项 +
+ + + + + + + + + \ No newline at end of file diff --git a/app-saas-src/html/inspection/inspectionTaskDetail.html b/app-saas-src/html/inspection/inspectionTaskDetail.html new file mode 100644 index 0000000..845e404 --- /dev/null +++ b/app-saas-src/html/inspection/inspectionTaskDetail.html @@ -0,0 +1,138 @@ + + + + + + + + title + + + + + + + +
+
+
+
+
+ 巡检单详情 +
+
+
+
+ +
+
巡检内容
+
设备缺陷
+
+ +
+ +
+
+
+
+ 巡检日期: +
+ +
+
+
+
+ 巡检人员: +
+ +
+
+ +
+
+ +
+
+
个配电室
+
+
+ +
+
+
+
+ 未查询到配电室 +
+
+
+
+
+ + +
+
+
    + +
+
+
+ 未查询到设备缺陷 +
+
+
+
+ +
+ +
+ +
+ 开始巡检 +
+ +
+ 提交 +
+ + + + + + + + diff --git a/app-saas-src/html/inspectionRepair/inspection.html b/app-saas-src/html/inspectionRepair/inspection.html new file mode 100644 index 0000000..2d93918 --- /dev/null +++ b/app-saas-src/html/inspectionRepair/inspection.html @@ -0,0 +1,159 @@ + + + + + + + + 巡检1 + + + + + + + +
+
+
+
+
+ 巡检 +
+
+
+ +
+ +
+
配电室信息
+
巡检日志
+
抢修日志
+
+ +
+ +
+ +
+
+
+ +
+
配电室信息
+
+
+ +
+
+ +
+
+
+ +
+
相关资料
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+ + 开始日期 + +
+ +
+ + 结束日期 + +
+
+ +
+
+ +
+ +
+
+
+
+
+

+
+ 查找不到数据 +
+
+ +
+ +
+
+
+
+
+
+
+ + 开始日期 + +
+ +
+ + 结束日期 + +
+
+ +
+
+ +
+
+
+
+
+ +
+
+

+
+ 查找不到数据 +
+ +
+
+ +
+ 开始巡检 +
+
+ + + + + + + + + \ No newline at end of file diff --git a/app-saas-src/html/inspectionRepair/inspectionItem.html b/app-saas-src/html/inspectionRepair/inspectionItem.html new file mode 100644 index 0000000..ee78ff9 --- /dev/null +++ b/app-saas-src/html/inspectionRepair/inspectionItem.html @@ -0,0 +1,160 @@ + + + + + + + + 巡检 + + + + + + + +
+
+
+
+
+ 配电室 +
+
+
+ +
+
+
日常检查项
+
复查检查项
+
新增检查项
+
+ +
+ +
+
    +
  • +
    + + 变压器 +
    +
      +
    • +
      11设备名称、标志齐全完好1设备名称、标志齐全完好1设备名称、标志齐全完好1设备名称、标志齐全完好1
      +
      + + + + +     + + + + + + + + + + +
      +
    • +
    +
  • +
+
+ +
+
+ + 复查检查项 +
+
    + +
+
+ +
+
+
+ +新增突发检查项 +
+
+
+
    + +
+
+
+
+
+ +
+ 自动勾选剩余项 +
+ +
+ 巡检完成 +
+
+
+
+

+
+ 没有检查项 +
+ + + + + + + + + \ No newline at end of file diff --git a/app-saas-src/html/inspectionRepair/inspectionLogDetail.html b/app-saas-src/html/inspectionRepair/inspectionLogDetail.html new file mode 100644 index 0000000..01bbc30 --- /dev/null +++ b/app-saas-src/html/inspectionRepair/inspectionLogDetail.html @@ -0,0 +1,78 @@ + + + + + + + title + + + + + +
+
+
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+ 巡检日期: +
+
+ 开始时间: +
+
+ 完成时间: +
+
+ 巡检组长: +
+
+ 日检项目:项 +
+
+ 周检项目:项 +
+
+ 月检项目:项 +
+
+ 复检项目:项 +
+
+ 突发项目:项 +
+
+ 异常项目:项 +
+
+
+
+
+
+ +
+ +
+
+ + + + + + + + diff --git a/app-saas-src/html/inspectionRepair/inspectionProblem.html b/app-saas-src/html/inspectionRepair/inspectionProblem.html new file mode 100644 index 0000000..9bdbbf4 --- /dev/null +++ b/app-saas-src/html/inspectionRepair/inspectionProblem.html @@ -0,0 +1,91 @@ + + + + + + + + 设备缺陷 + + + + + + + +
+
+
+
+
+ 异常情况汇报 +
+
+
+ +
+ +
+ +
+
问题等级:
+
+ + +     + + +     + + +
+
+ +
+
问题描述:
+
+ +
+
+ +
+
现场照片:
+
+ + +
+
+ + +
+ +
+ 保存 +
+
+ +
+ +
+ + + + + + + + + \ No newline at end of file diff --git a/app-saas-src/html/inspectionRepair/repair.html b/app-saas-src/html/inspectionRepair/repair.html new file mode 100644 index 0000000..ef88782 --- /dev/null +++ b/app-saas-src/html/inspectionRepair/repair.html @@ -0,0 +1,103 @@ + + + + + + + + 抢修 + + + + + + + +
+
+
+
+
+ 抢修 +
+
+
+ +
+ +
+
任务详情
+
配电室信息
+
+ +
+ +
+
+
抢修方案:
+
+
+
+
问题描述:
+
+
+
+
现场照片:
+
+ +
+ +

10

+
+
+
+
+ +
+ +
+
+
+ +
+
配电室信息
+
+
+ +
+
+ +
+
+
+ +
+
相关资料
+
+
+
+ +
+
+
+
+
+ +
+ 开始抢修 +
+
+ + + + + + + + + \ No newline at end of file diff --git a/app-saas-src/html/inspectionRepair/repairLogDetail.html b/app-saas-src/html/inspectionRepair/repairLogDetail.html new file mode 100644 index 0000000..c780cf8 --- /dev/null +++ b/app-saas-src/html/inspectionRepair/repairLogDetail.html @@ -0,0 +1,159 @@ + + + + + + + title + + + + + +
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+ + 故障信息 +
+
+ +
+
+
+

+
+
+
+
+
+ + 抢修过程 +
+
+ +
+
+
+
+
+
+
+

+

+
+
+ +
+
+
抢修完成
+
+
+
+
+
+

+

+
+
+ +
+
+
开始抢修
+
+
+
+
+
+

+

+
+
+ +
+
+
开始查勘
+
+
+
+
+
+

+

+
+
+
+
+
+
开始报警
+
+
+
+
+
+
+ + 查勘结果 +
+
+ +
+
+
+ +
+ + +
+
+
+
+ + 抢修方案 +
+
+ +
+
+
+
+
+
+
+ + 抢修结果 +
+
+ +
+
+
+
+
+
+
+
+
+
+ + + + + + + diff --git a/app-saas-src/html/inspectionRepair/repairProblem.html b/app-saas-src/html/inspectionRepair/repairProblem.html new file mode 100644 index 0000000..f0f4ffe --- /dev/null +++ b/app-saas-src/html/inspectionRepair/repairProblem.html @@ -0,0 +1,77 @@ + + + + + + + + 设备缺陷 + + + + + + + +
+
+
+
+
+ 抢修任务汇报 +
+
+
+ +
+ +
+ +
+
问题描述:
+
+ +
+
+ +
+
现场照片:
+
+ + +
+
+ + +
+ +
+ 提交 +
+
+ +
+ +
+ + + + + + + + + \ No newline at end of file diff --git a/app-saas-src/html/message/messageList.html b/app-saas-src/html/message/messageList.html new file mode 100644 index 0000000..458a56d --- /dev/null +++ b/app-saas-src/html/message/messageList.html @@ -0,0 +1,34 @@ + + + + + + + title + + + + + +
+
+
+
+
+
+ 消息 +
编辑
+
+
+
+ + + + + + + diff --git a/app-saas-src/html/message/messageListFrame.html b/app-saas-src/html/message/messageListFrame.html new file mode 100644 index 0000000..a228ae7 --- /dev/null +++ b/app-saas-src/html/message/messageListFrame.html @@ -0,0 +1,39 @@ + + + + + + + + + + + +
+
+ +
+ +
+

+
+ 没有消息 +
+
+
+
全选  标为已读
+
删除
+
+ + + + + + + + + + + + + diff --git a/app-saas-src/html/message/news.html b/app-saas-src/html/message/news.html new file mode 100644 index 0000000..500b2df --- /dev/null +++ b/app-saas-src/html/message/news.html @@ -0,0 +1,40 @@ + + + + + + + + 电务小蜜蜂 + + + + + + +
+ + + +
+
+ + + + + + + diff --git a/app-saas-src/html/message/operateTicketCommon.html b/app-saas-src/html/message/operateTicketCommon.html new file mode 100644 index 0000000..87ad12a --- /dev/null +++ b/app-saas-src/html/message/operateTicketCommon.html @@ -0,0 +1,40 @@ + + + + + + + + 操作票助手 + + + + + + +
+ +
+
+ +
+ + + + + + + + + diff --git a/app-saas-src/html/message/workTicketCommon.html b/app-saas-src/html/message/workTicketCommon.html new file mode 100644 index 0000000..38abc5d --- /dev/null +++ b/app-saas-src/html/message/workTicketCommon.html @@ -0,0 +1,40 @@ + + + + + + + + 工作票助手 + + + + + + +
+ +
+
+ +
+ + + + + + + + + diff --git a/app-saas-src/html/report/reportData.html b/app-saas-src/html/report/reportData.html new file mode 100644 index 0000000..cb6fddb --- /dev/null +++ b/app-saas-src/html/report/reportData.html @@ -0,0 +1,96 @@ + + + + + + + + 报表数据 + + + + + + + +
+ +
+
+

+
+ 没有数据 +
+
+
+ +
+ + + + +
时间
+
+ + + + + + + + + + + +
-
---
+
+
+
+ +
+ + + + + + + +
-
-
+
+
+ + + + + + + + + + + + + +
---
---
+
+ +
+ +
+
+ + + + + + + + + diff --git a/app-saas-src/html/report/reportDdhList.html b/app-saas-src/html/report/reportDdhList.html new file mode 100644 index 0000000..3f03a57 --- /dev/null +++ b/app-saas-src/html/report/reportDdhList.html @@ -0,0 +1,33 @@ + + + + + + + + + + + +
+ + +
+ + + + + + + diff --git a/app-saas-src/html/report/reportDdhListFrame.html b/app-saas-src/html/report/reportDdhListFrame.html new file mode 100644 index 0000000..7aaadd6 --- /dev/null +++ b/app-saas-src/html/report/reportDdhListFrame.html @@ -0,0 +1,34 @@ + + + + + + + + + + + +
+ +
+
+
+
+
+ +
+

+
+ 找不到回路 +
+
+ + + + + + + + + diff --git a/app-saas-src/html/report/reportPr.html b/app-saas-src/html/report/reportPr.html new file mode 100644 index 0000000..aa20414 --- /dev/null +++ b/app-saas-src/html/report/reportPr.html @@ -0,0 +1,32 @@ + + + + + + + 配电室 + + + + +
+ + +
+ + + + + + diff --git a/app-saas-src/html/report/reportPrFrame.html b/app-saas-src/html/report/reportPrFrame.html new file mode 100644 index 0000000..7d9f316 --- /dev/null +++ b/app-saas-src/html/report/reportPrFrame.html @@ -0,0 +1,34 @@ + + + + + + + + + + + +
+ +
+
+
+
+
+ +
+

+
+ 找不到配电室 +
+
+ + + + + + + + + diff --git a/app-saas-src/html/report/reportProject.html b/app-saas-src/html/report/reportProject.html new file mode 100644 index 0000000..b69b173 --- /dev/null +++ b/app-saas-src/html/report/reportProject.html @@ -0,0 +1,32 @@ + + + + + + + 项目 + + + + +
+ + +
+ + + + + + diff --git a/app-saas-src/html/report/reportProjectFrame.html b/app-saas-src/html/report/reportProjectFrame.html new file mode 100644 index 0000000..bdc33b5 --- /dev/null +++ b/app-saas-src/html/report/reportProjectFrame.html @@ -0,0 +1,31 @@ + + + + + + + + + + + +
+
+ +
+ +
+

+
+ 没有项目 +
+
+ + + + + + + + + diff --git a/app-saas-src/html/rtAlarm/rtAlarmList.html b/app-saas-src/html/rtAlarm/rtAlarmList.html new file mode 100644 index 0000000..2483569 --- /dev/null +++ b/app-saas-src/html/rtAlarm/rtAlarmList.html @@ -0,0 +1,24 @@ + + + + + + + title + + + + + + + + + \ No newline at end of file diff --git a/app-saas-src/html/systemOrder/systemOrderDetail.html b/app-saas-src/html/systemOrder/systemOrderDetail.html new file mode 100644 index 0000000..21952b1 --- /dev/null +++ b/app-saas-src/html/systemOrder/systemOrderDetail.html @@ -0,0 +1,94 @@ + + + + + + + title + + + + + +
+
+
+
+ 工单详情 +
+
+
+
+
+
+

配电室

+
+ 配电室 +
+
+
+

创建人

+
+ +
+
+
+

创建时间

+
+ +
+
+
+

问题描述

+
+ +
+
+
+

现场照片

+
+ +
+
+
+

处理人

+
+ +
+
+
+

处理开始时间

+
+ +
+
+
+

处理完成时间

+
+ +
+
+
+

处理结果

+
+ +
+
+
+

处理照片

+
+ +
+
+
+ +
+ +
+ + + + + + + diff --git a/app-saas-src/html/systemOrder/systemOrderEdit.html b/app-saas-src/html/systemOrder/systemOrderEdit.html new file mode 100644 index 0000000..7acbf73 --- /dev/null +++ b/app-saas-src/html/systemOrder/systemOrderEdit.html @@ -0,0 +1,145 @@ + + + + + + + title + + + + + + +
+
+
+
+ 工单处理 +
+
+
+ +
+ +
+
工单详情
+
设备缺陷
+
+
+ +
+ +
+
+

配电室

+
+ 配电室 +
+
+
+

创建人

+
+ +
+
+
+

创建时间

+
+ +
+
+
+

问题描述

+
+ +
+
+
+

现场照片

+
+ +
+
+
+

*处理结果

+
+ +
+
+
+

处理照片

+
+ + + + + + +
+
+
+ +
+
+
+ +新增设备缺陷 +
+
+
    + +
+
+
+
+ 开始处理 +
+
+ 处理完成 +
+ +
+ +
+ + + + + + + diff --git a/app-saas-src/html/user/findPassWord.html b/app-saas-src/html/user/findPassWord.html new file mode 100644 index 0000000..d5f1c53 --- /dev/null +++ b/app-saas-src/html/user/findPassWord.html @@ -0,0 +1,50 @@ + + + + + + + 找回密码 + + + + + + +
+
+
+
+
+ 找回密码 +
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+ + + + + diff --git a/app-saas-src/html/user/login.html b/app-saas-src/html/user/login.html new file mode 100644 index 0000000..ff70ff4 --- /dev/null +++ b/app-saas-src/html/user/login.html @@ -0,0 +1,79 @@ + + + + + + + login + + + + + + +
+
+ +
+
+
+ +
+
+ 密码   +
+
+ +
+
+
+
+
+ +
+
+ + 记住密码 +
+
+ 忘记密码? +
+
+ +
+
+ +
+
+
+
+ +
登录即代表阅读并同意服务条款
+
+ +
+
+
+ + + + + + diff --git a/app-saas-src/html/user/protocol.html b/app-saas-src/html/user/protocol.html new file mode 100644 index 0000000..2f8b0df --- /dev/null +++ b/app-saas-src/html/user/protocol.html @@ -0,0 +1,62 @@ + + + + + + + + 服务条款 + + + + + + +
+
+
+
+
+ 电务通App服务条款 +
+
+
+
+
+
+ 电务通App平台涉及的产品、相关软件的所有权运作权归北京电务通能源科技(集团)有限公司所有,用户注册时,勾选“我已经阅读并同意以下条款,提交注册信息”,即表示用户与北京电务通能源科技(集团)有限公司已达成协议,自愿接受本服务条款的所有内容和相关使用流程。 + 一、定义 + “电务通App平台,是所有用户运营的变配电设施智能运维服务系统,通过移动App能够实时了解和关注配电室设备的一切运行状态,在一定范围内对所有安装了智能配件的设施统一控制的应用平台。该平台支持IOS、Android操作系统。 + 二、用户账户的安全性 + 1.用户一旦注册成功,成为电务通App平台的用户,将得到一个用户名和密码,并有权利使用自己的用户名及密码随时登陆电务通App平台。 + 2.用户对用户名和密码的安全负全部责任,同时对以其用户名进行的所有活动和事件负全责。 + 3.用户不得以任何形式擅自转让或授权他人使用自己的电务通App平台用户名。 + 4.如果用户泄漏了密码,不管任何原因导致用户的密码安全受到威胁,应该立即和电务通客服人员取得联系,否则后果自负。 + 三、所有权 + 电务通保留对以下各项内容、信息完全的、不可分割的所有权及知识产权: + 1.电务通App平台及其所有元素,包括所有内容、数据、技术、软件、代码、图像、界面以及与其相关的任何内容; + 2.用户信息; + 3.用户向电务通App平台提供的与该平台服务相关的任何信息及反馈。 + 四、承诺与保证 + 1.用户有义务在注册时提供自己的真实资料,并保证诸如电子邮件地址、联系电话、联系地址等内容的有效性及安全性,保证电务通App平台工作人员可以通过上述联系方式与用户取得联系。同时,用户也有义务在相关资料实际变更时及时更新有关注册资料。 + 2.用户通过电务通App平台发布的任何信息不得违反国家相关法律制度。 + 五、 电务通App平台提供的服务内容 + 1.电务通App平台仅供用户对变配电室的控制及信息交流; + 2.电务通App平台有权随时审核或者删除用户发布的涉嫌违法,或违反社会主义精神文明,或者被电务通App平台认为不妥当信息交流、广告信息。 + 六、特别说明 + 电务通App平台所有使用的系统、信息技术、软件程序、相关文件和源代码等数据均为北京电务通能源科技(集团)有限公司独立研究开发所得,任何人未经许可和同意不得擅自引用本公司产品、商标LOGO、文字描述的任何相关图文资料,违者必究。 + 七、 隐私声明 + 1.电务通App平台不会向任何人出售或出借用户的个人信息,除非事先得到用户的许可。 + 2.电务通App平台亦不允许任何第三方以任何手段收集、编辑、出售或者无偿传播用户的个人信息。任何用户如从事上述活动,一经发现,电务通App平台有权立即终止与该用户的服务协议,查封其账号,并追究其刑事责任。 +
+ 以上条款的解释权归北京电务通能源科技(集团)有限公司最终所有。 +
+
+
+ + + + + + diff --git a/app-saas-src/html/user/resetPassword.html b/app-saas-src/html/user/resetPassword.html new file mode 100644 index 0000000..a1a2521 --- /dev/null +++ b/app-saas-src/html/user/resetPassword.html @@ -0,0 +1,43 @@ + + + + + + + 重置密码 + + + + + +
+
+
+
+
+ 重置密码 +
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+ + + + diff --git a/app-saas-src/html/user/updatePassword.html b/app-saas-src/html/user/updatePassword.html new file mode 100644 index 0000000..a2514bc --- /dev/null +++ b/app-saas-src/html/user/updatePassword.html @@ -0,0 +1,70 @@ + + + + + + + title + + + + + +
+
+
+
+
+ 修改密码 +
+
+
+
+
+
+
+
+ + 原密码 +
+
+ +
+ +
+
+
+
+
+ + 新密码 +
+
+ +
+ +
+
+
+
+
+ + 确认密码 +
+
+ +
+ +
+
+
+
+ +
+
+
+ + + + + diff --git a/app-saas-src/icon/icon150x150.png b/app-saas-src/icon/icon150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..c947fea524df62dd342b1c63216c9e730c64b197 GIT binary patch literal 4904 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 literal 0 HcmV?d00001 diff --git a/app-saas-src/image/about.svg b/app-saas-src/image/about.svg new file mode 100644 index 0000000..b589703 --- /dev/null +++ b/app-saas-src/image/about.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + diff --git a/app-saas-src/image/add.png b/app-saas-src/image/add.png new file mode 100644 index 0000000000000000000000000000000000000000..81cb5e734507e4b91aea23ae81be26dfcd60e0c7 GIT binary patch literal 3830 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 N002ovPDHLkV1io4QoH~F literal 0 HcmV?d00001 diff --git a/app-saas-src/image/album.png b/app-saas-src/image/album.png new file mode 100644 index 0000000000000000000000000000000000000000..d88d65aa09dfec00e83884cd995de8686c08999e GIT binary patch literal 5324 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 UU0V3e+kxM(R-;GiRoR|@0g$#xQ~&?~ literal 0 HcmV?d00001 diff --git a/app-saas-src/image/arrow-right.png b/app-saas-src/image/arrow-right.png new file mode 100644 index 0000000000000000000000000000000000000000..4056b0378037086c19ab6266c4e6f38ee8ff32c5 GIT binary patch literal 1172 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e}ku19MjwQzv6HLlZ+oS91#sM@J`POLHRw zXCq@{OG}tum;B_?+|;}hnBEkGUT2(oK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C~K; zJgD9j+-`BisaGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4)xweiYT1_nk>PZ!6K zid%1{+j1W=5NNAb+GVkGr-jAKB@3GE57fU?c;sGsF>e<~Q^(}yrYq)?97JZfm!3hOOOSE^X4tdpxQ)Rucz lc`q&QgbZr6-*tqVhE14ad>dPZ0q!34ZOS$e!t)UOZKU(%7qXg-E1TMl7URC`C+(ext3AP)2GR_y^Yav=~I zF{E>R1hhpNUgRUY`JEul@dC>UEH8xku*5|rUIdFDO`^F*uas807GsfJjPAqOkyy4= zDlsL2L2iNNqtPhKh1qa8L=Yiw(8gLhWP2?&1qFJ#YdY9OHt-d-JQ~0;nq<0Ag5@m9 z+TLQDNW<8&=CC}&`6bnWs``JZWi6pSoQ8k${im>(8FV0AqU7Z*nZfw4OH@W%)?bxO4=UQY#k<*7)=Bi(=?<`IUW{;s3Jsm z@8bDHTRh$ti6?}Jkl@8GQS7R56{HVX(8e{c@rO&$b-2D0EQdr^plcq7Mwg2$Fki7` z*3YH0uHGWosGo~mm&=l5SpQ!Cy64&vF^|7oaxK{``5xND>@IP2W$gPS@*>8PN<35k zkk93EvumEWrfyuGotx`ucyj&Hr7!f<{h67WCh%$Rijm@-;o&#htzVPGcUyC(CMG7p z_0iS?H`leicsM;hO*d_3;ul9hpBY`>eRp&!ILTek%FWHqKXf5@@6_qw)sc}sXJ2zS z0=GAvpLtuYRvVA}{2Hhr#J+qtna}52$H&JX4^5e-d1$uUG@LZ9ef+j985nX3g+exw fNCfz!%a#YJlUKH{eQ{yxz5kYziIno7GdJ`b4aaBp literal 0 HcmV?d00001 diff --git a/app-saas-src/image/avatar.png b/app-saas-src/image/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..91fcd59f3fe3caababe9faeaa6b727cc2f464090 GIT binary patch literal 1934 zcmaJ?c~ld39v_M*H*&Q?5GE1JAtae36fzJoWJ16u6ap2*qf9abL`Y_m3?YPScR?*^ z)fNhsLf3^>YwJ-!p7DUE9Is-P?9#OeQoDkcR~0R~+M-3e6BWCEES>jee#iTKKHux} z-c+Zj$vj*GT>${_NKHYM^crP4~r$7~6pwWp~Kc7Cs0yUV3 zl^vttDo6=ls7bLH@JvfumfBLJ7GkW#m0*GyrUkS(g@R^nvCasaMXaZ~Fuk{5b6DV0 z2vsCvJxeM_kq$}-0}jTpW1`huNC3tP*-#85h=Za)9v9+sxO@)8kA`?KR|rEf;PZz? zM>Amguo6jr9*aJSScMct!W>R%X(_vu&n65797re>a=1JWj~7iNqK#!b3N=UTjLYT} z5ZtIXXh=#!=s>$7sv=4#5sS|BSqWP5g{;o_yiIh&IA)aOKy0qPq&c8M@#j#j_66EV zDe*t@{lCJ-tTGbkC~+fEVo=kA%U@;>MZyvTj#7jniy(^Ux|m)_P=v9NAVG-)4A0i+ zFrw5L@f5C5z^OVTh3eFJDk5Uh0&I;2gI|M^#r$LemoMfDAxIjV6w4Qj1+ij2A`}RO z66qWlA=D*WTu04uu|K%byj;5zv?LuF!3`P{jwKriE%>xzSTk=feCfP;&$-yVx$u+c z<#Om`IQF^z&z$G3X!F>&FI-C>Uico@(PlT$t`5jl3<1Cb$5cd|WxjH$VMB_4#^Q6A z8}mXc0{?nLauD${N&BmAbtg$)cd0q-EbU(B-IbLOF4)%Phhfsdl#FK4L&f&y%}bh@ z*m6I74OTCXz~B1#igw}b&YdM)M%&#;kC~}c@kZO^-6rG2MHguDJf(`5@-gbQfp@)p zLaMS6hJH^WXeo(zA8c(v4!`PJO|d>S%Q}4S^p%e@#+WTrfD6L&R=D@xtnFK_>L*jD z$L?2q_Pmks>W+JB_VeBiX9hR#x{Npk+cFwtf=_E1&JL&Bs}4#V2b?2hnA_kRouTdP zrwtbde*xM?(j+qtyT?7Ue8;wz_f$S`e+=)|w@em$1P<@dJ6Cx@HtDo-eeE}<2WvmQ z)$u5QbJCL_`MNDrPJ4g1ie;=vt-=F7$F^Jqy0J*T!(&C?LOFf_8O!yh*geUQ4_Fsw zK2ZJTO}D^L{e9GVG|%Ar_=mQMk^J{^&I2pXv09Uumw0)Z>=_HEs(#gf zIs)R?_H;jN4F7Jg_iD5eY`Q-)b?2)a_1Ud3`gvWSY~Txa(DAyYC%31fFIn^+e+!ik zr@WGZtA99>#PC`B(!bk}yi)W5BPG<;!|w`tVzCx+c{pM%8uHVp$L(tCYdI!ocowwm z%4weU#7ew_LwP|V+1tK$oMvcx$NDq0PPMu39m_JA1MZKQn)R`Rvd|GS&SeE^O+T{~ z+BYt~HT>l;>R4m`Bw@&Lv~h>YYe4#0ZFr`@w#t1%6W6q8)LnX-H@)fYupI*UXqctS z?9^x;zEt$UT06bznkH5wSX_BxT$|RiD$)DYhSoRz)9yYo{i5s~k@xa0+)mde7Df`E|uMbW{0`<2GNulZm*P05i6${SiaPz?i@Oh$J5OGBHI}59`!F z*|zTy*8Eto?}h>iv|WfgZ0YnJd3jZVYuh>HF}J-N>w8C(18~#ouA?t)u1j&BtvmbC zLBX~6gOGhrHDMjP55B!u?a8>lV#fa;%scY>m$^e~^6GaH0Yb2I-Ik;Tw>6$z>!YU6 zXU_^=%V-AF;kU>l%ATj|b@d9mCcizA-fZ`}v#qA`9aqbs+(t zo$|J9RR5TMz(!7_=eI$I@XXsok=U=pD?D9njva$&cyRg2ves$0hCD&=rj_6JF|mU6 zi#t`}!BJNR&Q>hF>e+m%S7v>CZ@ + + + + + + + + + + + + + + + diff --git a/app-saas-src/image/back.png b/app-saas-src/image/back.png new file mode 100644 index 0000000000000000000000000000000000000000..156739a4e7e0388deb6a2edbb992725fe60a39fa GIT binary patch literal 1316 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 literal 0 HcmV?d00001 diff --git a/app-saas-src/image/black-pr-icon.png b/app-saas-src/image/black-pr-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e07c6fb2aba779757e22390ac0492c3b41554355 GIT binary patch literal 1564 zcmeAS@N?(olHy`uVBq!ia0vp^+CZ$%!3HF!&EL2iNJ*BsMwA5Srr5%(GQ`zk9!uLS~AsQn;zFfp39xYDT62(s|s5su(?)1Hb_`sNdc^+B->UA;;0DU00rm#qErP_JyYFe149!9b4xu# zQ$rIALmdSp14Cnd17m$dV_icdD+5a_LsJDPPy*Ukl#*r@4I)Vc}?OVrFV+=xT21;%e#S>}Kd@ zY-ncT;%EZX>yn>bnwy$e0@Is<(CdU#FDNDC765H_NiE7OOHFYr%Fk5*``9WIw_7Z5 zng`XJg4->YIQ8lS9itD5SEP7`2>}xihzU=%Kn^_Jr{)0@dl4{IuV(XYV_;yK=;`7Z zQgQ3b41bT1K#^nVJ}x3Aj^dLN+TL!u!@1Q{xQk=C>(0&<3gWG6O=7;LPkgjYC4l?a zb`L{GC818Ir5s9*FXpRebvxY^SrjI%c=7!u@jZ|3S-;;`et+)AW_cdt_h)O0-|c)p z=Xa9f?o&*)4|Fy9mToLMApC*r4%7UD+e%Dk@y9hSH_^Sq_Uu4kiBS~Gy#~f*jp5G^ zng>kfbMrnRvV+-7b6qAw_X4%4Zrht93q+4hj)~^4YuFVcahG*pGdJ6J83y} zH>h5acyRCTp6_$G7ys6ENmn<&dsL%WZtINlrw_DWe3*t2f4YsvWfTRW%F~ zHV+or8g%7F;fH{r#l5AhXPUb@cHb{Hc=NK(O{nt9$$xS0GS*43BriDdzc}GcE=0jQUOYY*6D+6So2n0VplyT!kSNcZhb?0pyzgmm3Z{c0cn;N#< kNbl<`=e`#_Yq<>=CPFVdQ&MBb@0EcQ+c>n+a literal 0 HcmV?d00001 diff --git a/app-saas-src/image/camera.png b/app-saas-src/image/camera.png new file mode 100644 index 0000000000000000000000000000000000000000..d719092dcffab01791c111462f1ed57a2774e702 GIT binary patch literal 6498 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 literal 0 HcmV?d00001 diff --git a/app-saas-src/image/chang-pwd.svg b/app-saas-src/image/chang-pwd.svg new file mode 100644 index 0000000..9bf1964 --- /dev/null +++ b/app-saas-src/image/chang-pwd.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/app-saas-src/image/clear.png b/app-saas-src/image/clear.png new file mode 100644 index 0000000000000000000000000000000000000000..0476ede8cb4b5227f4e4de4ef0b425cb95ac07af GIT binary patch literal 1378 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e~+tb4yc8GdE*116M;sS91$DBV!jMb2DdG zBS&*f3qzP*m;B_?+|;}hnBEk)UULJSdO;~6w*Y9fOKMSOS!#+~QGTuh*vD3xxZUD{ z(>$o&6r64`bH%AwALtl;P`o0=GfW7WctA{ess(c3={_|NnAnSesk*6VVmJc><8@CL z$B>F!Nq_$Tw?7=fu+!m>aL50}59bG1&T72v@P_{gQ^pN>Eq9Xy#fwQ{3UwSuQ-VokeJULxrG#z2c>f-i<#@ zXU)(Ma2H+~&(`r+Vu5NugRHY;%Ju&jLu`#U32U@ob5{OqB=CRnLiN&xqGz%v9JRYp zBg1&4DI!ZQi&0UbjPX%xfc3)%Y67<}7?j*?{9&{0*AHcZ&&sQ7cKSz)d2litDocv} zWql<6$S*wJ@n@2PGG`RemMbzIs)4V37g&CEI33S0bJ7Vh<>jyVGgN0-?O6NygZlNy z;`=Q-w!SzpQ~ywg(7PFh)*wpuP{g-O-y_cM}Cmfn|eN|^^zwX7O%BSVo z?(X5($Qkp0I^f##Lu`2BIaPDR<_!%MGk-w1D*7QKQ#$T3MM-6IpIHxik|NKc-ex1dP z0_#6a$F84`|35Q+&)>ssIk)=f|DW;yPhx_TID2FH{C}I8j{N`o_y4-mcdNw%jQ2Bs x)X&k=W`A@)Vwd`rL+ulFlVw);Njo$!GTc6~{G$AQhj>t_=jrO_vd$@?2>@Yn^KSqE literal 0 HcmV?d00001 diff --git a/app-saas-src/image/clear.svg b/app-saas-src/image/clear.svg new file mode 100644 index 0000000..b10e249 --- /dev/null +++ b/app-saas-src/image/clear.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-saas-src/image/close.png b/app-saas-src/image/close.png new file mode 100644 index 0000000000000000000000000000000000000000..d505145ffd3050c5c0ca5ed7f98e4631bb782bb7 GIT binary patch literal 10009 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 literal 0 HcmV?d00001 diff --git a/app-saas-src/image/contact-active.png b/app-saas-src/image/contact-active.png new file mode 100644 index 0000000000000000000000000000000000000000..312f554dbca5704edf73b684ec7d6ee224841833 GIT binary patch literal 1514 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26f0)~V>5F%OLJorb0UI2$*<4On9mVa^UGcH4m8Bi-4(GaAH|F0|QgMr;B4q z#jQ6pygfo4C63$LO>j^;C9c;K78c&((e1+Y{?J^GR;SWJ#X#K{j>OfsJcPo$IwKT1 zb_E!4L@nX=)jSx*qM0>YOjku$zT}`o$;G$d52_Sd9DlZ=T;>tqpC9Lv&&~W_WBmE- z;m)H;o@UFRsGJUVdQh)#5Nf{ou|@QC`(sW;#ga+|jGGc=?G9^KOcS0Lee-4gu4dy6 z?1Iz#EBW~!>b5+T5OFXTIV}Du_AWoa)h<&({-76ydiDntOdc)uo$nQr!1h3{((3yo z$J|Em$E_#5?x?hyWmH7jSn@r6@;_ryXLd;Ny^AN;xY#y{1uy;~Rr14hwSQK-(Vm&< zP7f+2K4zQ}uxYj8*LO3V{~+ehVIECxvDimTnifx3{cdqb)yrRb58wZ;s4ieOiaF1> zn@j)G55IjsQ=J}|OkwMpnW?4cH(THbQy$x&{b$U)O@8-qHl9!2c0gOu_kC)Tob%*~ z2F>D2+avkYCGf>a^Rig5oY;9)ftg9nqD6ZGrsM@r~Jrd z`tq7hHSOL{s?$q$J{8jZSRlC2-R9oe*_m6!UNUXJvOp@xOg8U;nyvY%@hqr+`awK@z8PUGr89vN3H&Lv|~!$_0-?T_QvI!zZF^W zO=VNhudKHh*_FZ#r*24ldy_}$xk30N+ezO`Dq2ol-}U + + + + + + + + + diff --git a/app-saas-src/image/contact-normal.png b/app-saas-src/image/contact-normal.png new file mode 100644 index 0000000000000000000000000000000000000000..b02cacf590012a6b1fa8ece1d6251fc224815753 GIT binary patch literal 1575 zcmaJ>dr;GM9M7;rEbd6qVX3Qa;9ZE-ghK?TqE zx;sz7fqHXnD9YxpKhKj+l2V$eqCNq|< zP8f^Dp5#y-!%!Fu+wFF~UC1ZtTo{$fWH2It1p*$6;Ms}@#^B%)wz=a9YTRa|EfixR z3DBcx$RXD@ZL;%11mUjRSSM|A$(w6KETgj=#?LKZR|X zMHCLF<2G_FZDa>$p6dxkVJaFoFeIHxk_F>k)aQ{5Y0D!iP^AK+vMhv&wA-Rb;W{0r zC2Wj=FydOZ9AX9d7K;f}Xhg9xjY29ENtGz7kt&rci6%j%76}CsR3JjfxoXn5)`}C% zIM?)=8#^i2;{+?kMpomrWgTuxph+t@S}|ssJQwk#dShJEy>^@a+`=@EP=9Xzi&D?8TXU?);=0}}=3Vhyi z?3p)lkvMk#-OHN#7aK>6E4+^&{<+mFpCnez;Je>x@OvyA7`}3*X3?Wc#II$~!S4&h z``t(g2hwvcCYSH&SkYW^rFE9mb>k_t?7>P-L5b|wL*L^1qba#K+6<3<+b(; zVCz6o&*p^Cwo?t$4k_!nPJ`eaN^DF$?7Qz~@*yJo zJz;g&%lrEW8#&VJLy?1v`xxns!)`^_xAU<0qr1H6D0C$99-dq`m=?Ne2+`;T^-C|$ zFs|7(v{G}nWYn!#}Br)U*DZ1 sjy_%&bK`@yAB<kC7Ovg*(D?0a;$+ + + + + + + + + + + diff --git a/app-saas-src/image/drop-down.png b/app-saas-src/image/drop-down.png new file mode 100644 index 0000000000000000000000000000000000000000..214dd8226182179057ab010ac3928ab37859881a GIT binary patch literal 1089 zcmaJ=T}TvB7#&EomW;v(3aM$NGHT~{r*$Sb)0s6FT#9?_S9QJMg)=-SwW#xL{tymQP+BC8@O|SIOlxl`|fwoH#hAo z4QvPy1W_7mP!o9G=#S;a_`jPSzJaIpD4IeoupMPI7Z9}uYy)J>(mFr_Xh!d`N1&P@ zmTfkZDU^yg$~v@Y&BxGL%fW1dsIJL6n%)Tz*#XJd#>>;bOG8V7^(#WjUWqWcqLe1;Scp5+9F6&Owka=gq+GAELYABCg2M!TF)>lb6;U4%*_+ z*7g?5gbT)GHHYD7)=w!9jK}{EwX7wyhZ5kA-+u~w$zBIA3E;tQSH~CEUg3vwWW@y< zf^HJRu6z}n(-1)~4INTZ$jSqzZNQATeI6c<%Q4$SnyrJF8lkWNZJLIxh+&~Vq=bZB z(J;qF!;)CVDv}fmS1FPZ6}dcDg?hIIY?S93f4E{nuHOlkgCncJHG6}Xu0~Ugc#NC)$o6NrW zI5{3T&8{q-o>?=a9sXASWu%;c-uWJkU3oV?cjwKu>syCP25*Nx>&`YN(^?G+nk0_53VZ)i^mkcWd>ho2^r)wtO$XJW>9u zyw00mJ3291m!?P0wH$xRechD1cqF}Q=*3T?_2AaVZtro4Ffw~7vZE+>^7CPSpueJw rNX+e?Inz7v;73E{P;TPw!wbYRVzB7y)Z{v1%74_cXp=fzceMXEqyTII literal 0 HcmV?d00001 diff --git a/app-saas-src/image/empty-tips.png b/app-saas-src/image/empty-tips.png new file mode 100644 index 0000000000000000000000000000000000000000..32b75f6aef1aebbe3334d81a35aa4ae9c31ae860 GIT binary patch literal 13385 zcmaL81yoz#(l?9~T#HM9K%qE<;ueByfntTC!HPQ+cW7~1w1wc>7T2OhgS(VcDDGMu z-td3!z0dcp_1>2iR?azVX7=noznMKV`y@t7Ly-WN1{Vbdg+N&es*Qqz3Pk?n0_}9e_!oprA9^=^A(#sH=%t zIy>^1Khp5{IJzLYQBWkLeO$~f-@rV87BCw-CrReRmUd>Kos}fBzK}Yfx{Dml)=tUK z4W{F#p=;^)#!}RZSy~Dx;Uk6=;0W_D2l_ZVIJt}YNHYH;R}6Xm_?VX&_z#K48%gH> zQOZDF3n=I81_KK52yt8T@q>ZFqCEUU{9qA&E}#G(zaTH4ATPflH@|=wpQsqW5b$4r z%*fH)tgOYfp$h*R3wbBWZ0q6SBF4+>?d{FuEy&~SX2Z)bDk{p$C%`Kpz>TEfcK3Di zF!$kha%cIs1Srhi(#_7r!_L_W_$blb!r9Y9k{PM#|4hNr!r_ z<$XkgqYH9mD9p{y3udL@=IjXkXU1Z7|6Ld1|0?fayjK5R7m@$U%ZpTo_tCEZA3Oj1 z5fVI)m;XU6^5#FdhdCj^?uJBleOf0s3JPDFGE`RAXJO9-yOI3-{JRHnAt2fUgM@^D z>V?+00WoK&35z}W2Mr!uFO5)A2{bNq&N7Zl_5Has6Kab>K50)VbMLP$ZD{P&gXGnx z;a8FKe}5gk6>r(}U%vbMy;QtL+{U>*PVbAcT_|vhmqy55_rUB)k)D}*nPx(Uy| z#MaWglV&1jpe!-!bdvwyv$U$Do)!@t$+S1iMc2;&p^4Z774ihd2?)fL+ei2F0sabP%ZMG`_)7b4674A*U|3VO@{so!a{LE)xKHSO24{7>?ZZNo1oht?uuP43mUUE zz7O_VL!7cbv6Be}u5}&oBNjxiDptPkHgkE+FUHvT!Lgkx-f{vUgl8MODLhe4dxsOF zI5zP1dN1Fv&(~N8l!(Lq$EMeLo@TIE&Qt<%rg0~NF=YEA>Uo5%3@$z)*qq|e$sg6i z?XYZ<=x)}n-34Trg#uI2fI0Lgy)8xPBbRUlN*V*tr>1+TsW8IS)I(=~xHUuF+(*_H z_^GoVK^>%0}QAGE~X#=}^qJgd)%jIMUvis_I%%^9XCSq%I>nv%~oeu5-Mj$lO z@Nlw3GELPW(LTtGYhUe4Rg=$NP2=nQPxGJ1voW@gAM@P3sk+f0d!HT7K!%C~f#CEH z6m!=lRJuFFT6Lskhri|~y#kJIGNj$@_^^`~y(Uh}Wq(==OqD(u3iC&?;%Z+D_iR)B zq+R*RU(5d3hom3-vJUaml@lrxs@3blEW0!zJ6H#(uwDZzMHFFy774Mh9asQ7;e)y!Wo`X37;^(gt1ylYQYD zXI=3NWI;~L3PtKu^TrPSI@C)6bus_w?1r_qC`W9dGUZw^COTBBZR@k;-BTW-7XSU~ zDufx{^!5wm9ne{q*xPuD+8J0|MXt>49?BSYPrg(v+M{U+EYF@tm>-KmV3;z~n8P^V?Wi(Ep1zSMLWAN=!RU4F`#N?MMh65vINV9g#yT5Ggd`J(vM&&>k& z)Cb8NBi-h&b{U9Go)jgO7abE2TgHNObk*`~N+e#cR;Bq7Qk>r|&%kMl6Zg^~h4fdp z#>QTKvqZ!F5VJipop* z$Og}JvISpcTwu3Ml=z&$_1f^=pIpbj6^eyo8XOL?*K50z8eCL8VZWr7m=|Txcei(K z3V9uz;>4OdUfdNT#Ip!9{O?uCC|a{uBy2=+>KQxc%fA+#8P&S1JVWSL)b?7M zW=penHxZIPs*z>RXEQ}c|KzT{(HXu_tz{Y`hHqli6r#$XBdyFXEVf^>nEyI-4n zM?_C6ru8IFcW&*d|IQmD{c1g73mWUVM14qc(ONF5&h#1u13?lMZ#icooQ!bLF>!hoh|3w48qSG)yhh za`+#kXPNsnPA(eY!o4*&@xdSwUuVxm_9CE&4dR{CdOZ2;JId$9hX~9Cg>Gg>^_;6^~2qVUGD}l)Ox6 zB0e{O=;T;W5O_rCDY2GLx4S&@tu@h$zO_$~y6FjiMQNWXIqZ*NIaL5zg`8g8Il zqr#h?eUZJ}m(Gb)Gm?cNk)TMP&f+*Ccl&aoA!;Vnk1KrLn}uZG1TmT5esb;1n{y~^ zx7Y{Sap+=ly)>_Y3LmMybIV{EfGLUAB+W*cOSfuj)9obxwT z;`TLuM~9NxN}nr+-@2^I(h}f{L&NyMU$L18JW2f`G2F;;cyZH16dSQl8|W}R65Az+ z4e?Ltc5VWn{-av%TW+;4(cN73)XqoFm-Zx83-7HLyr!TiwXpp^pxSQ~7*jEz^v`ot ztW3mHto$usb3cLy2i6ea30WOMkif5XMB2^67LEtnFyDKhwx4Od>W+`0Ad(44tWci* zQor$5>=lAQxaTOb+s30Jg6%~3=C3ru{GfBm?HgiwYfK|aix&^Ggq{Ud+nzE;26}RK z*z`+4arpN)g{GbbkW%8G0G?v8d8<>w7$mSl0PF{yZ+i#ex%?6uTmRo8Z z!aQw>gYulcEumyxKfQ<2oKxzlj0X9h!lRTRwlY{bWBf_`)u{1KB3U_)c=IJ87KnYT zNMX9Rc9gY1H>!-a@e^bDA&hDm`+M+=>ZH^4jaLdYsFqv3;5mulF6b#dYeJ37*3l*S z@W(~MA7$A2l3AxrjCAPgJy^w`@CZ8NYsUuo zA|#Cuj@*Uf6NyP_8;UtT5PInPk0i8z0Voka3kzq{`Ex1Z=*pO8^NGs-CYJ>qKX#Fk zK~}_Qcbv70E~QF?{STHhi~lg5u9Zj0S!bdC6Vw zz})z)x6MP)VSm$@{?<&t6JU9Hebb(li3!Xr7cIT;&eop)tEq-9GQ|Mf*ZQqTq@YCN z-2Z~8z9Ub}7o31Z2f_%^>=iyhmGST7Y zpi#{`pM0e2YMEm|Lxb4_QZsSDiK*71)aKq=I(})Ap{q(;7I-X)I+x$cdgqheE6m|_ z_8x>1I~{*dErTfBf5vgIk<#z<-RL5N*b^lgk~~|vWU4JRG^JtFzAYF&?vEe%psW3Z z0{%#7$omb=O6y=C!_jwb!(kFqNO6ztDhuSa`_3n!H&KgBdc+NxTWMipq!MK-X=%ll z=u zitwvGqhlejzF&&je!G1W_RUy}Jr>$yiw#W=KD-qD%gsTeirkZ}>}50vZ8dUeQo^9! zmD=(4PifCCWbtOt)?}?@4p%eBDEa#!myD-vtJlKaKgE9~+`+-fWcD6!mVV+Bf*pKk zI`>N%>&Z?Z)JqoYj8jA7m3%^v1k?K)*-pEuy{;2XfldrrK6??9Vs%rR;q^v~-yB4nb=l(E&|Ft5^bzd?O! zIb*U?H1~o;9q>J4<;Iu0n)@V{4|*i{v=ou=eQ)Wy*P4W=462W}7noz{@iY5^VC+V-(!3p~8;^qobN(C= zrM>$UegE?Lg)9=8F)X=B6#gRRa76R)#*+Vjr0LiB=3@mz!jLj=-TH^6fh`kc1`r*L z%LJSX`jlxGP*W7QSF0nYN!9vxarhQo=|<-iiWt*orP&D09t%yBu-d2o?lG@&bN6zx z{(4+f%1CNuIO1zdJc+&n>hK?mv=9P$sfpmTa!&A2!hLKrU55}*jefYrWS6FrhIctA z$Lnyf**$BW*30o%rE-b_yRqbC%w`S=xQD9wo~=53WQi ze__+2fu~d7*hJ@tRJsU|MHb`^14;S>){#j;HsN5C?iN;0J!)={S^pVw(&RTV}Itxe}{ zB5MUSQk94*3cqJL8FuKB-bjCdlgnh`55XRioaCMQakv3J=sVx}ur@dAul+q`+0xbc z-~}jG9mf(PvypxW1xP)sj>`}n%>+oK+R4BOB)uPNGh$>l21FzM-wP&MJ|i1~B`l=< zri9xzPf`)UrPyX!^Go~dZ%-n5v9#LGvhj-E&4_I(j($S=a0!7zQ>~k*Nkg890}lWa zC^EHfkXC8ZHo1=!4GBPfa?oHv_4T&ODN2n`wuIM=;wGPmvRMMY_(Gx|$3&gcYh45` z>^|QKqfJvcZhmDOfl9DGMEc2HGtIR}Ed8@MNg{yVS0?Knt?@!j>()suqJ<}?amX`c z{lt-!2Rix*poEbs;o&(Sy_T|Nedu=pm0`}^>9XTtG(1|54j#mCgW#=4>amLPbZyw| z{EbC=DWMCfd*H2MOnlH+1Pb2Bj>Bb}6fQ}kmWjx(b?&qa;}Pz0QR`POTHb@z1j+a- zrVBER%6Bp`(GWQcM?CoHJv=Z=)5nWj$F!4yVCK`}Y-;048Xc3xSu6?*K|A3~FCCPdoc2B~F$UUlTw3**@Jj z&Zos}ArvrYucY^U%$*X5EKC89O@c>HcJOfMaBpzgu1t`@0O|5Fc!}nrj)+e|%Hvhf zNK$#%!oL&|wcLLi8w)IItgwWeY6hUx8S6LiIWV1^QkBa-|vkV~d1eWumAvm&9GS4Oc4pFGDgt0>|<=H(CWy_v5d`j*Si=SZdy_FE7 zy~TN0IwFUAXnha^Iv;2Q|IiCvI$4vcGlP^?jlqcU{>BX66ZZLc*tEy^OMILO*88`Y2y+8m-YH|so0=YP9vk?AF)d&ugAGb!l#eP z@Ol!`ozI&PN}P`KvO>902wI-e=89J_l+k>x&{BYB&ms3v286mpCXIwg(Bv~Y&b0FB zRqTddipqDTqy#|8mtebKFQOah#|w|Eg{}g1xR*iu1h3W_8ML&juFnT=9j&joLVRTX z8J^tX6a^%j71#-t@jQCrzcn$tUYUMw8!0smNm`S{q@xs^XsFhDIKxk1iVhCP#Sq(& zG>5y2zSab~uA$ckr6*Zt^%;K|KJ{5ND7o%!II$!h)lQpyHaA-Hx{fT-3O2ogYGMmF zJ-XqUZB%okhQZU+mL&qn88_!Px+Marfi;xe9;b5p?Qxebp~PPczLsi#`xtRAlhc@8 zx-0{yL4C@f-G{CCvBA4(6!uy5fv&GZE|rrPQz|#g%^?iS2(X;c|Lxu@jsJU^Z&zy0XbIaIrvy2Z$su==-;2+mIA05SX-Yq=uzSg41jgX<+MHK3BI_(>Zz3A#@{rmWMUgfbLthAocUc63 z3|~*%(CMw}A9s2EW3icgVcl7|sT^z6{tz(y_Xfr&N80+trDRr;@yRg3ZpKZ)7KB zv$Rv68{3y}9s|!37~~&FQI(-Gg?(Z??#2h}-5K%2+*UNa>*zVoA}!dTCOK8rWB^qU zb0>!b;jKUrYuG|oO4pu~*!j9a6asMzqM<8PJ>h2&=ieMe4H;VP)M&nj`j z{5g5~;*6&|WSMYgU`*E$E0kC4b(-}&mJzzjv%fA)t-+RmLLSUxeqFr!Xd2EPfu~#` zH<`VbG4>uL^y-T&{AZE}8U(%(>FW?xGQpRY(?Xa0?aj|5!UIb#FgGH?9K3s9`n3U= zN^#^4JZ<#;yl83#Z`aT+;;Ai&@wNH9Xc;-9D^{`|{?YcCf+Wh7ux(aVN<=}I@dl3C z^R=D5wBR>#RqWb$&j-2-AZVbSF=8e;<^EL=8M3>FxtpS;RsYSJVbR%+Nd;Um^tD|4 z4%)XaTc$WEj8RkWI3cZNhcywLj0JXQRCLGR=kGl_RO=Wz{%+g+p}fdNS|~?1gp=7^ zNoY&Par1^E&yKxBUO{|NMN785mK3?^5$aAD^PL$m$j6~>;F8|*)zHJ=gs+UZ*r4KI zQzOWl?qDzF0Pu5>&mY4x~Vi}bG1xzR|GdjxVDW40}Om3R>V z(Z$tR4!nIEVE;0@6+Tiy-5^IxBoar`2~qOLs;hV~P(n@bf54QbNpzCsB8GL%(Lo3K zzUS$zy{-g~cRUr$DWc0>R8>|`0y;oahyt@IlJ3%y!hb^}(XSX76ce#PXl2?!{$m@S z#aHU+Ubg(~d(f98r0L31=rZA`weZCvJpPZ5=nR-vnxeV7v9sfqm5@`1p%{x79H z%%@$cY>yKyIXXBQJ6&J%L^krzLr%-`<}dib%BX{urf6mJ+aNp&NV!5P)j0A96!` zKmSvWp#BIsx;9G-(@Z*!0QSR!YP&k4HNQ{Mk0j;PNI+?8oz9%aspZX2JTsq- zzIc~$5xok($J02+u69@sVat3Z#J_y&w>F1G#8VxYgzga^K^kppFnspT4RcUL%lM`( zBD)aJhkia*BTHv8EAKIu{{nSZoH^spVdKQIl!`Jj9V_6;SFDpVb>GOG*3$Zz)LaHG zt~W`G$?!C+716Sb74Z36_)GT_D=! z+C6#|s73btC+^|H`!R`=JSQ?_JRocKkXf2EBPF7#3$iyaPPP= z&X$Z+0eUIN?;vpYa=}L;C$U`Dvtnut8{V=h;kOmucjZ1jw*e#r`z*+s73~?}@9rxi_4n>g_-jYF zjJ4Wl-KZSr%po#uiWb`)vr}}JSKv$op|jO+u!9ofkP#S>IzWaT8D8<2bcBanK=6e?J%_#tVu z3Y3Y;zsvK~T$u7POYlU8Y&csP66pZQw4@6%bP49t)&!Zmuf4!H3FMCib&A+xc0_~S zl%dRO(8`%gmy`LFwNvcZ-bMI_oZCkf|IlDS26al;*W~n~xtKuTUq&R4DuWe+Y?w}| zCn{(=;pnURGH$Z7)sH7#Rap1y>R*hG{9d57@%h-8eZ z_unnytbG|2Wxtngrb;}~qOs4-4-NZ!eezYDEc`3(D;&lgQY1VFdLj&c*t?pG3=6X@e- z82UyxKgWoyI{LA7seYec+F|MJ`iT__+6gWxLC`I-r=lyqt3Qx}D^i*Qk{Nh|9+tEjpCzcZ~YqHAsE7=~$wW~b5elPLY)Qkxn0FTHp-&DL+{;H#~ z-Yq%>`LQkX`9}5HT-$xMI5G7oaWr4AiqB$079rz-JCL}WG{;B8pd&UGi|#1e2JHN# z=oX$}BhG+sb*ku;!dt%ksLTu7qTOncsB_ktJqdhC~z{P`x=-COq+3Tt!eBX>}WB5e2eRj5S&y5v_j}#g>Wez@e_k`1&t_td~k} zr~BlDs$|^PwWYoxXfLm|`h!X(l9zVfE+ zZ;W9>BFIe`ht)KPSdBN8t<@N77CQ$Y3#W@$D2m3^CewY3B%l};AGmVb5?8d9Eir;A zP0@^THluG!jQdvUAq93v;~yNg>B=QBmtb_&kS{;~;}=hY0pL^L_hsp(y`0VCnco4e z9kI)V^(9(?@9jGW32af8S$c`cr^ES{&~$*+anrH@F`>cYpURYQUymRtZdXaaAMt>d zz1w#1-*D2n&U*XOVXs@p@rHuwE}SQ^1;k@FXVZHh_M;{t&e`pa5?1hFp%m&9uP&+L zEMu``Gt}CZVD$SPs+_r(;8(J97eyKKE*>mZC*rZlZRrFUz1<{TbCtO0^u%tvY7>fi8xrY1x~15+R@{S2*vJfT zkN{9+Ime)aufbs^ovM-Bwks*+PoyoUvVac2K1;arl^?*KpSP8Cdtt>W^67>2MR)`S zh)CxhM$+&Ya=A|wv86oNb!3#9O+J`B=uK^`GMo3KhVt4PXLoM z5|4N?%^1-{y&U<`s9}8A`<)aPgwc3`s;09{++s1sNe!EJ?<;e|pO6nM$~45i!?z*U zy(#{{F;$x;sa}Iz3r53H+hxDk3q*vq8BDEF5qYA+E1snsj>x#xdA?$Urv4=GIdpYQ zXPXw;YGfrQ#^oqJrKH!GYS_LJF=hN?A6(Y<}#I&-c+YVlFw?aRspJ3Mw?13Mv&X*U0o-^BYI2UpGocsMaOKPuiRa2LS)1c{hP zxC@-iGLTJPU4Y+l6S{IQ#qqq5f*J$l3HXh9z5mw^ik-}dsPGrY-Nbi9^%)OI! z76p!9z?YwkDYU8C)IT4vmz30eop}_< zce7IsP-b3x|1&Lx3%pb2@jG+;cOVA+(5%fBosEEi-g`T$1pZ7tuH}_a?=zXYuHboQ z(_spRZF9iScw072y^z!L3{MftBBk3p0EX530*tv_(hKEe~9cif#F#1{Mzp|WDsYzdc29kp;chOpZkSs;R}0qhacE> zT9M~`-F%w6VYosAk+0alcBoYy_&Pk`2FVOk(_f-{hpMIQoT19nUbE7FAQDOpDkkor z^XEbMkypeQ<=;}^4R|YK=LL-#C~--Qo^TeNwAZe$Qv$J4XS4`iPEsL4Jff%t_Tj0=K1~l*K)@!PMlX2!_ba9 zgvBpZN<6G|M!43pPV@8P>kg&C=N|(u8RKKV9XdBH37uIEal5Z>Yee1fgOVq=l}0Gp z-^rxnG)bqN&N1A5EE4{Gp69v{cHiT`t*La5A~=?|4p&ZP;d2gvuL~1&Z;ghgT)SU4 z^1TgsC(u&VJGF4Iz8QLw!Z`lo6}uMoLjy*@=V;^jBx@}bHmblE57}mD^aG{`kjzx3 zo4-o-Z%bR*Y$=y$wrFx=n29z>@$US8N4+hGm&R2b(@#ysKSoz-l%5JRG{LB4hc9U2 z9&P(8F)BL-W1n?_O>xwosD12E`%*fAq-?~nPemX&;d+9jmFIBL?K&xOE1IUl_iVC4zOo`>ddh@5-wu=e z4H}Lk@*|&gh>oj09vqm9kVYK2L;SEwpC+)au)s<7J*8D0foNqsXexF@m#b2rf4{LC zj-pXcjrw>bF>EI#yO3f#vv!sCB0sxtb{=$L#|q3;v!;JG?A&m&oe@`L8?DXE+#nu9 zr<~Ux+umc*%pM(F_AdCn6!F}O(tNvg=WJMfkPBBn(~Xckhz@k@sJ4$ikr6(b3JudM zi0-Y+|2rL9q@S!H?J}dbk{6xF@@5ixn9d3%2Q96sxTKU^hS$0vJ4Y}x!H{%jJ=mh@YnhTy2ZT8oFT z2e+L6)w@iYr&75`nCGAu+=VkIXhMw(q}X4sP?C@IJsX4Ku3oRyKy<&M#}tx194J+9 zcfd-|P>lPy?1i`RBr`7d0?Mf?KOwV~X=Ry?FS^Uei1^otAh=-?7|86ESk){>G)dt5 zT<)q|;6L$EsUG{`{=hw^J_ zl7t{fP04s6xaI3RPdTJ~f^;&LQq+}|J8H%W5GsaPe0ysKWZ`Hz*Ozjmkm!$R8v1X| zYkp+_N#1kOdgKnmz*q$_aXcr&OAr&q9S6^D4u& zJxqjJo~Q`GPS1VCd82u65eOBaaacEyB`4yW<3p8a(y_g&m14*pi^r{ zh>HF_>>hQ%iYW_dGX2J&Mxw>$QJ8rz5%9!iOiEp6Lk7?Mx0{@)lz(ZU$OUV(|AbKb z+ll)J>cfY5U;o!fvq0Vw6Kx(nq9UW}joosYT3cfEjJC78W1BB(AELE)Bjl^T&sed{?YtnC>+4d%b0$Kl|hQVAMk zps21QDozp8=R>`qgkSM1U;oo$?7_<8?PoPyv_Dav*?3dt0T*frD;-Ov(JL!}6U^2% zOtZKFnbxveEt$gay%9fKXjcBVa7}reXb@PyGJ>R@jxE=qKP>m0?9PWLin+NaP710c z&-DaRpOC35Yws&rFI|3fl-IE&uopW@`0>Qsf_7~V=!^*?-NHFb5DXiepF3WvmW5WkLdg67hKj%*P~`_ zRMnrq))V(Ee!S^Sihn(k!X+~KZd<|>VQ*h}od}?OVJSQ5TOg7P#)`kmZ)(*7vL9g$ zcseCZNgx#}Aw@~SSB^ds8Xl;ouO+}2kw`3}Y9?jgEG?cUf9a$`fSHMrz3&n^y5^ep z!qSLz{D+ZY+;SP2^3%Eph`lke-kW=EyOwo6yEkCGoraZF^^NZx`>xN2!?#HQC3byv zxb`utsrWh&m~LA_yO>$Dcsk{;^(8oPFyY4@dZ>)7wRrh9Dn_-Py1E^;GHzhuJg8iR zRAyz0+66Yn{Nz~lkbI@sY&G*4Q*$+B(^NWV16?? zQLL>WH0TGSPmjDozBDwwM`UnJ*UQ3v*^LF-4@-IM{9@!9W5mxbXec-i1zfCz{md#N z>$-D(rBn;0ln!sSnJ?QHU3j5tuL{{6(f82bQ&7h)2s37|;?U&n+{B$E9PhyUr?DA` ziY60HU$de}xt&g5q8>c;n|2}HY9h(%2{w5kGubU!TWIU+jW-v%pa&VcAO)3N3%w&8@p@W4}k!@AicHJ~K5N4)Ru}t%ruz!pT)VX9$))GRcp;l3o zDx6RMVeQ78`wa32_d8GcuxWYqsM}jo-s*NDm1kD~=3JEyiE=wmqitIa9lVUm=z%Z6440^(6imXDK=+>?Sq z-Dk52h%L#Yjj?BL%%ys8+o2k1_g3nir@t@;jhVIUb|B~ z>s`^5z332S4J7I>I#6*#UCDidU0o&&7kz&bu62#@kJzZsTWCvt>=hUO!KNsRX7;vz zlZ?if0!^jqd{0wpNUmF7T%Gm8A_RZ8uF2c4JPyE!8+}UOZ)Hez$ zI4;nT`~($w>WQoHraWUdewN2>E#&o#V}&)u&ZD1+^j \ No newline at end of file diff --git a/app-saas-src/image/error-light.svg b/app-saas-src/image/error-light.svg new file mode 100644 index 0000000..2a959de --- /dev/null +++ b/app-saas-src/image/error-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app-saas-src/image/feature-active.png b/app-saas-src/image/feature-active.png new file mode 100644 index 0000000000000000000000000000000000000000..96f320bd54c3023d6c01d0b4e4ec190f58019bf8 GIT binary patch literal 1517 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e}l717IjS8X23II~f|fnmf69ZR7{c_rEakt zaqG9V!os5Y__HcsvI9@EpUumWTc?;w+ zgy~HVo;O}iYPZoW^LQnYxTY!PKMUva`|R^gdh*Nf%`Ro1Soz`c+cW3B-^;&WegDkt zuQm72=R6OZdh?m8=$(&ESC>tm_dGXKy|t!H{;Knf22lx{8M9@%;?un%&Q}z1vxdH# zdhVL21%rPgPnF=;xvb*%OgxmoKitxKnCZ^K#V3V|f^O}2wtk+y%U3bA2d~=^Xo*m0wC_tpAT@8R7-mvtw_eh}PupiX+{q}`Hrh0OBOPYo9JzW-#ibo17ZmK)xsVkw6| z+$-68xy)PICU2wP^RI5wQzp(3-k`4ZO?>10$2r?op3aY6=bV|)(U-?wrfKvv^7PY* z?PZVZcfU!KvsUTUX|y{c_4UWP<`}o@>D#j>$@CS@wp{sjqQu6VDsi(;-K?m1nVqgR zgKJsS#ni1mH|p0l8TZMaX#U?^H?K?4;;GgR&dbw!^)LGw5K*hx$nI1ctnGpRd%L2*rR3U{6;+mvv4FO#l|eK$`#n literal 0 HcmV?d00001 diff --git a/app-saas-src/image/feature-active.svg b/app-saas-src/image/feature-active.svg new file mode 100644 index 0000000..0f7ae26 --- /dev/null +++ b/app-saas-src/image/feature-active.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + diff --git a/app-saas-src/image/feature-normal.png b/app-saas-src/image/feature-normal.png new file mode 100644 index 0000000000000000000000000000000000000000..1b391847878d6008841dbb66255bdc2227833d00 GIT binary patch literal 1633 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e~w_HzQ*s6IWvsb0UI2$*<4On9mVa^UGcH4m8Bi-4*6>6tlO85o$ZdAc}; zRNQ(q!#hJbP^8V+%(OQu=7!iu#xAZV4UTtPxJ4cBa@Z~4cy;W!lgN?Yjz>mii}luM zl!bR|xPE924di;XY_`{G*DJlE^F?mA=KAy=d4E8Y=kVM+)kmi&6hC~NruO~GpW<`1 zb36mIrUqTTvux?AJ*rIqs~a^VRT8zHEEdc=Y{7F_P+Zr^D(!*JuCE5iAN>~RVR5_= z?{>##SNkcw2nMAxyE640esPIK+t}VY$=7VYaoxe#rtz=qnC4d&o7kCdK8qiE3#qBa~W&awF_TQ{UFC@ zVRI+=g~)uh#$};%)StMXFa5x5H2KjBxx=1y&$Dj+6lHl_61`Av*RrhHJ2{UR-g{{@ zqtO0k*`dE(+*hvdKN1?_@x&!&%m0-Qb39hvS1OtRyxF(idD;6*q8^3aXB=h3VwE(x zTi><4TN$pUClJVNareM+_Ag&!;QST_+sp8GX(tO8iuCq+~ z_IW~MYSr9gO);PJjXp)5p3*fNGETp6(@uY9r8Kc$@a6*U1n!=LlE>nVIJby#OPo4z zbywxN5{?H7B}Y0x>;7F+9PmxW%JN6K!`#E~*InqmxBA=a7e!U~ucutaLbp8s@@VNI%sIl{aOTtu+Gg)h&U0xFLV_oP+ zr}Lk;hnc?&yk7L$D(14df;juxU-jL4xb>R^Z}2oWuVq=xEBABHj?>ch>^%opuu3Yo zzT7t9vhN44{~DWaK40j~9r3)%AW{Wn?ux&H2@GqN&Dc3_FW(YSq3`MH=d#Wzp$Py_ CS$mBD literal 0 HcmV?d00001 diff --git a/app-saas-src/image/feature-normal.svg b/app-saas-src/image/feature-normal.svg new file mode 100644 index 0000000..768bb4b --- /dev/null +++ b/app-saas-src/image/feature-normal.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + diff --git a/app-saas-src/image/func-alarm.svg b/app-saas-src/image/func-alarm.svg new file mode 100644 index 0000000..82f0c7d --- /dev/null +++ b/app-saas-src/image/func-alarm.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-saas-src/image/func-energy.svg b/app-saas-src/image/func-energy.svg new file mode 100644 index 0000000..f16a491 --- /dev/null +++ b/app-saas-src/image/func-energy.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-saas-src/image/func-history.svg b/app-saas-src/image/func-history.svg new file mode 100644 index 0000000..7a587ec --- /dev/null +++ b/app-saas-src/image/func-history.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-saas-src/image/func-inspectBug.svg b/app-saas-src/image/func-inspectBug.svg new file mode 100644 index 0000000..61b62d7 --- /dev/null +++ b/app-saas-src/image/func-inspectBug.svg @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-saas-src/image/func-log.svg b/app-saas-src/image/func-log.svg new file mode 100644 index 0000000..62aaa93 --- /dev/null +++ b/app-saas-src/image/func-log.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + diff --git a/app-saas-src/image/func-rtdata.svg b/app-saas-src/image/func-rtdata.svg new file mode 100644 index 0000000..e2db9e3 --- /dev/null +++ b/app-saas-src/image/func-rtdata.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/app-saas-src/image/img-error.png b/app-saas-src/image/img-error.png new file mode 100644 index 0000000000000000000000000000000000000000..d69849f88b3cf97e876511d6d104a3e5d882645b GIT binary patch literal 58640 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 OymamuXqKv5NBkGX#t}RK literal 0 HcmV?d00001 diff --git a/app-saas-src/image/inspect-keeper-icon.png b/app-saas-src/image/inspect-keeper-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..29be063bb1a51cd06ba974c5e1887678dd027834 GIT binary patch literal 1866 zcmaJ?X;2eq7*046K+`H96;WA&SWw7j6CfldT!}GIf*6Cu+a=i?O0sFPn1rgxAy7*z z2*y@1Xceh~3?5XSb`+JtQIKOiio}Cj>Wz3oJh2-q+8?Dmv-=(MJkR^Q@ArPQ-=wC@ zrg%*9AP@+YL?K^{kJIsYh8qe0-gp~w2_Jm1SyF5ss=$n}9wEfb(F_Dg)WAwajKFg9 zS7(uE0>L>zEsld zgorNE@eq|-n5{?VWv57F*(+siIW;y0h&FL>0S$t|fJu|7HE>K^>N{NyK6h+`RNx&1 zTgj#VV@fJY1$d|)0U~G-VKO=t4zSoXC;|$PfIl)T4W$kE-{cD<9npG%6Rw z&47+`{nt5Adc3P^qy3BV%W@)-A1^WWwEegySp-i$gC5!T z%ckOmit-@X7_vJcr&tldxTVo#W)ybaj2&Q}Zt&GG;BR9e6`9Z4O8*K1cU~$@ZfiZ9 z`dx8p{Q!FWOnXni)zHBwI`uPG)O(hhk1ps;MrK5I6)R_8p zTaH&ANKPe2=0{GklXI`_AcYQXZn)AL)lEo26$1 z&aV4a>($R*k$U3XgoLV-a<1&&_z5o7+~~AL(0Yo!6WnUAsO`Cxmp!gNqTV_uBxTt7 zL0aSHC&q@NwdWccX|}{v*C%z44s2ddR;4#?Pv76!9%?x8nZOuJhLO0)^NHaHb z$#cRBD8yxwL$%#uogU)zZsp6(pS{Km{SAe5_qxxUK-Ta42NUNwe-U0F%6PU)N#-v0 zvbkP2>P4@$#3jx5bxSSg& zJNu!1Ptw8!@z{1t^U1h|i{~nrxw%q+^G%t9$obM8M>ew3#ACW$JmQR?a;ASJY2%u- zbRXT`FP*wY%BsPVMds@Q8P}&pYU!w+dXmCT3KTr-d(i?lxVG6V=H8j$bGj(W{C0eu zLTfpXy^1h-+&X4%k2)SVNty1lCS$y~Ls!=Nl(J;o^I-b+$ATv>YI`RiZ89nT6s*m^ z?Mcn{V-_){`jzxuZY*+Eigz4Tx9;tfSaXE;hCRFw^@a=tCu?JzN#bJN_CdL_Iwycv zE*k8ET7MabNMs(ODLzj=zT zqI&C6!=vX(OIKJtS=07?`ZT@^mK#;X+*L1==~Ir??zgO+gw`CIzg0-sAKA4@rA(R! zKlQH_7qH*-G54(x3OTj!jZj)m4Yky;hBNdVB--2RlJc1s{F75G2l?HTtbvCQj_Xev fe!Jjt`Z^+E$qK7&Pv4k2$KNe+Rtmp9VR_!)DXZBq literal 0 HcmV?d00001 diff --git a/app-saas-src/image/inspect-log.svg b/app-saas-src/image/inspect-log.svg new file mode 100644 index 0000000..946f159 --- /dev/null +++ b/app-saas-src/image/inspect-log.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-saas-src/image/inspection-active.svg b/app-saas-src/image/inspection-active.svg new file mode 100644 index 0000000..b2c76af --- /dev/null +++ b/app-saas-src/image/inspection-active.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app-saas-src/image/inspection-normal.svg b/app-saas-src/image/inspection-normal.svg new file mode 100644 index 0000000..f0481d3 --- /dev/null +++ b/app-saas-src/image/inspection-normal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app-saas-src/image/left-bg0.png b/app-saas-src/image/left-bg0.png new file mode 100644 index 0000000000000000000000000000000000000000..f7194f591e7552481fb161406b5d5bd6698bd1cc GIT binary patch literal 180095 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/app-saas-src/image/left-panel-logo-prev-1.png b/app-saas-src/image/left-panel-logo-prev-1.png new file mode 100644 index 0000000000000000000000000000000000000000..781a597ecfff148319eab58a194949aa8dd26ac8 GIT binary patch literal 4693 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 literal 0 HcmV?d00001 diff --git a/app-saas-src/image/left-panel-logo.png b/app-saas-src/image/left-panel-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..06eb358a85e428a4ff622a7c950d3e6404d1080e GIT binary patch literal 2902 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 ATmS$7 literal 0 HcmV?d00001 diff --git a/app-saas-src/image/logo-prev-1.png b/app-saas-src/image/logo-prev-1.png new file mode 100644 index 0000000000000000000000000000000000000000..01b9c76496e1b72569b263f5e0c22f8dd34387a8 GIT binary patch literal 13885 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 + + + + + + + + + + + + + diff --git a/app-saas-src/image/malfunction.png b/app-saas-src/image/malfunction.png new file mode 100644 index 0000000000000000000000000000000000000000..0dd7ab8ddc5bdaf585ef56e42135a623e0360601 GIT binary patch literal 1722 zcmaJ?do)ye93Oc_R4eIeyQcP_m^%-H83tp9%n9o;Fjzw55)c=b=K0jYU>%>2X3O+N5po2)lo*z31Hf`~H6C^Z9(AzjL!fg11_l zuQewS2$sA6ZWz99(!YyM@b7&>ULL-z!TbbRI3mT=LKQ?{OArwR@Z`ccC=3!xQj)Gi zo&kHqph%yXQGC@$SR+H2;5~7L&DGUY!BvU~u)fq=PqbUkZsBu=H8|M_b5Gq!| zN(@F6fL>83LUv&+A|C0-6y(ZzSp_;D_+_jSP=Qc}h~gYOt_Aon~xJ@!7OXyA&5?!ga9x$qA zWQf<-t*Er{+M}vYZ>ANLI z7v*LFY)VI)%cVtQKDx%L0fRptjJx+wpKJB1cp~OJIwi1YCy1nj=q>KO47O=WQ*Dgy znB2Ie$z;&du5{Iw&I9pNZ4Ac>puJe`rVM?*d&`~U@lzd)DD$Z0Zvxqt9p@?><7H-1 zR^dBri;Bv6*KUgliO$S0q-)N5#px20+I`^0`p)G>ww=|wl=i&h)h7q`-n?Ez(ylw% zmD85JS0#{YZ^?#f*`d2}>+|@-(J>aGhbC;ho_W)pUmfYRdsbNs($U!FK(Opr-;2ii z6ER(Ztt*d~{+Qfgal6m1|A!M3TGs{-pz&Sn(+8wJo9dAyi6f)su=;yx_Sw8c_B8{B zEiqY_FK*JVE0+z|C7)PT^St{d??7X(DB3=cY z4JBnpHt|i2n@>DmYQEx3*Xtzh_J{YXcJ2!qDu}(C%;G*0D&9t(yPl(+C=XzX?xrj+ z8$9+KJU%5{(hLvsYP5k<=TEKKIBehB@Vq-?b5H8{H$BhVmqpg2p%H4a*`#i>R9YV6 zI1<^N57ye`T1v;SK6$BQ??2v}Ynhyui0c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e~wVHzxxpCnIAMb0!_mdr(bUq+ z!qnN(5T@59Ke;qFHLnDwHwB^B7^hxPO2{n$+U$~Alv$RV;#QQOs{r<~RVHq?7~nJy zsy79uXLsnlMXOq*A{e_Digd-^J(j@n>mg%_^ZPls zmOoZ2-eJD(ZA=TN(lVEC2g+ucHXg0u7k|LA=*tBRc6PYh-un|BG@A^Do^qE#XFXis%V17eJhK0nf~MqljN!6EZrbu75g^x2Jh3L<+1lmz5ZKC%7?Aml5Uu~?%)G4 zxkuJQeNijJoLOa-{$28=@>uz2RgUkDt63hoZ`mI3z2%JI`Fz%H9v1dF{6;Sq#PC)9 z`kVQEju10j@sd9*_R>7}URvdf1%{qZHNJj%Y3$Xrm*RB){*#msIJTv5fNXN0+{ zZ}m1mWq;4&l*SdK_uP-SOg@+8zP{Pqa@y^jlx&$)kiG39Q)ts?JS+PCT#CXubCWfUq8K=Br|!t zy7uy|y^nOYS64`NEiMVV(Hee$^m>a~f3Qd%F6$taD0e0sx_t BdU*f< literal 0 HcmV?d00001 diff --git a/app-saas-src/image/message-active.svg b/app-saas-src/image/message-active.svg new file mode 100644 index 0000000..4ad3e78 --- /dev/null +++ b/app-saas-src/image/message-active.svg @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/app-saas-src/image/message-normal.png b/app-saas-src/image/message-normal.png new file mode 100644 index 0000000000000000000000000000000000000000..2d19d81de63f4d54dd3aa33f7f5347c3881e2c53 GIT binary patch literal 1701 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e~*$0~1qMM+0LMb00 zGebj5LnoMCm;B_?+|;}hnBEkGUPGLEK`9}(0BEyIYEfocYKmJ?ey#%8$5xp*-D2sA z(>$o&6r66cbi=7vALtl;P`o0=GfW7WctA{ess(c3={_|NnAnSesrr&lgd;GsNO`(A zhE&{oGsD*-Bv9md?PM>3C?SbVRnMd}mnkYNwFy&P#X5F+W<~Gp2&;8CT@=a^De*9^ zBWjBf^UK@5A~RiPAG+l08o+J5X^GP8I`x0b{4*dm zY^~3o>Wf}VjbBzTuweTAkpE7zT?Oa+#2eRZ6?Iy(ZZO<7jW%Dv9N)Z->3?XG6Yu#` z53G6|)pJ<#wJxXpHC-26b|x-z!U4`$N2bjD*1#QH-OH1GXUg6*-o4h7bICmZ>ko8u zypBII-@Pfn?$cb>qWSE1KZuAeEpDGx`_r(#avjs{hpcDjcN!$sJy~zN(BV|o51}m$ zmsK|T)V+Sp)grK`$$2KniD%*eoIkRd9k4!ecEW*}pZOoSzbxOC#v$xduWk^+TCLVD z`|5P!`l*J8y1uUG+N8Zd@ny%(rR)p!8h4l-U0?Tut#@C=PuX7~+g9xjEPeg|>M`{V z@#?aM%YTSZVOeTrsU5yo($0zTPeat!>#O1xJU^SIfBi=ngS_e`!Qch4+)Qlw&F1^6 zHXd6O_UltkX0Fd$!FrvoAJfziw5xVle`M)%yYDyWVCx4-zf(J(UXFWfHG3NO2Ct_J zZdG4B|7-q*A5POR`{*=^U7Rh%v*l$q)8PxEu|iX(esExV7k$?}HTKnii(NdEL@U@1 zZGJdG%0FSLSYctCOQhLOqsW94;_Y$4CC<@pad(a$xW4jt(AvezB;n_NEGAF3w@O1TaS?83{1OTG;l{5eV literal 0 HcmV?d00001 diff --git a/app-saas-src/image/message-normal.svg b/app-saas-src/image/message-normal.svg new file mode 100644 index 0000000..8c21423 --- /dev/null +++ b/app-saas-src/image/message-normal.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + diff --git a/app-saas-src/image/message_icon_2001.svg b/app-saas-src/image/message_icon_2001.svg new file mode 100644 index 0000000..6dedd8e --- /dev/null +++ b/app-saas-src/image/message_icon_2001.svg @@ -0,0 +1,9 @@ + + + + + diff --git a/app-saas-src/image/message_icon_2002.svg b/app-saas-src/image/message_icon_2002.svg new file mode 100644 index 0000000..76b95e0 --- /dev/null +++ b/app-saas-src/image/message_icon_2002.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/app-saas-src/image/message_icon_3001.svg b/app-saas-src/image/message_icon_3001.svg new file mode 100644 index 0000000..57d3279 --- /dev/null +++ b/app-saas-src/image/message_icon_3001.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + diff --git a/app-saas-src/image/message_icon_3002.svg b/app-saas-src/image/message_icon_3002.svg new file mode 100644 index 0000000..1f4625c --- /dev/null +++ b/app-saas-src/image/message_icon_3002.svg @@ -0,0 +1,10 @@ + + + + + diff --git a/app-saas-src/image/message_icon_4001.svg b/app-saas-src/image/message_icon_4001.svg new file mode 100644 index 0000000..44c7461 --- /dev/null +++ b/app-saas-src/image/message_icon_4001.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/app-saas-src/image/message_icon_4002.svg b/app-saas-src/image/message_icon_4002.svg new file mode 100644 index 0000000..4c264b8 --- /dev/null +++ b/app-saas-src/image/message_icon_4002.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/app-saas-src/image/message_icon_5001.svg b/app-saas-src/image/message_icon_5001.svg new file mode 100644 index 0000000..44c7461 --- /dev/null +++ b/app-saas-src/image/message_icon_5001.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/app-saas-src/image/message_icon_5002.svg b/app-saas-src/image/message_icon_5002.svg new file mode 100644 index 0000000..eedac70 --- /dev/null +++ b/app-saas-src/image/message_icon_5002.svg @@ -0,0 +1,13 @@ + + + + + diff --git a/app-saas-src/image/message_icon_6000.svg b/app-saas-src/image/message_icon_6000.svg new file mode 100644 index 0000000..01a0906 --- /dev/null +++ b/app-saas-src/image/message_icon_6000.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-saas-src/image/message_icon_6001.svg b/app-saas-src/image/message_icon_6001.svg new file mode 100644 index 0000000..5f6401c --- /dev/null +++ b/app-saas-src/image/message_icon_6001.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-saas-src/image/message_icon_7001.svg b/app-saas-src/image/message_icon_7001.svg new file mode 100644 index 0000000..ae6281c --- /dev/null +++ b/app-saas-src/image/message_icon_7001.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-saas-src/image/microphone.png b/app-saas-src/image/microphone.png new file mode 100644 index 0000000000000000000000000000000000000000..5b3b618769c5a33f6c7c95a50c9256641f89f7d1 GIT binary patch literal 6993 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-saas-src/image/picture.png b/app-saas-src/image/picture.png new file mode 100644 index 0000000000000000000000000000000000000000..1738a95f20bc5d1e04622ae7b4b62b820a16c205 GIT binary patch literal 6191 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 literal 0 HcmV?d00001 diff --git a/app-saas-src/image/pre-pic.png b/app-saas-src/image/pre-pic.png new file mode 100644 index 0000000000000000000000000000000000000000..4cfb3389818a74629ab4acdf05fc26ac5b04904b GIT binary patch literal 9797 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 literal 0 HcmV?d00001 diff --git a/app-saas-src/image/qrcode.png b/app-saas-src/image/qrcode.png new file mode 100644 index 0000000000000000000000000000000000000000..f718ed96fcf617b602783323c853e9d869f2c25d GIT binary patch literal 1344 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 \ No newline at end of file diff --git a/app-saas-src/image/repair-keeper-icon.png b/app-saas-src/image/repair-keeper-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..494a667c7c9f6994d4a02833f4fc76c61979ff46 GIT binary patch literal 1705 zcmaJ?X;2eq7!HU~F2Ty7h`0t32$Ic7NPr?F98m)?q>z!zm@H%q$*##l61;|R|VaPfqin9rX=vW;pl@&l3uo23KRWZa@Ex!=~SRO;n zUa$@WkK(vm73n(E>3h0!DDh)>$L!8p(;B(tHNCc)J zSV0W&gDHtX2yhWK1Te|Wa2bWl09b4?l}TkpQda^r3Y890=pdCIPNi`uYz~zPOg}_C znp&R65%ChIW8te9q5{KE4hU+sTC$c-M%4KrmCa^@6dFjQh2w~Djb4RGb>S*a;EVzf z(#X^>iou8quqjG6B1KpX5qJ6_1tt1XR;8IP6J9V-Cq+RjnPN+61}G5xKUAswh}K{t z=#$_76xN9KCA!;##6wXvps6a48qd-uA%LPI*V3i!v zYC@;r0s)7w(qK}R4C3=*h`0b5hUFX z87>cz6)7PVHp7*F;zrKOwRM6L#Ut||HCznI6V-?kn97&~&+dgetKKwMKD(EQS-Bu? z2DF{)zs`AP3vV9V^kdiJi;sN|sqki3<6Ygn=X42vSpxXHII*t(rfH30LEOR))_}>c ztWM(P>Ug;)tKHWy>={BlmE^ii>^ZDow=1CCX>Mk#*R7ym8huWb8%u*delM*mm$>+} zCJQeB0d5vW1OIIHWZLAM%!gxP)H|(6;)mfm(R^NBdDeJ*wPA02V7sA zzNFB}dkDe44(Y$;?`>ri{z&?x+djbHHJK}FbM4cXvopW(J5)Arr|kGio^O!VpEl7m znE%o)Y=axNNzxqeU$V7=YJJ&I-_0n1e3mZ;4$EJ;gtiPJ366HgrBHIXL;% zD7n+1IevygzK(U?g$4Vp<0A)G?hYzHalaZI-jZ`q5nN}u4|MZtoH@>oDb!J;nHI7u zI=AFdt}C{g#PirmG^HH|tvZe1#*v@$?g}3d+gs)vIwR1k?dMIG_0D9{8RNFfzvdT- z9GDjfs?vRSJ*P|{Vt94@w!d>rLfL`3_i<=->b~=X<=Gu8+RdS_%k~FAUVz`6p5r z9qj9HMTKMI=@k3#&CyNI8?wlyx!ZU_n^5O1QukN_%gkC`A?z=hY!kS~i@&pPG<&=a z-Mu-L@V6tG1V0w|inrI-412B^c5!C3?m6eQ$aBP$7CrQ5X0*HarHuW4FS?!yy_l2h zu>Gk`z3pBa_g}S5k|o;L5BtqI)q&%;rTU|D$IM02Glq=T%&7P*ZS$$pls3VEV69qI z^{CaN=!(p?KD%NKzifO%w>Z?4V$bNCv#SU + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-saas-src/image/repair-normal.svg b/app-saas-src/image/repair-normal.svg new file mode 100644 index 0000000..9460fd5 --- /dev/null +++ b/app-saas-src/image/repair-normal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app-saas-src/image/report-keeper-icon.png b/app-saas-src/image/report-keeper-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0aa6bcdf405a455c51810b23284685a00f8a6067 GIT binary patch literal 880 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�QVMc_rL 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 Gp$Py>iuw)! literal 0 HcmV?d00001 diff --git a/app-saas-src/image/rtAlarm-active.svg b/app-saas-src/image/rtAlarm-active.svg new file mode 100644 index 0000000..a7d028f --- /dev/null +++ b/app-saas-src/image/rtAlarm-active.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-saas-src/image/rtAlarm-normal.png b/app-saas-src/image/rtAlarm-normal.png new file mode 100644 index 0000000000000000000000000000000000000000..ef3ff585d0d29c0ab17c6fe501a90e15282f1200 GIT binary patch literal 1428 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e}}VCr49bGgo61b0UI2$*<4On9mVa^UGcH4m8Bi-4*6^83@ktj5IY>Eakt zaqG>Dv)U|)GRMm|bY0QwYB_r{I<9EZltc3$Jb1LjT<_GxMH-5HGIO3hc=B|?9Lp1D z9VbrOGexFj)7vWE$Df}BPAD^F7O6@6w;^-KKxG zTm8d*?k}AxhDnR(D_M9i6?4>*J=6LpUOH)B8jDq~l?lh;J|4r326LSHJohlY6WX%A ztvVw_GD);i>dk=}o_l!mgty#n(Y$K8Vv5R<*AE%9d>$=T`)XUjSlOr6xh(T{%&~=c zRq8S?ZDBZcBze{6u;1^b=BmtQXpQM|6)$kLH}86DymL?F#!}{8NB3;Jkl8sSynv_Q zsMC*U|8m7I&hk$;FkGMZOrhkY{he06&C6RAI}Ryr@nrA$7&fC_qDSiSr+ErKC+wa* zJsjmNw65+&t9C@Ea-L-0f^$u$lPWD6N>7+w>E30!!po}L^%`gSzN?*zcbgjy{oy(x zIMejX&$$t4vmS72P4-yCwbRAadMBUW!8yHa^Mu0Y-tsh3VA3^XG4l}r>&L7IM!|~K;@M316<__b_FQFmIHGLA?4z@9_i*p}Wti%H)3GvZ vWvSzXhu0ZZ<~7gy&Ur)l1*cDp9g75md>PCB1s_hAfXYcvS3j3^P6 + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-saas-src/image/scheme.png b/app-saas-src/image/scheme.png new file mode 100644 index 0000000000000000000000000000000000000000..f16a7f3c154a35cb7b02bece09340d62739effaa GIT binary patch literal 1469 zcmaJ>drT8|96ugT1VOWiOg7w61X)IVy|!1{la4}Lpc_T3RS@IG_3nTIy*uv?T9^=V z0?v^5gs=%4jiSsA(~XdgU?$>&0Au{ebTJYg3LA|Nl!=dxT@i49j9qf~d*t)^d|#j3 zrgtJP{qDuZM)v49YBWfYG&#S|B{pr9u?oV78$ zjix}aB4(vac#TNN^koTlW>J>n=G!DR402)&1WTmek`{m_)Bi*5_C++uo5@%C{--c! zDPu^;OmcJyiwlFxi}HqIP#sHRJk45Yx_F_BnFTaYa|JX5>U3aimW?842lvh#++;$H z6vtx}P8#(Zksu(k*$C92R2X!6L?K6%au_zmt6-%{pMoUEC(HE)*nli>^)y~$Cnmxag)6~4 z-tD4mg~OunNlGv~E4X^9=i6QY@Rb?$Nfzg?p2k7QZ_ApiXIc-M4>@D3kyd>`X((q;E21WIG{Bs$^T*C?Jb9%WlSMm;g6)vgKq z)%eQVWxcN}_T9yoEdy{D+VbkY@ip*qe#^zR2xzHnvj z(w>y;z2`FS((Vp3R-BX*n<@ug@5laeQDcsqZmOy&J~w;$^z{_h_vqbiw|wd>H|xXJ zqpm&2bf%Dm4Vx<`eEQa%xyrrUB2lJx?~nL?$JV~uud5DTQ_*V4Mm0LzaplGiA5&6m zNVw~>&_~0%PmIfgh?T!h241~}C+F07Zr-ig92Il*w5+YU{PUl#72CgK_-oZawIiFdJA&KuOlzhenDxsu>xZUQp$#wkb3Xbiiim90 z4QqD}bRxZJ%R=0tZEHtvxl*HDcbpOB)>)(5_qj=VFEwKQfX7q)IQh8xSnl}SimD?| z|4Lqd7)>>-h%Pe^;vJ>#+7BO}jv~VL7vAXt>Qoam57VzFy78JBe@Z;$e#?F8QpnDp z2*vXI=ZU?_AIAMpg^f)#7y7QaA=>bi_cS6W!U0Kq=6$tD?5BZkxsXLp2&Q^yiXu_x%I2b|aqv literal 0 HcmV?d00001 diff --git a/app-saas-src/image/success-dark.svg b/app-saas-src/image/success-dark.svg new file mode 100644 index 0000000..a1dab5a --- /dev/null +++ b/app-saas-src/image/success-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app-saas-src/image/success-light.svg b/app-saas-src/image/success-light.svg new file mode 100644 index 0000000..0aa41e8 --- /dev/null +++ b/app-saas-src/image/success-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app-saas-src/image/text-logo.png b/app-saas-src/image/text-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ff71b09760a1d3f55ee50d7c8ce454a9a1bfa23c GIT binary patch literal 3105 zcmaJ@XH-+^77ay2nlPet2mu*t8VQh4V?rnjQlc;vH6(#V(ntaX#zIk$UQ|#Akfx$A zNQn%J2xt@t3Mx3#1wj-LDKC*`QJb#ZJXcCJ7Caz(?dO*!Vo}f6c~ntA#7mgKsXd;34vNdV3rmzI2wvV!;rvl4@ex1 zLk>mz;PBsKiC6X@Dv!rTLm<)7(coxHFpCogfuT?+2ow&1!!5)J3vLXPN90>Dxdz`A za1<_yLu2!3EGBSGkr={?5Ey5e74AD1$09{CC`{gWF8N=sS`>wh=dc*SuNk9hKlcLt zsopm(`R86>KjlKiW*}?l`d{b#eM{UtYttWHD_;EQdkRzB>>P1d4{Q1!0sv(5+;A8I zfAD2cIDNCT>S$nqZo_8Nbvbet39hm`O=PzToupIUy$rk!{Sh)43<79GJ+goW=IBw= zfyV02g3=1*XC}s`Ea?~lX41PTFS#LqiAwvVWFOv;JkZ?qzWd#%e8D6+HhNE3=nWLN zdtg9DL6PSh^3cohY=G{ZnFS=AflC4Q01SJD6Mn#6O#_kiK&<`;VMzzP7vR<6P1+KRw#Zc5dWYQP+Y@pNy&aYJhl4jP1Naadz2gBip|#?AwZwLU)Ow># z!eaxw+Iy{6>=1)KtJPWW4mrnmoW_Vvxz<*rK{*X{%LSSJX81`o`fPJ3R&6%Bzr>uv+!QN>k61q45s@ogY)HV!mkQ8VfRQ8y>oI zF1EU~Jp-?33d2qkYYmcWW!Mwb!?)xM43}a_3yuQ{OxdPN3++J%g+nPL0w2Bfy@Nr% zZI@H3KyM!VbN32Vtm2wd3>xiMUoyL>Ty)mZUprbj^uY-=yX$3!* zkWljZvOT+{i*$UBuaG;6h$kjsHEqv2PaA*8?%qGXWfm@+Nzfw~WpobHB}7VUgC*;i zB}Qq%LDJ_&In=C|N%W}8Y5joaNv|9Bxz1w^R?aJf<~*A>Dl1)acD<3FhlJAc-B{>S z?QF7lp;5FwUvZvXcXOU?{N!Ye>53g$a^3YUoD<_3SEoL;eQG^uCuDTTxs+wh>xk^+ z_Uy}OD{h%{eO^4Oy$;$EQKBEI^441MQ&EyRcN0TSD3#-Z(~OJyyv6cTJ3>i{-nIX% zz!{P}Qq=iQDMIz|`D7^S+-4zOs#;HnMogY@lraMgo^ikADik6UEoiRU^em4))k zgfm7E+-F@wp=G~k2eH^|u=RXEDqC%i3TcX~^dDNSr1?*do2y2hEN6^8OF9@AQGCqr z!THnEW7^qRsQX$RcYO>nHf#wN@{ zGh?(av_!YL)ZdI=7Qin`g>TJ^_>I;g4;3LjK-M<6=E6%8kUd!^NAbH51hu)bqXFTI zbdI`0rVaAa=oxe~YHQ+B)zf}6VX248or@a&^<@t#EX|MXc*r+W+?5`iuQSsZkytky zZ#u9A)>fk=zspc${?y6aI<5U7HbMdCo@}4D@yPVOqmeV;*B+1n*lyUIcYFoZ%NsQp=YarWWr+fz2}cUalM+aF51>`*QqNxA;I>Gk|bNjhSk zzkAFC-K*oEWmC)a0o8Mhi(W)(W*%NkdvWYe(XN6=QE>)knXfp8fx6Gb^O8ffgdY#+ zqOV>paq^gt!3P{tTRhLcX3#6Dh&{XI%UEl|<0*rVdn2MuN%ixUg_XZm$u;OVgs1=R zTB;Vi9((uRhLqqK>%KdmBF~|~xQLOFQHSuE-Q52BX%3n3H^(PS(ibEQ?H|0e$%0+L zgF`$|M~zh|+tyG{2rz0#iE4lq``PA|Nzs3_?T{7Dzbb|eahA%7=dm~aa(xfv_OKKY-Q)(8|WoLW1 z3rgMn9rQ=|a?h;P_W9WxL$v96SlNtwNWW&^x}5yYGkfMffu?X;t5Rh%qH>)FIiuU{ zY)>ES4Csl7n}!`3bZo5$(G#mxtl084ih>I=Qxw$S;X$(5o?FIj;?X44XJ=}5Z=EwG z`5f+**)dt@die^C4bj^59(BA-S`O~?+$ZSfY_ltjt@&7bk?&g(xL4(2jNah&mzJk` z=}Wu)xD;3fZ=7ecm)v}>BKFpF-iz*Oeu*gd_nP018TWm@(0dZK@y)e}w^y#cf4VRX z*-(}_WG1~q>D@4bQjoZJPL~wbhaFYLmiEuhZ`M?bNl6juas{T zMVYm!^hoc!uedyr8Vqv}GDzPn5-g71z5J}B*^%1$@qzOnJiSMnKy!h~UvXD55;*qD`~MkntuY8B8gf67ZE%M5mZkv_a! z8*Z|I_giucRH!j|EzbuX_M5Q22wp88eB*(^uc%_*I_?<7>%_X$n~D03H&O?YZ>lG1 z#^<_LwN!@)7b&nVQ&accU-qjw)v@kQBe4<;Tb;4u@D+x_M@T)>t02dU?ezPJ#Mgk_ q+b=!6hcePLX&q-@P?QYJVxaw{D68;0a@kKoV literal 0 HcmV?d00001 diff --git a/app-saas-src/image/white-pr-icon.svg b/app-saas-src/image/white-pr-icon.svg new file mode 100644 index 0000000..45007fc --- /dev/null +++ b/app-saas-src/image/white-pr-icon.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/app-saas-src/image/work-ticket-assistantor-icon.png b/app-saas-src/image/work-ticket-assistantor-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..40ab15933334e75f58dcee40e352d922577ead89 GIT binary patch literal 1177 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!ZaB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf<|~|UP^v> zu_jo#udkJ7UU5lcUUI6Zi>(sS0KLr26e|-0Cr1|(BO?<-Co@AsS92!=149=J6GKB6 z6JrBQR|A+{m;B_?+|;}hnBEkGUSphkK`9}(0BEyIYEfocYKmJ?ey#%8$5xrR-C}^# zJgD9j+-@<%saGH97=2K@BE>UI2$*<4On9mVa^UGcH4m8Bi-4(mSs3p#1_nkxPZ!6K zid#v){{OdU7PFD;`2TOY{15J}!iRNx6qvYwa35iF_%ox?&Oxk0pTW?07YjEZuTQ}7 z+Jpu22})4~291I2eO3im8W-~|;rqdQWd26a4HGgSlqyV92|Qn{aP5fVcixWHl`kEv z6`rXDo)2gGw14Hx1J?s=W_hyhWj@*a$Vx#>De%0tLf#?e^Xy0FuXuW(Kc(fLyG>Dy z!ym2=OCY~9q|eh#Ax-|QO0(u<4M$;9O@=9q?=GHh)NY9Aaj{+Cli;S$KC5@x!9aGt z0=;{#ZfcdBN8WuYN?@INl;^I~hdUWkGNlhzFuTiIygJah_SHW_2exf5SyL943B5g# o$ul9aysGts{ffB~3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-saas-src/index.html b/app-saas-src/index.html new file mode 100644 index 0000000..d8bcf1d --- /dev/null +++ b/app-saas-src/index.html @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/app-saas-src/launch/launch1080x1920.png b/app-saas-src/launch/launch1080x1920.png new file mode 100644 index 0000000000000000000000000000000000000000..880a6ae62b1ce112d339272cedaccd88e00e8602 GIT binary patch literal 46051 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

uI*wsBh!!0yQjk z;Z;Po3@mOo-rs4YMLG0)JJzPz56A;RI%j}c3gJSaCqwhrKhVa_q>~AW1P2i3hoWaI01P-!0hs4KOa=7hQ3;AZg%#9Fr|=) z7H?dJO4%*LN;gu@Mqf%i!WF-k>z7iK=3qMgoZYrO6Y1{Yrn|nnHAo6Z-A&`&4e}HN z7kGxf`-9_^LD+=t;e4r{wIxLYSk+s#yb!yl8h-r#>#4zcs?V^}%UVuA)XFo{-|pAk zX)L&%3NMLf!KH^`E7-CE<8-K?vPpOt&bW>#MXrVkS8Ps_7=yhF1<=Ac^9qzNUK5*^*O#@Fa1 z8vH(V)_9<&H4NL~YgZ?q>PU&l337z+;tCL0Q;SWdU^X*5STg5kHy;T0l}@M00YTPS zu2l&(#uzHb0;U2bxgz|SMeb{6wGZ^VBjj2Z-!P zvH5Hk4eP2Y!^fk@Br{)k$O{r_q2yuX@EyEUw$qT?tw zL_uI23nJ1)2`$NpgNO)-ihu}FQIHyt5+H;q%*a>($2p1=6FVR!iZp=`Fd$MxkxmFm zCnTYVBqTXI^L>BBS?jPCKfIJh;LY>yXYYGo_kKVb>-nr1)Oz0^I-~1E$I@_zyeIev zFBP_YspOMV^(Oz?NI&3vGpSI|Gicnsmgl8(Mwo1*W-9ZrlSNE7%Rrq8$jJDC?L$gx7b%=6V((9e}= zw9u%ELK|tQXQmd=2BWwuxt^INS%^=n;H-~||d~IvU?(udu2YXXm zu3@kG+00EMEKla&cSW9XJJmiZPoMk*$?FyCy{mF%`+UKVS&IjWYnHxu&?0OZYRtIw zii_E9C4TsR^uTi>H%WV72Z_ja)^BcJIqS|{vWP34iC)r0oPj93etq_+Q6_L|Yeii~ z!|8jG(q_Fa6eDzag?z#IP3M)fjp+E^5`%0DT23J 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 1.0.0" + } + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz", + "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "http://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz", + "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "console-stream": { + "version": "0.1.1", + "resolved": "http://registry.npm.taobao.org/console-stream/download/console-stream-0.1.1.tgz", + "integrity": "sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=", + "optional": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "http://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz", + "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "http://registry.npm.taobao.org/convert-source-map/download/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=" + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "http://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "http://registry.npm.taobao.org/create-error-class/download/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "http://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "optional": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.3", + "resolved": "http://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.3.tgz", + "integrity": "sha1-oRdc80lt/IQ2wVbDNLSVWZK85pw=", + "optional": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + } + } + }, + "csso": { + "version": "2.3.2", + "resolved": "http://registry.npm.taobao.org/csso/download/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "optional": true, + "requires": { + "clap": "^1.0.9", + "source-map": "^0.5.3" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "http://registry.npm.taobao.org/currently-unhandled/download/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "^1.0.1" + } + }, + "dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==" + }, + "debug": { + "version": "2.6.9", + "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "http://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "decompress": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/decompress/download/decompress-3.0.0.tgz", + "integrity": "sha1-rx3VDQbjv8QyRh033hGzjA2ZG+0=", + "requires": { + "buffer-to-vinyl": "^1.0.0", + "concat-stream": "^1.4.6", + "decompress-tar": "^3.0.0", + "decompress-tarbz2": "^3.0.0", + "decompress-targz": "^3.0.0", + "decompress-unzip": "^3.0.0", + "stream-combiner2": "^1.1.1", + "vinyl-assign": "^1.0.1", + "vinyl-fs": "^2.2.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/arr-diff/download/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "http://registry.npm.taobao.org/array-unique/download/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "braces": { + "version": "1.8.5", + "resolved": "http://registry.npm.taobao.org/braces/download/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "http://registry.npm.taobao.org/expand-brackets/download/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "http://registry.npm.taobao.org/extglob/download/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "^1.0.0" + } + }, + "glob": { + "version": "5.0.15", + "resolved": "http://registry.npm.taobao.org/glob/download/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-stream": { + "version": "5.3.5", + "resolved": "http://registry.npm.taobao.org/glob-stream/download/glob-stream-5.3.5.tgz", + "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", + "requires": { + "extend": "^3.0.0", + "glob": "^5.0.3", + "glob-parent": "^3.0.0", + "micromatch": "^2.3.7", + "ordered-read-streams": "^0.3.0", + "through2": "^0.6.0", + "to-absolute-glob": "^0.1.1", + "unique-stream": "^2.0.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "through2": { + "version": "0.6.5", + "resolved": "http://registry.npm.taobao.org/through2/download/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "http://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-extglob/download/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/is-glob/download/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "kind-of": { + "version": "3.2.2", + "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "http://registry.npm.taobao.org/micromatch/download/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "ordered-read-streams": { + "version": "0.3.0", + "resolved": "http://registry.npm.taobao.org/ordered-read-streams/download/ordered-read-streams-0.3.0.tgz", + "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", + "requires": { + "is-stream": "^1.0.1", + "readable-stream": "^2.0.1" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "unique-stream": { + "version": "2.2.1", + "resolved": "http://registry.npm.taobao.org/unique-stream/download/unique-stream-2.2.1.tgz", + "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "requires": { + "json-stable-stringify": "^1.0.0", + "through2-filter": "^2.0.0" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/vinyl/download/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-fs": { + "version": "2.4.4", + "resolved": "http://registry.npm.taobao.org/vinyl-fs/download/vinyl-fs-2.4.4.tgz", + "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", + "requires": { + "duplexify": "^3.2.0", + "glob-stream": "^5.3.2", + "graceful-fs": "^4.0.0", + "gulp-sourcemaps": "1.6.0", + "is-valid-glob": "^0.3.0", + "lazystream": "^1.0.0", + "lodash.isequal": "^4.0.0", + "merge-stream": "^1.0.0", + "mkdirp": "^0.5.0", + "object-assign": "^4.0.0", + "readable-stream": "^2.0.4", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^1.0.0", + "through2": "^2.0.0", + "through2-filter": "^2.0.0", + "vali-date": "^1.0.0", + "vinyl": "^1.0.0" + } + } + } + }, + "decompress-tar": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/decompress-tar/download/decompress-tar-3.1.0.tgz", + "integrity": "sha1-IXx4n5uURQ76rcXF5TeXj8MzxGY=", + "requires": { + "is-tar": "^1.0.0", + "object-assign": "^2.0.0", + "strip-dirs": "^1.0.0", + "tar-stream": "^1.1.1", + "through2": "^0.6.1", + "vinyl": "^0.4.3" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "http://registry.npm.taobao.org/clone/download/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=" + }, + "object-assign": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "http://registry.npm.taobao.org/through2/download/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "http://registry.npm.taobao.org/vinyl/download/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } + } + } + }, + "decompress-tarbz2": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/decompress-tarbz2/download/decompress-tarbz2-3.1.0.tgz", + "integrity": "sha1-iyOTVoE1X58YnYclag+L3ZbZZm0=", + "requires": { + "is-bzip2": "^1.0.0", + "object-assign": "^2.0.0", + "seek-bzip": "^1.0.3", + "strip-dirs": "^1.0.0", + "tar-stream": "^1.1.1", + "through2": "^0.6.1", + "vinyl": "^0.4.3" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "http://registry.npm.taobao.org/clone/download/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=" + }, + "object-assign": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "http://registry.npm.taobao.org/through2/download/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "http://registry.npm.taobao.org/vinyl/download/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } + } + } + }, + "decompress-targz": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/decompress-targz/download/decompress-targz-3.1.0.tgz", + "integrity": "sha1-ssE9+YFmJomRtxXWRH9kLpaW9aA=", + "requires": { + "is-gzip": "^1.0.0", + "object-assign": "^2.0.0", + "strip-dirs": "^1.0.0", + "tar-stream": "^1.1.1", + "through2": "^0.6.1", + "vinyl": "^0.4.3" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "http://registry.npm.taobao.org/clone/download/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=" + }, + "object-assign": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "http://registry.npm.taobao.org/through2/download/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "http://registry.npm.taobao.org/vinyl/download/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } + } + } + }, + "decompress-unzip": { + "version": "3.4.0", + "resolved": "http://registry.npm.taobao.org/decompress-unzip/download/decompress-unzip-3.4.0.tgz", + "integrity": "sha1-YUdbQVIGa74/7hL51inRX+ZHjus=", + "requires": { + "is-zip": "^1.0.0", + "read-all-stream": "^3.0.0", + "stat-mode": "^0.2.0", + "strip-dirs": "^1.0.0", + "through2": "^2.0.0", + "vinyl": "^1.0.0", + "yauzl": "^2.2.1" + }, + "dependencies": { + "vinyl": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/vinyl/download/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "http://registry.npm.taobao.org/deep-extend/download/deep-extend-0.6.0.tgz", + "integrity": "sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw=" + }, + "defaults": { + "version": "1.0.3", + "resolved": "http://registry.npm.taobao.org/defaults/download/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz", + "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "depd": { + "version": "1.1.2", + "resolved": "http://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "deprecated": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/deprecated/download/deprecated-0.0.1.tgz", + "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/detect-file/download/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "download": { + "version": "4.4.3", + "resolved": "http://registry.npm.taobao.org/download/download/download-4.4.3.tgz", + "integrity": "sha1-qlX9rTktldS2jowr4D4MKqIbqaw=", + "requires": { + "caw": "^1.0.1", + "concat-stream": "^1.4.7", + "each-async": "^1.0.0", + "filenamify": "^1.0.1", + "got": "^5.0.0", + "gulp-decompress": "^1.2.0", + "gulp-rename": "^1.2.0", + "is-url": "^1.2.0", + "object-assign": "^4.0.1", + "read-all-stream": "^3.0.0", + "readable-stream": "^2.0.2", + "stream-combiner2": "^1.1.1", + "vinyl": "^1.0.0", + "vinyl-fs": "^2.2.0", + "ware": "^1.2.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/arr-diff/download/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "http://registry.npm.taobao.org/array-unique/download/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "braces": { + "version": "1.8.5", + "resolved": "http://registry.npm.taobao.org/braces/download/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "http://registry.npm.taobao.org/expand-brackets/download/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "http://registry.npm.taobao.org/extglob/download/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "^1.0.0" + } + }, + "glob": { + "version": "5.0.15", + "resolved": "http://registry.npm.taobao.org/glob/download/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-stream": { + "version": "5.3.5", + "resolved": "http://registry.npm.taobao.org/glob-stream/download/glob-stream-5.3.5.tgz", + "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", + "requires": { + "extend": "^3.0.0", + "glob": "^5.0.3", + "glob-parent": "^3.0.0", + "micromatch": "^2.3.7", + "ordered-read-streams": "^0.3.0", + "through2": "^0.6.0", + "to-absolute-glob": "^0.1.1", + "unique-stream": "^2.0.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "through2": { + "version": "0.6.5", + "resolved": "http://registry.npm.taobao.org/through2/download/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "http://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-extglob/download/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/is-glob/download/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "kind-of": { + "version": "3.2.2", + "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "http://registry.npm.taobao.org/micromatch/download/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "ordered-read-streams": { + "version": "0.3.0", + "resolved": "http://registry.npm.taobao.org/ordered-read-streams/download/ordered-read-streams-0.3.0.tgz", + "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", + "requires": { + "is-stream": "^1.0.1", + "readable-stream": "^2.0.1" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "unique-stream": { + "version": "2.2.1", + "resolved": "http://registry.npm.taobao.org/unique-stream/download/unique-stream-2.2.1.tgz", + "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "requires": { + "json-stable-stringify": "^1.0.0", + "through2-filter": "^2.0.0" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/vinyl/download/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-fs": { + "version": "2.4.4", + "resolved": "http://registry.npm.taobao.org/vinyl-fs/download/vinyl-fs-2.4.4.tgz", + "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", + "requires": { + "duplexify": "^3.2.0", + "glob-stream": "^5.3.2", + "graceful-fs": "^4.0.0", + "gulp-sourcemaps": "1.6.0", + "is-valid-glob": "^0.3.0", + "lazystream": "^1.0.0", + "lodash.isequal": "^4.0.0", + "merge-stream": "^1.0.0", + "mkdirp": "^0.5.0", + "object-assign": "^4.0.0", + "readable-stream": "^2.0.4", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^1.0.0", + "through2": "^2.0.0", + "through2-filter": "^2.0.0", + "vali-date": "^1.0.0", + "vinyl": "^1.0.0" + } + } + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "http://registry.npm.taobao.org/duplexer/download/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha512-+AWBwjGadtksxjOQSFDhPNQbed7icNXApT4+2BNpsXzcCBiInq2H9XW0O8sfHFaPmnQRs7cg/P0fAr2IWQSW0g==", + "requires": { + "readable-stream": "~1.1.9" + } + }, + "duplexify": { + "version": "3.6.0", + "resolved": "http://registry.npm.taobao.org/duplexify/download/duplexify-3.6.0.tgz", + "integrity": "sha1-WSkD9dgLONA3IgVBJk1poZj7NBA=", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "end-of-stream": { + "version": "1.4.1", + "resolved": "http://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.1.tgz", + "integrity": "sha1-7SljTRm6ukY7bOa4CjchPqtx7EM=", + "requires": { + "once": "^1.4.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "once": { + "version": "1.4.0", + "resolved": "http://registry.npm.taobao.org/once/download/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "each-async": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/each-async/download/each-async-1.1.1.tgz", + "integrity": "sha1-3uUim98KtrogEqOV4bhpq/iBNHM=", + "requires": { + "onetime": "^1.0.0", + "set-immediate-shim": "^1.0.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "end-of-stream": { + "version": "0.1.5", + "resolved": "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-0.1.5.tgz?cache=0&sync_timestamp=1569416267505&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fend-of-stream%2Fdownload%2Fend-of-stream-0.1.5.tgz", + "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", + "dev": true, + "requires": { + "once": "~1.3.0" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "http://registry.npm.taobao.org/error-ex/download/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "http://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "esprima": { + "version": "2.7.3", + "resolved": "http://registry.npm.taobao.org/esprima/download/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "optional": true + }, + "event-stream": { + "version": "3.3.4", + "resolved": "http://registry.npm.taobao.org/event-stream/download/event-stream-3.3.4.tgz", + "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", + "requires": { + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", + "pause-stream": "0.0.11", + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" + } + }, + "exec-buffer": { + "version": "3.2.0", + "resolved": "http://registry.npm.taobao.org/exec-buffer/download/exec-buffer-3.2.0.tgz", + "integrity": "sha1-sWhtvZBMfPmC5lLB9aebHlVzCCs=", + "optional": true, + "requires": { + "execa": "^0.7.0", + "p-finally": "^1.0.0", + "pify": "^3.0.0", + "rimraf": "^2.5.4", + "tempfile": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "optional": true + } + } + }, + "exec-series": { + "version": "1.0.3", + "resolved": "http://registry.npm.taobao.org/exec-series/download/exec-series-1.0.3.tgz", + "integrity": "sha1-bSV6m+rEgqhyx3g7yGFYOfx3FDo=", + "optional": true, + "requires": { + "async-each-series": "^1.1.0", + "object-assign": "^4.1.0" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "optional": true + } + } + }, + "execa": { + "version": "0.7.0", + "resolved": "http://registry.npm.taobao.org/execa/download/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "optional": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "executable": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/executable/download/executable-1.1.0.tgz", + "integrity": "sha1-h3mA6REvM5EGbaNyZd562ENKtNk=", + "optional": true, + "requires": { + "meow": "^3.1.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "http://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "http://registry.npm.taobao.org/expand-range/download/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "resolved": "http://registry.npm.taobao.org/fill-range/download/fill-range-2.2.4.tgz", + "integrity": "sha1-6x53OrsFbc2N8r/favWbizqTZWU=", + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "http://registry.npm.taobao.org/is-number/download/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isobject": { + "version": "2.1.0", + "resolved": "http://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "http://registry.npm.taobao.org/expand-tilde/download/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "http://registry.npm.taobao.org/extend/download/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "http://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz", + "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + } + }, + "faye-websocket": { + "version": "0.7.3", + "resolved": "http://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.7.3.tgz", + "integrity": "sha1-zEB0x/Sk39A69U3WXDVLE1EyzhE=", + "requires": { + "websocket-driver": ">=0.3.6" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/fd-slicer/download/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "http://registry.npm.taobao.org/figures/download/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "optional": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "optional": true + } + } + }, + "file-type": { + "version": "4.4.0", + "resolved": "http://registry.npm.taobao.org/file-type/download/file-type-4.4.0.tgz", + "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=" + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/filename-regex/download/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "filename-reserved-regex": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/filename-reserved-regex/download/filename-reserved-regex-1.0.0.tgz", + "integrity": "sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q=" + }, + "filenamify": { + "version": "1.2.1", + "resolved": "http://registry.npm.taobao.org/filenamify/download/filenamify-1.2.1.tgz", + "integrity": "sha1-qfL/0RxQO+0wABUCknI3jx8TZaU=", + "requires": { + "filename-reserved-regex": "^1.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-index": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/find-index/download/find-index-0.1.1.tgz", + "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", + "dev": true + }, + "find-up": { + "version": "1.1.2", + "resolved": "http://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "find-versions": { + "version": "1.2.1", + "resolved": "http://registry.npm.taobao.org/find-versions/download/find-versions-1.2.1.tgz", + "integrity": "sha1-y96fEuOFdaCvG+G5osXV/Y8Ya2I=", + "optional": true, + "requires": { + "array-uniq": "^1.0.0", + "get-stdin": "^4.0.1", + "meow": "^3.5.0", + "semver-regex": "^1.0.0" + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/findup-sync/download/findup-sync-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffindup-sync%2Fdownload%2Ffindup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/fined/download/fined-1.2.0.tgz", + "integrity": "sha1-0AvszxqitHXRbUI7Aji3E6LEo3s=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "first-chunk-stream": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/first-chunk-stream/download/first-chunk-stream-1.0.0.tgz", + "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=" + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/flagged-respawn/download/flagged-respawn-1.0.1.tgz", + "integrity": "sha1-595vEnnd2cqarIpZcdYYYGs6q0E=", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/for-own/download/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "http://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "from": { + "version": "0.1.7", + "resolved": "http://registry.npm.taobao.org/from/download/from-0.1.7.tgz", + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=" + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/fs-constants/download/fs-constants-1.0.0.tgz", + "integrity": "sha1-a+Dem+mYzhavivwkSXue6bfM2a0=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.9.tgz", + "integrity": "sha1-P17WZYPM1vQAtaANtvfoYTY+OI8=", + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true + } + } + }, + "gaze": { + "version": "0.5.2", + "resolved": "http://registry.npm.taobao.org/gaze/download/gaze-0.5.2.tgz", + "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", + "dev": true, + "requires": { + "globule": "~0.1.0" + } + }, + "get-proxy": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/get-proxy/download/get-proxy-1.1.0.tgz", + "integrity": "sha1-iUhUSRvFkbDxR9euVw9cZ4tyVus=", + "requires": { + "rc": "^1.1.2" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "http://registry.npm.taobao.org/get-stdin/download/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, + "get-stream": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "optional": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "http://registry.npm.taobao.org/get-value/download/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "gifsicle": { + "version": "3.0.4", + "resolved": "http://registry.npm.taobao.org/gifsicle/download/gifsicle-3.0.4.tgz", + "integrity": "sha1-9Fy17RAWW2ZdySng6TKLbIId+js=", + "optional": true, + "requires": { + "bin-build": "^2.0.0", + "bin-wrapper": "^3.0.0", + "logalot": "^2.0.0" + } + }, + "glob": { + "version": "4.5.3", + "resolved": "https://registry.npm.taobao.org/glob/download/glob-4.5.3.tgz?cache=0&sync_timestamp=1573078079496&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglob%2Fdownload%2Fglob-4.5.3.tgz", + "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^2.0.1", + "once": "^1.3.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "http://registry.npm.taobao.org/glob-base/download/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/glob-parent/download/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-extglob/download/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/is-glob/download/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "glob-stream": { + "version": "3.1.18", + "resolved": "http://registry.npm.taobao.org/glob-stream/download/glob-stream-3.1.18.tgz", + "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", + "dev": true, + "requires": { + "glob": "^4.3.1", + "glob2base": "^0.0.12", + "minimatch": "^2.0.1", + "ordered-read-streams": "^0.1.0", + "through2": "^0.6.1", + "unique-stream": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npm.taobao.org/through2/download/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, + "glob-watcher": { + "version": "0.0.6", + "resolved": "http://registry.npm.taobao.org/glob-watcher/download/glob-watcher-0.0.6.tgz", + "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", + "dev": true, + "requires": { + "gaze": "^0.5.1" + } + }, + "glob2base": { + "version": "0.0.12", + "resolved": "http://registry.npm.taobao.org/glob2base/download/glob2base-0.0.12.tgz", + "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "dev": true, + "requires": { + "find-index": "^0.1.1" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/global-modules/download/global-modules-1.0.0.tgz", + "integrity": "sha1-bXcPDrUjrHgWTXK15xqIdyZcw+o=", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/global-prefix/download/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "6.1.0", + "resolved": "http://registry.npm.taobao.org/globby/download/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "http://registry.npm.taobao.org/glob/download/glob-7.1.2.tgz", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "http://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + } + } + }, + "globule": { + "version": "0.1.0", + "resolved": "http://registry.npm.taobao.org/globule/download/globule-0.1.0.tgz", + "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", + "dev": true, + "requires": { + "glob": "~3.1.21", + "lodash": "~1.0.1", + "minimatch": "~0.2.11" + }, + "dependencies": { + "glob": { + "version": "3.1.21", + "resolved": "https://registry.npm.taobao.org/glob/download/glob-3.1.21.tgz?cache=0&sync_timestamp=1573078079496&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglob%2Fdownload%2Fglob-3.1.21.tgz", + "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", + "dev": true, + "requires": { + "graceful-fs": "~1.2.0", + "inherits": "1", + "minimatch": "~0.2.11" + } + }, + "graceful-fs": { + "version": "1.2.3", + "resolved": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-1.2.3.tgz", + "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", + "dev": true + }, + "inherits": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-1.0.2.tgz?cache=0&sync_timestamp=1560975547815&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-1.0.2.tgz", + "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", + "dev": true + }, + "minimatch": { + "version": "0.2.14", + "resolved": "http://registry.npm.taobao.org/minimatch/download/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true, + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + } + } + }, + "glogg": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/glogg/download/glogg-1.0.1.tgz", + "integrity": "sha1-3PdY5EeJzD89MsHzVio2duajSBA=", + "requires": { + "sparkles": "^1.0.0" + } + }, + "got": { + "version": "5.7.1", + "resolved": "http://registry.npm.taobao.org/got/download/got-5.7.1.tgz", + "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", + "requires": { + "create-error-class": "^3.0.1", + "duplexer2": "^0.1.4", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "node-status-codes": "^1.0.0", + "object-assign": "^4.0.1", + "parse-json": "^2.1.0", + "pinkie-promise": "^2.0.0", + "read-all-stream": "^3.0.0", + "readable-stream": "^2.0.5", + "timed-out": "^3.0.0", + "unzip-response": "^1.0.2", + "url-parse-lax": "^1.0.0" + }, + "dependencies": { + "duplexer2": { + "version": "0.1.4", + "resolved": "http://registry.npm.taobao.org/duplexer2/download/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "requires": { + "readable-stream": "^2.0.2" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "graceful-fs": { + "version": "3.0.12", + "resolved": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-3.0.12.tgz", + "integrity": "sha1-ADSUfOntaV7IqwuFS8kZ6Csf+u8=", + "dev": true, + "requires": { + "natives": "^1.1.3" + } + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/graceful-readlink/download/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + }, + "gulp": { + "version": "3.9.1", + "resolved": "https://registry.npm.taobao.org/gulp/download/gulp-3.9.1.tgz", + "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", + "dev": true, + "requires": { + "archy": "^1.0.0", + "chalk": "^1.0.0", + "deprecated": "^0.0.1", + "gulp-util": "^3.0.0", + "interpret": "^1.0.0", + "liftoff": "^2.1.0", + "minimist": "^1.1.0", + "orchestrator": "^0.3.0", + "pretty-hrtime": "^1.0.0", + "semver": "^4.1.0", + "tildify": "^1.0.0", + "v8flags": "^2.0.2", + "vinyl-fs": "^0.3.0" + } + }, + "gulp-clean-css": { + "version": "3.9.4", + "resolved": "http://registry.npm.taobao.org/gulp-clean-css/download/gulp-clean-css-3.9.4.tgz", + "integrity": "sha1-xtP4u3pgD75mGWKnI0ijMJVNNDs=", + "requires": { + "clean-css": "4.1.11", + "plugin-error": "1.0.1", + "through2": "2.0.3", + "vinyl-sourcemaps-apply": "0.2.1" + } + }, + "gulp-decompress": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/gulp-decompress/download/gulp-decompress-1.2.0.tgz", + "integrity": "sha1-jutlpeAV+O2FMsr+KEVJYGJvDcc=", + "requires": { + "archive-type": "^3.0.0", + "decompress": "^3.0.0", + "gulp-util": "^3.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "gulp-imagemin": { + "version": "3.4.0", + "resolved": "http://registry.npm.taobao.org/gulp-imagemin/download/gulp-imagemin-3.4.0.tgz", + "integrity": "sha1-I6jUxRM/UKKnCKyofKSy1ut8RAM=", + "requires": { + "chalk": "^2.1.0", + "gulp-util": "^3.0.8", + "imagemin": "^5.3.1", + "imagemin-gifsicle": "^5.2.0", + "imagemin-jpegtran": "^5.0.2", + "imagemin-optipng": "^5.2.1", + "imagemin-svgo": "^5.2.2", + "plur": "^2.1.2", + "pretty-bytes": "^4.0.2", + "through2-concurrent": "^1.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.4.1.tgz", + "integrity": "sha1-GMSasWoDe26wFSzIPjRxM4IVtm4=", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-5.4.0.tgz", + "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "gulp-livereload": { + "version": "3.8.1", + "resolved": "http://registry.npm.taobao.org/gulp-livereload/download/gulp-livereload-3.8.1.tgz", + "integrity": "sha1-APdEstdJ0+njdGWJyKRKysd5tQ8=", + "requires": { + "chalk": "^0.5.1", + "debug": "^2.1.0", + "event-stream": "^3.1.7", + "gulp-util": "^3.0.2", + "lodash.assign": "^3.0.0", + "mini-lr": "^0.1.8" + }, + "dependencies": { + "ansi-regex": { + "version": "0.2.1", + "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-0.2.1.tgz", + "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=" + }, + "ansi-styles": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-1.1.0.tgz", + "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=" + }, + "chalk": { + "version": "0.5.1", + "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-0.5.1.tgz", + "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", + "requires": { + "ansi-styles": "^1.1.0", + "escape-string-regexp": "^1.0.0", + "has-ansi": "^0.1.0", + "strip-ansi": "^0.3.0", + "supports-color": "^0.2.0" + } + }, + "has-ansi": { + "version": "0.1.0", + "resolved": "http://registry.npm.taobao.org/has-ansi/download/has-ansi-0.1.0.tgz", + "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", + "requires": { + "ansi-regex": "^0.2.0" + } + }, + "strip-ansi": { + "version": "0.3.0", + "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-0.3.0.tgz", + "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", + "requires": { + "ansi-regex": "^0.2.1" + } + }, + "supports-color": { + "version": "0.2.0", + "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-0.2.0.tgz", + "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=" + } + } + }, + "gulp-rename": { + "version": "1.3.0", + "resolved": "http://registry.npm.taobao.org/gulp-rename/download/gulp-rename-1.3.0.tgz", + "integrity": "sha1-Lnidj1Y6sMkk7rYpZ1dvN/9MuCY=" + }, + "gulp-sourcemaps": { + "version": "1.6.0", + "resolved": "http://registry.npm.taobao.org/gulp-sourcemaps/download/gulp-sourcemaps-1.6.0.tgz", + "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", + "requires": { + "convert-source-map": "^1.1.1", + "graceful-fs": "^4.1.2", + "strip-bom": "^2.0.0", + "through2": "^2.0.0", + "vinyl": "^1.0.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "http://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/vinyl/download/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "gulp-uglify": { + "version": "2.1.2", + "resolved": "http://registry.npm.taobao.org/gulp-uglify/download/gulp-uglify-2.1.2.tgz", + "integrity": "sha1-bbhbHQ7mPRgFhZK2WGSdZcLsRUE=", + "dev": true, + "requires": { + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash": "^4.13.1", + "make-error-cause": "^1.1.1", + "through2": "^2.0.0", + "uglify-js": "~2.8.10", + "uglify-save-license": "^0.4.1", + "vinyl-sourcemaps-apply": "^0.2.0" + }, + "dependencies": { + "lodash": { + "version": "4.17.11", + "resolved": "http://registry.npm.taobao.org/lodash/download/lodash-4.17.11.tgz", + "integrity": "sha1-s56mIp72B+zYniyN8SU2iRysm40=", + "dev": true + } + } + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha512-q5oWPc12lwSFS9h/4VIjG+1NuNDlJ48ywV2JKItY4Ycc/n1fXJeYPVQsfu5ZrhQi7FGSDBalwUCLar/GyHXKGw==", + "requires": { + "array-differ": "^1.0.0", + "array-uniq": "^1.0.2", + "beeper": "^1.0.0", + "chalk": "^1.0.0", + "dateformat": "^2.0.0", + "fancy-log": "^1.1.0", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.0.0", + "minimist": "^1.1.0", + "multipipe": "^0.1.2", + "object-assign": "^3.0.0", + "replace-ext": "0.0.1", + "through2": "^2.0.0", + "vinyl": "^0.5.0" + } + }, + "gulp-watch": { + "version": "4.3.11", + "resolved": "http://registry.npm.taobao.org/gulp-watch/download/gulp-watch-4.3.11.tgz", + "integrity": "sha1-Fi/FY96fx3DpH5p845VVE6mhGMA=", + "requires": { + "anymatch": "^1.3.0", + "chokidar": "^1.6.1", + "glob-parent": "^3.0.1", + "gulp-util": "^3.0.7", + "object-assign": "^4.1.0", + "path-is-absolute": "^1.0.1", + "readable-stream": "^2.2.2", + "slash": "^1.0.0", + "vinyl": "^1.2.0", + "vinyl-file": "^2.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/vinyl/download/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/gulplog/download/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "requires": { + "glogg": "^1.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "http://registry.npm.taobao.org/has-gulplog/download/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "requires": { + "sparkles": "^1.0.0" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/has-values/download/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/homedir-polyfill/download/homedir-polyfill-1.0.3.tgz", + "integrity": "sha1-dDKYzvTlrz4ZQWH7rcwhUdOgWOg=", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.6.0", + "resolved": "http://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.6.0.tgz", + "integrity": "sha1-IyNbKasjDFdqqw1PE/wEawsDgiI=" + }, + "html-comment-regex": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/html-comment-regex/download/html-comment-regex-1.1.1.tgz", + "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", + "optional": true + }, + "http-errors": { + "version": "1.3.1", + "resolved": "http://registry.npm.taobao.org/http-errors/download/http-errors-1.3.1.tgz", + "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=", + "requires": { + "inherits": "~2.0.1", + "statuses": "1" + } + }, + "http-parser-js": { + "version": "0.4.13", + "resolved": "http://registry.npm.taobao.org/http-parser-js/download/http-parser-js-0.4.13.tgz", + "integrity": "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc=" + }, + "iconv-lite": { + "version": "0.4.13", + "resolved": "http://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.13.tgz", + "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=" + }, + "imagemin": { + "version": "5.3.1", + "resolved": "http://registry.npm.taobao.org/imagemin/download/imagemin-5.3.1.tgz", + "integrity": "sha1-8Zwu7h5xumxlWMUV+fyWaAGJptQ=", + "requires": { + "file-type": "^4.1.0", + "globby": "^6.1.0", + "make-dir": "^1.0.0", + "p-pipe": "^1.1.0", + "pify": "^2.3.0", + "replace-ext": "^1.0.0" + }, + "dependencies": { + "replace-ext": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/replace-ext/download/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + } + } + }, + "imagemin-gifsicle": { + "version": "5.2.0", + "resolved": "http://registry.npm.taobao.org/imagemin-gifsicle/download/imagemin-gifsicle-5.2.0.tgz", + "integrity": "sha1-N4FSTEV2Eu8EkWrzQkGitCv8tAo=", + "optional": true, + "requires": { + "exec-buffer": "^3.0.0", + "gifsicle": "^3.0.0", + "is-gif": "^1.0.0" + } + }, + "imagemin-jpegtran": { + "version": "5.0.2", + "resolved": "http://registry.npm.taobao.org/imagemin-jpegtran/download/imagemin-jpegtran-5.0.2.tgz", + "integrity": "sha1-5ogiY7j3kW/duABkDPddLpcNKtY=", + "optional": true, + "requires": { + "exec-buffer": "^3.0.0", + "is-jpg": "^1.0.0", + "jpegtran-bin": "^3.0.0" + } + }, + "imagemin-optipng": { + "version": "5.2.1", + "resolved": "http://registry.npm.taobao.org/imagemin-optipng/download/imagemin-optipng-5.2.1.tgz", + "integrity": "sha1-0i2kEsCfX/AKQzmWC5ioix2+hpU=", + "optional": true, + "requires": { + "exec-buffer": "^3.0.0", + "is-png": "^1.0.0", + "optipng-bin": "^3.0.0" + } + }, + "imagemin-svgo": { + "version": "5.2.4", + "resolved": "http://registry.npm.taobao.org/imagemin-svgo/download/imagemin-svgo-5.2.4.tgz", + "integrity": "sha1-bNXTQsrkvNi0g1lOUxVpXfArnps=", + "optional": true, + "requires": { + "is-svg": "^2.0.0", + "svgo": "^0.7.0" + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "http://registry.npm.taobao.org/indent-string/download/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "^2.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "http://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "http://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "http://registry.npm.taobao.org/ini/download/ini-1.3.5.tgz", + "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=" + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/interpret/download/interpret-1.2.0.tgz", + "integrity": "sha1-1QYaYiS+WOgIOYX1AU2EQ1lXYpY=", + "dev": true + }, + "ip-regex": { + "version": "1.0.3", + "resolved": "http://registry.npm.taobao.org/ip-regex/download/ip-regex-1.0.3.tgz", + "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=", + "optional": true + }, + "irregular-plurals": { + "version": "1.4.0", + "resolved": "http://registry.npm.taobao.org/irregular-plurals/download/irregular-plurals-1.4.0.tgz", + "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=" + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-absolute/download/is-absolute-1.0.0.tgz", + "integrity": "sha1-OV4a6EsR8mrReV5zwXN45IowFXY=", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "http://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "http://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-builtin-module/download/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-bzip2": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-bzip2/download/is-bzip2-1.0.0.tgz", + "integrity": "sha1-XuWOqlounIDiFAe+3yOuWsCRs/w=" + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", + "dev": true + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "http://registry.npm.taobao.org/is-dotfile/download/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "http://registry.npm.taobao.org/is-equal-shallow/download/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "http://registry.npm.taobao.org/is-extendable/download/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-finite": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/is-finite/download/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-gif": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-gif/download/is-gif-1.0.0.tgz", + "integrity": "sha1-ptKumIkwB7/6l6HYwB1jIFgyCX4=", + "optional": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + }, + "is-gzip": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-gzip/download/is-gzip-1.0.0.tgz", + "integrity": "sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=" + }, + "is-jpg": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/is-jpg/download/is-jpg-1.0.1.tgz", + "integrity": "sha1-KW1X/dmc4BBDSnKD40armhA16XU=", + "optional": true + }, + "is-natural-number": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/is-natural-number/download/is-natural-number-2.1.1.tgz", + "integrity": "sha1-fUxXKDd+84bD4ZSpkRv1fG3DNec=" + }, + "is-number": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/is-obj/download/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "http://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-png": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/is-png/download/is-png-1.1.0.tgz", + "integrity": "sha1-1XSxK/J1wDUEVVcLDltXqwYgd84=", + "optional": true + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "http://registry.npm.taobao.org/is-posix-bracket/download/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/is-primitive/download/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-redirect/download/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" + }, + "is-relative": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-relative/download/is-relative-1.0.0.tgz", + "integrity": "sha1-obtpNc6MXboei5dUubLcwCDiJg0=", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/is-retry-allowed/download/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-svg": { + "version": "2.1.0", + "resolved": "http://registry.npm.taobao.org/is-svg/download/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "optional": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-tar": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-tar/download/is-tar-1.0.0.tgz", + "integrity": "sha1-L2suF5LB9bs2UZrKqdZcDSb+hT0=" + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-unc-path/download/is-unc-path-1.0.0.tgz", + "integrity": "sha1-1zHoiY7QkKEsNSrS6u1Qla0yLJ0=", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-url": { + "version": "1.2.4", + "resolved": "http://registry.npm.taobao.org/is-url/download/is-url-1.2.4.tgz", + "integrity": "sha1-BKTfRtKMTP89c9Af8Gq+sxihqlI=" + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "http://registry.npm.taobao.org/is-utf8/download/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-valid-glob": { + "version": "0.3.0", + "resolved": "http://registry.npm.taobao.org/is-valid-glob/download/is-valid-glob-0.3.0.tgz", + "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz", + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", + "dev": true + }, + "is-zip": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-zip/download/is-zip-1.0.0.tgz", + "integrity": "sha1-R7Co/004p2QxzP2ZqOFaTIa6IyU=" + }, + "isarray": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "http://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "jpegtran-bin": { + "version": "3.2.0", + "resolved": "http://registry.npm.taobao.org/jpegtran-bin/download/jpegtran-bin-3.2.0.tgz", + "integrity": "sha1-9g7PSumZwL2tLp+83ytvCYHnops=", + "optional": true, + "requires": { + "bin-build": "^2.0.0", + "bin-wrapper": "^3.0.0", + "logalot": "^2.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "http://registry.npm.taobao.org/js-yaml/download/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "optional": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^2.6.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/json-stable-stringify/download/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "requires": { + "jsonify": "~0.0.0" + } + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "http://registry.npm.taobao.org/jsonify/download/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "http://registry.npm.taobao.org/lazy-cache/download/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lazy-req": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/lazy-req/download/lazy-req-1.1.0.tgz", + "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=", + "optional": true + }, + "lazystream": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/lazystream/download/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "requires": { + "readable-stream": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "liftoff": { + "version": "2.5.0", + "resolved": "https://registry.npm.taobao.org/liftoff/download/liftoff-2.5.0.tgz", + "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^2.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + } + }, + "livereload-js": { + "version": "2.3.0", + "resolved": "http://registry.npm.taobao.org/livereload-js/download/livereload-js-2.3.0.tgz", + "integrity": "sha1-w6si6Kr1vzUF2A0JjLrWdyZUjJo=" + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/load-json-file/download/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "http://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "lodash": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-1.0.2.tgz", + "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "http://registry.npm.taobao.org/lodash._baseassign/download/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "http://registry.npm.taobao.org/lodash._basecopy/download/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha512-mTzAr1aNAv/i7W43vOR/uD/aJ4ngbtsRaCubp2BfZhlGU/eORUjg/7F6X0orNMdv33JOrdgGybtvMN/po3EWrA==" + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha512-H94wl5P13uEqlCg7OcNNhMQ8KvWSIyqXzOPusRgHC9DK3o54P6P3xtbXlVbRABG4q5gSmp7EDdJ0MSuW9HX6Mg==" + }, + "lodash._bindcallback": { + "version": "3.0.1", + "resolved": "http://registry.npm.taobao.org/lodash._bindcallback/download/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=" + }, + "lodash._createassigner": { + "version": "3.1.1", + "resolved": "http://registry.npm.taobao.org/lodash._createassigner/download/lodash._createassigner-3.1.1.tgz", + "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", + "requires": { + "lodash._bindcallback": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash.restparam": "^3.0.0" + } + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "http://registry.npm.taobao.org/lodash._getnative/download/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "http://registry.npm.taobao.org/lodash._isiterateecall/download/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha512-Sjlavm5y+FUVIF3vF3B75GyXrzsfYV8Dlv3L4mEpuB9leg8N6yf/7rU06iLPx9fY0Mv3khVp9p7Dx0mGV6V5OQ==" + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha512-OrPwdDc65iJiBeUe5n/LIjd7Viy99bKwDdk7Z5ljfZg0uFRFlfQaCy9tZ4YMAag9WAZmlVpe1iZrkIMMSMHD3w==" + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==" + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha512-O0pWuFSK6x4EXhM1dhZ8gchNtG7JMqBtrHdoUFUWXD7dJnNSUze1GuyQr5sOs0aCvgGeI3o/OJW8f4ca7FDxmQ==" + }, + "lodash.assign": { + "version": "3.2.0", + "resolved": "http://registry.npm.taobao.org/lodash.assign/download/lodash.assign-3.2.0.tgz", + "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", + "requires": { + "lodash._baseassign": "^3.0.0", + "lodash._createassigner": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha512-n1PZMXgaaDWZDSvuNZ/8XOcYO2hOKDqZel5adtR30VKQAtoWs/5AOeFA0vPV8moiPzlqe7F4cP2tzpFewQyelQ==", + "requires": { + "lodash._root": "^3.0.0" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/lodash.isarguments/download/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "http://registry.npm.taobao.org/lodash.isarray/download/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "http://registry.npm.taobao.org/lodash.isequal/download/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "http://registry.npm.taobao.org/lodash.keys/download/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "http://registry.npm.taobao.org/lodash.restparam/download/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha512-0B4Y53I0OgHUJkt+7RmlDFWKjVAI/YUpWNiL9GQz5ORDr4ttgfQGo+phBWKFLJbBdtOwgMuUkdOHOnPg45jKmQ==", + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" + } + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha512-TcrlEr31tDYnWkHFWDCV3dHYroKEXpJZ2YJYvJdhN+y4AkWMDZ5I4I8XDtUKqSAyG81N7w+I1mFEJtcED+tGqQ==", + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0" + } + }, + "logalot": { + "version": "2.1.0", + "resolved": "http://registry.npm.taobao.org/logalot/download/logalot-2.1.0.tgz", + "integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=", + "optional": true, + "requires": { + "figures": "^1.3.5", + "squeak": "^1.0.0" + } + }, + "longest": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/longest/download/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "http://registry.npm.taobao.org/loud-rejection/download/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/lowercase-keys/download/lowercase-keys-1.0.1.tgz", + "integrity": "sha1-b54wtHCE2XGnyCD/FabFFnt0wm8=" + }, + "lpad-align": { + "version": "1.1.2", + "resolved": "http://registry.npm.taobao.org/lpad-align/download/lpad-align-1.1.2.tgz", + "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=", + "optional": true, + "requires": { + "get-stdin": "^4.0.1", + "indent-string": "^2.1.0", + "longest": "^1.0.0", + "meow": "^3.3.0" + } + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "http://registry.npm.taobao.org/lru-cache/download/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "make-dir": { + "version": "1.3.0", + "resolved": "http://registry.npm.taobao.org/make-dir/download/make-dir-1.3.0.tgz", + "integrity": "sha1-ecEDO4BRW9bSTsmTPoYMp17ifww=", + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "make-error": { + "version": "1.3.5", + "resolved": "http://registry.npm.taobao.org/make-error/download/make-error-1.3.5.tgz", + "integrity": "sha1-7+ToH22yjK3WBccPKcgxtY73dsg=", + "dev": true + }, + "make-error-cause": { + "version": "1.2.2", + "resolved": "http://registry.npm.taobao.org/make-error-cause/download/make-error-cause-1.2.2.tgz", + "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", + "dev": true, + "requires": { + "make-error": "^1.2.0" + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/make-iterator/download/make-iterator-1.0.1.tgz", + "integrity": "sha1-KbM/MSqo9UfEpeSQ9Wr87JkTOtY=", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "http://registry.npm.taobao.org/map-cache/download/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/map-obj/download/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, + "map-stream": { + "version": "0.1.0", + "resolved": "http://registry.npm.taobao.org/map-stream/download/map-stream-0.1.0.tgz", + "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/map-visit/download/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "math-random": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/math-random/download/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "http://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "meow": { + "version": "3.7.0", + "resolved": "http://registry.npm.taobao.org/meow/download/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + } + } + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/merge-stream/download/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "requires": { + "readable-stream": "^2.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-3.1.10.tgz", + "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "mime-db": { + "version": "1.33.0", + "resolved": "http://registry.npm.taobao.org/mime-db/download/mime-db-1.33.0.tgz", + "integrity": "sha1-o0kgUKXLm2NFBUHjnZeI0icng9s=" + }, + "mime-types": { + "version": "2.1.18", + "resolved": "http://registry.npm.taobao.org/mime-types/download/mime-types-2.1.18.tgz", + "integrity": "sha1-bzI/YKg9ERRvgx/xH9ZuL+VQO7g=", + "requires": { + "mime-db": "~1.33.0" + } + }, + "mini-lr": { + "version": "0.1.9", + "resolved": "http://registry.npm.taobao.org/mini-lr/download/mini-lr-0.1.9.tgz", + "integrity": "sha1-AhmdJzR5U9H9HW297UJh8Yey0PY=", + "requires": { + "body-parser": "~1.14.0", + "debug": "^2.2.0", + "faye-websocket": "~0.7.2", + "livereload-js": "^2.2.0", + "parseurl": "~1.3.0", + "qs": "~2.2.3" + } + }, + "minimatch": { + "version": "2.0.10", + "resolved": "http://registry.npm.taobao.org/minimatch/download/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "requires": { + "brace-expansion": "^1.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz?cache=0&sync_timestamp=1561436244196&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmixin-deep%2Fdownload%2Fmixin-deep-1.3.2.tgz", + "integrity": "sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY=", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "http://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "http://registry.npm.taobao.org/minimist/download/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha512-7ZxrUybYv9NonoXgwoOqtStIu18D1c3eFZj27hqgf5kBrBF8Q+tE8V0MW8dKM5QLkQPh1JhhbKgHLY9kifov4Q==", + "requires": { + "duplexer2": "0.0.2" + } + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npm.taobao.org/nan/download/nan-2.14.0.tgz", + "integrity": "sha1-eBj3IgJ7JFmobwKV1DTR/CM2xSw=", + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "http://registry.npm.taobao.org/nanomatch/download/nanomatch-1.2.13.tgz", + "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natives": { + "version": "1.1.6", + "resolved": "https://registry.npm.taobao.org/natives/download/natives-1.1.6.tgz", + "integrity": "sha1-pgO0pJirdxc2ErnqGs3sTZgPALs=", + "dev": true + }, + "node-status-codes": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/node-status-codes/download/node-status-codes-1.0.0.tgz", + "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=" + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "http://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.4.0.tgz", + "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "http://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "optional": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "object-assign": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "http://registry.npm.taobao.org/object-copy/download/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/object.defaults/download/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/object.map/download/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/object.omit/download/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-own": { + "version": "0.1.5", + "resolved": "http://registry.npm.taobao.org/for-own/download/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "^1.0.1" + } + } + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "http://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "http://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.3.3", + "resolved": "http://registry.npm.taobao.org/once/download/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/onetime/download/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" + }, + "optipng-bin": { + "version": "3.1.4", + "resolved": "http://registry.npm.taobao.org/optipng-bin/download/optipng-bin-3.1.4.tgz", + "integrity": "sha1-ldNPLEiHBPb9cGBr/qDGWfHZXYQ=", + "optional": true, + "requires": { + "bin-build": "^2.0.0", + "bin-wrapper": "^3.0.0", + "logalot": "^2.0.0" + } + }, + "orchestrator": { + "version": "0.3.8", + "resolved": "http://registry.npm.taobao.org/orchestrator/download/orchestrator-0.3.8.tgz", + "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", + "dev": true, + "requires": { + "end-of-stream": "~0.1.5", + "sequencify": "~0.0.7", + "stream-consume": "~0.1.0" + } + }, + "ordered-read-streams": { + "version": "0.1.0", + "resolved": "http://registry.npm.taobao.org/ordered-read-streams/download/ordered-read-streams-0.1.0.tgz", + "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", + "dev": true + }, + "os-filter-obj": { + "version": "1.0.3", + "resolved": "http://registry.npm.taobao.org/os-filter-obj/download/os-filter-obj-1.0.3.tgz", + "integrity": "sha1-WRUzDZDs7VV9LZOKMcbdIU2cY60=", + "optional": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/os-homedir/download/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "optional": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-pipe": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/p-pipe/download/p-pipe-1.2.0.tgz", + "integrity": "sha1-SxoROZoRUgpneQ7loMHViB1r7+k=" + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/parse-filepath/download/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "http://registry.npm.taobao.org/parse-glob/download/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-extglob/download/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/is-glob/download/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "http://registry.npm.taobao.org/parse-json/download/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==" + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/parse-passwd/download/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parseurl": { + "version": "1.3.2", + "resolved": "http://registry.npm.taobao.org/parseurl/download/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/path-dirname/download/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "2.1.0", + "resolved": "http://registry.npm.taobao.org/path-exists/download/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/path-key/download/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "optional": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "http://registry.npm.taobao.org/path-parse/download/path-parse-1.0.6.tgz", + "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "http://registry.npm.taobao.org/path-root/download/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "http://registry.npm.taobao.org/path-root-regex/download/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/path-type/download/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "http://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + } + } + }, + "pause-stream": { + "version": "0.0.11", + "resolved": "http://registry.npm.taobao.org/pause-stream/download/pause-stream-0.0.11.tgz", + "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", + "requires": { + "through": "~2.3" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/pend/download/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "http://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "plugin-error": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/plugin-error/download/plugin-error-1.0.1.tgz", + "integrity": "sha1-dwFr2JGdCsN3/c3QMiMolTyleBw=", + "requires": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + } + }, + "plur": { + "version": "2.1.2", + "resolved": "http://registry.npm.taobao.org/plur/download/plur-2.1.2.tgz", + "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", + "requires": { + "irregular-plurals": "^1.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "http://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "http://registry.npm.taobao.org/prepend-http/download/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "preserve": { + "version": "0.2.0", + "resolved": "http://registry.npm.taobao.org/preserve/download/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + }, + "pretty-bytes": { + "version": "4.0.2", + "resolved": "http://registry.npm.taobao.org/pretty-bytes/download/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=" + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "http://registry.npm.taobao.org/pretty-hrtime/download/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.0.tgz", + "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o=" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "optional": true + }, + "q": { + "version": "1.5.1", + "resolved": "http://registry.npm.taobao.org/q/download/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "optional": true + }, + "qs": { + "version": "2.2.5", + "resolved": "http://registry.npm.taobao.org/qs/download/qs-2.2.5.tgz", + "integrity": "sha1-EIirr53MCuWuRbcJ5sa1iIsjkjw=" + }, + "randomatic": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/randomatic/download/randomatic-3.0.0.tgz", + "integrity": "sha1-01SQAw6091eN4pLObfsEqRoSiSM=", + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "http://registry.npm.taobao.org/is-number/download/is-number-4.0.0.tgz", + "integrity": "sha1-ACbjf1RU1z41bf5lZGmYZ8an8P8=" + } + } + }, + "raw-body": { + "version": "2.1.7", + "resolved": "http://registry.npm.taobao.org/raw-body/download/raw-body-2.1.7.tgz", + "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=", + "requires": { + "bytes": "2.4.0", + "iconv-lite": "0.4.13", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "2.4.0", + "resolved": "http://registry.npm.taobao.org/bytes/download/bytes-2.4.0.tgz", + "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=" + } + } + }, + "rc": { + "version": "1.2.8", + "resolved": "http://registry.npm.taobao.org/rc/download/rc-1.2.8.tgz", + "integrity": "sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0=", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "read-all-stream": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/read-all-stream/download/read-all-stream-3.1.0.tgz", + "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", + "requires": { + "pinkie-promise": "^2.0.0", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/read-pkg/download/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "http://registry.npm.taobao.org/readdirp/download/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "requires": { + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "http://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "http://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npm.taobao.org/rechoir/download/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/redent/download/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "http://registry.npm.taobao.org/regex-cache/download/regex-cache-0.4.4.tgz", + "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz", + "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/remove-trailing-separator/download/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "http://registry.npm.taobao.org/repeat-element/download/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "http://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/repeating/download/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "^1.0.0" + } + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/replace-ext/download/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" + }, + "resolve": { + "version": "1.13.1", + "resolved": "https://registry.npm.taobao.org/resolve/download/resolve-1.13.1.tgz", + "integrity": "sha1-vgqkwGrNUwg1BauzX01mkyqzXRY=", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/resolve-dir/download/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "http://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz", + "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "http://registry.npm.taobao.org/right-align/download/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "http://registry.npm.taobao.org/rimraf/download/rimraf-2.6.2.tgz", + "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=", + "requires": { + "glob": "^7.0.5" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "http://registry.npm.taobao.org/glob/download/glob-7.1.2.tgz", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "http://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/safe-regex/download/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "http://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz", + "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=", + "optional": true + }, + "seek-bzip": { + "version": "1.0.5", + "resolved": "http://registry.npm.taobao.org/seek-bzip/download/seek-bzip-1.0.5.tgz", + "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", + "requires": { + "commander": "~2.8.1" + } + }, + "semver": { + "version": "4.3.6", + "resolved": "http://registry.npm.taobao.org/semver/download/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=" + }, + "semver-regex": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/semver-regex/download/semver-regex-1.0.0.tgz", + "integrity": "sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk=", + "optional": true + }, + "semver-truncate": { + "version": "1.1.2", + "resolved": "http://registry.npm.taobao.org/semver-truncate/download/semver-truncate-1.1.2.tgz", + "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", + "optional": true, + "requires": { + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.5.0", + "resolved": "http://registry.npm.taobao.org/semver/download/semver-5.5.0.tgz", + "integrity": "sha1-3Eu8emyp2Rbe5dQ1FvAJK1j3uKs=", + "optional": true + } + } + }, + "sequencify": { + "version": "0.0.7", + "resolved": "http://registry.npm.taobao.org/sequencify/download/sequencify-0.0.7.tgz", + "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/set-immediate-shim/download/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/set-value/download/set-value-2.0.1.tgz", + "integrity": "sha1-oY1AUw5vB95CKMfe/kInr4ytAFs=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "optional": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/shebang-regex/download/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "optional": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/sigmund/download/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "http://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "slash": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "http://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz", + "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/snapdragon-node/download/snapdragon-node-2.1.1.tgz", + "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "http://registry.npm.taobao.org/snapdragon-util/download/snapdragon-util-3.0.1.tgz", + "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "http://registry.npm.taobao.org/source-map-resolve/download/source-map-resolve-0.5.2.tgz", + "integrity": "sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk=", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "http://registry.npm.taobao.org/source-map-url/download/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sparkles": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/sparkles/download/sparkles-1.0.1.tgz", + "integrity": "sha1-AI22XtzmxQ7sDF4ijhlFBh3QQ3w=" + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.0.0.tgz", + "integrity": "sha1-BaW01xU6GVvJLDxCW2nzsqlSTII=", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "http://registry.npm.taobao.org/spdx-exceptions/download/spdx-exceptions-2.1.0.tgz", + "integrity": "sha1-LHrmEFbHFKW5ubKyr30xHvXHj+k=" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "http://registry.npm.taobao.org/spdx-license-ids/download/spdx-license-ids-3.0.0.tgz", + "integrity": "sha1-enzShHDMbToc/m1miG9rxDDTrIc=" + }, + "split": { + "version": "0.3.3", + "resolved": "http://registry.npm.taobao.org/split/download/split-0.3.3.tgz", + "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "requires": { + "through": "2" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/split-string/download/split-string-3.1.0.tgz", + "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "http://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "optional": true + }, + "squeak": { + "version": "1.3.0", + "resolved": "http://registry.npm.taobao.org/squeak/download/squeak-1.3.0.tgz", + "integrity": "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=", + "optional": true, + "requires": { + "chalk": "^1.0.0", + "console-stream": "^0.1.1", + "lpad-align": "^1.0.1" + } + }, + "stat-mode": { + "version": "0.2.2", + "resolved": "http://registry.npm.taobao.org/stat-mode/download/stat-mode-0.2.2.tgz", + "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=" + }, + "static-extend": { + "version": "0.1.2", + "resolved": "http://registry.npm.taobao.org/static-extend/download/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "http://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stream-combiner": { + "version": "0.0.4", + "resolved": "http://registry.npm.taobao.org/stream-combiner/download/stream-combiner-0.0.4.tgz", + "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", + "requires": { + "duplexer": "~0.1.1" + } + }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/stream-combiner2/download/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "requires": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "duplexer2": { + "version": "0.1.4", + "resolved": "http://registry.npm.taobao.org/duplexer2/download/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "requires": { + "readable-stream": "^2.0.2" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-consume": { + "version": "0.1.1", + "resolved": "http://registry.npm.taobao.org/stream-consume/download/stream-consume-0.1.1.tgz", + "integrity": "sha1-0721mMK9CugrjKx6xQsRB6eZbEg=", + "dev": true + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/stream-shift/download/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/strip-bom/download/strip-bom-1.0.0.tgz", + "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", + "dev": true, + "requires": { + "first-chunk-stream": "^1.0.0", + "is-utf8": "^0.2.0" + } + }, + "strip-bom-stream": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/strip-bom-stream/download/strip-bom-stream-1.0.0.tgz", + "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", + "requires": { + "first-chunk-stream": "^1.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "strip-dirs": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/strip-dirs/download/strip-dirs-1.1.1.tgz", + "integrity": "sha1-lgu9EoeETzl1pFWKoQOoJV4kVqA=", + "requires": { + "chalk": "^1.0.0", + "get-stdin": "^4.0.1", + "is-absolute": "^0.1.5", + "is-natural-number": "^2.0.0", + "minimist": "^1.1.0", + "sum-up": "^1.0.1" + }, + "dependencies": { + "is-absolute": { + "version": "0.1.7", + "resolved": "http://registry.npm.taobao.org/is-absolute/download/is-absolute-0.1.7.tgz", + "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", + "requires": { + "is-relative": "^0.1.0" + } + }, + "is-relative": { + "version": "0.1.3", + "resolved": "http://registry.npm.taobao.org/is-relative/download/is-relative-0.1.3.tgz", + "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=" + } + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/strip-eof/download/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "optional": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/strip-indent/download/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "strip-outer": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/strip-outer/download/strip-outer-1.0.1.tgz", + "integrity": "sha1-sv0qv2YEudHmATBXGV34Nrip1jE=", + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "sum-up": { + "version": "1.0.3", + "resolved": "http://registry.npm.taobao.org/sum-up/download/sum-up-1.0.3.tgz", + "integrity": "sha1-HGYfZnBX9jvLeHWqFDi8FiUlFW4=", + "requires": { + "chalk": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "svgo": { + "version": "0.7.2", + "resolved": "http://registry.npm.taobao.org/svgo/download/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "optional": true, + "requires": { + "coa": "~1.0.1", + "colors": "~1.1.2", + "csso": "~2.3.1", + "js-yaml": "~3.7.0", + "mkdirp": "~0.5.1", + "sax": "~1.2.1", + "whet.extend": "~0.9.9" + } + }, + "tar-stream": { + "version": "1.6.1", + "resolved": "http://registry.npm.taobao.org/tar-stream/download/tar-stream-1.6.1.tgz", + "integrity": "sha1-+E7xaWJp1iI8pI9uHu7eP36B85U=", + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.1.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "end-of-stream": { + "version": "1.4.1", + "resolved": "http://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.1.tgz", + "integrity": "sha1-7SljTRm6ukY7bOa4CjchPqtx7EM=", + "requires": { + "once": "^1.4.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "once": { + "version": "1.4.0", + "resolved": "http://registry.npm.taobao.org/once/download/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/temp-dir/download/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "optional": true + }, + "tempfile": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/tempfile/download/tempfile-2.0.0.tgz", + "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", + "optional": true, + "requires": { + "temp-dir": "^1.0.0", + "uuid": "^3.0.1" + } + }, + "through": { + "version": "2.3.8", + "resolved": "http://registry.npm.taobao.org/through/download/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.3", + "resolved": "http://registry.npm.taobao.org/through2/download/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "through2-concurrent": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/through2-concurrent/download/through2-concurrent-1.1.1.tgz", + "integrity": "sha1-EctOpMnjG8puTB5tukjRxyjDUks=", + "requires": { + "through2": "^2.0.0" + } + }, + "through2-filter": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/through2-filter/download/through2-filter-2.0.0.tgz", + "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "tildify": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/tildify/download/tildify-1.2.0.tgz", + "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==" + }, + "timed-out": { + "version": "3.1.3", + "resolved": "http://registry.npm.taobao.org/timed-out/download/timed-out-3.1.3.tgz", + "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=" + }, + "to-absolute-glob": { + "version": "0.1.1", + "resolved": "http://registry.npm.taobao.org/to-absolute-glob/download/to-absolute-glob-0.1.1.tgz", + "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", + "requires": { + "extend-shallow": "^2.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "to-buffer": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/to-buffer/download/to-buffer-1.1.1.tgz", + "integrity": "sha1-STvUj2LXxD/N7TE6A9ytsuEhOoA=" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "http://registry.npm.taobao.org/to-object-path/download/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "http://registry.npm.taobao.org/to-regex/download/to-regex-3.0.2.tgz", + "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/trim-newlines/download/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/trim-repeated/download/trim-repeated-1.0.0.tgz", + "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=" + }, + "type-is": { + "version": "1.6.16", + "resolved": "http://registry.npm.taobao.org/type-is/download/type-is-1.6.16.tgz", + "integrity": "sha1-+JzjQVQcZysl7nrjxz3uOyvlAZQ=", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.18" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "http://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "http://registry.npm.taobao.org/uglify-js/download/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + } + }, + "uglify-save-license": { + "version": "0.4.1", + "resolved": "http://registry.npm.taobao.org/uglify-save-license/download/uglify-save-license-0.4.1.tgz", + "integrity": "sha1-lXJsF8xv0XHDYX479NjYKqjEzOE=", + "dev": true + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/uglify-to-browserify/download/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "http://registry.npm.taobao.org/unc-path-regex/download/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/union-value/download/union-value-1.0.1.tgz", + "integrity": "sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-stream": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/unique-stream/download/unique-stream-1.0.0.tgz", + "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/unset-value/download/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "http://registry.npm.taobao.org/has-value/download/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "http://registry.npm.taobao.org/has-values/download/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz?cache=0&sync_timestamp=1562592125418&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fisarray%2Fdownload%2Fisarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } + }, + "unzip-response": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/unzip-response/download/unzip-response-1.0.2.tgz", + "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=" + }, + "urix": { + "version": "0.1.0", + "resolved": "http://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/url-parse-lax/download/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "requires": { + "prepend-http": "^1.0.1" + } + }, + "url-regex": { + "version": "3.2.0", + "resolved": "http://registry.npm.taobao.org/url-regex/download/url-regex-3.2.0.tgz", + "integrity": "sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ=", + "optional": true, + "requires": { + "ip-regex": "^1.0.1" + } + }, + "use": { + "version": "3.1.1", + "resolved": "http://registry.npm.taobao.org/use/download/use-3.1.1.tgz", + "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=", + "dev": true + }, + "user-home": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/user-home/download/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.2.1", + "resolved": "http://registry.npm.taobao.org/uuid/download/uuid-3.2.1.tgz", + "integrity": "sha1-EsUou51Y0LkmXZovbw/ovhf/HxQ=", + "optional": true + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/v8flags/download/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, + "requires": { + "user-home": "^1.1.1" + } + }, + "vali-date": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/vali-date/download/vali-date-1.0.0.tgz", + "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=" + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "http://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha1-gWQ7y+8b3+zUYjeT3EZIlIupgzg=", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha512-P5zdf3WB9uzr7IFoVQ2wZTmUwHL8cMZWJGzLBNCHNZ3NB6HTMsYABtt7z8tAGIINLXyAob9B9a1yzVGMFOYKEA==", + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-assign": { + "version": "1.2.1", + "resolved": "http://registry.npm.taobao.org/vinyl-assign/download/vinyl-assign-1.2.1.tgz", + "integrity": "sha1-TRmIkbVRWRHXcajNnFSApGoHSkU=", + "requires": { + "object-assign": "^4.0.1", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "vinyl-file": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/vinyl-file/download/vinyl-file-2.0.0.tgz", + "integrity": "sha1-p+v1/779obfRjRQPyweyI++2dRo=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.3.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^2.0.0", + "vinyl": "^1.1.0" + }, + "dependencies": { + "first-chunk-stream": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/first-chunk-stream/download/first-chunk-stream-2.0.0.tgz", + "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "requires": { + "readable-stream": "^2.0.2" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "http://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-bom-stream": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/strip-bom-stream/download/strip-bom-stream-2.0.0.tgz", + "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=", + "requires": { + "first-chunk-stream": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/vinyl/download/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "vinyl-fs": { + "version": "0.3.14", + "resolved": "http://registry.npm.taobao.org/vinyl-fs/download/vinyl-fs-0.3.14.tgz", + "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", + "dev": true, + "requires": { + "defaults": "^1.0.0", + "glob-stream": "^3.1.5", + "glob-watcher": "^0.0.6", + "graceful-fs": "^3.0.0", + "mkdirp": "^0.5.0", + "strip-bom": "^1.0.0", + "through2": "^0.6.1", + "vinyl": "^0.4.0" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "http://registry.npm.taobao.org/clone/download/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npm.taobao.org/through2/download/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "http://registry.npm.taobao.org/vinyl/download/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } + } + } + }, + "vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "http://registry.npm.taobao.org/vinyl-sourcemaps-apply/download/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", + "requires": { + "source-map": "^0.5.1" + } + }, + "ware": { + "version": "1.3.0", + "resolved": "http://registry.npm.taobao.org/ware/download/ware-1.3.0.tgz", + "integrity": "sha1-0bFPOdLiy0q4xAmPdW/ksWTkc9Q=", + "requires": { + "wrap-fn": "^0.1.0" + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "http://registry.npm.taobao.org/websocket-driver/download/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "requires": { + "http-parser-js": ">=0.4.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "http://registry.npm.taobao.org/websocket-extensions/download/websocket-extensions-0.1.3.tgz", + "integrity": "sha1-XS/yKXcAPsaHpLhwc9+7rBRszyk=" + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "http://registry.npm.taobao.org/whet.extend/download/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", + "optional": true + }, + "which": { + "version": "1.3.1", + "resolved": "http://registry.npm.taobao.org/which/download/which-1.3.1.tgz", + "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", + "requires": { + "isexe": "^2.0.0" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "http://registry.npm.taobao.org/window-size/download/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "http://registry.npm.taobao.org/wordwrap/download/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "wrap-fn": { + "version": "0.1.5", + "resolved": "http://registry.npm.taobao.org/wrap-fn/download/wrap-fn-0.1.5.tgz", + "integrity": "sha1-8htuQQFv9KfjFyDbxjoJAWvfmEU=", + "requires": { + "co": "3.1.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xtend": { + "version": "4.0.1", + "resolved": "http://registry.npm.taobao.org/xtend/download/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "http://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "optional": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "http://registry.npm.taobao.org/yargs/download/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "http://registry.npm.taobao.org/camelcase/download/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + } + } + }, + "yauzl": { + "version": "2.9.2", + "resolved": "http://registry.npm.taobao.org/yauzl/download/yauzl-2.9.2.tgz", + "integrity": "sha1-T7G8euH8L1cDe1SvasyP4QMcW3c=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + } +} diff --git a/app-saas-src/package.json b/app-saas-src/package.json new file mode 100644 index 0000000..dff0abe --- /dev/null +++ b/app-saas-src/package.json @@ -0,0 +1,23 @@ +{ + "name": "dianwutong_src", + "version": "1.0.0", + "main": "gulpFile.js", + "dependencies": { + "gulp-clean-css": "^3.0.4", + "gulp-imagemin": "^3.1.1", + "gulp-livereload": "^3.8.1", + "gulp-watch": "^4.3.11" + }, + "devDependencies": { + "@babel/core": "^7.0.0", + "gulp": "^3.9.1", + "gulp-uglify": "^2.1.2", + "gulp-util": "^3.0.8" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "description": "" +} diff --git a/app-saas-src/release_notice.txt b/app-saas-src/release_notice.txt new file mode 100644 index 0000000..51a0eb4 --- /dev/null +++ b/app-saas-src/release_notice.txt @@ -0,0 +1,11 @@ +发布流程: +修改resource/version.txt下的版本号; +注意修改api.js下的接口为云端的接口; +注意script/index/index.js的socket改为云端接口; +在dianwutong_gulp下执行gulp release; +从dianwutong下上传压缩后的代码到apicloud云端; +设置apicloud的版本号和1中的一样; +编译正式版(确保证书是生产证书),不选择加密,否则不能使用websocket; +下载ipa文件,通过apploader上传,然后登陆itunes提交审核; +审核通过后,从apicloud下载apk;上传到iems服务器下的ROOT/app,命名为app.apk;并修改改目录下的版本号为1中的版本号; +/data/tomcat/cdn-tomcat/webapps/ROOT/app/dianwutong_saas \ No newline at end of file diff --git a/app-saas-src/res/raw/horse.mp3 b/app-saas-src/res/raw/horse.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..03c06f7b13eeb93207f8bd757c6ab3a2a61a6b55 GIT binary patch literal 37613 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"); + deviceInfo += ("操作系统:" + api.systemType + " " + api.systemVersion + "
"); + deviceInfo += ("设备型号:" + api.deviceModel + "
"); + deviceInfo += ("设备名称:" + api.deviceName + "
"); + deviceInfo += ("设备类型:" + UiModeToString(api.uiMode) + "
"); + deviceInfo += ("运 营 商:" + api.operator + "
"); + deviceInfo += ("当前网络:" + ConnectionTypeToString(api.connectionType) + "
"); + deviceInfo += ("分 辨 率:" + api.winWidth + "x" + api.winHeight); + deviceInfo += ""; + + deviceInfoContianer.html(deviceInfo); +} + +apiready = function() { + var ctrl = { + init: {}, + bind: {} + } + + ctrl.bind = function() { + //用户点击了返回按钮 + $(".back").on("touchend", function() { + api.closeWin(); + }); + var phoneNum = $api.trim($('#phoneCall').text()); + // 点击电话号码 + $('#phoneCall').on('touchend',function() { + api.call({ + type: 'tel_prompt', + number: phoneNum + }) + }) + //给我评分 + $('#lbGrade').on("touchend", function() { + var platform = api.systemType; + if (platform == "ios") { + api.openApp({ + iosUrl: 'https://itunes.apple.com/us/app/%E7%94%B5%E5%8A%A1%E9%80%9A/id1247755464?l=zh&ls=1&mt=8' + }, function(ret, err) { + //coding... + }); + } + }) + //长按显示设备信息 + api.addEventListener({ + name: "longpress" + }, function(ret, err) { + showDeviceInfo(); + }); + + blackMask.on("touchend", function() { + //隐藏设备信息 + hideDeviceInfo(); + }); + } + + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + lbGrade = $("#lbGrade"); + if (api.systemType != "ios") { + lbGrade.hide(); + } + + lbVersion = $("#lbVersion"); + api.readFile({ + path: 'widget://resource/version.txt' + }, function(ret, err) { + if (ret.status) { + lbVersion.html('版本:' + ret.data); + initDeviceInfo(); + } + }); + + deviceInfoContianer = $("#deviceInfoContianer"); + blackMask = $("#blackMask"); + + logoIcon = $("#logo-icon"); + ctrl.bind(); + } + + ctrl.init(); +} diff --git a/app-saas-src/script/api.js b/app-saas-src/script/api.js new file mode 100644 index 0000000..3f07425 --- /dev/null +++ b/app-saas-src/script/api.js @@ -0,0 +1,850 @@ +/* + * APICloud JavaScript Library + * Copyright (c) 2014 apicloud.com + */ +(function(window) { + + var u = {}; + var isAndroid = (/android/gi).test(navigator.appVersion); + u.baseUrl = 'http://cdyapi.saas.dianwutong.com'; +// u.baseUrl = 'https://api.dianwutong.com'; + var uzStorage = function() { + var ls = window.localStorage; + if (isAndroid) { + ls = os.localStorage(); + } + return ls; + }; + + function parseArguments(url, data, fnSuc, dataType) { + if (typeof(data) == 'function') { + dataType = fnSuc; + fnSuc = data; + data = undefined; + } + if (typeof(fnSuc) != 'function') { + dataType = fnSuc; + fnSuc = undefined; + } + return { + url: url, + data: data, + fnSuc: fnSuc, + dataType: dataType + }; + } + u.trim = function(str) { + if (String.prototype.trim) { + return str == null ? "" : String.prototype.trim.call(str); + } else { + return str.replace(/(^\s*)|(\s*$)/g, ""); + } + }; + u.trimAll = function(str) { + return str.replace(/\s*/g, ''); + }; + u.isElement = function(obj) { + return !!(obj && obj.nodeType == 1); + }; + u.isArray = function(obj) { + if (Array.isArray) { + return Array.isArray(obj); + } else { + return obj instanceof Array; + } + }; + u.isEmptyObject = function(obj) { + if (JSON.stringify(obj) === '{}') { + return true; + } + return false; + }; + u.addEvt = function(el, name, fn, useCapture) { + if (!u.isElement(el)) { + console.warn('$api.addEvt Function need el param, el param must be DOM Element'); + return; + } + useCapture = useCapture || false; + if (el.addEventListener) { + el.addEventListener(name, fn, useCapture); + } + }; + u.rmEvt = function(el, name, fn, useCapture) { + if (!u.isElement(el)) { + console.warn('$api.rmEvt Function need el param, el param must be DOM Element'); + return; + } + useCapture = useCapture || false; + if (el.removeEventListener) { + el.removeEventListener(name, fn, useCapture); + } + }; + u.one = function(el, name, fn, useCapture) { + if (!u.isElement(el)) { + console.warn('$api.one Function need el param, el param must be DOM Element'); + return; + } + useCapture = useCapture || false; + var that = this; + var cb = function() { + fn && fn(); + that.rmEvt(el, name, cb, useCapture); + }; + that.addEvt(el, name, cb, useCapture); + }; + u.dom = function(el, selector) { + if (arguments.length === 1 && typeof arguments[0] == 'string') { + if (document.querySelector) { + return document.querySelector(arguments[0]); + } + } else if (arguments.length === 2) { + if (el.querySelector) { + return el.querySelector(selector); + } + } + }; + u.domAll = function(el, selector) { + if (arguments.length === 1 && typeof arguments[0] == 'string') { + if (document.querySelectorAll) { + return document.querySelectorAll(arguments[0]); + } + } else if (arguments.length === 2) { + if (el.querySelectorAll) { + return el.querySelectorAll(selector); + } + } + }; + u.byId = function(id) { + return document.getElementById(id); + }; + u.first = function(el, selector) { + if (arguments.length === 1) { + if (!u.isElement(el)) { + console.warn('$api.first Function need el param, el param must be DOM Element'); + return; + } + return el.children[0]; + } + if (arguments.length === 2) { + return this.dom(el, selector + ':first-child'); + } + }; + u.last = function(el, selector) { + if (arguments.length === 1) { + if (!u.isElement(el)) { + console.warn('$api.last Function need el param, el param must be DOM Element'); + return; + } + var children = el.children; + return children[children.length - 1]; + } + if (arguments.length === 2) { + return this.dom(el, selector + ':last-child'); + } + }; + u.eq = function(el, index) { + return this.dom(el, ':nth-child(' + index + ')'); + }; + u.not = function(el, selector) { + return this.domAll(el, ':not(' + selector + ')'); + }; + u.prev = function(el) { + if (!u.isElement(el)) { + console.warn('$api.prev Function need el param, el param must be DOM Element'); + return; + } + var node = el.previousSibling; + if (node.nodeType && node.nodeType === 3) { + node = node.previousSibling; + return node; + } + }; + u.next = function(el) { + if (!u.isElement(el)) { + console.warn('$api.next Function need el param, el param must be DOM Element'); + return; + } + var node = el.nextSibling; + if (node.nodeType && node.nodeType === 3) { + node = node.nextSibling; + return node; + } + }; + u.closest = function(el, selector) { + if (!u.isElement(el)) { + console.warn('$api.closest Function need el param, el param must be DOM Element'); + return; + } + var doms, targetDom; + var isSame = function(doms, el) { + var i = 0, + len = doms.length; + for (i; i < len; i++) { + if (doms[i].isEqualNode(el)) { + return doms[i]; + } + } + return false; + }; + var traversal = function(el, selector) { + doms = u.domAll(el.parentNode, selector); + targetDom = isSame(doms, el); + while (!targetDom) { + el = el.parentNode; + if (el != null && el.nodeType == el.DOCUMENT_NODE) { + return false; + } + traversal(el, selector); + } + + return targetDom; + }; + + return traversal(el, selector); + }; + u.contains = function(parent, el) { + var mark = false; + if (el === parent) { + mark = true; + return mark; + } else { + do { + el = el.parentNode; + if (el === parent) { + mark = true; + return mark; + } + } while (el === document.body || el === document.documentElement); + + return mark; + } + + }; + u.remove = function(el) { + if (el && el.parentNode) { + el.parentNode.removeChild(el); + } + }; + u.attr = function(el, name, value) { + if (!u.isElement(el)) { + console.warn('$api.attr Function need el param, el param must be DOM Element'); + return; + } + if (arguments.length == 2) { + return el.getAttribute(name); + } else if (arguments.length == 3) { + el.setAttribute(name, value); + return el; + } + }; + u.removeAttr = function(el, name) { + if (!u.isElement(el)) { + console.warn('$api.removeAttr Function need el param, el param must be DOM Element'); + return; + } + if (arguments.length === 2) { + el.removeAttribute(name); + } + }; + u.hasCls = function(el, cls) { + if (!u.isElement(el)) { + console.warn('$api.hasCls Function need el param, el param must be DOM Element'); + return; + } + if (el.className.indexOf(cls) > -1) { + return true; + } else { + return false; + } + }; + u.addCls = function(el, cls) { + if (!u.isElement(el)) { + console.warn('$api.addCls Function need el param, el param must be DOM Element'); + return; + } + if ('classList' in el) { + el.classList.add(cls); + } else { + var preCls = el.className; + var newCls = preCls + ' ' + cls; + el.className = newCls; + } + return el; + }; + u.removeCls = function(el, cls) { + if (!u.isElement(el)) { + console.warn('$api.removeCls Function need el param, el param must be DOM Element'); + return; + } + if ('classList' in el) { + el.classList.remove(cls); + } else { + var preCls = el.className; + var newCls = preCls.replace(cls, ''); + el.className = newCls; + } + return el; + }; + u.toggleCls = function(el, cls) { + if (!u.isElement(el)) { + console.warn('$api.toggleCls Function need el param, el param must be DOM Element'); + return; + } + if ('classList' in el) { + el.classList.toggle(cls); + } else { + if (u.hasCls(el, cls)) { + u.removeCls(el, cls); + } else { + u.addCls(el, cls); + } + } + return el; + }; + u.val = function(el, val) { + if (!u.isElement(el)) { + console.warn('$api.val Function need el param, el param must be DOM Element'); + return; + } + if (arguments.length === 1) { + switch (el.tagName) { + case 'SELECT': + var value = el.options[el.selectedIndex].value; + return value; + break; + case 'INPUT': + return el.value; + break; + case 'TEXTAREA': + return el.value; + break; + } + } + if (arguments.length === 2) { + switch (el.tagName) { + case 'SELECT': + el.options[el.selectedIndex].value = val; + return el; + break; + case 'INPUT': + el.value = val; + return el; + break; + case 'TEXTAREA': + el.value = val; + return el; + break; + } + } + + }; + u.prepend = function(el, html) { + if (!u.isElement(el)) { + console.warn('$api.prepend Function need el param, el param must be DOM Element'); + return; + } + el.insertAdjacentHTML('afterbegin', html); + return el; + }; + u.append = function(el, html) { + if (!u.isElement(el)) { + console.warn('$api.append Function need el param, el param must be DOM Element'); + return; + } + el.insertAdjacentHTML('beforeend', html); + return el; + }; + u.before = function(el, html) { + if (!u.isElement(el)) { + console.warn('$api.before Function need el param, el param must be DOM Element'); + return; + } + el.insertAdjacentHTML('beforebegin', html); + return el; + }; + u.after = function(el, html) { + if (!u.isElement(el)) { + console.warn('$api.after Function need el param, el param must be DOM Element'); + return; + } + el.insertAdjacentHTML('afterend', html); + return el; + }; + u.html = function(el, html) { + if (!u.isElement(el)) { + console.warn('$api.html Function need el param, el param must be DOM Element'); + return; + } + if (arguments.length === 1) { + return el.innerHTML; + } else if (arguments.length === 2) { + el.innerHTML = html; + return el; + } + }; + u.text = function(el, txt) { + if (!u.isElement(el)) { + console.warn('$api.text Function need el param, el param must be DOM Element'); + return; + } + if (arguments.length === 1) { + return el.textContent; + } else if (arguments.length === 2) { + el.textContent = txt; + return el; + } + }; + u.offset = function(el) { + if (!u.isElement(el)) { + console.warn('$api.offset Function need el param, el param must be DOM Element'); + return; + } + var sl = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft); + var st = Math.max(document.documentElement.scrollTop, document.body.scrollTop); + + var rect = el.getBoundingClientRect(); + return { + l: rect.left + sl, + t: rect.top + st, + w: el.offsetWidth, + h: el.offsetHeight + }; + }; + u.css = function(el, css) { + if (!u.isElement(el)) { + console.warn('$api.css Function need el param, el param must be DOM Element'); + return; + } + if (typeof css == 'string' && css.indexOf(':') > 0) { + el.style && (el.style.cssText += ';' + css); + } + }; + u.cssVal = function(el, prop) { + if (!u.isElement(el)) { + console.warn('$api.cssVal Function need el param, el param must be DOM Element'); + return; + } + if (arguments.length === 2) { + var computedStyle = window.getComputedStyle(el, null); + return computedStyle.getPropertyValue(prop); + } + }; + u.jsonToStr = function(json) { + if (typeof json === 'object') { + return JSON && JSON.stringify(json); + } + }; + u.strToJson = function(str) { + if (typeof str === 'string') { + return JSON && JSON.parse(str); + } + }; + u.setStorage = function(key, value) { + if (arguments.length === 2) { + var v = value; + if (typeof v == 'object') { + v = JSON.stringify(v); + v = 'obj-' + v; + } else { + v = 'str-' + v; + } + var ls = uzStorage(); + if (ls) { + ls.setItem(key, v); + } + } + }; + u.getStorage = function(key) { + var ls = uzStorage(); + if (ls) { + var v = ls.getItem(key); + if (!v) { + return; + } + if (v.indexOf('obj-') === 0) { + v = v.slice(4); + return JSON.parse(v); + } else if (v.indexOf('str-') === 0) { + return v.slice(4); + } + } + }; + u.rmStorage = function(key) { + var ls = uzStorage(); + if (ls && key) { + ls.removeItem(key); + } + }; + u.clearStorage = function() { + var ls = uzStorage(); + if (ls) { + ls.clear(); + } + }; + + + /*by king*/ + u.fixIos7Bar = function(el) { + if (isAndroid) { + if (!u.isElement(el)) { + console.warn('$api.fixIos7Bar Function need el param, el param must be DOM Element'); + return; + } + var strDM = api.systemType; + if (strDM == 'ios') { + var strSV = api.systemVersion; + var numSV = parseInt(strSV, 10); + var fullScreen = api.fullScreen; + var iOS7StatusBarAppearance = api.iOS7StatusBarAppearance; + if (numSV >= 7 && !fullScreen && iOS7StatusBarAppearance) { + el.style.paddingTop = '20px'; + } + } + } else { + return u.fixStatusBar(el); + } + + }; + u.fixStatusBar = function(el) { + if (isAndroid) { + if (!u.isElement(el)) { + console.warn('$api.fixStatusBar Function need el param, el param must be DOM Element'); + return; + } + var sysType = api.systemType; + if (sysType == 'ios') { + u.fixIos7Bar(el); + } else if (sysType == 'android') { + var ver = api.systemVersion; + ver = parseFloat(ver); + if (ver >= 4.4) { + el.style.paddingTop = '25px'; + } + } + } else { + if (!u.isElement(el)) { + console.warn('$api.fixStatusBar Function need el param, el param must be DOM Element'); + return 0; + } + el.style.paddingTop = api.safeArea.top + 'px'; + return el.offsetHeight; + } + + }; + + // 解决底部标签栏被虚拟home键遮挡 + u.fixTabBar = function(el) { + if (!u.isElement(el)) { + console.warn('$api.fixTabBar Function need el param, el param must be DOM Element'); + return 0; + } + el.style.paddingBottom = api.safeArea.bottom + 'px'; + return el.offsetHeight; + } + u.toast = function(title, text, time) { + var opts = {}; + var show = function(opts, time) { + api.showProgress(opts); + setTimeout(function() { + api.hideProgress(); + }, time); + }; + if (arguments.length === 1) { + var time = time || 500; + if (typeof title === 'number') { + time = title; + } else { + opts.title = title + ''; + } + show(opts, time); + } else if (arguments.length === 2) { + var time = time || 500; + var text = text; + if (typeof text === "number") { + var tmp = text; + time = tmp; + text = null; + } + if (title) { + opts.title = title; + } + if (text) { + opts.text = text; + } + show(opts, time); + } + if (title) { + opts.title = title; + } + if (text) { + opts.text = text; + } + time = time || 500; + show(opts, time); + }; + u.post = function( /*url,data,fnSuc,dataType*/ ) { + var argsToJson = parseArguments.apply(null, arguments); + var json = {}; + var fnSuc = argsToJson.fnSuc; + argsToJson.url && (json.url = argsToJson.url); + + // 如果有token 自动加上token + var token = $api.getStorage("token"); + // if (token) { + // argsToJson.data.token = token; + // } + + argsToJson.data && (json.data = { + body: argsToJson.data + }); + json.headers = argsToJson.headers + json.headers = { + 'Content-Type':'application/json' + } + if (argsToJson.dataType) { + var type = argsToJson.dataType.toLowerCase(); + if (type == 'text' || type == 'json') { + json.dataType = type; + } + } else { + json.dataType = 'json'; + } + json.method = 'post'; + //json.url = "https://api.dianwutong.com" + json.url+'?token=' + token; + if(token) { + json.url = u.baseUrl + json.url+'?token=' + token; + }else { + json.url = u.baseUrl + json.url; + } + + //console.log(JSON.stringify(json)); + api.ajax(json, + function(ret, err) { + fnSuc && fnSuc(ret, err); + //console.warn(JSON.stringify(ret)); + } + ); + }; + u.uploadFile = function( url,data,fnSuc,dataType) { + var json = {}; + var fnSuc = fnSuc; + url && (json.url = url); + + // 如果有token 自动加上token + var token = $api.getStorage("token"); + + data && (json.data = { + stream: data + }); + // json.headers = { + // 'Content-Type':'application/x-www-form-urlencoded;' + // } + json.method = 'post'; + if(token) { + json.url = u.baseUrl + json.url+'?token=' + token; + }else { + json.url = u.baseUrl + json.url; + } + + api.ajax(json, + function(ret, err) { + fnSuc && fnSuc(ret, err); + } + ); + }; + u.put = function( /*url,data,fnSuc,dataType*/ ) { + var argsToJson = parseArguments.apply(null, arguments); + var json = {}; + var fnSuc = argsToJson.fnSuc; + argsToJson.url && (json.url = argsToJson.url); + + // 如果有token 自动加上token + var token = $api.getStorage("token"); + + argsToJson.data && (json.data = { + body: argsToJson.data + }); + json.headers = argsToJson.headers + json.headers = { + 'Content-Type':'application/json' + } + if (argsToJson.dataType) { + var type = argsToJson.dataType.toLowerCase(); + if (type == 'text' || type == 'json') { + json.dataType = type; + } + } else { + json.dataType = 'json'; + } + json.method = 'put'; + //json.url = "https://api.dianwutong.com" + json.url+'?token=' + token; + if(token) { + json.url = u.baseUrl + json.url+'?token=' + token; + }else { + json.url = u.baseUrl + json.url; + } + + api.ajax(json, + function(ret, err) { + fnSuc && fnSuc(ret, err); + } + ); + }; + u.get = function( /*url,data,fnSuc,dataType*/ ) { + if (u.disabledRequest) { + return; + } + var argsToJson = parseArguments.apply(null, arguments); + var json = {}; + var fnSuc = argsToJson.fnSuc; + argsToJson.url && (json.url = argsToJson.url); + // json.url = "https://api.dianwutong.com" + json.url; + json.url = u.baseUrl + json.url; + if (argsToJson.dataType) { + var type = argsToJson.dataType.toLowerCase(); + if (type == 'text' || type == 'json') { + json.dataType = type; + } + } else { + json.dataType = 'json'; + } + json.method = 'get'; + + // 如果参数不为空 将参数拼接到url后面 + + var queries = []; + + // 如果已经登录 传入token + + var token = $api.getStorage("token"); + + if (token) { + queries.push('token=' + token); + } + + var data = argsToJson.data; + + if (data) { + for (var i in data) { + if (data.hasOwnProperty(i) && data[i] != null && data[i] != undefined) { + queries.push(i + '=' + data[i]); + } + } + } + + var queryString = queries.join('&'); + + if (queryString) { + json.url = json.url + '?' + queryString; + } + api.ajax(json, + function(ret, err) { + if (ret) { + // token失效的标志1006 + if (ret.code == 1006) { + api.sendEvent({ + name: 'loginout' + }); + if (!u.disabledRequest) { + api.alert({ + title: '登录过期,请重新登录。' + }, function() { + u.clearStorage(); + api.closeWin({ + name: 'index' + }); + + api.openWin({ + name: 'login', + url: 'widget://html/user/login.html', + + }); + }) + u.disabledRequest = true; + } + } else { + fnSuc && fnSuc(ret); + } + + } + } + ); + }; + + u.getVersion = function(fnSuc) { + var json = {}; + json.url = 'https://cdn.dianwutong.com/app/dianwutong_saas/version.json'; + json.dataType = 'json'; + json.method = 'get'; + api.ajax(json, + function(ret, err) { + if (ret) { + fnSuc && fnSuc(ret); + } + } + ); + }; + + var keys = u.getStorage("guestKeys"); + if (keys) { + // 体验账号需要被替换掉的关键字的正则表达式 + u.guestKeysPattern = new RegExp(keys.replace(/,/g, '|'), 'g'); + } else { + // 瞎写一个 不然后面使用会抛错 + u.guestKeysPattern = new RegExp('。%#@#@!@#'); + } + + u.guestName = u.getStorage("realName"); + u.guestPrName = u.guestName + '配电室'; + // 存储客户信息 + u.setStorageOfCus = function(customer) { + u.setStorage("cusId", customer['cusId']); + $api.setStorage("userHead", u.prefix + customer['cusLogo']); + $api.setStorage("realName", customer['cusName']); + + } + // 存储体验客户信息 + u.setStorageOfExperCus = function(customer) { + u.setStorage("cusId", customer['cusId']); + + } + u.getFormattedDate = function(format,time) { + var date; + if(time){ + date = new Date(time); + } else { + date = new Date(); + } + + if (!format) { + format = "yyyy-MM-dd hh:mm:ss"; + } + var o = { + "M+": date.getMonth() + 1, //month + "d+": date.getDate(), //day + "h+": date.getHours(), //hour + "m+": date.getMinutes(), //minute + "s+": date.getSeconds(), //second + "q+": Math.floor((date.getMonth() + 3) / 3), //quarter + "S": date.getMilliseconds() //millisecond + } + + if (/(y+)/.test(format)) { + format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length)); + } + + for (var k in o) { + if (new RegExp("(" + k + ")").test(format)) { + format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)); + } + } + return format; + } + /*end*/ + window.$api = u; + +})(window); + +function _log(ob, tag) { + console.log(tag ? tag : '' + JSON.stringify(ob, null, 4)); +} diff --git a/app-saas-src/script/common.js b/app-saas-src/script/common.js new file mode 100644 index 0000000..5b6cf98 --- /dev/null +++ b/app-saas-src/script/common.js @@ -0,0 +1,148 @@ +var CommonModel = { + getFomattedDate: {}, //格式化日期函数 + toDouble: {}, //处理时间位数 + isTimeInvalid: {}, //时间限制 + + avoidIOSMistakeTouch: {}, //避免ios滑动误触 +} +CommonModel.getFomattedDate = function(date, format) { + var date = new Date(date); + if (!format) { + format = "yyyy-MM-dd hh:mm:ss"; + } + + var o = { + "M+": date.getMonth() + 1, //month + "d+": date.getDate(), //day + "h+": date.getHours(), //hour + "m+": date.getMinutes(), //minute + "s+": date.getSeconds(), //second + "q+": Math.floor((date.getMonth() + 3) / 3), //quarter + "S": date.getMilliseconds() //millisecond + } + if (/(y+)/.test(format)) { + format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length)); + } + + for (var k in o) { + if (new RegExp("(" + k + ")").test(format)) { + format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)); + } + } + return format; +} + +CommonModel.toDouble = function(str) { + str = str.toString(); + str = str.length == 1 ? ('0' + str) : str; + return str; +} + + +CommonModel.isTimeInvalid = function(startTime, endTime) { + startTime = new Date(startTime).getTime(); + if (!endTime) { //判断传入的时间是否超过当前时间 + var today = new Date().getTime(); + if (startTime > today) { + return true; + } + + } else { //判断传入的开始时间是否大于传入的结束时间 + endTime = new Date(endTime).getTime(); + if (startTime > endTime) { + return true; + } + } +} + +//获取格式化日期和格式 +//返回如 今天14:21 昨天01:12 2014-03-12 +//依赖moment.js +CommonModel.formatDateTime = function(time) { + + if (typeof(time) == 'number') { + time = new Date(time); + } else { + time = new Date(time.replace(/-/g, '/')); + } + + var _then = moment([time.getFullYear(), time.getMonth(), time.getDate()]); + var now = new Date(); + var _now = moment([now.getFullYear(), now.getMonth(), now.getDate()]); + var days = _now.diff(_then, "days"); + var content = ""; + if (days == 0) { + content = "今天 " + moment(time).format("HH:mm"); + } else if (days == 1) { + content = "昨天 " + moment(time).format("HH:mm"); + } else { + content = moment(time).format("YYYY-MM-DD"); + } + return content; +} + +//避免ios误触 +function avoidIOSMistakeTouch() { + var isMove = false; + document.documentElement.addEventListener("touchstart", function() { + isMove = false; + }) + + document.documentElement.addEventListener("touchmove", function() { + isMove = true; + }) + + document.documentElement.addEventListener("touchend", function(e) { + if (isMove) { + e.stopPropagation() + return false; + } + }, true); +} +avoidIOSMistakeTouch(); +CommonModel.fitInStatusBar = function() { + // 适配状态栏 + var statusBarHeightDom = document.getElementById('statusBarHeight'); + + if (api.systemType == "android") { + var statusBar = api.require('statusBar'); + + var statusBarHeight = statusBar.getStatusBarHeight(); + if (statusBarHeightDom) { + // statusBarHeightDom.style.height = statusBarHeight + 'px'; + statusBarHeightDom.style.height = api.safeArea.top + 'px'; + } + + var heightHeaderDom = document.getElementById('heightHeader'); + var allHeight = $api.cssVal($api.dom('header'), 'height'); + if(heightHeaderDom) { + heightHeaderDom.style.height = allHeight; + } + } else { + statusBarHeightDom.style.height = '1.67rem'; + } +} + + +/** + * 弹出提示框 + */ +function toast(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); +} + +// 位置分类 + +var POSITIONCLASSIFY = [ + '', + '高压侧', + '低压侧', + '变压器', + '直流屏', + '信号屏', + '其他' +]; diff --git a/app-saas-src/script/dao/baseDao.js b/app-saas-src/script/dao/baseDao.js new file mode 100644 index 0000000..f819d22 --- /dev/null +++ b/app-saas-src/script/dao/baseDao.js @@ -0,0 +1,54 @@ +var baseDao = {} + +baseDao.open = function(callback) { + var db = api.require("db"); + var _this = this; + db.openDatabase({ + name: _this.db + }, function(ret, err) { + if (!err && ret.status) { + if (typeof(callback) == "function") { + callback(db); + } + } + }) +} + +//查询 +baseDao.query = function(sql, callback) { + var _this = this; + _this.open(function(db) { + db.selectSql({ + name: _this.db, + sql: sql + }, function(ret, err) { + if (typeof(callback) == "function") { + callback(ret, err); + // console.log(sql); + // console.log("查到的数据"); + // console.log(JSON.stringify(ret)); + } + }) + }) +} + +//执行 +baseDao.exec = function(sql, callback) { + var userId = $api.getStorage("userId"); + var _this = this; + + _this.open(function(db) { + + db.executeSql({ + name: _this.db, + sql: sql + }, function(ret, err) { + // console.log(sql); + // console.log("执行结果"); + // console.log(JSON.stringify(err)); + if (typeof(callback) == "function") { + callback(ret, err); + } + }) + }) +} diff --git a/app-saas-src/script/dao/messageDao.js b/app-saas-src/script/dao/messageDao.js new file mode 100644 index 0000000..263149e --- /dev/null +++ b/app-saas-src/script/dao/messageDao.js @@ -0,0 +1,382 @@ +//表名变更 messages -> messages_1 +var messageDao = { + db: "dianwutong", + table: "messages_1", + open: {}, //打开数据库 + initTable: {}, //创建数据库 + updateData: {}, //同步服务器数据 +} + +messageDao.open = function(callback) { + var db = api.require("db"); + db.openDatabase({ + name: messageDao.db + }, function(ret, err) { + if (!err && ret.status) { + if (typeof(callback) == "function") { + callback(db); + } + } + }) +} + +//查询 +messageDao.query = function(sql, callback) { + messageDao.open(function(db) { + db.selectSql({ + name: messageDao.db, + sql: sql + }, function(ret, err) { + if (typeof(callback) == "function") { + callback(ret, err); + // console.log(sql); + // console.log("查到的数据"); + // console.log(JSON.stringify(ret)); + } + }) + }) +} + +//执行 +messageDao.exec = function(sql, callback) { + + messageDao.open(function(db) { + + db.executeSql({ + name: messageDao.db, + sql: sql + }, function(ret, err) { + // console.log(sql); + // console.log("执行结果"); + // console.log(JSON.stringify(err)); + if (typeof(callback) == "function") { + callback(ret, err); + } + }) + }) +} + +//创建message表 +messageDao.initTable = function(callback) { + var sql = " CREATE TABLE IF NOT EXISTS `" + this.table + "` ( " + + " `msg_id` INT(11) NOT NULL, " + + " `user_id` INT(11) NOT NULL, " + + " `msg_type` INT(11), " + + " `msg_content` LONGTEXT, " + + " `content_id` INT(11), " + + " `is_read` INT(11), " + + " `msg_title` VARCHAR(256), " + + " `create_time` TIMESTAMP, " + + " `click_enable` INT(11), " + + " PRIMARY KEY (`msg_id`) " + + " )"; + + messageDao.exec(sql, function(ret, err){ + if(callback){ + callback(ret, err); + } + }); + +} + +//从数据库同步数据 +messageDao.updateData = function(callback) { + + if( !userMaxMessageIdDao ){ + console.error("找不到:userMaxMessageIdDao"); + return false; + } + var userId = $api.getStorage("userId"); + + userMaxMessageIdDao.getMaxId(userId, function(maxId) { + if( !maxId ){ + maxId = null; + } + fetchMessages(maxId, writeDB); + }) + + function fetchMessages(maxId, callback) { + var data = { + userId: userId, + msgId: maxId + } + + var url = "/ems/rest/message/list"; + + $api.get(url, data, function(ret, err) { + if (!err && ret && ret.code == "200") { + + if (typeof(callback) == "function") { + callback(ret.body); + } + + } else { + api.toast({ + msg: 'code:'+ret.code + }); + } + }); + } + + function writeDB(list) { + var length = list.length; + var maxId = 0; + if (length == 0) { + if (typeof(callback) == "function") { + callback(); + } + api.sendEvent({ + name: 'messageUpdated' + }); + return false; + } + var userId = $api.getStorage("userId"); + + var sql = 'insert into ' + messageDao.table + ' values'; + + for (var i = 0; i < length; i++) { + sql += "("; + sql += list[i].msgId + ","; + sql += userId + ","; + sql += list[i].msgType + ","; + sql += "'" + list[i].msgContent + "',"; + sql += list[i].contentId + ","; + sql += "0,"; + sql += "'" + list[i].msgTitle + "',"; + sql += list[i].createTime/1000 + ","; // 避免数据溢出 除以1000 + sql += (list[i].onlyRead == 0 ? 1 : 0); + sql += "),"; + + if(maxId < list[i].msgId){ + maxId = list[i].msgId; + } + } + + sql = sql.slice(0, -1); + messageDao.exec(sql, function(ret, err) { + // console.log(JSON.stringify(ret), 'messageDao157') + if (!err) { + api.sendEvent({ + name: 'messageUpdated' + }); + + userMaxMessageIdDao.updateUserMessageId(userId, maxId); + } + + if (typeof(callback) == "function") { + callback(); + } + }) + + } + +} + +//获取每类未读消息的数量 +messageDao.getTypeUnReadCount = function(callback) { + var userId = $api.getStorage("userId"); + var sql = "select substr(msg_type, 1,2) type, count(msg_id) sum from " + this.table + " where user_id=" + userId + " and is_read=0 group by substr(msg_type, 1,2)"; + this.query(sql, function(ret, err) { + if (!err && ret && ret.status && typeof(callback) == "function") { + callback(ret.data); + } + }) +} + +//获取没类消息的最新消息的时间 +messageDao.getTypeLatestTime = function(callback){ + + var userId = $api.getStorage('userId'); + var sql = "select max(create_time) create_time, substr(msg_type, 1, 2) type from " + this.table + " where user_id="+ userId + " group by substr(msg_type, 1,2)"; + this.query(sql, function(ret, err) { + if (!err && ret && ret.status && typeof(callback) == "function") { + var data = ret.data; + var length = data.length; + for(var i=0; il;l++)switch(n[l]){case"..":if(!(r>o))break t;o++,s++;break;case".":s++;break;default:break t}return i.length=r-o,n=n.slice(s),i.concat(n).join("/")}return t}function n(t){function e(e,o){if("string"==typeof e){var s=n[e];return s||(s=a(i(e,t)),n[e]=s),s}e instanceof Array&&(o=o||function(){},o.apply(this,r(e,o,t)))}var n={};return e}function r(e,n,r){for(var s=[],l=o[r],u=0,c=Math.min(e.length,n.length);c>u;u++){var h,d=i(e[u],r);switch(d){case"require":h=l&&l.require||t;break;case"exports":h=l.exports;break;case"module":h=l;break;default:h=a(d)}s.push(h)}return s}function a(t){var e=o[t];if(!e)throw new Error("No "+t);if(!e.defined){var i=e.factory,n=i.apply(this,r(e.deps||[],i,t));"undefined"!=typeof n&&(e.exports=n),e.defined=1}return e.exports}var o={};e=function(t,e,i){o[t]={id:t,deps:e,factory:i,defined:0,exports:{},require:n(t)}},t=n("")}();var i="shadowOffsetY",n="shadowOffsetX",r="shadowBlur",a="__dirty",o="../core/util",s="updateTransform",l="rotate",u="label.normal",c="orient",h="transform",d="offsetY",f="offsetX",p="../../util/format",v="createSymbol",m="interval",g="undefined",y="mergeDefaultAndTheme",x="vertical",_="horizontal",b="getRawValue",w="symbolSize",M="symbol",S="points",T="ordinal",P="getLineStyle",A="reverse",C="linearMap",L="../../util/number",I="toFixed",k="option",D="mergeOption",z="superApply",O="../../util/model",V="getRawIndex",R="getName",E="parsePercent",B="setShape",N="getItemLayout",H="eachItemGraphicEl",F="getItemGraphicEl",G="setItemGraphicEl",Z="getItemModel",q="../../echarts",W="../../util/graphic",U="dimensions",j="retrieve",X="getOtherAxis",Y="dataToCoord",$="toGlobalCoord",K="dataToPoint",Q="getAxis",J="inverse",te="category",ee="rotation",ie="getLocalTransform",ne="updateProps",re="offset",ae="inside",oe="getShallow",se="normal",le="emphasis",ue="setHoverStyle",ce="stroke",he="lineWidth",de="applyTransform",fe="getDataExtent",pe="getLabel",ve="getTicks",me="getExtent",ge="ecModel",ye="normalize",xe="contain",_e="_extent",be="../util/number",we="isString",Me="inherits",Se="number",Te="register",Pe="registerAction",Ae="function",Ce="isArray",Le="replace",Ie="parent",ke="getComponent",De="zlevel",ze="traverse",Oe="getDataParams",Ve="seriesIndex",Re="mousemove",Ee="mouseout",Be="mouseover",Ne="splice",He="dispose",Fe="componentIndex",Ge="trigger",Ze="highlight",qe="dispatchAction",We="extend",Ue="remove",je="series",Xe="concat",Ye="mainType",$e="eachSeries",Ke="colorStops",Qe="transparent",Je="update",ti="create",ei="getItemVisual",ii="dataIndex",ni="indexOf",ri="length",ai="ignore",oi="eachComponent",si="stopAnimation",li="canvasSupported",ui="isObject",ci="assert",hi="animation",di="throttle",fi="string",pi="prototype",vi="toLowerCase",mi="./helper",gi="zrender/core/vector",yi="zrender/core/matrix",xi="zrender/tool/color",_i="zrender/core/env",bi="opacity",wi="setStyle",Mi="position",Si="bottom",Ti="center",Pi="middle",Ai="padding",Ci="getHeight",Li="getWidth",Ii="getLayoutRect",ki="target",Di="silent",zi="height",Oi="getBoundingRect",Vi="getTextColor",Ri="getFont",Ei="textAlign",Bi="textStyle",Ni="getModel",Hi="extendComponentModel",Fi="getData",Gi="getItemStyle",Zi="backgroundColor",qi="defaults",Wi="coordinateSystem",Ui="removeAll",ji="extendComponentView",Xi="../echarts",Yi="zrender/core/util",$i="require";e("echarts/component/gridSimple",[$i,"../util/graphic",Yi,Xi,"../coord/cartesian/Grid","./axis"],function(t){var e=t("../util/graphic"),i=t(Yi),n=t(Xi);t("../coord/cartesian/Grid"),t("./axis"),n[ji]({type:"grid",render:function(t){this.group[Ui](),t.get("show")&&this.group.add(new e.Rect({shape:t[Wi].getRect(),style:i[qi]({fill:t.get(Zi)},t[Gi]()),silent:!0,z2:-1}))}}),n.registerPreprocessor(function(t){t.xAxis&&t.yAxis&&!t.grid&&(t.grid={})})}),e("echarts/chart/bar",[$i,Yi,"../coord/cartesian/Grid","./bar/BarSeries","./bar/BarView","../layout/barGrid",Xi,"../component/gridSimple"],function(t){var e=t(Yi);t("../coord/cartesian/Grid"),t("./bar/BarSeries"),t("./bar/BarView");var i=t("../layout/barGrid"),n=t(Xi);n.registerLayout(e.curry(i,"bar")),n.registerVisual(function(t){t.eachSeriesByType("bar",function(t){var e=t[Fi]();e.setVisual("legendSymbol","roundRect")})}),t("../component/gridSimple")}),e("echarts/chart/pie",[$i,Yi,Xi,"./pie/PieSeries","./pie/PieView","../action/createDataSelectAction","../visual/dataColor","./pie/pieLayout","../processor/dataFilter"],function(t){var e=t(Yi),i=t(Xi);t("./pie/PieSeries"),t("./pie/PieView"),t("../action/createDataSelectAction")("pie",[{type:"pieToggleSelect",event:"pieselectchanged",method:"toggleSelected"},{type:"pieSelect",event:"pieselected",method:"select"},{type:"pieUnSelect",event:"pieunselected",method:"unSelect"}]),i.registerVisual(e.curry(t("../visual/dataColor"),"pie")),i.registerLayout(e.curry(t("./pie/pieLayout"),"pie")),i.registerProcessor(e.curry(t("../processor/dataFilter"),"pie"))}),e("echarts/chart/line",[$i,Yi,Xi,"./line/LineSeries","./line/LineView","../visual/symbol","../layout/points","../processor/dataSample","../component/gridSimple"],function(t){var e=t(Yi),i=t(Xi),n=i.PRIORITY;t("./line/LineSeries"),t("./line/LineView"),i.registerVisual(e.curry(t("../visual/symbol"),"line","circle","line")),i.registerLayout(e.curry(t("../layout/points"),"line")),i.registerProcessor(n.PROCESSOR.STATISTIC,e.curry(t("../processor/dataSample"),"line")),t("../component/gridSimple")}),e("echarts/component/title",[$i,Xi,"../util/graphic","../util/layout"],function(t){var e=t(Xi),i=t("../util/graphic"),n=t("../util/layout");e[Hi]({type:"title",layoutMode:{type:"box",ignoreSize:!0},defaultOption:{zlevel:0,z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bolder",color:"#333"},subtextStyle:{color:"#aaa"}}}),e[ji]({type:"title",render:function(t,e,r){if(this.group[Ui](),t.get("show")){var a=this.group,o=t[Ni](Bi),s=t[Ni]("subtextStyle"),l=t.get(Ei),u=t.get("textBaseline"),c=new i.Text({style:{text:t.get("text"),textFont:o[Ri](),fill:o[Vi]()},z2:10}),h=c[Oi](),d=t.get("subtext"),f=new i.Text({style:{text:d,textFont:s[Ri](),fill:s[Vi](),y:h[zi]+t.get("itemGap"),textBaseline:"top"},z2:10}),p=t.get("link"),v=t.get("sublink");c[Di]=!p,f[Di]=!v,p&&c.on("click",function(){window.open(p,"_"+t.get(ki))}),v&&f.on("click",function(){window.open(v,"_"+t.get("subtarget"))}),a.add(c),d&&a.add(f);var m=a[Oi](),g=t.getBoxLayoutParams();g.width=m.width,g[zi]=m[zi];var y=n[Ii](g,{width:r[Li](),height:r[Ci]()},t.get(Ai));l||(l=t.get("left")||t.get("right"),l===Pi&&(l=Ti),"right"===l?y.x+=y.width:l===Ti&&(y.x+=y.width/2)),u||(u=t.get("top")||t.get(Si),u===Ti&&(u=Pi),u===Si?y.y+=y[zi]:u===Pi&&(y.y+=y[zi]/2),u=u||"top"),a.attr(Mi,[y.x,y.y]);var x={textAlign:l,textVerticalAlign:u};c[wi](x),f[wi](x),m=a[Oi]();var _=y.margin,b=t[Gi](["color",bi]);b.fill=t.get(Zi);var w=new i.Rect({shape:{x:m.x-_[3],y:m.y-_[0],width:m.width+_[1]+_[3],height:m[zi]+_[0]+_[2]},style:b,silent:!0});i.subPixelOptimizeRect(w),a.add(w)}}})}),e("echarts/echarts",[$i,_i,"./model/Global","./ExtensionAPI","./CoordinateSystem","./model/OptionManager","./model/Component","./model/Series","./view/Component","./view/Chart","./util/graphic","./util/model","./util/throttle","zrender",Yi,xi,"zrender/mixin/Eventful","zrender/core/timsort","./visual/seriesColor","./preprocessor/backwardCompat","./loading/default","./data/List","./model/Model","./coord/Axis","./util/number","./util/format",yi,gi,mi],function(t){function e(t){return function(e,i,n){e=e&&e[vi](),R[pi][t].call(this,e,i,n)}}function i(){R.call(this)}function n(t,e,n){function r(t,e){return t.prio-e.prio}n=n||{},typeof e===fi&&(e=oe[e]),this.id,this.group,this._dom=t;var a=this._zr=z.init(t,{renderer:n.renderer||"canvas",devicePixelRatio:n.devicePixelRatio,width:n.width,height:n[zi]});this._throttledZrFlush=D[di](O.bind(a.flush,a),17),this._theme=O.clone(e),this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._coordSysMgr=new S,this._api=x(this),R.call(this),this._messageCenter=new i,this._initEvents(),this.resize=O.bind(this.resize,this),this._pendingActions=[],E(ae,r),E(ie,r),a[hi].on("frame",this._onframe,this),O.setAsPrimitive(this)}function r(t,e,i){var n,r=this._model,a=this._coordSysMgr.getCoordinateSystems();e=k.parseFinder(r,e);for(var o=0;oe.get("hoverLayerThreshold")&&!b.node&&i[ze](function(t){t.isGroup||(t.useHoverLayer=!0)})}function g(t,e){var i=0;e.group[ze](function(t){"group"===t.type||t[ai]||i++});var n=+t.get("progressive"),r=i>t.get("progressiveThreshold")&&n&&!b.node;r&&e.group[ze](function(t){t.isGroup||(t.progressive=r?Math.floor(i++/n):-1,r&&t[si](!0))});var a=t.get("blendMode")||null;e.group[ze](function(t){t.isGroup||t[wi]("blend",a)})}function y(t,e){var i=t.get("z"),n=t.get(De);e.group[ze](function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=n&&(t[De]=n))})}function x(t){var e=t._coordSysMgr;return O[We](new M(t),{getCoordinateSystems:O.bind(e.getCoordinateSystems,e),getComponentByElement:function(e){for(;e;){var i=e.__ecComponentInfo;if(null!=i)return t._model[ke](i[Ye],i.index);e=e[Ie]}}})}function _(t){function e(t,e){for(var i=0;i=0&&O.each(t,function(t){var r=t[Wi];if(r&&r.containPoint)i|=!!r.containPoint(e);else if("seriesModels"===n){var a=this._chartsMap[t.__viewId];a&&a.containPoint&&(i|=a.containPoint(e,t))}},this)},this),!!i},K.getVisual=function(t,e){var i=this._model;t=k.parseFinder(i,t,{defaultMainType:"series"});var n=t.seriesModel,r=n[Fi](),a=t.hasOwnProperty("dataIndexInside")?t.dataIndexInside:t.hasOwnProperty(ii)?r.indexOfRawIndex(t[ii]):null;return null!=a?r[ei](a,e):r.getVisual(e)},K.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},K.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]};var Q={update:function(t){var e=this._model,i=this._api,n=this._coordSysMgr,r=this._zr;if(e){e.restoreData(),n[ti](this._model,this._api),h.call(this,e,i),d.call(this,e),n[Je](e,i),p.call(this,e,t),v.call(this,e,t);var a=e.get(Zi)||Qe,o=r.painter;if(o.isSingleCanvas&&o.isSingleCanvas())r.configLayer(0,{clearColor:a});else{if(!b[li]){var s=V.parse(a);a=V.stringify(s,"rgb"),0===s[3]&&(a=Qe)}a[Ke]||a.image?(r.configLayer(0,{clearColor:a}),this[X]=!0,this._dom.style.background=Qe):(this[X]&&r.configLayer(0,{clearColor:null}),this[X]=!1,this._dom.style.background=a)}B(re,function(t){t(e,i)})}},updateView:function(t){var e=this._model;e&&(e[$e](function(t){t[Fi]().clearAllVisual()}),p.call(this,e,t),u.call(this,"updateView",e,t))},updateVisual:function(t){var e=this._model;e&&(e[$e](function(t){t[Fi]().clearAllVisual()}),p.call(this,e,t,!0),u.call(this,"updateVisual",e,t))},updateLayout:function(t){var e=this._model;e&&(f.call(this,e,t),u.call(this,"updateLayout",e,t))},prepareAndUpdate:function(t){var e=this._model;c.call(this,"component",e),c.call(this,"chart",e),this.__lastOnlyGraphic?(B(this._componentsViews,function(i){var n=i.__model;n&&"graphic"===n[Ye]&&(i.render(n,e,this._api,t),y(n,i))},this),this.__lastOnlyGraphic=!1):Q[Je].call(this,t)}};K.resize=function(t){this[j]=!0,this._zr.resize(t);var e=this._model&&this._model.resetOption("media"),i=e?"prepareAndUpdate":Je;Q[i].call(this),this._loadingFX&&this._loadingFX.resize(),this[j]=!1;var n=t&&t[Di];s.call(this,n),l.call(this,n)},K.showLoading=function(t,e){if(O[ui](t)&&(e=t,t=""),t=t||"default",this.hideLoading(),se[t]){var i=se[t](this._api,e),n=this._zr;this._loadingFX=i,n.add(i)}},K.hideLoading=function(){this._loadingFX&&this._zr[Ue](this._loadingFX),this._loadingFX=null},K.makeActionFromEvent=function(t){var e=O[We]({},t);return e.type=ee[t.type],e},K[qe]=function(t,e){if(O[ui](e)||(e={silent:!!e}),te[t.type]){if(this[j])return void this._pendingActions.push(t);o.call(this,t,e[Di]),e.flush?this._zr.flush(!0):e.flush!==!1&&b.browser.weChat&&this._throttledZrFlush(),s.call(this,e[Di]),l.call(this,e[Di])}},K.on=e("on"),K.off=e("off"),K.one=e("one");var J=["click","dblclick",Be,Ee,Re,"mousedown","mouseup","globalout","contextmenu"];K._initEvents=function(){B(J,function(t){this._zr.on(t,function(e){var i,n=this[Ni](),r=e[ki];if("globalout"===t)i={};else if(r&&null!=r[ii]){var a=r.dataModel||n.getSeriesByIndex(r[Ve]);i=a&&a[Oe](r[ii],r.dataType)||{}}else r&&r.eventData&&(i=O[We]({},r.eventData));i&&(i.event=e,i.type=t,this[Ge](t,i))},this)},this),B(ee,function(t,e){this._messageCenter.on(e,function(t){this[Ge](e,t)},this)},this)},K.isDisposed=function(){return this._disposed},K.clear=function(){this.setOption({series:[]},!0)},K[He]=function(){if(!this._disposed){this._disposed=!0;var t=this._api,e=this._model;B(this._componentsViews,function(i){i[He](e,t)}),B(this._chartsViews,function(i){i[He](e,t)}),this._zr[He](),delete le[this.id]}},O.mixin(n,R);var te={},ee={},ie=[],ne=[],re=[],ae=[],oe={},se={},le={},ue={},ce=new Date-0,he=new Date-0,de="_echarts_instance_",fe={version:"3.5.4",dependencies:{zrender:"3.4.4"}};return fe.init=function(t,e,i){var r=new n(t,e,i);return r.id="ec_"+ce++,le[r.id]=r,t.setAttribute&&t.setAttribute(de,r.id),_(r),r},fe.connect=function(t){if(O[Ce](t)){var e=t;t=null,O.each(e,function(e){null!=e.group&&(t=e.group)}),t=t||"g_"+he++,O.each(e,function(e){e.group=t})}return ue[t]=!0,t},fe.disConnect=function(t){ue[t]=!1},fe.disconnect=fe.disConnect,fe[He]=function(t){O.isDom(t)?t=fe.getInstanceByDom(t):typeof t===fi&&(t=le[t]),t instanceof n&&!t.isDisposed()&&t[He]()},fe.getInstanceByDom=function(t){var e=t.getAttribute(de);return le[e]},fe.getInstanceById=function(t){return le[t]},fe.registerTheme=function(t,e){oe[t]=e},fe.registerPreprocessor=function(t){ne.push(t)},fe.registerProcessor=function(t,e){typeof t===Ae&&(e=t,t=H),ie.push({prio:t,func:e})},fe.registerPostUpdate=function(t){re.push(t)},fe[Pe]=function(t,e,i){typeof e===Ae&&(i=e,e="");var n=O[ui](t)?t.type:[t,t={event:e}][0];t.event=(t.event||n)[vi](),e=t.event,O[ci]($.test(n)&&$.test(e)),te[n]||(te[n]={action:i,actionInfo:t}),ee[e]=n},fe.registerCoordinateSystem=function(t,e){S[Te](t,e)},fe.registerLayout=function(t,e){typeof t===Ae&&(e=t,t=G),ae.push({prio:t,func:e,isLayout:!0})},fe.registerVisual=function(t,e){typeof t===Ae&&(e=t,t=q),ae.push({prio:t,func:e})},fe.registerLoading=function(t,e){se[t]=e},fe[Hi]=function(t){return P[We](t)},fe[ji]=function(t){return C[We](t)},fe.extendSeriesModel=function(t){return A[We](t)},fe.extendChartView=function(t){return L[We](t)},fe.setCanvasCreator=function(t){O.createCanvas=t},fe.registerVisual(Z,t("./visual/seriesColor")),fe.registerPreprocessor(t("./preprocessor/backwardCompat")),fe.registerLoading("default",t("./loading/default")),fe[Pe]({type:"highlight",event:"highlight",update:"highlight"},O.noop),fe[Pe]({type:"downplay",event:"downplay",update:"downplay"},O.noop),fe.zrender=z,fe.List=t("./data/List"),fe.Model=t("./model/Model"),fe.Axis=t("./coord/Axis"),fe.graphic=t("./util/graphic"),fe[Se]=t("./util/number"),fe.format=t("./util/format"),fe[di]=D[di],fe.matrix=t(yi),fe.vector=t(gi),fe.color=t(xi),fe.util={},B(["map","each","filter",ni,Me,"reduce","filter","bind","curry",Ce,we,ui,"isFunction",We,qi,"clone","merge"],function(t){fe.util[t]=O[t]}),fe.helper=t(mi),fe.PRIORITY={PROCESSOR:{FILTER:H,STATISTIC:F},VISUAL:{LAYOUT:G,GLOBAL:Z,CHART:q,COMPONENT:W,BRUSH:U}},fe}),e("echarts/component/legend",[$i,"./legend/LegendModel","./legend/legendAction","./legend/LegendView",Xi,"./legend/legendFilter"],function(t){t("./legend/LegendModel"),t("./legend/legendAction"),t("./legend/LegendView");var e=t(Xi);e.registerProcessor(t("./legend/legendFilter"))}),e("echarts/component/tooltip",[$i,"./axisPointer","./tooltip/TooltipModel","./tooltip/TooltipView",Xi],function(t){t("./axisPointer"),t("./tooltip/TooltipModel"),t("./tooltip/TooltipView"),t(Xi)[Pe]({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),t(Xi)[Pe]({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},function(){})}),e("echarts/component/markPoint",[$i,"./marker/MarkPointModel","./marker/MarkPointView",Xi],function(t){t("./marker/MarkPointModel"),t("./marker/MarkPointView"),t(Xi).registerPreprocessor(function(t){t.markPoint=t.markPoint||{}})}),e("echarts/component/markArea",[$i,"./marker/MarkAreaModel","./marker/MarkAreaView",Xi],function(t){t("./marker/MarkAreaModel"),t("./marker/MarkAreaView"),t(Xi).registerPreprocessor(function(t){t.markArea=t.markArea||{}})}),e("echarts/component/markLine",[$i,"./marker/MarkLineModel","./marker/MarkLineView",Xi],function(t){t("./marker/MarkLineModel"),t("./marker/MarkLineView"),t(Xi).registerPreprocessor(function(t){t.markLine=t.markLine||{}})}),e("echarts/component/timeline",[$i,Xi,"./timeline/preprocessor","./timeline/typeDefaulter","./timeline/timelineAction","./timeline/SliderTimelineModel","./timeline/SliderTimelineView"],function(t){var e=t(Xi);e.registerPreprocessor(t("./timeline/preprocessor")),t("./timeline/typeDefaulter"),t("./timeline/timelineAction"),t("./timeline/SliderTimelineModel"),t("./timeline/SliderTimelineView")}),e("echarts/component/dataZoom",[$i,"./dataZoom/typeDefaulter","./dataZoom/DataZoomModel","./dataZoom/DataZoomView","./dataZoom/SliderZoomModel","./dataZoom/SliderZoomView","./dataZoom/InsideZoomModel","./dataZoom/InsideZoomView","./dataZoom/dataZoomProcessor","./dataZoom/dataZoomAction"],function(t){t("./dataZoom/typeDefaulter"),t("./dataZoom/DataZoomModel"),t("./dataZoom/DataZoomView"),t("./dataZoom/SliderZoomModel"),t("./dataZoom/SliderZoomView"),t("./dataZoom/InsideZoomModel"),t("./dataZoom/InsideZoomView"),t("./dataZoom/dataZoomProcessor"),t("./dataZoom/dataZoomAction")}),e("echarts/component/visualMap",[$i,"./visualMapContinuous","./visualMapPiecewise"],function(t){t("./visualMapContinuous"),t("./visualMapPiecewise")}),e("echarts/component/axis",[$i,"../coord/cartesian/AxisModel","./axis/CartesianAxisView"],function(t){t("../coord/cartesian/AxisModel"),t("./axis/CartesianAxisView")}),e(Yi,[$i],function(){function t(e){if(null==e||"object"!=typeof e)return e;var i=e,n=V.call(e);if("[object Array]"===n){i=[];for(var r=0,a=e[ri];a>r;r++)i[r]=t(e[r])}else if(O[n])i=e.constructor.from(e);else if(!z[n]&&!L(e)&&!M(e)){i={};for(var o in e)e.hasOwnProperty(o)&&(i[o]=t(e[o]))}return i}function e(i,n,r){if(!b(n)||!b(i))return r?t(n):i;for(var a in n)if(n.hasOwnProperty(a)){var o=i[a],s=n[a];!b(s)||!b(o)||y(s)||y(o)||M(s)||M(o)||w(s)||w(o)||L(s)||L(o)?!r&&a in i||(i[a]=t(n[a],!0)):e(o,s,r)}return i}function i(t,i){for(var n=t[0],r=1,a=t[ri];a>r;r++)n=e(n,t[r],i);return n}function n(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function r(t,e,i){for(var n in e)e.hasOwnProperty(n)&&(i?null!=e[n]:null==t[n])&&(t[n]=e[n]);return t}function a(){return document.createElement("canvas")}function o(){return D||(D=W.createCanvas().getContext("2d")),D}function s(t,e){if(t){if(t[ni])return t[ni](e);for(var i=0,n=t[ri];n>i;i++)if(t[i]===e)return i}return-1}function l(t,e){function i(){}var n=t[pi];i[pi]=e[pi],t[pi]=new i;for(var r in n)t[pi][r]=n[r];t[pi].constructor=t,t.superClass=e}function u(t,e,i){t=pi in t?t[pi]:t,e=pi in e?e[pi]:e,r(t,e,i)}function c(t){return t?typeof t==fi?!1:typeof t[ri]==Se:void 0}function h(t,e,i){if(t&&e)if(t.forEach&&t.forEach===E)t.forEach(e,i);else if(t[ri]===+t[ri])for(var n=0,r=t[ri];r>n;n++)e.call(i,t[n],n,t);else for(var a in t)t.hasOwnProperty(a)&&e.call(i,t[a],a,t)}function d(t,e,i){if(t&&e){if(t.map&&t.map===H)return t.map(e,i);for(var n=[],r=0,a=t[ri];a>r;r++)n.push(e.call(i,t[r],r,t));return n}}function f(t,e,i,n){if(t&&e){if(t.reduce&&t.reduce===F)return t.reduce(e,i,n);for(var r=0,a=t[ri];a>r;r++)i=e.call(n,i,t[r],r,t);return i}}function p(t,e,i){if(t&&e){if(t.filter&&t.filter===B)return t.filter(e,i);for(var n=[],r=0,a=t[ri];a>r;r++)e.call(i,t[r],r,t)&&n.push(t[r]);return n}}function v(t,e,i){if(t&&e)for(var n=0,r=t[ri];r>n;n++)if(e.call(i,t[n],n,t))return t[n]}function m(t,e){var i=N.call(arguments,2);return function(){return t.apply(e,i[Xe](N.call(arguments)))}}function g(t){var e=N.call(arguments,1);return function(){return t.apply(this,e[Xe](N.call(arguments)))}}function y(t){return"[object Array]"===V.call(t)}function x(t){return typeof t===Ae}function _(t){return"[object String]"===V.call(t)}function b(t){var e=typeof t;return e===Ae||!!t&&"object"==e}function w(t){return!!z[V.call(t)]}function M(t){return"object"==typeof t&&typeof t.nodeType===Se&&"object"==typeof t.ownerDocument}function S(t){return t!==t}function T(){for(var t=0,e=arguments[ri];e>t;t++)if(null!=arguments[t])return arguments[t]}function P(){return Function.call.apply(N,arguments)}function A(t,e){if(!t)throw new Error(e)}function C(t){t[G]=!0}function L(t){return t[G]}function I(t){t&&n(this,t)}function k(){return new I}var D,z={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},O={"[object Int8Array]":1,"[object Uint8Array]":1,"[object Uint8ClampedArray]":1,"[object Int16Array]":1,"[object Uint16Array]":1,"[object Int32Array]":1,"[object Uint32Array]":1,"[object Float32Array]":1,"[object Float64Array]":1},V=Object[pi].toString,R=Array[pi],E=R.forEach,B=R.filter,N=R.slice,H=R.map,F=R.reduce,G="__ec_primitive__",Z="_ec_",q=4;I[pi]={constructor:I,get:function(t){return this[Z+t]},set:function(t,e){return this[Z+t]=e,e},each:function(t,e){void 0!==e&&(t=m(t,e));for(var i in this)this.hasOwnProperty(i)&&t(this[i],i.slice(q))},removeKey:function(t){delete this[t]}};var W={inherits:l,mixin:u,clone:t,merge:e,mergeAll:i,extend:n,defaults:r,getContext:o,createCanvas:a,indexOf:s,slice:P,find:v,isArrayLike:c,each:h,map:d,reduce:f,filter:p,bind:m,curry:g,isArray:y,isString:_,isObject:b,isFunction:x,isBuiltInObject:w,isDom:M,eqNaN:S,retrieve:T,assert:A,setAsPrimitive:C,createHashMap:k,noop:function(){}};return W}),e("echarts/scale/Time",[$i,Yi,be,"../util/format",mi,"./Interval"],function(t){var e=t(Yi),i=t(be),n=t("../util/format"),r=t(mi),a=t("./Interval"),o=a[pi],s=Math.ceil,l=Math.floor,u=1e3,c=60*u,h=60*c,d=24*h,f=function(t,e,i,n){for(;n>i;){var r=i+n>>>1;t[r][2]0}))},niceTicks:function(t){t=t||10;var e=this[_e],i=e[1]-e[0];if(!(1/0===i||0>=i)){var n=r.quantity(i),a=t/i*n;for(.5>=a&&(n*=10);!isNaN(n)&&Math.abs(n)<1&&Math.abs(n)>0;)n*=10;var o=[r.round(h(e[0]/n)*n),r.round(c(e[1]/n)*n)];this._interval=n,this._niceExtent=o}},niceExtent:function(t,e,i){s.niceExtent.call(this,t,e,i);var n=this._originalScale;n.__fixMin=e,n.__fixMax=i}});return i.each([xe,ye],function(t){p[pi][t]=function(e){return e=f(e)/f(this.base),o[t].call(this,e)}}),p[ti]=function(){return new p},p}),e("echarts/util/graphic",[$i,Yi,"zrender/tool/path","zrender/graphic/Path",xi,yi,gi,"zrender/mixin/Transformable","zrender/core/BoundingRect","zrender/container/Group","zrender/graphic/Image","zrender/graphic/Text","zrender/graphic/shape/Circle","zrender/graphic/shape/Sector","zrender/graphic/shape/Ring","zrender/graphic/shape/Polygon","zrender/graphic/shape/Polyline","zrender/graphic/shape/Rect","zrender/graphic/shape/Line","zrender/graphic/shape/BezierCurve","zrender/graphic/shape/Arc","zrender/graphic/CompoundPath","zrender/graphic/LinearGradient","zrender/graphic/RadialGradient"],function(t){function e(t){return null!=t&&"none"!=t +}function i(t){return typeof t===fi?y.lift(t,-.1):t}function n(t){if(t.__hoverStlDirty){var n=t.style[ce],r=t.style.fill,a=t.__hoverStl;a.fill=a.fill||(e(r)?i(r):null),a[ce]=a[ce]||(e(n)?i(n):null);var o={};for(var s in a)a.hasOwnProperty(s)&&(o[s]=t.style[s]);t.__normalStl=o,t.__hoverStlDirty=!1}}function r(t){t.__isHover||(n(t),t.useHoverLayer?t.__zr&&t.__zr.addHover(t,t.__hoverStl):(t[wi](t.__hoverStl),t.z2+=1),t.__isHover=!0)}function a(t){if(t.__isHover){var e=t.__normalStl;t.useHoverLayer?t.__zr&&t.__zr.removeHover(t):(e&&t[wi](e),t.z2-=1),t.__isHover=!1}}function o(t){"group"===t.type?t[ze](function(t){"group"!==t.type&&r(t)}):r(t)}function s(t){"group"===t.type?t[ze](function(t){"group"!==t.type&&a(t)}):a(t)}function l(t,e){t.__hoverStl=t.hoverStyle||e||{},t.__hoverStlDirty=!0,t.__isHover&&n(t)}function u(t){this.__hoverSilentOnTouch&&t.zrByTouch||!this.__isEmphasis&&o(this)}function c(t){this.__hoverSilentOnTouch&&t.zrByTouch||!this.__isEmphasis&&s(this)}function h(){this.__isEmphasis=!0,o(this)}function d(){this.__isEmphasis=!1,s(this)}function f(t,e,i,n,r,a){typeof r===Ae&&(a=r,r=null);var o=n&&n.isAnimationEnabled();if(o){var s=t?"Update":"",l=n[oe]("animationDuration"+s),u=n[oe]("animationEasing"+s),c=n[oe]("animationDelay"+s);typeof c===Ae&&(c=c(r,n.getAnimationDelayParams?n.getAnimationDelayParams(e,r):null)),typeof l===Ae&&(l=l(r)),l>0?e.animateTo(i,l,c||0,u,a):(e[si](),e.attr(i),a&&a())}else e[si](),e.attr(i),a&&a()}var p=t(Yi),v=t("zrender/tool/path"),m=Math.round,g=t("zrender/graphic/Path"),y=t(xi),x=t(yi),_=t(gi),b=t("zrender/mixin/Transformable"),w=t("zrender/core/BoundingRect"),M={};return M.Group=t("zrender/container/Group"),M.Image=t("zrender/graphic/Image"),M.Text=t("zrender/graphic/Text"),M.Circle=t("zrender/graphic/shape/Circle"),M.Sector=t("zrender/graphic/shape/Sector"),M.Ring=t("zrender/graphic/shape/Ring"),M.Polygon=t("zrender/graphic/shape/Polygon"),M.Polyline=t("zrender/graphic/shape/Polyline"),M.Rect=t("zrender/graphic/shape/Rect"),M.Line=t("zrender/graphic/shape/Line"),M.BezierCurve=t("zrender/graphic/shape/BezierCurve"),M.Arc=t("zrender/graphic/shape/Arc"),M.CompoundPath=t("zrender/graphic/CompoundPath"),M.LinearGradient=t("zrender/graphic/LinearGradient"),M.RadialGradient=t("zrender/graphic/RadialGradient"),M.BoundingRect=w,M.extendShape=function(t){return g[We](t)},M.extendPath=function(t,e){return v.extendFromString(t,e)},M.makePath=function(t,e,i,n){var r=v.createFromString(t,e),a=r[Oi]();if(i){var o=a.width/a[zi];if(n===Ti){var s,l=i[zi]*o;l<=i.width?s=i[zi]:(l=i.width,s=l/o);var u=i.x+i.width/2,c=i.y+i[zi]/2;i.x=u-l/2,i.y=c-s/2,i.width=l,i[zi]=s}M.resizePath(r,i)}return r},M.mergePath=v.mergePath,M.resizePath=function(t,e){if(t[de]){var i=t[Oi](),n=i.calculateTransform(e);t[de](n)}},M.subPixelOptimizeLine=function(t){var e=M.subPixelOptimize,i=t.shape,n=t.style[he];return m(2*i.x1)===m(2*i.x2)&&(i.x1=i.x2=e(i.x1,n,!0)),m(2*i.y1)===m(2*i.y2)&&(i.y1=i.y2=e(i.y1,n,!0)),t},M.subPixelOptimizeRect=function(t){var e=M.subPixelOptimize,i=t.shape,n=t.style[he],r=i.x,a=i.y,o=i.width,s=i[zi];return i.x=e(i.x,n,!0),i.y=e(i.y,n,!0),i.width=Math.max(e(r+o,n,!1)-i.x,0===o?0:1),i[zi]=Math.max(e(a+s,n,!1)-i.y,0===s?0:1),t},M.subPixelOptimize=function(t,e,i){var n=m(2*t);return(n+m(e))%2===0?n/2:(n+(i?1:-1))/2},M[ue]=function(t,e,i){t.__hoverSilentOnTouch=i&&i.hoverSilentOnTouch,"group"===t.type?t[ze](function(t){"group"!==t.type&&l(t,e)}):l(t,e),t.on(Be,u).on(Ee,c),t.on(le,h).on(se,d)},M.setText=function(t,e,i){var n=e[oe](Mi)||ae,r=e[oe](re),a=n[ni](ae)>=0?"white":i,o=e[Ni](Bi);p[We](t,{textDistance:e[oe]("distance")||5,textFont:o[Ri](),textPosition:n,textOffset:r,textFill:o[Vi]()||a})},M[ne]=function(t,e,i,n,r){f(!0,t,e,i,n,r)},M.initProps=function(t,e,i,n,r){f(!1,t,e,i,n,r)},M.getTransform=function(t,e){for(var i=x.identity([]);t&&t!==e;)x.mul(i,t[ie](),i),t=t[Ie];return i},M[de]=function(t,e,i){return e&&!p.isArrayLike(e)&&(e=b[ie](e)),i&&(e=x.invert([],e)),_[de]([],t,e)},M.transformDirection=function(t,e,i){var n=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/e[0]),r=0===e[4]||0===e[5]||0===e[2]?1:Math.abs(2*e[4]/e[2]),a=["left"===t?-n:"right"===t?n:0,"top"===t?-r:t===Si?r:0];return a=M[de](a,e,i),Math.abs(a[0])>Math.abs(a[1])?a[0]>0?"right":"left":a[1]>0?Si:"top"},M.groupTransition=function(t,e,i){function n(t){var e={};return t[ze](function(t){!t.isGroup&&t.anid&&(e[t.anid]=t)}),e}function r(t){var e={position:_.clone(t[Mi]),rotation:t[ee]};return t.shape&&(e.shape=p[We]({},t.shape)),e}if(t&&e){var a=n(t);e[ze](function(t){if(!t.isGroup&&t.anid){var e=a[t.anid];if(e){var n=r(t);t.attr(r(e)),M[ne](t,n,i,t[ii])}}})}},M}),e("echarts/coord/cartesian/Grid",[$i,"exports","../../util/layout","../../coord/axisHelper",Yi,"./Cartesian2D","./Axis2D","./GridModel","../../CoordinateSystem"],function(t){function e(t,e){return t.getCoordSysModel()===e}function i(t){var e,i=t.model,n=i.getFormattedLabels(),r=i[Ni]("axisLabel.textStyle"),a=1,o=n[ri];o>40&&(a=Math.ceil(o/40));for(var s=0;o>s;s+=a)if(!t.isLabelIgnored(s)){var l=r.getTextRect(n[s]);e?e.union(l):e=l}return e}function n(t,e,i){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,i),this.model=t}function r(t,e){var i=t[me](),n=i[0]+i[1];t[$]="x"===t.dim?function(t){return t+e}:function(t){return n-t+e},t.toLocalCoord="x"===t.dim?function(t){return t-e}:function(t){return n-t+e}}function a(t){return u.map(m,function(e){var i=t.getReferringComponents(e)[0];return i})}function o(t){return"cartesian2d"===t.get(Wi)}var s=t("../../util/layout"),l=t("../../coord/axisHelper"),u=t(Yi),c=t("./Cartesian2D"),h=t("./Axis2D"),d=u.each,f=l.ifAxisCrossZero,p=l.niceScaleExtent;t("./GridModel");var v=n[pi];v.type="grid",v.axisPointerEnabled=!0,v.getRect=function(){return this._rect},v[Je]=function(t,e){function i(t){var e=n[t];for(var i in e)if(e.hasOwnProperty(i)){var r=e[i];if(r&&(r.type===te||!f(r)))return!0}return!1}var n=this._axesMap;this._updateScale(t,this.model),d(n.x,function(t){p(t.scale,t.model)}),d(n.y,function(t){p(t.scale,t.model)}),d(n.x,function(t){i("y")&&(t.onZero=!1)}),d(n.y,function(t){i("x")&&(t.onZero=!1)}),this.resize(this.model,e)},v.resize=function(t,e){function n(){d(o,function(t){var e=t.isHorizontal(),i=e?[0,a.width]:[0,a[zi]],n=t[J]?1:0;t.setExtent(i[n],i[1-n]),r(t,e?a.x:a.y)})}var a=s[Ii](t.getBoxLayoutParams(),{width:e[Li](),height:e[Ci]()});this._rect=a;var o=this._axesList;n(),t.get("containLabel")&&(d(o,function(t){if(!t.model.get("axisLabel.inside")){var e=i(t);if(e){var n=t.isHorizontal()?zi:"width",r=t.model.get("axisLabel.margin");a[n]-=e[n]+r,"top"===t[Mi]?a.y+=e[zi]+r:"left"===t[Mi]&&(a.x+=e.width+r)}}}),n())},v[Q]=function(t,e){var i=this._axesMap[t];if(null!=i){if(null==e)for(var n in i)if(i.hasOwnProperty(n))return i[n];return i[e]}},v.getAxes=function(){return this._axesList.slice()},v.getCartesian=function(t,e){if(null!=t&&null!=e){var i="x"+t+"y"+e;return this._coordsMap[i]}u[ui](t)&&(e=t.yAxisIndex,t=t.xAxisIndex);for(var n=0,r=this._coordsList;n0?1:-1,s=n[zi]>0?1:-1;return{x:n.x+o*r/2,y:n.y+s*r/2,width:n.width-o*r,height:n[zi]-s*r}}function r(t,e,i,n,r,a,u){var c=e[ei](i,"color"),h=e[ei](i,bi),d=n[Ni]("itemStyle.normal"),f=n[Ni]("itemStyle.emphasis").getBarItemStyle();t[B]("r",d.get("barBorderRadius")||0),t.useStyle(o[qi]({fill:c,opacity:h},d.getBarItemStyle()));var p=u?r[zi]>0?Si:"top":r.width>0?"left":"right";l.setLabel(t.style,f,n,c,a,i,p),s[ue](t,f)}function a(t,e){var i=t.get(u)||0;return Math.min(i,Math.abs(e.width),Math.abs(e[zi]))}var o=t(Yi),s=t(W),l=t(mi),u=["itemStyle",se,"barBorderWidth"];o[We](t("../../model/Model")[pi],t("./barItemStyle"));var c=t(q).extendChartView({type:"bar",render:function(t,e,i){var n=t.get(Wi);return"cartesian2d"===n&&this._renderOnCartesian(t,e,i),this.group},dispose:o.noop,_renderOnCartesian:function(t){var a=this.group,o=t[Fi](),l=this._data,u=t[Wi],c=u.getBaseAxis(),h=c.isHorizontal(),d=t.isAnimationEnabled()?t:null;o.diff(l).add(function(i){if(o.hasValue(i)){var s=o[Z](i),l=n(o,i,s),u=e(o,i,s,l,h,d);o[G](i,u),a.add(u),r(u,o,i,s,l,t,h)}})[Je](function(i,u){var c=l[F](u);if(!o.hasValue(i))return void a[Ue](c);var f=o[Z](i),p=n(o,i,f);c?s[ne](c,{shape:p},d,i):c=e(o,i,f,p,h,d,!0),o[G](i,c),a.add(c),r(c,o,i,f,p,t,h)})[Ue](function(t){var e=l[F](t);e&&i(t,d,e)}).execute(),this._data=o},remove:function(t){var e=this.group,n=this._data;t.get(hi)?n&&n[H](function(e){i(e[ii],t,e)}):e[Ui]()}});return c}),e("echarts/layout/barGrid",[$i,Yi,be],function(t){function e(t){return t.get("stack")||"__ec_stack_"+t[Ve]}function i(t){return t.dim+t.index}function n(t){var n={};a.each(t,function(t){var r=t[Fi](),a=t[Wi],o=a.getBaseAxis(),l=o[me](),u=o.type===te?o.getBandWidth():Math.abs(l[1]-l[0])/r.count(),c=n[i(o)]||{bandWidth:u,remainedWidth:u,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},h=c.stacks;n[i(o)]=c;var d=e(t);h[d]||c.autoWidthCount++,h[d]=h[d]||{width:0,maxWidth:0};var f=s(t.get("barWidth"),u),p=s(t.get("barMaxWidth"),u),v=t.get("barGap"),m=t.get("barCategoryGap");f&&!h[d].width&&(f=Math.min(c.remainedWidth,f),h[d].width=f,c.remainedWidth-=f),p&&(h[d].maxWidth=p),null!=v&&(c.gap=v),null!=m&&(c.categoryGap=m)});var r={};return a.each(n,function(t,e){r[e]={};var i=t.stacks,n=t.bandWidth,o=s(t.categoryGap,n),l=s(t.gap,1),u=t.remainedWidth,c=t.autoWidthCount,h=(u-o)/(c+(c-1)*l);h=Math.max(h,0),a.each(i,function(t){var e=t.maxWidth;e&&h>e&&(e=Math.min(e,u),t.width&&(e=Math.min(e,t.width)),u-=e,t.width=e,c--)}),h=(u-o)/(c+(c-1)*l),h=Math.max(h,0);var d,f=0;a.each(i,function(t){t.width||(t.width=h),d=t,f+=t.width*(1+l)}),d&&(f-=d.width*l);var p=-f/2;a.each(i,function(t,i){r[e][i]=r[e][i]||{offset:p,width:t.width},p+=t.width*(1+l)})}),r}function r(t,r){var o=n(a.filter(r.getSeriesByType(t),function(t){return!r.isSeriesFiltered(t)&&t[Wi]&&"cartesian2d"===t[Wi].type})),s={},l={};r.eachSeriesByType(t,function(t){var n=t[Fi](),r=t[Wi],a=r.getBaseAxis(),u=e(t),c=o[i(a)][u],h=c[re],d=c.width,f=r[X](a),p=t.get("barMinHeight")||0,v=a.onZero?f[$](f[Y](0)):f.getGlobalExtent()[0],m=r.dataToPoints(n,!0);s[u]=s[u]||[],l[u]=l[u]||[],n.setLayout({offset:h,size:d}),n.each(f.dim,function(t,e){if(!isNaN(t)){s[u][e]||(s[u][e]={p:v,n:v},l[u][e]={p:v,n:v});var i,r,a,o,c=t>=0?"p":"n",g=m[e],y=s[u][e][c],x=l[u][e][c];f.isHorizontal()?(i=y,r=g[1]+h,a=g[0]-x,o=d,l[u][e][c]+=a,Math.abs(a)a?-1:1)*p),s[u][e][c]+=a):(i=g[0]+h,r=y,a=d,o=g[1]-x,l[u][e][c]+=o,Math.abs(o)=o?-1:1)*p),s[u][e][c]+=o),n.setItemLayout(e,{x:i,y:r,width:a,height:o})}},!0)},this)}var a=t(Yi),o=t(be),s=o[E];return r}),e("echarts/action/createDataSelectAction",[$i,Xi,Yi],function(t){var e=t(Xi),i=t(Yi);return function(t,n){i.each(n,function(i){i[Je]="updateView",e[Pe](i,function(e,n){var r={};return n[oi]({mainType:"series",subType:t,query:e},function(t){t[i.method]&&t[i.method](e.name);var n=t[Fi]();n.each(function(e){var i=n[R](e);r[i]=t.isSelected(i)||!1})}),{name:e.name,selected:r}})})}}),e("echarts/visual/dataColor",[$i],function(){return function(t,e){var i={};e.eachRawSeriesByType(t,function(t){var n=t.getRawData(),r={};if(!e.isSeriesFiltered(t)){var a=t[Fi]();a.each(function(t){var e=a[V](t);r[e]=t}),n.each(function(e){var o=r[e],s=null!=o&&a[ei](o,"color",!0);if(s)n.setItemVisual(e,"color",s);else{var l=n[Z](e),u=l.get("itemStyle.normal.color")||t.getColorFromPalette(n[R](e),i);n.setItemVisual(e,"color",u),null!=o&&a.setItemVisual(o,"color",u)}})}})}}),e("echarts/chart/pie/PieSeries",[$i,"../../data/List",Yi,O,"../../data/helper/completeDimensions","../../component/helper/selectableMixin",q],function(t){var e=t("../../data/List"),i=t(Yi),n=t(O),r=t("../../data/helper/completeDimensions"),a=t("../../component/helper/selectableMixin"),o=t(q).extendSeriesModel({type:"series.pie",init:function(t){o[z](this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this.updateSelectedMap(t.data),this._defaultLabelLine(t)},mergeOption:function(t){o.superCall(this,D,t),this.updateSelectedMap(this[k].data)},getInitialData:function(t){var i=r(["value"],t.data),n=new e(i,this);return n.initData(t.data),n},getDataParams:function(t){var e=this[Fi](),i=o.superCall(this,Oe,t),n=e.getSum("value");return i.percent=n?+(e.get("value",t)/n*100)[I](2):0,i.$vars.push("percent"),i},_defaultLabelLine:function(t){n.defaultEmphasis(t.labelLine,["show"]);var e=t.labelLine[se],i=t.labelLine[le];e.show=e.show&&t.label[se].show,i.show=i.show&&t.label[le].show},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,selectedOffset:10,avoidLabelOverlap:!0,stillShowZeroSum:!0,label:{normal:{rotate:!1,show:!0,position:"outer"},emphasis:{}},labelLine:{normal:{show:!0,length:15,length2:15,smooth:!1,lineStyle:{width:1,type:"solid"}}},itemStyle:{normal:{borderWidth:1},emphasis:{}},animationType:"expansion",animationEasing:"cubicOut",data:[]}});return i.mixin(o,a),o}),e("echarts/chart/pie/pieLayout",[$i,L,"./labelLayout",Yi],function(t){var e=t(L),i=e[E],n=t("./labelLayout"),r=t(Yi),a=2*Math.PI,o=Math.PI/180;return function(t,s,l){s.eachSeriesByType(t,function(t){var s=t.get(Ti),u=t.get("radius");r[Ce](u)||(u=[0,u]),r[Ce](s)||(s=[s,s]);var c=l[Li](),h=l[Ci](),d=Math.min(c,h),f=i(s[0],c),p=i(s[1],h),v=i(u[0],d/2),m=i(u[1],d/2),g=t[Fi](),y=-t.get("startAngle")*o,x=t.get("minAngle")*o,_=g.getSum("value"),b=Math.PI/(_||g.count())*2,w=t.get("clockwise"),M=t.get("roseType"),S=t.get("stillShowZeroSum"),T=g[fe]("value");T[0]=0;var P=a,A=0,L=y,I=w?1:-1;if(g.each("value",function(t,i){var n;if(isNaN(t))return void g.setItemLayout(i,{angle:0/0,startAngle:0/0,endAngle:0/0,clockwise:w,cx:f,cy:p,r0:v,r:M?0/0:m});n="area"!==M?0===_&&S?b:t*b:a/(g.count()||1),x>n?(n=x,P-=x):A+=t;var r=L+I*n;g.setItemLayout(i,{angle:n,startAngle:L,endAngle:r,clockwise:w,cx:f,cy:p,r0:v,r:M?e[C](t,T,[v,m]):m}),L=r},!0),a>P)if(.001>=P){var k=a/g.count();g.each(function(t){var e=g[N](t);e.startAngle=y+I*t*k,e.endAngle=y+I*(t+1)*k})}else b=P/A,L=y,g.each("value",function(t,e){var i=g[N](e),n=i.angle===x?x:t*b;i.startAngle=L,i.endAngle=L+I*n,L+=I*n});n(t,m,c,h)})}}),e("echarts/processor/dataFilter",[],function(){return function(t,e){var i=e.findComponents({mainType:"legend"});i&&i[ri]&&e.eachSeriesByType(t,function(t){var e=t[Fi]();e.filterSelf(function(t){for(var n=e[R](t),r=0;re[0]?1:-1;e[0]+=n*i,e[1]-=n*i}return e}function r(t){return t>=0?1:-1}function a(t,e){var i=t.getBaseAxis(),n=t[X](i),a=i.onZero?0:n.scale[me]()[0],o=n.dim,s="x"===o||"radius"===o?1:0;return e.mapArray([o],function(n,l){for(var u,c=e.stackedOn;c&&r(c.get(o,l))===r(n);){u=c;break}var h=[];return h[s]=e.get(i.dim,l),h[1-s]=u?u.get(o,l,!0):a,t[K](h)},!0)}function o(t,e,i){var r=n(t[Q]("x")),a=n(t[Q]("y")),o=t.getBaseAxis().isHorizontal(),s=Math.min(r[0],r[1]),l=Math.min(a[0],a[1]),u=Math.max(r[0],r[1])-s,c=Math.max(a[0],a[1])-l,h=i.get("lineStyle.normal.width")||2,d=i.get("clipOverflow")?h/2:Math.max(u,c);o?(l-=d,c+=2*d):(s-=d,u+=2*d);var f=new v.Rect({shape:{x:s,y:l,width:u,height:c}});return e&&(f.shape[o?"width":zi]=0,v.initProps(f,{shape:{width:u,height:c}},i)),f}function s(t,e,i){var n=t.getAngleAxis(),r=t.getRadiusAxis(),a=r[me](),o=n[me](),s=Math.PI/180,l=new v.Sector({shape:{cx:t.cx,cy:t.cy,r0:a[0],r:a[1],startAngle:-o[0]*s,endAngle:-o[1]*s,clockwise:n[J]}});return e&&(l.shape.endAngle=-o[0]*s,v.initProps(l,{shape:{endAngle:-o[1]*s}},i)),l}function l(t,e,i){return"polar"===t.type?s(t,e,i):o(t,e,i)}function u(t,e,i){for(var n=e.getBaseAxis(),r="x"===n.dim||"radius"===n.dim?0:1,a=[],o=0;o=0;r--)if(i[r].dimension<2){n=i[r];break}if(n&&"cartesian2d"===e.type){var a=n.dimension,o=t[U][a],s=e[Q](o),l=h.map(n.stops,function(t){return{coord:s[$](s[Y](t.value)),color:t.color}}),u=l[ri],c=n.outerColors.slice();u&&l[0].coord>l[u-1].coord&&(l[A](),c[A]());var d=10,f=l[0].coord-d,p=l[u-1].coord+d,m=p-f;if(.001>m)return Qe;h.each(l,function(t){t[re]=(t.coord-f)/m}),l.push({offset:u?l[u-1][re]:.5,color:c[1]||Qe}),l.unshift({offset:u?l[0][re]:.5,color:c[0]||Qe});var g=new v.LinearGradient(0,0,0,0,l,!0);return g[o]=f,g[o+"2"]=p,g}}}var h=t(Yi),d=t("../helper/SymbolDraw"),f=t("../helper/Symbol"),p=t("./lineAnimationDiff"),v=t(W),m=t(O),g=t("./poly"),y=t("../../view/Chart");return y[We]({type:"line",init:function(){var t=new v.Group,e=new d;this.group.add(e.group),this._symbolDraw=e,this._lineGroup=t},render:function(t,n,r){var o=t[Wi],s=this.group,d=t[Fi](),f=t[Ni]("lineStyle.normal"),p=t[Ni]("areaStyle.normal"),v=d.mapArray(d[N],!0),m="polar"===o.type,g=this._coordSys,y=this._symbolDraw,x=this._polyline,_=this._polygon,b=this._lineGroup,w=t.get(hi),M=!p.isEmpty(),S=a(o,d),T=t.get("showSymbol"),A=T&&!m&&!t.get("showAllSymbol")&&this._getSymbolIgnoreFunc(d,o),C=this._data;C&&C[H](function(t,e){t.__temp&&(s[Ue](t),C[G](e,null))}),T||y[Ue](),s.add(b);var L=!m&&t.get("step");x&&g.type===o.type&&L===this._step?(M&&!_?_=this._newPolygon(v,S,o,w):_&&!M&&(b[Ue](_),_=this._polygon=null),b.setClipPath(l(o,!1,t)),T&&y.updateData(d,A),d[H](function(t){t[si](!0)}),e(this._stackedOnPoints,S)&&e(this._points,v)||(w?this._updateAnimation(d,S,o,r,L):(L&&(v=u(v,o,L),S=u(S,o,L)),x[B]({points:v}),_&&_[B]({points:v,stackedOnPoints:S})))):(T&&y.updateData(d,A),L&&(v=u(v,o,L),S=u(S,o,L)),x=this._newPolyline(v,o,w),M&&(_=this._newPolygon(v,S,o,w)),b.setClipPath(l(o,!0,t)));var I=c(d,o)||d.getVisual("color");x.useStyle(h[qi](f[P](),{fill:"none",stroke:I,lineJoin:"bevel"}));var k=t.get("smooth");if(k=i(t.get("smooth")),x[B]({smooth:k,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")}),_){var D=d.stackedOn,z=0;if(_.useStyle(h[qi](p.getAreaStyle(),{fill:I,opacity:.7,lineJoin:"bevel"})),D){var O=D.hostModel;z=i(O.get("smooth"))}_[B]({smooth:k,stackedOnSmooth:z,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")})}this._data=d,this._coordSys=o,this._stackedOnPoints=S,this._points=v,this._step=L},dispose:function(){},highlight:function(t,e,i,n){var r=t[Fi](),a=m.queryDataIndex(r,n);if(!(a instanceof Array)&&null!=a&&a>=0){var o=r[F](a);if(!o){var s=r[N](a);if(!s)return;o=new f(r,a),o[Mi]=s,o.setZ(t.get(De),t.get("z")),o[ai]=isNaN(s[0])||isNaN(s[1]),o.__temp=!0,r[G](a,o),o.stopSymbolAnimation(!0),this.group.add(o)}o[Ze]()}else y[pi][Ze].call(this,t,e,i,n)},downplay:function(t,e,i,n){var r=t[Fi](),a=m.queryDataIndex(r,n);if(null!=a&&a>=0){var o=r[F](a);o&&(o.__temp?(r[G](a,null),this.group[Ue](o)):o.downplay())}else y[pi].downplay.call(this,t,e,i,n)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup[Ue](e),e=new g.Polyline({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var i=this._polygon;return i&&this._lineGroup[Ue](i),i=new g.Polygon({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(i),this._polygon=i,i},_getSymbolIgnoreFunc:function(t,e){var i=e.getAxesByScale(T)[0];return i&&i.isLabelIgnored?h.bind(i.isLabelIgnored,i):void 0},_updateAnimation:function(t,e,i,n,r){var a=this._polyline,o=this._polygon,s=t.hostModel,l=p(this._data,t,this._stackedOnPoints,e,this._coordSys,i),c=l.current,h=l.stackedOnCurrent,d=l.next,f=l.stackedOnNext;r&&(c=u(l.current,i,r),h=u(l.stackedOnCurrent,i,r),d=u(l.next,i,r),f=u(l.stackedOnNext,i,r)),a.shape.__points=l.current,a.shape[S]=c,v[ne](a,{shape:{points:d}},s),o&&(o[B]({points:c,stackedOnPoints:h}),v[ne](o,{shape:{points:d,stackedOnPoints:f}},s));for(var m=[],g=l.status,y=0;ye&&(e=t[i]);return e},min:function(t){for(var e=1/0,i=0;i1){var h;typeof r===fi?h=t[r]:typeof r===Ae&&(h=r),h&&(n=n.downSample(s.dim,1/c,h,e),i.setData(n))}}},this)}}),e("echarts/util/layout",[$i,Yi,"zrender/core/BoundingRect","./number","./format"],function(t){function e(t,e,i,n,r){var a=0,o=0;null==n&&(n=1/0),null==r&&(r=1/0);var s=0;e.eachChild(function(l,u){var c,h,d=l[Mi],f=l[Oi](),p=e.childAt(u+1),v=p&&p[Oi]();if(t===_){var m=f.width+(v?-v.x+f.x:0);c=a+m,c>n||l.newline?(a=0,c=m,o+=s+i,s=f[zi]):s=Math.max(s,f[zi])}else{var g=f[zi]+(v?-v.y+f.y:0);h=o+g,h>r||l.newline?(a+=s+i,o=0,h=g,s=f.width):s=Math.max(s,f.width)}l.newline||(d[0]=a,d[1]=o,t===_?a=c+i:o=h+i)})}var i=t(Yi),n=t("zrender/core/BoundingRect"),r=t("./number"),a=t("./format"),o=r[E],s=i.each,l={},u=l.LOCATION_PARAMS=["left","right","top",Si,"width",zi],c=l.HV_NAMES=[["width","left","right"],[zi,"top",Si]];return l.box=e,l.vbox=i.curry(e,x),l.hbox=i.curry(e,_),l.getAvailableSize=function(t,e,i){var n=e.width,r=e[zi],s=o(t.x,n),l=o(t.y,r),u=o(t.x2,n),c=o(t.y2,r);return(isNaN(s)||isNaN(parseFloat(t.x)))&&(s=0),(isNaN(u)||isNaN(parseFloat(t.x2)))&&(u=n),(isNaN(l)||isNaN(parseFloat(t.y)))&&(l=0),(isNaN(c)||isNaN(parseFloat(t.y2)))&&(c=r),i=a.normalizeCssArray(i||0),{width:Math.max(u-s-i[1]-i[3],0),height:Math.max(c-l-i[0]-i[2],0)}},l[Ii]=function(t,e,i){i=a.normalizeCssArray(i||0);var r=e.width,s=e[zi],l=o(t.left,r),u=o(t.top,s),c=o(t.right,r),h=o(t[Si],s),d=o(t.width,r),f=o(t[zi],s),p=i[2]+i[0],v=i[1]+i[3],m=t.aspect;switch(isNaN(d)&&(d=r-c-v-l),isNaN(f)&&(f=s-h-p-u),isNaN(d)&&isNaN(f)&&(m>r/s?d=.8*r:f=.8*s),null!=m&&(isNaN(d)&&(d=m*f),isNaN(f)&&(f=d/m)),isNaN(l)&&(l=r-c-d-v),isNaN(u)&&(u=s-h-f-p),t.left||t.right){case Ti:l=r/2-d/2-i[3];break;case"right":l=r-d-v}switch(t.top||t[Si]){case Pi:case Ti:u=s/2-f/2-i[0];break;case Si:u=s-f-p}l=l||0,u=u||0,isNaN(d)&&(d=r-l-(c||0)),isNaN(f)&&(f=s-u-(h||0));var g=new n(l+i[3],u+i[0],d,f);return g.margin=i,g},l.positionElement=function(t,e,r,a,o){var s=!o||!o.hv||o.hv[0],u=!o||!o.hv||o.hv[1],c=o&&o.boundingMode||"all";if(s||u){var h;if("raw"===c)h="group"===t.type?new n(0,0,+e.width||0,+e[zi]||0):t[Oi]();else if(h=t[Oi](),t.needLocalTransform()){var d=t[ie]();h=h.clone(),h[de](d)}e=l[Ii](i[qi]({width:h.width,height:h[zi]},e),r,a);var f=t[Mi],p=s?e.x-h.x:0,v=u?e.y-h.y:0;t.attr(Mi,"raw"===c?[p,v]:[f[0]+p,f[1]+v])}},l.sizeCalculable=function(t,e){return null!=t[c[e][0]]||null!=t[c[e][1]]&&null!=t[c[e][2]]},l.mergeLayoutParam=function(t,e,n){function r(i,n){var r={},l=0,c={},h=0,d=2;if(s(i,function(e){c[e]=t[e]}),s(i,function(t){a(e,t)&&(r[t]=c[t]=e[t]),o(r,t)&&l++,o(c,t)&&h++}),u[n])return o(e,i[1])?c[i[2]]=null:o(e,i[2])&&(c[i[1]]=null),c;if(h!==d&&l){if(l>=d)return r;for(var f=0;f=0;a--)r=n.merge(r,t[a],!0);o.set(this,"__defaultOption",r)}return o.get(this,"__defaultOption")},getReferringComponents:function(t){return this[ge].queryComponents({mainType:t,index:this.get(t+"Index",!0),id:this.get(t+"Id",!0)})}});return o.enableClassManagement(l,{registerWhenExtend:!0}),a.enableSubTypeDefaulter(l),a.enableTopologicalTravel(l,e),n.mixin(l,t("./mixin/boxLayout")),l}),e("echarts/model/OptionManager",[$i,Yi,"../util/model","./Component"],function(t){function e(t){this._api=t,this._timelineOptions=[],this._mediaList=[],this._mediaDefault,this._currentMediaIndices=[],this._optionBackup,this._newBaseOption +}function i(t,e,i){var n,r,a=[],o=[],l=t.timeline;if(t.baseOption&&(r=t.baseOption),(l||t.options)&&(r=r||{},a=(t.options||[]).slice()),t.media){r=r||{};var u=t.media;c(u,function(t){t&&t[k]&&(t.query?o.push(t):n||(n=t))})}return r||(r=t),r.timeline||(r.timeline=l),c([r][Xe](a)[Xe](s.map(o,function(t){return t[k]})),function(t){c(e,function(e){e(t,i)})}),{baseOption:r,timelineOptions:a,mediaDefault:n,mediaList:o}}function n(t,e,i){var n={width:e,height:i,aspectratio:e/i},a=!0;return s.each(t,function(t,e){var i=e.match(p);if(i&&i[1]&&i[2]){var o=i[1],s=i[2][vi]();r(n[s],t,o)||(a=!1)}}),a}function r(t,e,i){return"min"===i?t>=e:"max"===i?e>=t:t===e}function a(t,e){return t.join(",")===e.join(",")}function o(t,e){e=e||{},c(e,function(e,i){if(null!=e){var n=t[i];if(u.hasClass(i)){e=l.normalizeToArray(e),n=l.normalizeToArray(n);var r=l.mappingToExists(n,e);t[i]=d(r,function(t){return t[k]&&t.exist?f(t.exist,t[k],!0):t.exist||t[k]})}else t[i]=f(n,e,!0)}})}var s=t(Yi),l=t("../util/model"),u=t("./Component"),c=s.each,h=s.clone,d=s.map,f=s.merge,p=/^(min|max)?(.+)$/;return e[pi]={constructor:e,setOption:function(t,e){t=h(t,!0);var n=this._optionBackup,r=i.call(this,t,e,!n);this._newBaseOption=r.baseOption,n?(o(n.baseOption,r.baseOption),r.timelineOptions[ri]&&(n.timelineOptions=r.timelineOptions),r.mediaList[ri]&&(n.mediaList=r.mediaList),r.mediaDefault&&(n.mediaDefault=r.mediaDefault)):this._optionBackup=r},mountOption:function(t){var e=this._optionBackup;return this._timelineOptions=d(e.timelineOptions,h),this._mediaList=d(e.mediaList,h),this._mediaDefault=h(e.mediaDefault),this._currentMediaIndices=[],h(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,i=this._timelineOptions;if(i[ri]){var n=t[ke]("timeline");n&&(e=h(i[n.getCurrentIndex()],!0))}return e},getMediaOption:function(){var t=this._api[Li](),e=this._api[Ci](),i=this._mediaList,r=this._mediaDefault,o=[],s=[];if(!i[ri]&&!r)return s;for(var l=0,u=i[ri];u>l;l++)n(i[l].query,t,e)&&o.push(l);return!o[ri]&&r&&(o=[-1]),o[ri]&&!a(o,this._currentMediaIndices)&&(s=d(o,function(t){return h(-1===t?r[k]:i[t][k])})),this._currentMediaIndices=o,s}},e}),e("echarts/view/Component",[$i,"zrender/container/Group","../util/component","../util/clazz"],function(t){var e=t("zrender/container/Group"),i=t("../util/component"),n=t("../util/clazz"),r=function(){this.group=new e,this.uid=i.getUID("viewComponent")};r[pi]={constructor:r,init:function(){},render:function(){},dispose:function(){}};var a=r[pi];return a.updateView=a.updateLayout=a.updateVisual=function(){},n.enableClassExtend(r),n.enableClassManagement(r,{registerWhenExtend:!0}),r}),e("echarts/model/Series",[$i,Yi,"../util/format","../util/clazz","../util/model","./Component","./mixin/colorPalette",_i,"../util/layout"],function(t){var e=t(Yi),i=t("../util/format"),n=t("../util/clazz"),r=t("../util/model"),a=t("./Component"),o=t("./mixin/colorPalette"),s=t(_i),l=t("../util/layout"),u=n.set,c=n.get,h=i.encodeHTML,d=i.addCommas,f=a[We]({type:"series.__base__",seriesIndex:0,coordinateSystem:null,defaultOption:null,legendDataProvider:null,visualColorAccessPath:"itemStyle.normal.color",layoutMode:null,init:function(t,e,i){this[Ve]=this[Fe],this[y](t,i);var n=this.getInitialData(t,i);u(this,"dataBeforeProcessed",n),this.restoreData()},mergeDefaultAndTheme:function(t,i){var n=this.layoutMode,a=n?l.getLayoutParams(t):{};e.merge(t,i.getTheme().get(this.subType)),e.merge(t,this.getDefaultOption()),r.defaultEmphasis(t.label,r.LABEL_OPTIONS),this.fillDataTextStyle(t.data),n&&l.mergeLayoutParam(t,a,n)},mergeOption:function(t,i){t=e.merge(this[k],t,!0),this.fillDataTextStyle(t.data);var n=this.layoutMode;n&&l.mergeLayoutParam(this[k],t,n);var r=this.getInitialData(t,i);r&&(u(this,"data",r),u(this,"dataBeforeProcessed",r.cloneShallow()))},fillDataTextStyle:function(t){if(t)for(var e=0;e',p=this.name;return"\x00-"===p&&(p=""),n?f+h(this.name)+" : "+s:(p&&h(p)+"
")+f+(l?h(l)+" : "+s:s)},isAnimationEnabled:function(){if(s.node)return!1;var t=this[oe](hi);return t&&this[Fi]().count()>this[oe]("animationThreshold")&&(t=!1),t},restoreData:function(){u(this,"data",c(this,"dataBeforeProcessed").cloneShallow())},getColorFromPalette:function(t,e){var i=this[ge],n=o.getColorFromPalette.call(this,t,e);return n||(n=i.getColorFromPalette(t,e)),n},getAxisTooltipData:null,getTooltipPosition:null});return e.mixin(f,r.dataFormatMixin),e.mixin(f,o),f}),e("echarts/view/Chart",[$i,"zrender/container/Group","../util/component","../util/clazz","../util/model",Yi],function(t){function e(){this.group=new r,this.uid=a.getUID("viewChart")}function i(t,e){if(t&&(t[Ge](e),"group"===t.type))for(var n=0;n=0;n--)u.isIdInner(e[n])&&e[Ne](n,1);t[i]=e}}),delete t[x],t},getTheme:function(){return this._theme},getComponent:function(t,e){var i=this._componentsMap[t];return i?i[e||0]:void 0},queryComponents:function(t){var e=t[Ye];if(!e)return[];var i=t.index,n=t.id,r=t.name,a=this._componentsMap[e];if(!a||!a[ri])return[];var s;if(null!=i)p(i)||(i=[i]),s=d(f(i,function(t){return a[t]}),function(t){return!!t});else if(null!=n){var l=p(n);s=d(a,function(t){return l&&v(n,t.id)>=0||!l&&t.id===n})}else if(null!=r){var u=p(r);s=d(a,function(t){return u&&v(r,t.name)>=0||!u&&t.name===r})}else s=a.slice();return o(s,t)},findComponents:function(t){function e(t){var e=r+"Index",i=r+"Id",n=r+"Name";return!t||null==t[e]&&null==t[i]&&null==t[n]?null:{mainType:r,index:t[e],id:t[i],name:t[n]}}function i(e){return t.filter?d(e,t.filter):e}var n=t.query,r=t[Ye],a=e(n),s=a?this.queryComponents(a):this._componentsMap[r];return i(o(s,t))},eachComponent:function(t,e,i){var n=this._componentsMap;if(typeof t===Ae)i=e,e=t,h(n,function(t,n){h(t,function(t,r){e.call(i,n,t,r)})});else if(l[we](t))h(n[t],e,i);else if(m(t)){var r=this.findComponents(t);h(r,e,i)}},getSeriesByName:function(t){var e=this._componentsMap[je];return d(e,function(e){return e.name===t})},getSeriesByIndex:function(t){return this._componentsMap[je][t]},getSeriesByType:function(t){var e=this._componentsMap[je];return d(e,function(e){return e.subType===t})},getSeries:function(){return this._componentsMap[je].slice()},eachSeries:function(t,e){s(this),h(this._seriesIndices,function(i){var n=this._componentsMap[je][i];t.call(e,n,i)},this)},eachRawSeries:function(t,e){h(this._componentsMap[je],t,e)},eachSeriesByType:function(t,e,i){s(this),h(this._seriesIndices,function(n){var r=this._componentsMap[je][n];r.subType===t&&e.call(i,r,n)},this)},eachRawSeriesByType:function(t,e,i){return h(this.getSeriesByType(t),e,i)},isSeriesFiltered:function(t){return s(this),l[ni](this._seriesIndices,t[Fe])<0},filterSeries:function(t,e){s(this);var i=d(this._componentsMap[je],t,e);this._seriesIndices=a(i)},restoreData:function(){var t=this._componentsMap;this._seriesIndices=a(t[je]);var e=[];h(t,function(t,i){e.push(i)}),g.topologicalTravel(e,g.getAllClassMainTypes(),function(e){h(t[e],function(t){t.restoreData()})})}});return l.mixin(_,t("./mixin/colorPalette")),_}),e(_i,[],function(){function t(t){var e={},i={},n=t.match(/Firefox\/([\d.]+)/),r=t.match(/MSIE\s([\d.]+)/)||t.match(/Trident\/.+?rv:(([\d.]+))/),a=t.match(/Edge\/([\d.]+)/),o=/micromessenger/i.test(t);return n&&(i.firefox=!0,i.version=n[1]),r&&(i.ie=!0,i.version=r[1]),a&&(i.edge=!0,i.version=a[1]),o&&(i.weChat=!0),{browser:i,os:e,node:!1,canvasSupported:document.createElement("canvas").getContext?!0:!1,touchEventsSupported:"ontouchstart"in window&&!i.ie&&!i.edge,pointerEventsSupported:"onpointerdown"in window&&(i.edge||i.ie&&i.version>=11)}}var e={};return e=typeof navigator===g?{browser:{},os:{},node:!0,canvasSupported:!0}:t(navigator.userAgent)}),e("echarts/util/throttle",[],function(){var t={},e="\x00__throttleOriginMethod",i="\x00__throttleRate",n="\x00__throttleType";return t[di]=function(t,e,i){function n(){c=(new Date).getTime(),h=null,t.apply(o,s||[])}var r,a,o,s,l,u=0,c=0,h=null;e=e||0;var d=function(){r=(new Date).getTime(),o=this,s=arguments;var t=l||e,d=l||i;l=null,a=r-(d?u:c)-t,clearTimeout(h),d?h=setTimeout(n,t):a>=0?n():h=setTimeout(n,-a),u=r};return d.clear=function(){h&&(clearTimeout(h),h=null)},d.debounceNextCall=function(t){l=t},d},t.createOrUpdate=function(r,a,o,s){var l=r[a];if(l){var u=l[e]||l,c=l[n],h=l[i];if(h!==o||c!==s){if(null==o||!s)return r[a]=u;l=r[a]=t[di](u,o,"debounce"===s),l[e]=u,l[n]=s,l[i]=o}return l}},t.clear=function(t,i){var n=t[i];n&&n[e]&&(t[i]=n[e])},t}),e("echarts/util/model",[$i,"./format","./number","../model/Model",Yi],function(t){function e(t,e){return t&&t.hasOwnProperty(e)}var i=t("./format"),n=t("./number"),r=t("../model/Model"),a=t(Yi),o=a.each,s=a[ui],l={};return l.normalizeToArray=function(t){return t instanceof Array?t:null==t?[]:[t]},l.defaultEmphasis=function(t,e){if(t){var i=t[le]=t[le]||{},n=t[se]=t[se]||{};o(e,function(t){var e=a[j](i[t],n[t]);null!=e&&(i[t]=e)})}},l.LABEL_OPTIONS=[Mi,re,"show",Bi,"distance","formatter"],l.getDataItemValue=function(t){return t&&(null==t.value?t:t.value)},l.isDataItemOption=function(t){return s(t)&&!(t instanceof Array)},l.converDataValue=function(t,e){var i=e&&e.type;return i===T?t:("time"===i&&typeof t!==Se&&null!=t&&"-"!==t&&(t=+n.parseDate(t)),null==t||""===t?0/0:+t)},l.createDataFormatModel=function(t,e){var i=new r;return a.mixin(i,l.dataFormatMixin),i[Ve]=e[Ve],i.name=e.name||"",i[Ye]=e[Ye],i.subType=e.subType,i[Fi]=function(){return t},i},l.dataFormatMixin={getDataParams:function(t,e){var i=this[Fi](e),n=this[b](t,e),r=i[V](t),a=i[R](t,!0),o=i.getRawDataItem(t);return{componentType:this[Ye],componentSubType:this.subType,seriesType:this[Ye]===je?this.subType:null,seriesIndex:this[Ve],seriesId:this.id,seriesName:this.name,name:a,dataIndex:r,data:o,dataType:e,value:n,color:i[ei](t,"color"),$vars:["seriesName","name","value"]}},getFormattedLabel:function(t,e,n,r){e=e||se;var a=this[Fi](n),o=a[Z](t),s=this[Oe](t,n);null!=r&&s.value instanceof Array&&(s.value=s.value[r]);var l=o.get(["label",e,"formatter"]);return typeof l===Ae?(s.status=e,l(s)):typeof l===fi?i.formatTpl(l,s):void 0},getRawValue:function(t,e){var i=this[Fi](e),n=i.getRawDataItem(t);return null!=n?!s(n)||n instanceof Array?n:n.value:void 0},formatTooltip:a.noop},l.mappingToExists=function(t,e){e=(e||[]).slice();var i=a.map(t||[],function(t){return{exist:t}});return o(e,function(t,n){if(s(t)){for(var r=0;r=i[ri]&&i.push({option:t})}}),i},l.makeIdAndName=function(t){var e={};o(t,function(t){var i=t.exist;i&&(e[i.id]=t)}),o(t,function(t){var i=t[k];a[ci](!i||null==i.id||!e[i.id]||e[i.id]===t,"id duplicates: "+(i&&i.id)),i&&null!=i.id&&(e[i.id]=t),!t.keyInfo&&(t.keyInfo={})}),o(t,function(t){var i=t.exist,n=t[k],r=t.keyInfo;if(s(n)){if(r.name=null!=n.name?n.name+"":i?i.name:"\x00-",i)r.id=i.id;else if(null!=n.id)r.id=n.id+"";else{var a=0;do r.id="\x00"+r.name+"\x00"+a++;while(e[r.id])}e[r.id]=t}})},l.isIdInner=function(t){return s(t)&&t.id&&0===(t.id+"")[ni]("\x00_ec_\x00")},l.compressBatches=function(t,e){function i(t,e,i){for(var n=0,r=t[ri];r>n;n++)for(var a=t[n].seriesId,o=l.normalizeToArray(t[n][ii]),s=i&&i[a],u=0,c=o[ri];c>u;u++){var h=o[u];s&&s[h]?s[h]=null:(e[a]||(e[a]={}))[h]=1}}function n(t,e){var i=[];for(var r in t)if(t.hasOwnProperty(r)&&null!=t[r])if(e)i.push(+r);else{var a=n(t[r],!0);a[ri]&&i.push({seriesId:r,dataIndex:a})}return i}var r={},a={};return i(t||[],r),i(e||[],a,r),[n(r),n(a)]},l.queryDataIndex=function(t,e){return null!=e.dataIndexInside?e.dataIndexInside:null!=e[ii]?a[Ce](e[ii])?a.map(e[ii],function(e){return t.indexOfRawIndex(e)}):t.indexOfRawIndex(e[ii]):null!=e.name?a[Ce](e.name)?a.map(e.name,function(e){return t.indexOfName(e)}):t.indexOfName(e.name):void 0},l.makeGetter=function(){var t=0;return function(){var e="\x00__ec_prop_getter_"+t++;return function(t){return t[e]||(t[e]={})}}}(),l.parseFinder=function(t,i,n){if(a[we](i)){var r={};r[i+"Index"]=0,i=r}var s=n&&n.defaultMainType;!s||e(i,s+"Index")||e(i,s+"Id")||e(i,s+"Name")||(i[s+"Index"]=0);var l={};return o(i,function(e,r){var e=i[r];if(r===ii||"dataIndexInside"===r)return void(l[r]=e);var o=r.match(/^(\w+)(Index|Id|Name)$/)||[],s=o[1],u=(o[2]||"")[vi]();if(!(!s||!u||null==e||"index"===u&&"none"===e||n&&n.includeMainTypes&&a[ni](n.includeMainTypes,s)<0)){var c={mainType:s};("index"!==u||"all"!==e)&&(c[u]=e);var h=t.queryComponents(c);l[s+"Models"]=h,l[s+"Model"]=h[0]}}),l},l}),e(xi,[$i,"../core/LRU"],function(t){function e(t){return t=Math.round(t),0>t?0:t>255?255:t}function i(t){return t=Math.round(t),0>t?0:t>360?360:t}function n(t){return 0>t?0:t>1?1:t}function r(t){return e(t[ri]&&"%"===t.charAt(t[ri]-1)?parseFloat(t)/100*255:parseInt(t,10))}function a(t){return n(t[ri]&&"%"===t.charAt(t[ri]-1)?parseFloat(t)/100:parseFloat(t))}function o(t,e,i){return 0>i?i+=1:i>1&&(i-=1),1>6*i?t+(e-t)*i*6:1>2*i?e:2>3*i?t+(e-t)*(2/3-i)*6:t}function s(t,e,i){return t+(e-t)*i}function l(t,e,i,n,r){return t[0]=e,t[1]=i,t[2]=n,t[3]=r,t}function u(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function c(t,e){S&&u(S,e),S=M.put(t,S||e.slice())}function h(t,e){if(t){e=e||[];var i=M.get(t);if(i)return u(e,i);t+="";var n=t[Le](/ /g,"")[vi]();if(n in w)return u(e,w[n]),c(t,e),e;if("#"!==n.charAt(0)){var o=n[ni]("("),s=n[ni](")");if(-1!==o&&s+1===n[ri]){var h=n.substr(0,o),f=n.substr(o+1,s-(o+1)).split(","),p=1;switch(h){case"rgba":if(4!==f[ri])return void l(e,0,0,0,1);p=a(f.pop());case"rgb":return 3!==f[ri]?void l(e,0,0,0,1):(l(e,r(f[0]),r(f[1]),r(f[2]),p),c(t,e),e);case"hsla":return 4!==f[ri]?void l(e,0,0,0,1):(f[3]=a(f[3]),d(f,e),c(t,e),e);case"hsl":return 3!==f[ri]?void l(e,0,0,0,1):(d(f,e),c(t,e),e);default:return}}l(e,0,0,0,1)}else{if(4===n[ri]){var v=parseInt(n.substr(1),16);return v>=0&&4095>=v?(l(e,(3840&v)>>4|(3840&v)>>8,240&v|(240&v)>>4,15&v|(15&v)<<4,1),c(t,e),e):void l(e,0,0,0,1)}if(7===n[ri]){var v=parseInt(n.substr(1),16);return v>=0&&16777215>=v?(l(e,(16711680&v)>>16,(65280&v)>>8,255&v,1),c(t,e),e):void l(e,0,0,0,1)}}}}function d(t,i){var n=(parseFloat(t[0])%360+360)%360/360,r=a(t[1]),s=a(t[2]),u=.5>=s?s*(r+1):s+r-s*r,c=2*s-u;return i=i||[],l(i,e(255*o(c,u,n+1/3)),e(255*o(c,u,n)),e(255*o(c,u,n-1/3)),1),4===t[ri]&&(i[3]=t[3]),i}function f(t){if(t){var e,i,n=t[0]/255,r=t[1]/255,a=t[2]/255,o=Math.min(n,r,a),s=Math.max(n,r,a),l=s-o,u=(s+o)/2;if(0===l)e=0,i=0;else{i=.5>u?l/(s+o):l/(2-s-o);var c=((s-n)/6+l/2)/l,h=((s-r)/6+l/2)/l,d=((s-a)/6+l/2)/l;n===s?e=d-h:r===s?e=1/3+c-d:a===s&&(e=2/3+h-c),0>e&&(e+=1),e>1&&(e-=1)}var f=[360*e,i,u];return null!=t[3]&&f.push(t[3]),f}}function p(t,e){var i=h(t);if(i){for(var n=0;3>n;n++)i[n]=0>e?i[n]*(1-e)|0:(255-i[n])*e+i[n]|0;return _(i,4===i[ri]?"rgba":"rgb")}}function v(t){var e=h(t);return e?((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1):void 0}function m(t,i,r){if(i&&i[ri]&&t>=0&&1>=t){r=r||[];var a=t*(i[ri]-1),o=Math.floor(a),l=Math.ceil(a),u=i[o],c=i[l],h=a-o;return r[0]=e(s(u[0],c[0],h)),r[1]=e(s(u[1],c[1],h)),r[2]=e(s(u[2],c[2],h)),r[3]=n(s(u[3],c[3],h)),r}}function g(t,i,r){if(i&&i[ri]&&t>=0&&1>=t){var a=t*(i[ri]-1),o=Math.floor(a),l=Math.ceil(a),u=h(i[o]),c=h(i[l]),d=a-o,f=_([e(s(u[0],c[0],d)),e(s(u[1],c[1],d)),e(s(u[2],c[2],d)),n(s(u[3],c[3],d))],"rgba");return r?{color:f,leftIndex:o,rightIndex:l,value:a}:f}}function y(t,e,n,r){return t=h(t),t?(t=f(t),null!=e&&(t[0]=i(e)),null!=n&&(t[1]=a(n)),null!=r&&(t[2]=a(r)),_(d(t),"rgba")):void 0}function x(t,e){return t=h(t),t&&null!=e?(t[3]=n(e),_(t,"rgba")):void 0}function _(t,e){if(t&&t[ri]){var i=t[0]+","+t[1]+","+t[2];return("rgba"===e||"hsva"===e||"hsla"===e)&&(i+=","+t[3]),e+"("+i+")"}}var b=t("../core/LRU"),w={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]},M=new b(20),S=null;return{parse:h,lift:p,toHex:v,fastMapToColor:m,mapToColor:g,modifyHSL:y,modifyAlpha:x,stringify:_}}),e("zrender/zrender",[$i,"./core/guid","./core/env","./core/util","./Handler","./Storage","./animation/Animation","./dom/HandlerProxy","./Painter"],function(t){function e(t){delete h[t]}var i=t("./core/guid"),n=t("./core/env"),r=t("./core/util"),a=t("./Handler"),o=t("./Storage"),s=t("./animation/Animation"),l=t("./dom/HandlerProxy"),u=!n[li],c={canvas:t("./Painter")},h={},d={};d.version="3.4.4",d.init=function(t,e){var n=new f(i(),t,e);return h[n.id]=n,n},d[He]=function(t){if(t)t[He]();else{for(var e in h)h.hasOwnProperty(e)&&h[e][He]();h={}}return d},d.getInstance=function(t){return h[t]},d.registerPainter=function(t,e){c[t]=e};var f=function(t,e,i){i=i||{},this.dom=e,this.id=t;var h=this,d=new o,f=i.renderer;if(u){if(!c.vml)throw new Error("You need to require 'zrender/vml/vml' to support IE8");f="vml"}else f&&c[f]||(f="canvas");var p=new c[f](e,d,i);this.storage=d,this.painter=p;var v=n.node?null:new l(p.getViewportRoot());this.handler=new a(d,p,v,p.root),this[hi]=new s({stage:{update:r.bind(this.flush,this)}}),this[hi].start(),this._needsRefresh;var m=d.delFromStorage,g=d.addToStorage;d.delFromStorage=function(t){m.call(d,t),t&&t.removeSelfFromZr(h)},d.addToStorage=function(t){g.call(d,t),t.addSelfToZr(h)}};return f[pi]={constructor:f,getId:function(){return this.id},add:function(t){this.storage.addRoot(t),this._needsRefresh=!0},remove:function(t){this.storage.delRoot(t),this._needsRefresh=!0},configLayer:function(t,e){this.painter.configLayer(t,e),this._needsRefresh=!0},refreshImmediately:function(){this._needsRefresh=!1,this.painter.refresh(),this._needsRefresh=!1},refresh:function(){this._needsRefresh=!0},flush:function(){this._needsRefresh&&this.refreshImmediately(),this._needsRefreshHover&&this.refreshHoverImmediately()},addHover:function(t,e){this.painter.addHover&&(this.painter.addHover(t,e),this.refreshHover())},removeHover:function(t){this.painter.removeHover&&(this.painter.removeHover(t),this.refreshHover())},clearHover:function(){this.painter.clearHover&&(this.painter.clearHover(),this.refreshHover())},refreshHover:function(){this._needsRefreshHover=!0},refreshHoverImmediately:function(){this._needsRefreshHover=!1,this.painter.refreshHover&&this.painter.refreshHover()},resize:function(t){t=t||{},this.painter.resize(t.width,t[zi]),this.handler.resize()},clearAnimation:function(){this[hi].clear()},getWidth:function(){return this.painter[Li]()},getHeight:function(){return this.painter[Ci]()},pathToImage:function(t,e){return this.painter.pathToImage(t,e)},setCursorStyle:function(t){this.handler.setCursorStyle(t)},findHover:function(t,e){return this.handler.findHover(t,e)},on:function(t,e,i){this.handler.on(t,e,i)},off:function(t,e){this.handler.off(t,e)},trigger:function(t,e){this.handler[Ge](t,e)},clear:function(){this.storage.delRoot(),this.painter.clear()},dispose:function(){this[hi].stop(),this.clear(),this.storage[He](),this.painter[He](),this.handler[He](),this[hi]=this.storage=this.painter=this.handler=null,e(this.id)}},d}),e("zrender/mixin/Eventful",[$i],function(){var t=Array[pi].slice,e=function(){this._$handlers={}};return e[pi]={constructor:e,one:function(t,e,i){var n=this._$handlers;if(!e||!t)return this;n[t]||(n[t]=[]);for(var r=0;rr;r++)i[t][r].h!=e&&n.push(i[t][r]);i[t]=n}i[t]&&0===i[t][ri]&&delete i[t]}else delete i[t];return this},trigger:function(e){if(this._$handlers[e]){var i=arguments,n=i[ri];n>3&&(i=t.call(i,1));for(var r=this._$handlers[e],a=r[ri],o=0;a>o;){switch(n){case 1:r[o].h.call(r[o].ctx);break;case 2:r[o].h.call(r[o].ctx,i[1]);break;case 3:r[o].h.call(r[o].ctx,i[1],i[2]);break;default:r[o].h.apply(r[o].ctx,i)}r[o].one?(r[Ne](o,1),a--):o++}}return this},triggerWithContext:function(e){if(this._$handlers[e]){var i=arguments,n=i[ri];n>4&&(i=t.call(i,1,i[ri]-1));for(var r=i[i[ri]-1],a=this._$handlers[e],o=a[ri],s=0;o>s;){switch(n){case 1:a[s].h.call(r);break;case 2:a[s].h.call(r,i[1]);break;case 3:a[s].h.call(r,i[1],i[2]);break;default:a[s].h.apply(r,i)}a[s].one?(a[Ne](s,1),o--):s++}}return this}},e}),e("echarts/visual/seriesColor",[$i,"zrender/graphic/Gradient"],function(t){var e=t("zrender/graphic/Gradient");return function(t){function i(i){var n=(i.visualColorAccessPath||"itemStyle.normal.color").split("."),r=i[Fi](),a=i.get(n)||i.getColorFromPalette(i.get("name"));r.setVisual("color",a),t.isSeriesFiltered(i)||(typeof a!==Ae||a instanceof e||r.each(function(t){r.setItemVisual(t,"color",a(i[Oe](t)))}),r.each(function(t){var e=r[Z](t),i=e.get(n,!0);null!=i&&r.setItemVisual(t,"color",i)}))}t.eachRawSeries(i)}}),e("zrender/core/timsort",[],function(){function t(t){for(var e=0;t>=l;)e|=1&t,t>>=1;return t+e}function e(t,e,n,r){var a=e+1;if(a===n)return 1;if(r(t[a++],t[e])<0){for(;n>a&&r(t[a],t[a-1])<0;)a++;i(t,e,a)}else for(;n>a&&r(t[a],t[a-1])>=0;)a++;return a-e}function i(t,e,i){for(i--;i>e;){var n=t[e];t[e++]=t[i],t[i--]=n}}function n(t,e,i,n,r){for(n===e&&n++;i>n;n++){for(var a,o=t[n],s=e,l=n;l>s;)a=s+l>>>1,r(o,t[a])<0?l=a:s=a+1;var u=n-s;switch(u){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:for(;u>0;)t[s+u]=t[s+u-1],u--}t[s]=o}}function r(t,e,i,n,r,a){var o=0,s=0,l=1;if(a(t,e[i+r])>0){for(s=n-r;s>l&&a(t,e[i+r+l])>0;)o=l,l=(l<<1)+1,0>=l&&(l=s);l>s&&(l=s),o+=r,l+=r}else{for(s=r+1;s>l&&a(t,e[i+r-l])<=0;)o=l,l=(l<<1)+1,0>=l&&(l=s);l>s&&(l=s);var u=o;o=r-l,l=r-u}for(o++;l>o;){var c=o+(l-o>>>1);a(t,e[i+c])>0?o=c+1:l=c}return l}function a(t,e,i,n,r,a){var o=0,s=0,l=1;if(a(t,e[i+r])<0){for(s=r+1;s>l&&a(t,e[i+r-l])<0;)o=l,l=(l<<1)+1,0>=l&&(l=s);l>s&&(l=s);var u=o;o=r-l,l=r-u}else{for(s=n-r;s>l&&a(t,e[i+r+l])>=0;)o=l,l=(l<<1)+1,0>=l&&(l=s);l>s&&(l=s),o+=r,l+=r}for(o++;l>o;){var c=o+(l-o>>>1);a(t,e[i+c])<0?l=c:o=c+1}return l}function o(t,e){function i(t,e){d[y]=t,f[y]=e,y+=1}function n(){for(;y>1;){var t=y-2;if(t>=1&&f[t-1]<=f[t]+f[t+1]||t>=2&&f[t-2]<=f[t]+f[t-1])f[t-1]f[t+1])break;s(t)}}function o(){for(;y>1;){var t=y-2;t>0&&f[t-1]=o?l(n,o,s,u):h(n,o,s,u)))}function l(i,n,o,s){var l=0;for(l=0;n>l;l++)x[l]=t[i+l];var c=0,h=o,d=i;if(t[d++]=t[h++],0!==--s){if(1===n){for(l=0;s>l;l++)t[d+l]=t[h+l];return void(t[d+s]=x[c])}for(var f,v,m,g=p;;){f=0,v=0,m=!1;do if(e(t[h],x[c])<0){if(t[d++]=t[h++],v++,f=0,0===--s){m=!0;break}}else if(t[d++]=x[c++],f++,v=0,1===--n){m=!0;break}while(g>(f|v));if(m)break;do{if(f=a(t[h],x,c,n,0,e),0!==f){for(l=0;f>l;l++)t[d+l]=x[c+l];if(d+=f,c+=f,n-=f,1>=n){m=!0;break}}if(t[d++]=t[h++],0===--s){m=!0;break}if(v=r(x[c],t,h,s,0,e),0!==v){for(l=0;v>l;l++)t[d+l]=t[h+l];if(d+=v,h+=v,s-=v,0===s){m=!0;break}}if(t[d++]=x[c++],1===--n){m=!0;break}g--}while(f>=u||v>=u);if(m)break;0>g&&(g=0),g+=2}if(p=g,1>p&&(p=1),1===n){for(l=0;s>l;l++)t[d+l]=t[h+l];t[d+s]=x[c]}else{if(0===n)throw new Error;for(l=0;n>l;l++)t[d+l]=x[c+l]}}else for(l=0;n>l;l++)t[d+l]=x[c+l]}function h(i,n,o,s){var l=0;for(l=0;s>l;l++)x[l]=t[o+l];var c=i+n-1,h=s-1,d=o+s-1,f=0,v=0;if(t[d--]=t[c--],0!==--n){if(1===s){for(d-=n,c-=n,v=d+1,f=c+1,l=n-1;l>=0;l--)t[v+l]=t[f+l];return void(t[d]=x[h])}for(var m=p;;){var g=0,y=0,_=!1;do if(e(x[h],t[c])<0){if(t[d--]=t[c--],g++,y=0,0===--n){_=!0;break}}else if(t[d--]=x[h--],y++,g=0,1===--s){_=!0;break}while(m>(g|y));if(_)break;do{if(g=n-a(x[h],t,i,n,n-1,e),0!==g){for(d-=g,c-=g,n-=g,v=d+1,f=c+1,l=g-1;l>=0;l--)t[v+l]=t[f+l];if(0===n){_=!0;break}}if(t[d--]=x[h--],1===--s){_=!0;break}if(y=s-r(t[c],x,0,s,s-1,e),0!==y){for(d-=y,h-=y,s-=y,v=d+1,f=h+1,l=0;y>l;l++)t[v+l]=x[f+l]; +if(1>=s){_=!0;break}}if(t[d--]=t[c--],0===--n){_=!0;break}m--}while(g>=u||y>=u);if(_)break;0>m&&(m=0),m+=2}if(p=m,1>p&&(p=1),1===s){for(d-=n,c-=n,v=d+1,f=c+1,l=n-1;l>=0;l--)t[v+l]=t[f+l];t[d]=x[h]}else{if(0===s)throw new Error;for(f=d-(s-1),l=0;s>l;l++)t[f+l]=x[l]}}else for(f=d-(s-1),l=0;s>l;l++)t[f+l]=x[l]}var d,f,p=u,v=0,m=c,g=0,y=0;v=t[ri],2*c>v&&(m=v>>>1);var x=[];g=120>v?5:1542>v?10:119151>v?19:40,d=[],f=[],this.mergeRuns=n,this.forceMergeRuns=o,this.pushRun=i}function s(i,r,a,s){a||(a=0),s||(s=i[ri]);var u=s-a;if(!(2>u)){var c=0;if(l>u)return c=e(i,a,s,r),void n(i,a,s,a+c,r);var h=new o(i,r),d=t(u);do{if(c=e(i,a,s,r),d>c){var f=u;f>d&&(f=d),n(i,a,a+f,a+c,r),c=f}h.pushRun(a,c),h.mergeRuns(),u-=c,a+=c}while(0!==u);h.forceMergeRuns()}}var l=32,u=7,c=256;return s}),e("echarts/loading/default",[$i,"../util/graphic",Yi],function(t){var e=t("../util/graphic"),i=t(Yi),n=Math.PI;return function(t,r){r=r||{},i[qi](r,{text:"loading",color:"#c23531",textColor:"#000",maskColor:"rgba(255, 255, 255, 0.8)",zlevel:0});var a=new e.Rect({style:{fill:r.maskColor},zlevel:r[De],z:1e4}),o=new e.Arc({shape:{startAngle:-n/2,endAngle:-n/2+.1,r:10},style:{stroke:r.color,lineCap:"round",lineWidth:5},zlevel:r[De],z:10001}),s=new e.Rect({style:{fill:"none",text:r.text,textPosition:"right",textDistance:10,textFill:r.textColor},zlevel:r[De],z:10001});o.animateShape(!0).when(1e3,{endAngle:3*n/2}).start("circularInOut"),o.animateShape(!0).when(1e3,{startAngle:3*n/2}).delay(300).start("circularInOut");var l=new e.Group;return l.add(o),l.add(s),l.add(a),l.resize=function(){var e=t[Li]()/2,i=t[Ci]()/2;o[B]({cx:e,cy:i});var n=o.shape.r;s[B]({x:e-n,y:i-n,width:2*n,height:2*n}),a[B]({x:0,y:0,width:t[Li](),height:t[Ci]()})},l.resize(),l}}),e("echarts/model/Model",[$i,Yi,"../util/clazz",_i,"./mixin/lineStyle","./mixin/areaStyle","./mixin/textStyle","./mixin/itemStyle"],function(t){function e(t,e,i){this.parentModel=e,this[ge]=i,this[k]=t}function i(t,e,i){for(var n=0;n0){if(t<=e[0])return i[0];if(t>=e[1])return i[1]}else{if(t>=e[0])return i[0];if(t<=e[1])return i[1]}else{if(t===e[0])return i[0];if(t===e[1])return i[1]}return(t-e[0])/r*a+i[0]},i[E]=function(e,i){switch(e){case Ti:case Pi:e="50%";break;case"left":case"top":e="0%";break;case"right":case Si:e="100%"}return typeof e===fi?t(e).match(/%$/)?parseFloat(e)/100*i:parseFloat(e):null==e?0/0:+e},i.round=function(t,e,i){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t)[I](e),i?t:+t},i.asc=function(t){return t.sort(function(t,e){return t-e}),t},i.getPrecision=function(t){if(t=+t,isNaN(t))return 0;for(var e=1,i=0;Math.round(t*e)/e!==t;)e*=10,i++;return i},i.getPrecisionSafe=function(t){var e=t.toString(),i=e[ni]("e");if(i>0){var n=+e.slice(i+1);return 0>n?-n:0}var r=e[ni](".");return 0>r?0:e[ri]-1-r},i.getPixelPrecision=function(t,e){var i=Math.log,n=Math.LN10,r=Math.floor(i(t[1]-t[0])/n),a=Math.round(i(Math.abs(e[1]-e[0]))/n),o=Math.min(Math.max(-r+a,0),20);return isFinite(o)?o:20},i.MAX_SAFE_INTEGER=9007199254740991,i.remRadian=function(t){var e=2*Math.PI;return(t%e+e)%e},i.isRadianAroundZero=function(t){return t>-n&&n>t};var r=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/;return i.getTimezoneOffset=function(){return(new Date).getTimezoneOffset()},i.parseDate=function(t){if(t instanceof Date)return t;if(typeof t===fi){var e=r.exec(t);if(!e)return new Date(0/0);var n=i.getTimezoneOffset(),a=e[8]?"Z"===e[8].toUpperCase()?n:60*+e[8].slice(0,3)+n:0;return new Date(+e[1],+(e[2]||1)-1,+e[3]||1,+e[4]||0,+(e[5]||0)-a,+e[6]||0,+e[7]||0)}return new Date(null==t?0/0:Math.round(t))},i.quantity=function(t){return Math.pow(10,e(t))},i.nice=function(t,i){var n,r=e(t),a=Math.pow(10,r),o=t/a;return n=i?1.5>o?1:2.5>o?2:4>o?3:7>o?5:10:1>o?1:2>o?2:3>o?3:5>o?5:10,t=n*a,r>=-20?+t[I](0>r?-r:0):t},i.reformIntervals=function(t){function e(t,i,n){return t[m][n]s;s++)a[s]<=i&&(a[s]=i,o[s]=s?1:1-n),i=a[s],n=o[s];a[0]===a[1]&&o[0]*o[1]!==1?t[Ne](r,1):r++}return t},i.isNumeric=function(t){return t-parseFloat(t)>=0},i}),e("echarts/coord/Axis",[$i,be,Yi],function(t){function e(t,e){var i=t[1]-t[0],n=e,r=i/n/2;t[0]+=r,t[1]-=r}var i=t(be),n=i[C],r=t(Yi),a=[0,1],o=function(t,e,i){this.dim=t,this.scale=e,this[_e]=i||[0,0],this[J]=!1,this.onBand=!1};return o[pi]={constructor:o,contain:function(t){var e=this[_e],i=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return t>=i&&n>=t},containData:function(t){return this[xe](this[Y](t))},getExtent:function(){var t=this[_e].slice();return t},getPixelPrecision:function(t){return i.getPixelPrecision(t||this.scale[me](),this[_e])},setExtent:function(t,e){var i=this[_e];i[0]=t,i[1]=e},dataToCoord:function(t,i){var r=this[_e],o=this.scale;return t=o[ye](t),this.onBand&&o.type===T&&(r=r.slice(),e(r,o.count())),n(t,a,r,i)},coordToData:function(t,i){var r=this[_e],o=this.scale;this.onBand&&o.type===T&&(r=r.slice(),e(r,o.count()));var s=n(t,r,a,i);return this.scale.scale(s)},pointToData:function(){},getTicksCoords:function(t){if(this.onBand&&!t){for(var e=this.getBands(),i=[],n=0;no;o++)e.push([a*o/i+n,a*(o+1)/i+n]);return e},getBandWidth:function(){var t=this[_e],e=this.scale[me](),i=e[1]-e[0]+(this.onBand?1:0);0===i&&(i=1);var n=Math.abs(t[1]-t[0]);return Math.abs(n)/i}},o}),e("echarts/data/List",[$i,"../model/Model","./DataDiffer",Yi,"../util/model"],function(t){function e(t){return c[Ce](t)||(t=[t]),t}function i(t,e){var i=t[U],n=new v(c.map(i,t.getDimensionInfo,t),t.hostModel);p(n,t);for(var r=n._storage={},a=t._storage,o=0;o=0?new l.constructor(a[s][ri]):a[s]}return n}var n=g,r=typeof window===g?global:window,a=typeof r.Float64Array===n?Array:r.Float64Array,o=typeof r.Int32Array===n?Array:r.Int32Array,s={"float":a,"int":o,ordinal:Array,number:Array,time:Array},l=t("../model/Model"),u=t("./DataDiffer"),c=t(Yi),h=t("../util/model"),d=c[ui],f=["stackedOn","hasItemOption","_nameList","_idList","_rawData"],p=function(t,e){c.each(f[Xe](e.__wrappedMethods||[]),function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t.__wrappedMethods=e.__wrappedMethods},v=function(t,e){t=t||["x","y"];for(var i={},n=[],r=0;r0&&(w+="__ec__"+c[b]),c[b]++),w&&(u[d]=w)}this._nameList=e,this._idList=u},m.count=function(){return this.indices[ri]},m.get=function(t,e,i){var n=this._storage,r=this.indices[e];if(null==r)return 0/0;var a=n[t]&&n[t][r];if(i){var o=this._dimensionInfos[t];if(o&&o.stackable)for(var s=this.stackedOn;s;){var l=s.get(t,e);(a>=0&&l>0||0>=a&&0>l)&&(a+=l),s=s.stackedOn}}return a},m.getValues=function(t,e,i){var n=[];c[Ce](t)||(i=e,e=t,t=this[U]);for(var r=0,a=t[ri];a>r;r++)n.push(this.get(t[r],e,i));return n},m.hasValue=function(t){for(var e=this[U],i=this._dimensionInfos,n=0,r=e[ri];r>n;n++)if(i[e[n]].type!==T&&isNaN(this.get(e[n],t)))return!1;return!0},m[fe]=function(t,e,i){t=this.getDimension(t);var n=this._storage[t],r=this.getDimensionInfo(t);e=r&&r.stackable&&e;var a,o=(this[_e]||(this[_e]={}))[t+!!e];if(o)return o;if(n){for(var s=1/0,l=-1/0,u=0,c=this.count();c>u;u++)a=this.get(t,u,e),(!i||i(a,t,u))&&(s>a&&(s=a),a>l&&(l=a));return this[_e][t+!!e]=[s,l]}return[1/0,-1/0]},m.getSum=function(t,e){var i=this._storage[t],n=0;if(i)for(var r=0,a=this.count();a>r;r++){var o=this.get(t,r,e);isNaN(o)||(n+=o)}return n},m[ni]=function(t,e){var i=this._storage,n=i[t],r=this.indices;if(n)for(var a=0,o=r[ri];o>a;a++){var s=r[a];if(n[s]===e)return a}return-1},m.indexOfName=function(t){for(var e=this.indices,i=this._nameList,n=0,r=e[ri];r>n;n++){var a=e[n];if(i[a]===t)return n}return-1},m.indexOfRawIndex=function(t){var e=this.indices,i=e[t];if(null!=i&&i===t)return t;for(var n=0,r=e[ri]-1;r>=n;){var a=(n+r)/2|0;if(e[a]t))return a;r=a-1}}return-1},m.indicesOfNearest=function(t,e,i,n){var r=this._storage,a=r[t],o=[];if(!a)return o;null==n&&(n=1/0);for(var s=Number.MAX_VALUE,l=-1,u=0,c=this.count();c>u;u++){var h=e-this.get(t,u,i),d=Math.abs(h);n>=h&&s>=d&&((s>d||h>=0&&0>l)&&(s=d,l=h,o[ri]=0),o.push(u))}return o},m[V]=function(t){var e=this.indices[t];return null==e?-1:e},m.getRawDataItem=function(t){return this._rawData[this[V](t)]},m[R]=function(t){return this._nameList[this.indices[t]]||""},m.getId=function(t){return this._idList[this.indices[t]]||this[V](t)+""},m.each=function(t,i,n,r){typeof t===Ae&&(r=n,n=i,i=t,t=[]),t=c.map(e(t),this.getDimension,this);var a=[],o=t[ri],s=this.indices;r=r||this;for(var l=0;lu;u++)a[u]=this.get(t[u],l,n);a[u]=l,i.apply(r,a)}},m.filterSelf=function(t,i,n,r){typeof t===Ae&&(r=n,n=i,i=t,t=[]),t=c.map(e(t),this.getDimension,this);var a=[],o=[],s=t[ri],l=this.indices;r=r||this;for(var u=0;ud;d++)o[d]=this.get(t[d],u,n);o[d]=u,h=i.apply(r,o)}h&&a.push(l[u])}return this.indices=a,this[_e]={},this},m.mapArray=function(t,e,i,n){typeof t===Ae&&(n=i,i=e,e=t,t=[]);var r=[];return this.each(t,function(){r.push(e&&e.apply(this,arguments))},i,n),r},m.map=function(t,n,r,a){t=c.map(e(t),this.getDimension,this);var o=i(this,t),s=o.indices=this.indices,l=o._storage,u=[];return this.each(t,function(){var e=arguments[arguments[ri]-1],i=n&&n.apply(this,arguments);if(null!=i){typeof i===Se&&(u[0]=i,i=u);for(var r=0;rv;v+=d){d>p-v&&(d=p-v,c[ri]=d);for(var m=0;d>m;m++){var g=l[v+m];c[m]=f[g],h[m]=g}var y=n(c),g=h[r(c,y)||0];f[g]=y,u.push(g)}return a},m[Z]=function(t){var e=this.hostModel;return t=this.indices[t],new l(this._rawData[t],e,e&&e[ge])},m.diff=function(t){var e,i=this._idList,n=t&&t._idList,r="e\x00\x00";return new u(t?t.indices:[],this.indices,function(t){return null!=(e=n[t])?e:r+t},function(t){return null!=(e=i[t])?e:r+t})},m.getVisual=function(t){var e=this._visual;return e&&e[t]},m.setVisual=function(t,e){if(d(t))for(var i in t)t.hasOwnProperty(i)&&this.setVisual(i,t[i]);else this._visual=this._visual||{},this._visual[t]=e},m.setLayout=function(t,e){if(d(t))for(var i in t)t.hasOwnProperty(i)&&this.setLayout(i,t[i]);else this._layout[t]=e},m.getLayout=function(t){return this._layout[t]},m[N]=function(t){return this._itemLayouts[t]},m.setItemLayout=function(t,e,i){this._itemLayouts[t]=i?c[We](this._itemLayouts[t]||{},e):e},m.clearItemLayouts=function(){this._itemLayouts[ri]=0},m[ei]=function(t,e,i){var n=this._itemVisuals[t],r=n&&n[e];return null!=r||i?r:this.getVisual(e)},m.setItemVisual=function(t,e,i){var n=this._itemVisuals[t]||{};if(this._itemVisuals[t]=n,d(e))for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);else n[e]=i},m.clearAllVisual=function(){this._visual={},this._itemVisuals=[]};var y=function(t){t[Ve]=this[Ve],t[ii]=this[ii],t.dataType=this.dataType};return m[G]=function(t,e){var i=this.hostModel;e&&(e[ii]=t,e.dataType=this.dataType,e[Ve]=i&&i[Ve],"group"===e.type&&e[ze](y,e)),this._graphicEls[t]=e},m[F]=function(t){return this._graphicEls[t]},m[H]=function(t,e){c.each(this._graphicEls,function(i,n){i&&t&&t.call(e,i,n)})},m.cloneShallow=function(){var t=c.map(this[U],this.getDimensionInfo,this),e=new v(t,this.hostModel);return e._storage=this._storage,p(e,this),e.indices=this.indices.slice(),this[_e]&&(e[_e]=c[We]({},this[_e])),e},m.wrapMethod=function(t,e){var i=this[t];typeof i===Ae&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var t=i.apply(this,arguments);return e.apply(this,[t][Xe](c.slice(arguments)))})},m.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],m.CHANGABLE_METHODS=["filterSelf"],v}),e("echarts/util/format",[$i,Yi,"./number","zrender/contain/text"],function(t){var e=t(Yi),i=t("./number"),n=t("zrender/contain/text"),r={};r.addCommas=function(t){return isNaN(t)?"-":(t=(t+"").split("."),t[0][Le](/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t[ri]>1?"."+t[1]:""))},r.toCamelCase=function(t,e){return t=(t||"")[vi]()[Le](/-(.)/g,function(t,e){return e.toUpperCase()}),e&&t&&(t=t.charAt(0).toUpperCase()+t.slice(1)),t},r.normalizeCssArray=function(t){var e=t[ri];return typeof t===Se?[t,t,t,t]:2===e?[t[0],t[1],t[0],t[1]]:3===e?[t[0],t[1],t[2],t[1]]:t};var a=r.encodeHTML=function(t){return String(t)[Le](/&/g,"&")[Le](//g,">")[Le](/"/g,""")[Le](/'/g,"'")},o=["a","b","c","d","e","f","g"],s=function(t,e){return"{"+t+(null==e?"":e)+"}"};r.formatTpl=function(t,i,n){e[Ce](i)||(i=[i]);var r=i[ri];if(!r)return"";for(var l=i[0].$vars||[],u=0;ud;d++)for(var f=0;ft?"0"+t:t};return r.formatTime=function(t,e,n){("week"===t||"month"===t||"quarter"===t||"half-year"===t||"year"===t)&&(t="MM-dd\nyyyy");var r=i.parseDate(e),a=n?"UTC":"",o=r["get"+a+"FullYear"](),s=r["get"+a+"Month"]()+1,u=r["get"+a+"Date"](),c=r["get"+a+"Hours"](),h=r["get"+a+"Minutes"](),d=r["get"+a+"Seconds"]();return t=t[Le]("MM",l(s))[vi]()[Le]("yyyy",o)[Le]("yy",o%100)[Le]("dd",l(u))[Le]("d",u)[Le]("hh",l(c))[Le]("h",c)[Le]("mm",l(h))[Le]("m",h)[Le]("ss",l(d))[Le]("s",d)},r.capitalFirst=function(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t},r.truncateText=n.truncateText,r}),e(gi,[],function(){var t=typeof Float32Array===g?Array:Float32Array,e={create:function(e,i){var n=new t(2);return null==e&&(e=0),null==i&&(i=0),n[0]=e,n[1]=i,n},copy:function(t,e){return t[0]=e[0],t[1]=e[1],t},clone:function(e){var i=new t(2);return i[0]=e[0],i[1]=e[1],i},set:function(t,e,i){return t[0]=e,t[1]=i,t},add:function(t,e,i){return t[0]=e[0]+i[0],t[1]=e[1]+i[1],t},scaleAndAdd:function(t,e,i,n){return t[0]=e[0]+i[0]*n,t[1]=e[1]+i[1]*n,t},sub:function(t,e,i){return t[0]=e[0]-i[0],t[1]=e[1]-i[1],t},len:function(t){return Math.sqrt(this.lenSquare(t))},lenSquare:function(t){return t[0]*t[0]+t[1]*t[1]},mul:function(t,e,i){return t[0]=e[0]*i[0],t[1]=e[1]*i[1],t},div:function(t,e,i){return t[0]=e[0]/i[0],t[1]=e[1]/i[1],t},dot:function(t,e){return t[0]*e[0]+t[1]*e[1]},scale:function(t,e,i){return t[0]=e[0]*i,t[1]=e[1]*i,t},normalize:function(t,i){var n=e.len(i);return 0===n?(t[0]=0,t[1]=0):(t[0]=i[0]/n,t[1]=i[1]/n),t},distance:function(t,e){return Math.sqrt((t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1]))},distanceSquare:function(t,e){return(t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1])},negate:function(t,e){return t[0]=-e[0],t[1]=-e[1],t},lerp:function(t,e,i,n){return t[0]=e[0]+n*(i[0]-e[0]),t[1]=e[1]+n*(i[1]-e[1]),t},applyTransform:function(t,e,i){var n=e[0],r=e[1];return t[0]=i[0]*n+i[2]*r+i[4],t[1]=i[1]*n+i[3]*r+i[5],t},min:function(t,e,i){return t[0]=Math.min(e[0],i[0]),t[1]=Math.min(e[1],i[1]),t},max:function(t,e,i){return t[0]=Math.max(e[0],i[0]),t[1]=Math.max(e[1],i[1]),t}};return e[ri]=e.len,e.lengthSquare=e.lenSquare,e.dist=e.distance,e.distSquare=e.distanceSquare,e}),e("echarts/helper",[$i,"./chart/helper/createListFromArray","./util/symbol","./coord/axisHelper","./coord/axisModelCommonMixin","./model/Model",Yi,"./data/helper/completeDimensions"],function(t){var e=t("./chart/helper/createListFromArray"),i=t("./util/symbol"),n=t("./coord/axisHelper"),r=t("./coord/axisModelCommonMixin"),a=t("./model/Model"),o=t(Yi);return{createList:function(t){var i=t.get("data");return e(i,t,t[ge])},completeDimensions:t("./data/helper/completeDimensions"),createSymbol:i[v],createScale:function(t,e){var i=e;e instanceof a||(i=new a(e),o.mixin(i,r));var s=n.createScaleByModel(i);return s.setExtent(t[0],t[1]),n.niceScaleExtent(s,i),s},mixinAxisModelCommonMethods:function(t){o.mixin(t,r)}}}),e(yi,[],function(){var t=typeof Float32Array===g?Array:Float32Array,e={create:function(){var i=new t(6);return e.identity(i),i},identity:function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},copy:function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t},mul:function(t,e,i){var n=e[0]*i[0]+e[2]*i[1],r=e[1]*i[0]+e[3]*i[1],a=e[0]*i[2]+e[2]*i[3],o=e[1]*i[2]+e[3]*i[3],s=e[0]*i[4]+e[2]*i[5]+e[4],l=e[1]*i[4]+e[3]*i[5]+e[5];return t[0]=n,t[1]=r,t[2]=a,t[3]=o,t[4]=s,t[5]=l,t},translate:function(t,e,i){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4]+i[0],t[5]=e[5]+i[1],t},rotate:function(t,e,i){var n=e[0],r=e[2],a=e[4],o=e[1],s=e[3],l=e[5],u=Math.sin(i),c=Math.cos(i);return t[0]=n*c+o*u,t[1]=-n*u+o*c,t[2]=r*c+s*u,t[3]=-r*u+c*s,t[4]=c*a+u*l,t[5]=c*l-u*a,t},scale:function(t,e,i){var n=i[0],r=i[1];return t[0]=e[0]*n,t[1]=e[1]*r,t[2]=e[2]*n,t[3]=e[3]*r,t[4]=e[4]*n,t[5]=e[5]*r,t},invert:function(t,e){var i=e[0],n=e[2],r=e[4],a=e[1],o=e[3],s=e[5],l=i*o-a*n;return l?(l=1/l,t[0]=o*l,t[1]=-a*l,t[2]=-n*l,t[3]=i*l,t[4]=(n*s-o*r)*l,t[5]=(a*r-i*s)*l,t):null}};return e}),e("echarts/component/legend/legendAction",[$i,q,Yi],function(t){function e(t,e,i){var r,a={},o="toggleSelected"===t;return i[oi]("legend",function(i){o&&null!=r?i[r?"select":"unSelect"](e.name):(i[t](e.name),r=i.isSelected(e.name));var s=i[Fi]();n.each(s,function(t){var e=t.get("name");if("\n"!==e&&""!==e){var n=i.isSelected(e);a[e]=e in a?a[e]&&n:n}})}),{name:e.name,selected:a}}var i=t(q),n=t(Yi);i[Pe]("legendToggleSelect","legendselectchanged",n.curry(e,"toggleSelected")),i[Pe]("legendSelect","legendselected",n.curry(e,"select")),i[Pe]("legendUnSelect","legendunselected",n.curry(e,"unSelect"))}),e("echarts/component/legend/LegendModel",[$i,Yi,"../../model/Model",q],function(t){var e=t(Yi),i=t("../../model/Model"),n=t(q)[Hi]({type:"legend",dependencies:[je],layoutMode:{type:"box",ignoreSize:!0},init:function(t,e,i){this[y](t,i),t.selected=t.selected||{}},mergeOption:function(t){n.superCall(this,D,t)},optionUpdated:function(){this._updateData(this[ge]);var t=this._data;if(t[0]&&"single"===this.get("selectedMode")){for(var e=!1,i=0;i=0},defaultOption:{zlevel:0,z:4,show:!0,orient:"horizontal",left:"center",top:"top",align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,inactiveColor:"#ccc",textStyle:{color:"#333"},selectedMode:!0,tooltip:{show:!1}}});return n}),e("echarts/component/tooltip/TooltipModel",[$i,q],function(t){t(q)[Hi]({type:"tooltip",dependencies:["axisPointer"],defaultOption:{zlevel:0,z:8,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",confine:!1,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:"rgba(50,50,50,0.7)",borderColor:"#333",borderRadius:4,borderWidth:0,padding:5,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:"#999",width:1,type:"dashed",textStyle:{}}},textStyle:{color:"#fff",fontSize:14}}})}),e("echarts/component/tooltip/TooltipView",[$i,"./TooltipContent",Yi,p,L,W,"../axisPointer/findPointFromSeries","../../util/layout",_i,"../../model/Model","../axisPointer/globalListener","../../coord/axisHelper","../axisPointer/viewHelper",q],function(t){function e(t){for(var e=t.pop();t[ri];){var i=t.pop();i&&(i instanceof x&&(i=i.get("tooltip",!0)),typeof i===fi&&(i={formatter:i}),e=new x(i,e,e[ge]))}return e}function i(t,e){return t[qe]||l.bind(e[qe],e)}function n(t,e,i,n,r,a,o){var s=i.clientWidth,l=i.clientHeight;return null!=a&&(t+s+a>n?t-=s+a:t+=a),null!=o&&(e+l+o>r?e-=l+o:e+=o),[t,e]}function r(t,e,i,n,r){var a=i.clientWidth,o=i.clientHeight;return t=Math.min(t+a,n)-a,e=Math.min(e+o,r)-o,t=Math.max(t,0),e=Math.max(e,0),[t,e]}function a(t,e,i){var n=i[0],r=i[1],a=5,o=0,s=0,l=e.width,u=e[zi];switch(t){case ae:o=e.x+l/2-n/2,s=e.y+u/2-r/2;break;case"top":o=e.x+l/2-n/2,s=e.y-r-a;break;case Si:o=e.x+l/2-n/2,s=e.y+u+a;break;case"left":o=e.x-n-a,s=e.y+u/2-r/2;break;case"right":o=e.x+l+a,s=e.y+u/2-r/2}return[o,s]}function o(t){return t===Ti||t===Pi}var s=t("./TooltipContent"),l=t(Yi),u=t(p),c=t(L),v=t(W),m=t("../axisPointer/findPointFromSeries"),g=t("../../util/layout"),y=t(_i),x=t("../../model/Model"),_=t("../axisPointer/globalListener"),b=t("../../coord/axisHelper"),w=t("../axisPointer/viewHelper"),M=l.bind,S=l.each,T=c[E],P=new v.Rect({shape:{x:-1,y:-1,width:2,height:2}});t(q)[ji]({type:"tooltip",init:function(t,e){if(!y.node){var i=new s(e.getDom(),e);this._tooltipContent=i}},render:function(t,e,i){if(!y.node){this.group[Ui](),this._tooltipModel=t,this._ecModel=e,this._api=i,this._lastDataByCoordSys=null,this._alwaysShowContent=t.get("alwaysShowContent");var n=this._tooltipContent;n[Je](),n.setEnterable(t.get("enterable")),this._initGlobalListener(),this._keepShow()}},_initGlobalListener:function(){var t=this._tooltipModel,e=t.get("triggerOn");_[Te]("itemTooltip",this._api,M(function(t,i,n){"none"!==e&&(e[ni](t)>=0?this._tryShow(i,n):"leave"===t&&this._hide(n))},this))},_keepShow:function(){var t=this._tooltipModel,e=this._ecModel,i=this._api;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var n=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){n.manuallyShowTip(t,e,i,{x:n._lastX,y:n._lastY})})}},manuallyShowTip:function(t,e,n,r){if(r.from!==this.uid&&!y.node){var a=i(r,n);this._ticket="";var o=r.dataByCoordSys;if(r.tooltip&&null!=r.x&&null!=r.y){var s=P;s[Mi]=[r.x,r.y],s[Je](),s.tooltip=r.tooltip,this._tryShow({offsetX:r.x,offsetY:r.y,target:s},a)}else if(o)this._tryShow({offsetX:r.x,offsetY:r.y,position:r[Mi],event:{},dataByCoordSys:r.dataByCoordSys,tooltipOption:r.tooltipOption},a);else if(null!=r[Ve]){if(this._manuallyAxisShowTip(t,e,n,r))return;var l=m(r,e),u=l.point[0],c=l.point[1];null!=u&&null!=c&&this._tryShow({offsetX:u,offsetY:c,position:r[Mi],target:l.el,event:{}},a)}else null!=r.x&&null!=r.y&&(n[qe]({type:"updateAxisPointer",x:r.x,y:r.y}),this._tryShow({offsetX:r.x,offsetY:r.y,position:r[Mi],target:n.getZr().findHover(r.x,r.y)[ki],event:{}},a))}},manuallyHideTip:function(t,e,n,r){var a=this._tooltipContent;this._alwaysShowContent||a.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=null,r.from!==this.uid&&this._hide(i(r,n))},_manuallyAxisShowTip:function(t,i,n,r){var a=r[Ve],o=r[ii],s=i[ke]("axisPointer").coordSysAxesInfo;if(null!=a&&null!=o&&null!=s){var l=i.getSeriesByIndex(a);if(l){var u=l[Fi](),t=e([u[Z](o),l,(l[Wi]||{}).model,t]);if("axis"===t.get(Ge))return n[qe]({type:"updateAxisPointer",seriesIndex:a,dataIndex:o}),!0}}},_tryShow:function(t,e){var i=t[ki],n=this._tooltipModel;if(n){this._lastX=t[f],this._lastY=t[d];var r=t.dataByCoordSys;r&&r[ri]?this._showAxisTooltip(r,t):i&&null!=i[ii]?(this._lastDataByCoordSys=null,this._showSeriesItemTooltip(t,i,e)):i&&i.tooltip?(this._lastDataByCoordSys=null,this._showComponentItemTooltip(t,i,e)):(this._lastDataByCoordSys=null,this._hide(e))}},_showOrMove:function(t,e){var i=t.get("showDelay");e=l.bind(e,this),clearTimeout(this._showTimout),i>0?this._showTimout=setTimeout(e,i):e()},_showAxisTooltip:function(t,i){var n=this._ecModel,r=this._tooltipModel,a=[i[f],i[d]],o=[],s=[],c=e([i.tooltipOption,r]);S(t,function(t){S(t.dataByAxis,function(t){var e=n[ke](t.axisDim+"Axis",t.axisIndex),i=t.value,r=[];if(e&&null!=i){var a=w.getValueLabel(i,e.axis,n,t.seriesDataIndices,t.valueLabelOpt);l.each(t.seriesDataIndices,function(o){var l=n.getSeriesByIndex(o[Ve]),u=o.dataIndexInside,c=l&&l[Oe](u);c.axisDim=t.axisDim,c.axisIndex=t.axisIndex,c.axisType=t.axisType,c.axisId=t.axisId,c.axisValue=b.getAxisRawValue(e.axis,i),c.axisValueLabel=a,c&&(s.push(c),r.push(l.formatTooltip(u,!0)))});var c=a;o.push((c?u.encodeHTML(c)+"
":"")+r.join("
"))}})},this),o[A](),o=o.join("

");var h=i[Mi];this._showOrMove(c,function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(c,h,a[0],a[1],this._tooltipContent,s):this._showTooltipContent(c,o,s,Math.random(),a[0],a[1],h)})},_showSeriesItemTooltip:function(t,i,n){var r=this._ecModel,a=i[Ve],o=r.getSeriesByIndex(a),s=i.dataModel||o,l=i[ii],u=i.dataType,c=s[Fi](),h=e([c[Z](l),s,o&&(o[Wi]||{}).model,this._tooltipModel]),p=h.get(Ge);if(null==p||"item"===p){var v=s[Oe](l,u),m=s.formatTooltip(l,!1,u),g="item_"+s.name+"_"+l;this._showOrMove(h,function(){this._showTooltipContent(h,m,v,g,t[f],t[d],t[Mi],t[ki])}),n({type:"showTip",dataIndexInside:l,dataIndex:c[V](l),seriesIndex:a,from:this.uid})}},_showComponentItemTooltip:function(t,e,i){var n=e.tooltip;if(typeof n===fi){var r=n;n={content:r,formatter:r}}var a=new x(n,this._tooltipModel,this._ecModel),o=a.get("content"),s=Math.random();this._showOrMove(a,function(){this._showTooltipContent(a,o,a.get("formatterParams")||{},s,t[f],t[d],t[Mi],e)}),i({type:"showTip",from:this.uid})},_showTooltipContent:function(t,e,i,n,r,a,o,s){if(this._ticket="",t.get("showContent")&&t.get("show")){var l=this._tooltipContent,c=t.get("formatter");o=o||t.get(Mi);var h=e;if(c&&typeof c===fi)h=u.formatTpl(c,i,!0);else if(typeof c===Ae){var d=M(function(e,n){e===this._ticket&&(l.setContent(n),this._updatePosition(t,o,r,a,l,i,s))},this);this._ticket=n,h=c(i,n,d)}l.setContent(h),l.show(t),this._updatePosition(t,o,r,a,l,i,s)}},_updatePosition:function(t,e,i,s,u,c,d){var f=this._api[Li](),p=this._api[Ci]();e=e||t.get(Mi);var v=u.getSize(),m=t.get("align"),y=t.get("verticalAlign"),x=d&&d[Oi]().clone();if(d&&x[de](d[h]),typeof e===Ae&&(e=e([i,s],c,u.el,x,{viewSize:[f,p],contentSize:v.slice()})),l[Ce](e))i=T(e[0],f),s=T(e[1],p);else if(l[ui](e)){e.width=v[0],e[zi]=v[1];var _=g[Ii](e,{width:f,height:p});i=_.x,s=_.y,m=null,y=null}else if(typeof e===fi&&d){var b=a(e,x,v);i=b[0],s=b[1]}else{var b=n(i,s,u.el,f,p,m?null:20,y?null:20);i=b[0],s=b[1]}if(m&&(i-=o(m)?v[0]/2:"right"===m?v[0]:0),y&&(s-=o(y)?v[1]/2:y===Si?v[1]:0),t.get("confine")){var b=r(i,s,u.el,f,p);i=b[0],s=b[1]}u.moveTo(i,s)},_updateContentNotChangedOnAxis:function(t){var e=this._lastDataByCoordSys,i=!!e&&e[ri]===t[ri];return S(e,function(e,n){var r=e.dataByAxis||{},a=t[n]||{},o=a.dataByAxis||[];i&=r[ri]===o[ri],S(r,function(t,e){var n=o[e]||{},r=t.seriesDataIndices||[],a=n.seriesDataIndices||[];i&=t.value===n.value&&t.axisType===n.axisType&&t.axisId===n.axisId&&r[ri]===a[ri],S(r,function(t,e){var n=a[e];i&=t[Ve]===n[Ve]&&t[ii]===n[ii]})})}),this._lastDataByCoordSys=t,!!i},_hide:function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},dispose:function(t,e){y.node||(this._tooltipContent.hide(),_.unregister("itemTooltip",e))}})}),e("echarts/component/legend/LegendView",[$i,Yi,"../../util/symbol",W,"../helper/listComponent",q],function(t){function e(t,e){e[qe]({type:"legendToggleSelect",name:t}) +}function i(t,e,i){var n=i.getZr().storage.getDisplayList()[0];n&&n.useHoverLayer||t.get("legendHoverLink")&&i[qe]({type:"highlight",seriesName:t.name,name:e})}function n(t,e,i){var n=i.getZr().storage.getDisplayList()[0];n&&n.useHoverLayer||t.get("legendHoverLink")&&i[qe]({type:"downplay",seriesName:t.name,name:e})}var r=t(Yi),a=t("../../util/symbol"),o=t(W),s=t("../helper/listComponent"),l=r.curry;return t(q)[ji]({type:"legend",init:function(){this._symbolTypeStore={}},render:function(t,a,u){var h=this.group;if(h[Ui](),t.get("show")){var d=t.get("selectedMode"),f=t.get("align");"auto"===f&&(f="right"===t.get("left")&&t.get(c)===x?"right":"left");var p={};r.each(t[Fi](),function(r){var s=r.get("name");if(""===s||"\n"===s)return void h.add(new o.Group({newline:!0}));var c=a.getSeriesByName(s)[0];if(!p[s])if(c){var v=c[Fi](),m=v.getVisual("color");typeof m===Ae&&(m=m(c[Oe](0)));var g=v.getVisual("legendSymbol")||"roundRect",y=v.getVisual(M),x=this._createItem(s,r,t,g,y,f,m,d);x.on("click",l(e,s,u)).on(Be,l(i,c,null,u)).on(Ee,l(n,c,null,u)),p[s]=!0}else a.eachRawSeries(function(a){if(!p[s]&&a.legendDataProvider){var o=a.legendDataProvider(),c=o.indexOfName(s);if(0>c)return;var h=o[ei](c,"color"),v="roundRect",m=this._createItem(s,r,t,v,null,f,h,d);m.on("click",l(e,s,u)).on(Be,l(i,a,s,u)).on(Ee,l(n,a,s,u)),p[s]=!0}},this)},this),s.layout(h,t,u),s.addBackground(h,t)}},_createItem:function(t,e,i,n,s,l,u,c){var h=i.get("itemWidth"),d=i.get("itemHeight"),f=i.get("inactiveColor"),p=i.isSelected(t),m=new o.Group,g=e[Ni](Bi),y=e.get("icon"),x=e[Ni]("tooltip"),_=x.parentModel;if(n=y||n,m.add(a[v](n,0,0,h,d,p?u:f)),!y&&s&&(s!==n||"none"==s)){var b=.8*d;"none"===s&&(s="circle"),m.add(a[v](s,(h-b)/2,(d-b)/2,b,b,p?u:f))}var w="left"===l?h+5:-5,M=l,S=i.get("formatter"),T=t;typeof S===fi&&S?T=S[Le]("{name}",null!=t?t:""):typeof S===Ae&&(T=S(t));var P=new o.Text({style:{text:T,x:w,y:d/2,fill:p?g[Vi]():f,textFont:g[Ri](),textAlign:M,textVerticalAlign:"middle"}});m.add(P);var A=new o.Rect({shape:m[Oi](),invisible:!0,tooltip:x.get("show")?r[We]({content:t,formatter:_.get("formatter",!0)||function(){return t},formatterParams:{componentType:"legend",legendIndex:i[Fe],name:t,$vars:["name"]}},x[k]):null});return m.add(A),m.eachChild(function(t){t[Di]=!0}),A[Di]=!c,this.group.add(m),o[ue](m),m}})}),e("echarts/component/legend/legendFilter",[],function(){return function(t){var e=t.findComponents({mainType:"legend"});e&&e[ri]&&t.filterSeries(function(t){for(var i=0;i=0&&typeof c===Se&&(c=+c[I](m)),p.coord[d]=v.coord[d]=c,n=[p,v,{type:a,valueIndex:n.valueIndex,value:c}]}return n=[u.dataTransform(t,n[0]),u.dataTransform(t,n[1]),o[We]({},n[2])],n[2].type=n[2].type||"",o.merge(n[2],n[0]),o.merge(n[2],n[1]),n};t("./MarkerView")[We]({type:"markLine",updateLayout:function(t,e,i){e[$e](function(t){var e=t.markLineModel;if(e){var n=e[Fi](),a=e.__from,o=e.__to;a.each(function(e){r(a,e,!0,t,i),r(o,e,!1,t,i)}),n.each(function(t){n.setItemLayout(t,[a[N](t),o[N](t)])}),this.markerGroupMap[t.name].updateLayout()}},this)},renderSeries:function(t,e,i,n){function s(e,i,a){var o=e[Z](i);r(e,i,a,t,n),e.setItemVisual(i,{symbolSize:o.get(w)||x[a?0:1],symbol:o.get(M,!0)||y[a?0:1],color:o.get("itemStyle.normal.color")||h.getVisual("color")})}var l=t[Wi],u=t.name,h=t[Fi](),d=this.markerGroupMap,f=d[u];f||(f=d[u]=new c),this.group.add(f.group);var p=a(l,t,e),v=p.from,m=p.to,g=p.line;e.__from=v,e.__to=m,e.setData(g);var y=e.get(M),x=e.get(w);o[Ce](y)||(y=[y,y]),typeof x===Se&&(x=[x,x]),p.from.each(function(t){s(v,t,!0),s(m,t,!1)}),g.each(function(t){var e=g[Z](t).get("lineStyle.normal.color");g.setItemVisual(t,{color:e||v[ei](t,"color")}),g.setItemLayout(t,[v[N](t),m[N](t)]),g.setItemVisual(t,{fromSymbolSize:v[ei](t,w),fromSymbol:v[ei](t,M),toSymbolSize:m[ei](t,w),toSymbol:m[ei](t,M)})}),f.updateData(g),p.line[H](function(t){t[ze](function(t){t.dataModel=e})}),f.__keep=!0,f.group[Di]=e.get(Di)||t.get(Di)}})}),e("echarts/component/timeline/SliderTimelineModel",[$i,"./TimelineModel",Yi,O],function(t){var e=t("./TimelineModel"),i=t(Yi),n=t(O),r=e[We]({type:"timeline.slider",defaultOption:{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"emptyCircle",symbolSize:10,lineStyle:{show:!0,width:2,color:"#304654"},label:{position:"auto",normal:{show:!0,interval:"auto",rotate:0,textStyle:{color:"#304654"}},emphasis:{show:!0,textStyle:{color:"#c23531"}}},itemStyle:{normal:{color:"#304654",borderWidth:1},emphasis:{color:"#c23531"}},checkpointStyle:{symbol:"circle",symbolSize:13,color:"#c23531",borderWidth:5,borderColor:"rgba(194,53,49, 0.5)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:22,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z",prevIcon:"path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z",normal:{color:"#304654",borderColor:"#304654",borderWidth:1},emphasis:{color:"#c23531",borderColor:"#c23531",borderWidth:2}},data:[]}});return i.mixin(r,n.dataFormatMixin),r}),e("echarts/component/timeline/timelineAction",[$i,q,Yi],function(t){var e=t(q),i=t(Yi);e[Pe]({type:"timelineChange",event:"timelineChanged",update:"prepareAndUpdate"},function(t,e){var n=e[ke]("timeline");return n&&null!=t.currentIndex&&(n.setCurrentIndex(t.currentIndex),!n.get("loop",!0)&&n.isIndexMax()&&n.setPlayState(!1)),e.resetOption("timeline"),i[qi]({currentIndex:n[k].currentIndex},t)}),e[Pe]({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},function(t,e){var i=e[ke]("timeline");i&&null!=t.playState&&i.setPlayState(t.playState)})}),e("echarts/component/dataZoom/typeDefaulter",[$i,"../../model/Component"],function(t){t("../../model/Component").registerSubTypeDefaulter("dataZoom",function(){return"slider"})}),e("echarts/component/dataZoom/DataZoomModel",[$i,Yi,_i,q,O,mi,"./AxisProxy"],function(t){function e(t){var e={};return u(["start","end","startValue","endValue",di],function(i){t.hasOwnProperty(i)&&(e[i]=t[i])}),e}function i(t,e){u([["start","startValue"],["end","endValue"]],function(i,n){var r=t._rangePropMode;null!=e[i[0]]?r[n]="percent":null!=e[i[1]]&&(r[n]="value")})}var n=t(Yi),r=t(_i),a=t(q),o=t(O),s=t(mi),l=t("./AxisProxy"),u=n.each,h=s.eachAxisDim,d=a[Hi]({type:"dataZoom",dependencies:["xAxis","yAxis","zAxis","radiusAxis","angleAxis","singleAxis",je],defaultOption:{zlevel:0,z:4,orient:null,xAxisIndex:null,yAxisIndex:null,filterMode:"filter",throttle:null,start:0,end:100,startValue:null,endValue:null},init:function(t,i,n){this._dataIntervalByAxis={},this._dataInfo={},this._axisProxies={},this.textStyleModel,this._autoThrottle=!0,this._rangePropMode=["percent","percent"];var r=e(t);this[y](t,n),this.doInit(r)},mergeOption:function(t){var i=e(t);n.merge(this[k],t,!0),this.doInit(i)},doInit:function(t){var e=this[k];r[li]||(e.realtime=!1),this._setDefaultThrottle(t),i(this,t),u([["start","startValue"],["end","endValue"]],function(t,i){"value"===this._rangePropMode[i]&&(e[t[0]]=null)},this),this.textStyleModel=this[Ni](Bi),this._resetTarget(),this._giveAxisProxies()},_giveAxisProxies:function(){var t=this._axisProxies;this.eachTargetAxis(function(e,i,n,r){var a=this.dependentModels[e.axis][i],o=a.__dzAxisProxy||(a.__dzAxisProxy=new l(e.name,i,this,r));t[e.name+"_"+i]=o},this)},_resetTarget:function(){var t=this[k],e=this._judgeAutoMode();h(function(e){var i=e.axisIndex;t[i]=o.normalizeToArray(t[i])},this),"axisIndex"===e?this._autoSetAxisIndex():e===c&&this._autoSetOrient()},_judgeAutoMode:function(){var t=this[k],e=!1;h(function(i){null!=t[i.axisIndex]&&(e=!0)},this);var i=t[c];return null==i&&e?c:e?void 0:(null==i&&(t[c]=_),"axisIndex")},_autoSetAxisIndex:function(){var t=!0,e=this.get(c,!0),i=this[k],r=this.dependentModels;if(t){var a=e===x?"y":"x";r[a+"Axis"][ri]?(i[a+"AxisIndex"]=[0],t=!1):u(r.singleAxis,function(n){t&&n.get(c,!0)===e&&(i.singleAxisIndex=[n[Fe]],t=!1)})}t&&h(function(e){if(t){var n=[],r=this.dependentModels[e.axis];if(r[ri]&&!n[ri])for(var a=0,o=r[ri];o>a;a++)r[a].get("type")===te&&n.push(a);i[e.axisIndex]=n,n[ri]&&(t=!1)}},this),t&&this[ge][$e](function(t){this._isSeriesHasAllAxesTypeOf(t,"value")&&h(function(e){var r=i[e.axisIndex],a=t.get(e.axisIndex),o=t.get(e.axisId),s=t[ge].queryComponents({mainType:e.axis,index:a,id:o})[0];a=s[Fe],n[ni](r,a)<0&&r.push(a)})},this)},_autoSetOrient:function(){var t;this.eachTargetAxis(function(e){!t&&(t=e.name)},this),this[k][c]="y"===t?x:_},_isSeriesHasAllAxesTypeOf:function(t,e){var i=!0;return h(function(n){var r=t.get(n.axisIndex),a=this.dependentModels[n.axis][r];a&&a.get("type")===e||(i=!1)},this),i},_setDefaultThrottle:function(t){if(t.hasOwnProperty(di)&&(this._autoThrottle=!1),this._autoThrottle){var e=this[ge][k];this[k][di]=e[hi]&&e.animationDurationUpdate>0?100:20}},getFirstTargetAxisModel:function(){var t;return h(function(e){if(null==t){var i=this.get(e.axisIndex);i[ri]&&(t=this.dependentModels[e.axis][i[0]])}},this),t},eachTargetAxis:function(t,e){var i=this[ge];h(function(n){u(this.get(n.axisIndex),function(r){t.call(e,n,r,this,i)},this)},this)},getAxisProxy:function(t,e){return this._axisProxies[t+"_"+e]},getAxisModel:function(t,e){var i=this.getAxisProxy(t,e);return i&&i.getAxisModel()},setRawRange:function(t,e){u(["start","end","startValue","endValue"],function(e){this[k][e]=t[e]},this),!e&&i(this,t)},getPercentRange:function(){var t=this.findRepresentativeAxisProxy();return t?t.getDataPercentWindow():void 0},getValueRange:function(t,e){if(null!=t||null!=e)return this.getAxisProxy(t,e).getDataValueWindow();var i=this.findRepresentativeAxisProxy();return i?i.getDataValueWindow():void 0},findRepresentativeAxisProxy:function(){var t=this._axisProxies;for(var e in t)if(t.hasOwnProperty(e)&&t[e].hostedBy(this))return t[e];for(var e in t)if(t.hasOwnProperty(e)&&!t[e].hostedBy(this))return t[e]},getRangePropMode:function(){return this._rangePropMode.slice()}});return d}),e("echarts/component/dataZoom/DataZoomView",[$i,"../../view/Component"],function(t){var e=t("../../view/Component");return e[We]({type:"dataZoom",render:function(t,e,i){this.dataZoomModel=t,this[ge]=e,this.api=i},getTargetCoordInfo:function(){function t(t,e,i,n){for(var r,a=0;a=0||"+"===n?"left":"right"},s={horizontal:n>=0||"+"===n?"top":Si,vertical:"middle"},l={horizontal:0,vertical:O/2},u=r===x?a[zi]:a.width,h=t[Ni]("controlStyle"),d=h.get("show"),f=d?h.get("itemSize"):0,p=d?h.get("itemGap"):0,v=f+p,m=t.get("label.normal.rotate")||0;m=m*O/180;var g,y,b,w,M=h.get(Mi,!0),d=h.get("show",!0),S=d&&h.get("showPlayBtn",!0),T=d&&h.get("showPrevBtn",!0),P=d&&h.get("showNextBtn",!0),C=0,L=u;return"left"===M||M===Si?(S&&(g=[0,0],C+=v),T&&(y=[C,0],C+=v),P&&(b=[L-f,0],L-=v)):(S&&(g=[L-f,0],L-=v),T&&(y=[0,0],C+=v),P&&(b=[L-f,0],L-=v)),w=[C,L],t.get(J)&&w[A](),{viewRect:a,mainLength:u,orient:r,rotation:l[r],labelRotation:m,labelPosOpt:n,labelAlign:o[r],labelBaseline:s[r],playPosition:g,prevBtnPosition:y,nextBtnPosition:b,axisExtent:w,controlSize:f,controlGap:p}},_position:function(t){function e(t){var e=t[Mi];t.origin=[d[0][0]-e[0],d[1][0]-e[1]]}function i(t){return[[t.x,t.x+t.width],[t.y,t.y+t[zi]]]}function n(t,e,i,n,r){t[n]+=i[n][r]-e[n][r]}var r=this._mainGroup,a=this._labelGroup,o=t.viewRect;if(t[c]===x){var s=T[ti](),u=o.x,h=o.y+o[zi];T.translate(s,s,[-u,-h]),T[l](s,s,-O/2),T.translate(s,s,[u,h]),o=o.clone(),o[de](s)}var d=i(o),f=i(r[Oi]()),p=i(a[Oi]()),v=r[Mi],m=a[Mi];m[0]=v[0]=d[0][0];var g=t.labelPosOpt;if(isNaN(g)){var y="+"===g?0:1;n(v,f,d,1,y),n(m,p,d,1,1-y)}else{var y=g>=0?0:1;n(v,f,d,1,y),m[1]=v[1]+g}r.attr(Mi,v),a.attr(Mi,m),r[ee]=a[ee]=t[ee],e(r),e(a)},_createAxis:function(t,e){var i=e[Fi](),n=e.get("axisType"),r=b.createScaleByModel(e,n),a=i[fe]("value");r.setExtent(a[0],a[1]),this._customizeScale(r,i),r.niceTicks();var o=new g("value",r,t.axisExtent,n);return o.model=e,o},_customizeScale:function(t,e){t[ve]=function(){return e.mapArray(["value"],function(t){return t})},t.getTicksLabels=function(){return a.map(this[ve](),t[pe],t)}},_createGroup:function(t){var e=this["_"+t]=new o.Group;return this.group.add(e),e},_renderAxisLine:function(t,e,i,n){var r=i[me]();n.get("lineStyle.show")&&e.add(new o.Line({shape:{x1:r[0],y1:0,x2:r[1],y2:0},style:a[We]({lineCap:"round"},n[Ni]("lineStyle")[P]()),silent:!0,z2:1}))},_renderAxisTick:function(t,e,i,r){var a=r[Fi](),s=i.scale[ve]();z(s,function(t,s){var l=i[Y](t),u=a[Z](s),c=u[Ni]("itemStyle.normal"),h=u[Ni]("itemStyle.emphasis"),d={position:[l,0],onclick:D(this._changeTimeline,this,s)},f=n(u,c,e,d);o[ue](f,h[Gi]()),u.get("tooltip")?(f[ii]=s,f.dataModel=r):f[ii]=f.dataModel=null},this)},_renderAxisLabel:function(t,e,i,n){var r=n[Ni](u);if(r.get("show")){var a=n[Fi](),s=i.scale[ve](),l=b.getFormattedLabels(i,r.get("formatter")),c=i.getLabelInterval();z(s,function(n,r){if(!i.isLabelIgnored(r,c)){var s=a[Z](r),u=s[Ni]("label.normal.textStyle"),h=s[Ni]("label.emphasis.textStyle"),d=i[Y](n),f=new o.Text({style:{text:l[r],textAlign:t.labelAlign,textVerticalAlign:t.labelBaseline,textFont:u[Ri](),fill:u[Vi]()},position:[d,0],rotation:t.labelRotation-t[ee],onclick:D(this._changeTimeline,this,r),silent:!1});e.add(f),o[ue](f,h[Gi]())}},this)}},_renderControl:function(t,e,n,r){function a(t,n,a,d){if(t){var f={position:t,origin:[s/2,0],rotation:d?-l:0,rectHover:!0,style:u,onclick:a},p=i(r,n,h,f);e.add(p),o[ue](p,c)}}var s=t.controlSize,l=t[ee],u=r[Ni]("controlStyle.normal")[Gi](),c=r[Ni]("controlStyle.emphasis")[Gi](),h=[0,-s/2,s,s],d=r.getPlayState(),f=r.get(J,!0);a(t.nextBtnPosition,"controlStyle.nextIcon",D(this._changeTimeline,this,f?"-":"+")),a(t.prevBtnPosition,"controlStyle.prevIcon",D(this._changeTimeline,this,f?"+":"-")),a(t.playPosition,"controlStyle."+(d?"stopIcon":"playIcon"),D(this._handlePlayClick,this,!d),!0)},_renderCurrentPointer:function(t,e,i,a){var o=a[Fi](),s=a.getCurrentIndex(),l=o[Z](s)[Ni]("checkpointStyle"),u=this,c={onCreate:function(t){t.draggable=!0,t.drift=D(u._handlePointerDrag,u),t.ondragend=D(u._handlePointerDragend,u),r(t,s,i,a,!0)},onUpdate:function(t){r(t,s,i,a)}};this._currentPointer=n(l,l,this._mainGroup,{},this._currentPointer,c)},_handlePlayClick:function(t){this._clearTimer(),this.api[qe]({type:"timelinePlayChange",playState:t,from:this.uid})},_handlePointerDrag:function(t,e,i){this._clearTimer(),this._pointerChangeTimeline([i[f],i[d]])},_handlePointerDragend:function(t){this._pointerChangeTimeline([t[f],t[d]],!0)},_pointerChangeTimeline:function(t,e){var i=this._toAxisCoord(t)[0],n=this._axis,r=C.asc(n[me]().slice());i>r[1]&&(i=r[1]),is&&(n=s,e=a)}),e},_clearTimer:function(){this._timer&&(clearTimeout(this._timer),this._timer=null)},_changeTimeline:function(t){var e=this.model.getCurrentIndex();"+"===t?t=e+1:"-"===t&&(t=e-1),this.api[qe]({type:"timelineChange",currentIndex:t,from:this.uid})}})}),e("echarts/component/dataZoom/SliderZoomModel",[$i,"./DataZoomModel"],function(t){var e=t("./DataZoomModel"),i=e[We]({type:"dataZoom.slider",layoutMode:"box",defaultOption:{show:!0,right:"ph",top:"ph",width:"ph",height:"ph",left:null,bottom:null,backgroundColor:"rgba(47,69,84,0)",dataBackground:{lineStyle:{color:"#2f4554",width:.5,opacity:.3},areaStyle:{color:"rgba(47,69,84,0.3)",opacity:.3}},borderColor:"#ddd",fillerColor:"rgba(167,183,204,0.4)",handleIcon:"M8.2,13.6V3.9H6.3v9.7H3.1v14.9h3.3v9.7h1.8v-9.7h3.3V13.6H8.2z M9.7,24.4H4.8v-1.4h4.9V24.4z M9.7,19.1H4.8v-1.4h4.9V19.1z",handleSize:"100%",handleStyle:{color:"#a7b7cc"},labelPrecision:null,labelFormatter:null,showDetail:!0,showDataShadow:"auto",realtime:!0,zoomLock:!1,textStyle:{color:"#333"}}});return i}),e("echarts/component/dataZoom/InsideZoomModel",[$i,"./DataZoomModel"],function(t){return t("./DataZoomModel")[We]({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1}})}),e("echarts/component/dataZoom/dataZoomAction",[$i,Yi,mi,q],function(t){var e=t(Yi),i=t(mi),n=t(q);n[Pe]("dataZoom",function(t,n){var r=i.createLinkedNodesFinder(e.bind(n[oi],n,"dataZoom"),i.eachAxisDim,function(t,e){return t.get(e.axisIndex)}),a=[];n[oi]({mainType:"dataZoom",query:t},function(t){a.push.apply(a,r(t).nodes)}),e.each(a,function(e){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})})})}),e("echarts/component/dataZoom/dataZoomProcessor",[$i,q],function(t){function e(t,e,i){i.getAxisProxy(t.name,e).reset(i)}function i(t,e,i){i.getAxisProxy(t.name,e).filterData(i)}var n=t(q);n.registerProcessor(function(t){t[oi]("dataZoom",function(t){t.eachTargetAxis(e),t.eachTargetAxis(i)}),t[oi]("dataZoom",function(t){var e=t.findRepresentativeAxisProxy(),i=e.getDataPercentWindow(),n=e.getDataValueWindow();t.setRawRange({start:i[0],end:i[1],startValue:n[0],endValue:n[1]},!0)})})}),e("echarts/component/dataZoom/InsideZoomView",[$i,"./DataZoomView",Yi,"../helper/sliderMove","./roams"],function(t){function e(t){var e=[0,100];return!(t[0]<=e[1])&&(t[0]=e[1]),!(t[1]<=e[1])&&(t[1]=e[1]),!(t[0]>=e[0])&&(t[0]=e[0]),!(t[1]>=e[0])&&(t[1]=e[0]),t}var i=t("./DataZoomView"),n=t(Yi),r=t("../helper/sliderMove"),a=t("./roams"),o=n.bind,s=i[We]({type:"dataZoom.inside",init:function(){this._range},render:function(t,e,i,r){s[z](this,"render",arguments),a.shouldRecordRange(r,t.id)&&(this._range=t.getPercentRange()),n.each(this.getTargetCoordInfo(),function(e,r){var s=n.map(e,function(t){return a.generateCoordId(t.model)});n.each(e,function(e){var n=e.model;a[Te](i,{coordId:a.generateCoordId(n),allCoordIds:s,containsPoint:function(t,e,i){return n[Wi].containPoint([e,i]) +},dataZoomId:t.id,throttleRate:t.get(di,!0),panGetRange:o(this._onPan,this,e,r),zoomGetRange:o(this._onZoom,this,e,r)})},this)},this)},dispose:function(){a.unregister(this.api,this.dataZoomModel.id),s[z](this,He,arguments),this._range=null},_onPan:function(t,e,i,n,a,o,s,u,c){if(this.dataZoomModel[k].disabled)return this._range;var h=this._range.slice(),d=t.axisModels[0];if(d){var f=l[e]([o,s],[u,c],d,i,t),p=f.signal*(h[1]-h[0])*f.pixel/f.pixelLength;return r(p,h,[0,100],"rigid"),this._range=h}},_onZoom:function(t,i,n,r,a,o){var s=this.dataZoomModel[k];if(s.disabled||s.zoomLock)return this._range;var u=this._range.slice(),c=t.axisModels[0];if(c){var h=l[i](null,[a,o],c,n,t),d=(h.pixel-h.pixelStart)/h.pixelLength*(u[1]-u[0])+u[0];return r=Math.max(1/r,0),u[0]=(u[0]-d)*r+d,u[1]=(u[1]-d)*r+d,this._range=e(u)}}}),l={grid:function(t,e,i,n,r){var a=i.axis,o={},s=r.model[Wi].getRect();return t=t||[0,0],"x"===a.dim?(o.pixel=e[0]-t[0],o.pixelLength=s.width,o.pixelStart=s.x,o.signal=a[J]?1:-1):(o.pixel=e[1]-t[1],o.pixelLength=s[zi],o.pixelStart=s.y,o.signal=a[J]?-1:1),o},polar:function(t,e,i,n,r){var a=i.axis,o={},s=r.model[Wi],l=s.getRadiusAxis()[me](),u=s.getAngleAxis()[me]();return t=t?s.pointToCoord(t):[0,0],e=s.pointToCoord(e),"radiusAxis"===i[Ye]?(o.pixel=e[0]-t[0],o.pixelLength=l[1]-l[0],o.pixelStart=l[0],o.signal=a[J]?1:-1):(o.pixel=e[1]-t[1],o.pixelLength=u[1]-u[0],o.pixelStart=u[0],o.signal=a[J]?-1:1),o},singleAxis:function(t,e,i,n,r){var a=i.axis,o=r.model[Wi].getRect(),s={};return t=t||[0,0],a[c]===_?(s.pixel=e[0]-t[0],s.pixelLength=o.width,s.pixelStart=o.x,s.signal=a[J]?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=o[zi],s.pixelStart=o.y,s.signal=a[J]?-1:1),s}};return s}),e("echarts/component/dataZoom/SliderZoomView",[$i,Yi,W,"../../util/throttle","./DataZoomView",L,"../../util/layout","../helper/sliderMove","zrender/core/event"],function(t){function e(t){var e={x:"y",y:"x",radius:"angle",angle:"radius"};return e[t]}var i=t(Yi),n=t(W),r=t("../../util/throttle"),a=t("./DataZoomView"),o=n.Rect,s=t(L),l=s[C],u=t("../../util/layout"),h=t("../helper/sliderMove"),d=t("zrender/core/event"),f=s.asc,p=i.bind,v=i.each,m=7,g=1,y=30,b=_,w=x,M=5,S=["line","bar","candlestick","scatter"],T=a[We]({type:"dataZoom.slider",init:function(t,e){this._displayables={},this._orient,this._range,this._handleEnds,this._size,this._handleWidth,this._handleHeight,this._location,this._dragging,this._dataShadowInfo,this.api=e},render:function(t,e,i,n){return T[z](this,"render",arguments),r.createOrUpdate(this,"_dispatchZoomAction",this.dataZoomModel.get(di),"fixRate"),this._orient=t.get(c),this.dataZoomModel.get("show")===!1?void this.group[Ui]():(n&&"dataZoom"===n.type&&n.from===this.uid||this._buildView(),void this._updateView())},remove:function(){T[z](this,Ue,arguments),r.clear(this,"_dispatchZoomAction")},dispose:function(){T[z](this,He,arguments),r.clear(this,"_dispatchZoomAction")},_buildView:function(){var t=this.group;t[Ui](),this._resetLocation(),this._resetInterval();var e=this._displayables.barGroup=new n.Group;this._renderBackground(),this._renderHandle(),this._renderDataShadow(),t.add(e),this._positionGroup()},_resetLocation:function(){var t=this.dataZoomModel,e=this.api,n=this._findCoordRect(),r={width:e[Li](),height:e[Ci]()},a=this._orient===b?{right:r.width-n.x-n.width,top:r[zi]-y-m,width:n.width,height:y}:{right:m,top:n.y,width:y,height:n[zi]},o=u.getLayoutParams(t[k]);i.each(["right","top","width",zi],function(t){"ph"===o[t]&&(o[t]=a[t])});var s=u[Ii](o,r,t[Ai]);this._location={x:s.x,y:s.y},this._size=[s.width,s[zi]],this._orient===w&&this._size[A]()},_positionGroup:function(){var t=this.group,e=this._location,i=this._orient,n=this.dataZoomModel.getFirstTargetAxisModel(),r=n&&n.get(J),a=this._displayables.barGroup,o=(this._dataShadowInfo||{}).otherAxisInverse;a.attr(i!==b||r?i===b&&r?{scale:o?[-1,1]:[-1,-1]}:i!==w||r?{scale:o?[-1,-1]:[-1,1],rotation:Math.PI/2}:{scale:o?[1,-1]:[1,1],rotation:Math.PI/2}:{scale:o?[1,1]:[1,-1]});var s=t[Oi]([a]);t.attr(Mi,[e.x-s.x,e.y-s.y])},_getViewExtent:function(){return[0,this._size[0]]},_renderBackground:function(){var t=this.dataZoomModel,e=this._size;this._displayables.barGroup.add(new o({silent:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:t.get(Zi)},z2:-40}))},_renderDataShadow:function(){var t=this._dataShadowInfo=this._prepareDataShadowInfo();if(t){var e=this._size,r=t[je],a=r.getRawData(),o=r.getShadowDim?r.getShadowDim():t.otherDim;if(null!=o){var s=a[fe](o),u=.3*(s[1]-s[0]);s=[s[0]-u,s[1]+u];var c,h=[0,e[1]],d=[0,e[0]],f=[[e[0],0],[0,0]],p=[],v=d[1]/(a.count()-1),m=0,g=Math.round(a.count()/e[0]);a.each([o],function(t,e){if(g>0&&e%g)return void(m+=v);var i=null==t||isNaN(t)||""===t,n=i?0:l(t,s,h,!0);i&&!c&&e?(f.push([f[f[ri]-1][0],0]),p.push([p[p[ri]-1][0],0])):!i&&c&&(f.push([m,0]),p.push([m,0])),f.push([m,n]),p.push([m,n]),m+=v,c=i});var y=this.dataZoomModel;this._displayables.barGroup.add(new n.Polygon({shape:{points:f},style:i[qi]({fill:y.get("dataBackgroundColor")},y[Ni]("dataBackground.areaStyle").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new n.Polyline({shape:{points:p},style:y[Ni]("dataBackground.lineStyle")[P](),silent:!0,z2:-19}))}}},_prepareDataShadowInfo:function(){var t=this.dataZoomModel,n=t.get("showDataShadow");if(n!==!1){var r,a=this[ge];return t.eachTargetAxis(function(o,s){var l=t.getAxisProxy(o.name,s).getTargetSeriesModels();i.each(l,function(t){if(!(r||n!==!0&&i[ni](S,t.get("type"))<0)){var l,u=a[ke](o.axis,s).axis,c=e(o.name),h=t[Wi];null!=c&&h[X]&&(l=h[X](u)[J]),r={thisAxis:u,series:t,thisDim:o.name,otherDim:c,otherAxisInverse:l}}},this)},this),r}},_renderHandle:function(){var t=this._displayables,e=t.handles=[],i=t.handleLabels=[],r=this._displayables.barGroup,a=this._size,l=this.dataZoomModel;r.add(t.filler=new o({draggable:!0,cursor:"move",drift:p(this._onDragMove,this,"all"),onmousemove:function(t){d.stop(t.event)},ondragstart:p(this._showDataInfo,this,!0),ondragend:p(this._onDragEnd,this),onmouseover:p(this._showDataInfo,this,!0),onmouseout:p(this._showDataInfo,this,!1),style:{fill:l.get("fillerColor"),textPosition:"inside"}})),r.add(new o(n.subPixelOptimizeRect({silent:!0,shape:{x:0,y:0,width:a[0],height:a[1]},style:{stroke:l.get("dataBackgroundColor")||l.get("borderColor"),lineWidth:g,fill:"rgba(0,0,0,0)"}})));var u=l.get("handleIcon");v([0,1],function(t){var a=n.makePath(u,{style:{strokeNoScale:!0},rectHover:!0,cursor:this._orient===x?"ns-resize":"ew-resize",draggable:!0,drift:p(this._onDragMove,this,t),onmousemove:function(t){d.stop(t.event)},ondragend:p(this._onDragEnd,this),onmouseover:p(this._showDataInfo,this,!0),onmouseout:p(this._showDataInfo,this,!1)},{x:-.5,y:0,width:1,height:1},Ti),o=a[Oi]();this._handleHeight=s[E](l.get("handleSize"),this._size[1]),this._handleWidth=o.width/o[zi]*this._handleHeight,a[wi](l[Ni]("handleStyle")[Gi]());var c=l.get("handleColor");null!=c&&(a.style.fill=c),r.add(e[t]=a);var h=l.textStyleModel;this.group.add(i[t]=new n.Text({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textVerticalAlign:"middle",textAlign:"center",fill:h[Vi](),textFont:h[Ri]()},z2:10}))},this)},_resetInterval:function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[l(t[0],[0,100],e,!0),l(t[1],[0,100],e,!0)]},_updateInterval:function(t,e){var i=this._handleEnds,n=this._getViewExtent();h(e,i,n,"all"===t||this.dataZoomModel.get("zoomLock")?"rigid":"cross",t),this._range=f([l(i[0],n,[0,100],!0),l(i[1],n,[0,100],!0)])},_updateView:function(t){var e=this._displayables,i=this._handleEnds,n=f(i.slice()),r=this._size;v([0,1],function(t){var n=e.handles[t],a=this._handleHeight;n.attr({scale:[a,a],position:[i[t],r[1]/2-a/2]})},this),e.filler[B]({x:n[0],y:0,width:n[1]-n[0],height:r[1]}),this._updateDataInfo(t)},_updateDataInfo:function(t){function e(t){var e=n.getTransform(r.handles[t][Ie],this.group),i=n.transformDirection(0===t?"right":"left",e),l=this._handleWidth/2+M,u=n[de]([d[t]+(0===t?-l:l),this._size[1]/2],e);a[t][wi]({x:u[0],y:u[1],textVerticalAlign:o===b?Pi:i,textAlign:o===b?i:Ti,text:s[t]})}var i=this.dataZoomModel,r=this._displayables,a=r.handleLabels,o=this._orient,s=["",""];if(i.get("showDetail")){var l=i.findRepresentativeAxisProxy();if(l){var u=l.getAxisModel().axis,c=this._range,h=t?l.calculateDataWindow({start:c[0],end:c[1]}).valueWindow:l.getDataValueWindow();s=[this._formatLabel(h[0],u),this._formatLabel(h[1],u)]}}var d=f(this._handleEnds.slice());e.call(this,0),e.call(this,1)},_formatLabel:function(t,e){var n=this.dataZoomModel,r=n.get("labelFormatter"),a=n.get("labelPrecision");(null==a||"auto"===a)&&(a=e.getPixelPrecision());var o=null==t||isNaN(t)?"":e.type===te||"time"===e.type?e.scale[pe](Math.round(t)):t[I](Math.min(a,20));return i.isFunction(r)?r(t,o):i[we](r)?r[Le]("{value}",o):o},_showDataInfo:function(t){t=this._dragging||t;var e=this._displayables.handleLabels;e[0].attr("invisible",!t),e[1].attr("invisible",!t)},_onDragMove:function(t,e,i){this._dragging=!0;var n=this._applyBarTransform([e,i],!0);this._updateInterval(t,n[0]);var r=this.dataZoomModel.get("realtime");this._updateView(!r),r&&r&&this._dispatchZoomAction()},_onDragEnd:function(){this._dragging=!1,this._showDataInfo(!1),this._dispatchZoomAction()},_dispatchZoomAction:function(){var t=this._range;this.api[qe]({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,start:t[0],end:t[1]})},_applyBarTransform:function(t,e){var i=this._displayables.barGroup[ie]();return n[de](t,i,e)},_findCoordRect:function(){var t;if(v(this.getTargetCoordInfo(),function(e){if(!t&&e[ri]){var i=e[0].model[Wi];t=i.getRect&&i.getRect()}}),!t){var e=this.api[Li](),i=this.api[Ci]();t={x:.2*e,y:.2*i,width:.6*e,height:.6*i}}return t}});return T}),e("echarts/scale/helper",[$i,be],function(t){function e(t,e,i){t[e]=Math.max(Math.min(t[e],i[1]),i[0])}var i=t(be),n=i.round,r={};return r.intervalScaleNiceTicks=function(t,e){var a={},o=t[1]-t[0],s=a[m]=i.nice(o/e,!0),l=a.intervalPrecision=i.getPrecisionSafe(s)+2,u=a.niceTickExtent=[n(Math.ceil(t[0]/s)*s,l),n(Math.floor(t[1]/s)*s,l)];return r.fixExtent(u,t),a},r.fixExtent=function(t,i){!isFinite(t[0])&&(t[0]=i[0]),!isFinite(t[1])&&(t[1]=i[1]),e(t,0,i),e(t,1,i),t[0]>t[1]&&(t[0]=t[1])},r.intervalScaleGetTicks=function(t,e,i,r){var a=[];if(!t)return a;var o=1e4;e[0]o)return[];return e[1]>(a[ri]?a[a[ri]-1]:i[1])&&a.push(e[1]),a},r}),e("echarts/scale/Scale",[$i,"../util/clazz"],function(t){function e(t){this._setting=t||{},this[_e]=[1/0,-1/0],this._interval=0,this.init&&this.init.apply(this,arguments)}var i=t("../util/clazz"),n=e[pi];return n.parse=function(t){return t},n.getSetting=function(t){return this._setting[t]},n[xe]=function(t){var e=this[_e];return t>=e[0]&&t<=e[1]},n[ye]=function(t){var e=this[_e];return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},n.scale=function(t){var e=this[_e];return t*(e[1]-e[0])+e[0]},n.unionExtent=function(t){var e=this[_e];t[0]e[1]&&(e[1]=t[1])},n.unionExtentFromData=function(t,e){this.unionExtent(t[fe](e,!0))},n[me]=function(){return this[_e].slice()},n.setExtent=function(t,e){var i=this[_e];isNaN(t)||(i[0]=t),isNaN(e)||(i[1]=e)},n.getTicksLabels=function(){for(var t=[],e=this[ve](),i=0;ia||-a>t}var i=t("../core/matrix"),n=t("../core/vector"),r=i.identity,a=5e-5,o=function(t){t=t||{},t[Mi]||(this[Mi]=[0,0]),null==t[ee]&&(this[ee]=0),t.scale||(this.scale=[1,1]),this.origin=this.origin||null},u=o[pi];u[h]=null,u.needLocalTransform=function(){return e(this[ee])||e(this[Mi][0])||e(this[Mi][1])||e(this.scale[0]-1)||e(this.scale[1]-1)},u[s]=function(){var t=this[Ie],e=t&&t[h],n=this.needLocalTransform(),a=this[h];return n||e?(a=a||i[ti](),n?this[ie](a):r(a),e&&(n?i.mul(a,t[h],a):i.copy(a,t[h])),this[h]=a,this.invTransform=this.invTransform||i[ti](),void i.invert(this.invTransform,a)):void(a&&r(a))},u[ie]=function(t){return o[ie](this,t)},u.setTransform=function(t){var e=this[h],i=t.dpr||1;e?t.setTransform(i*e[0],i*e[1],i*e[2],i*e[3],i*e[4],i*e[5]):t.setTransform(i,0,0,i,0,0)},u.restoreTransform=function(t){var e=t.dpr||1;t.setTransform(e,0,0,e,0,0)};var c=[];return u.decomposeTransform=function(){if(this[h]){var t=this[Ie],n=this[h];t&&t[h]&&(i.mul(c,t.invTransform,n),n=c);var r=n[0]*n[0]+n[1]*n[1],a=n[2]*n[2]+n[3]*n[3],o=this[Mi],s=this.scale;e(r-1)&&(r=Math.sqrt(r)),e(a-1)&&(a=Math.sqrt(a)),n[0]<0&&(r=-r),n[3]<0&&(a=-a),o[0]=n[4],o[1]=n[5],s[0]=r,s[1]=a,this[ee]=Math.atan2(-n[1]/a,n[0]/r)}},u.getGlobalScale=function(){var t=this[h];if(!t)return[1,1];var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]),i=Math.sqrt(t[2]*t[2]+t[3]*t[3]);return t[0]<0&&(e=-e),t[3]<0&&(i=-i),[e,i]},u.transformCoordToLocal=function(t,e){var i=[t,e],r=this.invTransform;return r&&n[de](i,i,r),i},u.transformCoordToGlobal=function(t,e){var i=[t,e],r=this[h];return r&&n[de](i,i,r),i},o[ie]=function(t,e){e=e||[],r(e);var n=t.origin,a=t.scale||[1,1],o=t[ee]||0,s=t[Mi]||[0,0];return n&&(e[4]-=n[0],e[5]-=n[1]),i.scale(e,e,a),o&&i[l](e,e,o),n&&(e[4]+=n[0],e[5]+=n[1]),e[4]+=s[0],e[5]+=s[1],e},o}),e("zrender/graphic/Path",[$i,"./Displayable",o,"../core/PathProxy","../contain/path","./Pattern"],function(t){function e(t){i.call(this,t),this.path=null}var i=t("./Displayable"),n=t(o),r=t("../core/PathProxy"),s=t("../contain/path"),l=t("./Pattern"),u=l[pi].getCanvasPattern,c=Math.abs,d=new r(!0);return e[pi]={constructor:e,type:"path",__dirtyPath:!0,strokeContainThreshold:5,brush:function(t,e){var i=this.style,n=this.path||d,r=i.hasStroke(),o=i.hasFill(),s=i.fill,l=i[ce],c=o&&!!s[Ke],h=r&&!!l[Ke],f=o&&!!s.image,p=r&&!!l.image;if(i.bind(t,this,e),this.setTransform(t),this[a]){var v;c&&(v=v||this[Oi](),this._fillGradient=i.getGradient(t,s,v)),h&&(v=v||this[Oi](),this._strokeGradient=i.getGradient(t,l,v))}c?t.fillStyle=this._fillGradient:f&&(t.fillStyle=u.call(s,t)),h?t.strokeStyle=this._strokeGradient:p&&(t.strokeStyle=u.call(l,t));var m=i.lineDash,g=i.lineDashOffset,y=!!t.setLineDash,x=this.getGlobalScale();n.setScale(x[0],x[1]),this.__dirtyPath||m&&!y&&r?(n.beginPath(t),m&&!y&&(n.setLineDash(m),n.setLineDashOffset(g)),this.buildPath(n,this.shape,!1),this.path&&(this.__dirtyPath=!1)):(t.beginPath(),this.path.rebuildPath(t)),o&&n.fill(t),m&&y&&(t.setLineDash(m),t.lineDashOffset=g),r&&n[ce](t),m&&y&&t.setLineDash([]),this.restoreTransform(t),null!=i.text&&this.drawRectText(t,this[Oi]())},buildPath:function(){},createPathProxy:function(){this.path=new r},getBoundingRect:function(){var t=this._rect,e=this.style,i=!t;if(i){var n=this.path;n||(n=this.path=new r),this.__dirtyPath&&(n.beginPath(),this.buildPath(n,this.shape,!1)),t=n[Oi]()}if(this._rect=t,e.hasStroke()){var o=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this[a]||i){o.copy(t);var s=e[he],l=e.strokeNoScale?this.getLineScale():1;e.hasFill()||(s=Math.max(s,this.strokeContainThreshold||4)),l>1e-10&&(o.width+=s/l,o[zi]+=s/l,o.x-=s/l/2,o.y-=s/l/2)}return o}return t},contain:function(t,e){var i=this.transformCoordToLocal(t,e),n=this[Oi](),r=this.style;if(t=i[0],e=i[1],n[xe](t,e)){var a=this.path.data;if(r.hasStroke()){var o=r[he],l=r.strokeNoScale?this.getLineScale():1;if(l>1e-10&&(r.hasFill()||(o=Math.max(o,this.strokeContainThreshold)),s.containStroke(a,o/l,t,e)))return!0}if(r.hasFill())return s[xe](a,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this[a]=!0,this.__zr&&this.__zr.refresh(),this.__clipTarget&&this.__clipTarget.dirty()},animateShape:function(t){return this.animate("shape",t)},attrKV:function(t,e){"shape"===t?(this[B](e),this.__dirtyPath=!0,this._rect=null):i[pi].attrKV.call(this,t,e)},setShape:function(t,e){var i=this.shape;if(i){if(n[ui](t))for(var r in t)t.hasOwnProperty(r)&&(i[r]=t[r]);else i[t]=e;this.dirty(!0)}return this},getLineScale:function(){var t=this[h];return t&&c(t[0]-1)>1e-10&&c(t[3]-1)>1e-10?Math.sqrt(c(t[0]*t[3]-t[2]*t[1])):1}},e[We]=function(t){var i=function(i){e.call(this,i),t.style&&this.style.extendFrom(t.style,!1);var n=t.shape;if(n){this.shape=this.shape||{};var r=this.shape;for(var a in n)!r.hasOwnProperty(a)&&n.hasOwnProperty(a)&&(r[a]=n[a])}t.init&&t.init.call(this,i)};n[Me](i,e);for(var r in t)"style"!==r&&"shape"!==r&&(i[pi][r]=t[r]);return i},n[Me](e,i),e}),e("zrender/tool/path",[$i,"../graphic/Path","../core/PathProxy","./transformPath"],function(t){function e(t,e,i,n,r,a,o,s,d,v,m){var g=d*(h/180),y=c(g)*(t-i)/2+u(g)*(e-n)/2,x=-1*u(g)*(t-i)/2+c(g)*(e-n)/2,_=y*y/(o*o)+x*x/(s*s);_>1&&(o*=l(_),s*=l(_));var b=(r===a?-1:1)*l((o*o*s*s-o*o*x*x-s*s*y*y)/(o*o*x*x+s*s*y*y))||0,w=b*o*x/s,M=b*-s*y/o,S=(t+i)/2+c(g)*w-u(g)*M,T=(e+n)/2+u(g)*w+c(g)*M,P=p([1,0],[(y-w)/o,(x-M)/s]),A=[(y-w)/o,(x-M)/s],C=[(-1*y-w)/o,(-1*x-M)/s],L=p(A,C);f(A,C)<=-1&&(L=h),f(A,C)>=1&&(L=0),0===a&&L>0&&(L-=2*h),1===a&&0>L&&(L+=2*h),m.addData(v,S,T,o,s,P,L,g,a)}function i(t){if(!t)return[];var i,n=t[Le](/-/g," -")[Le](/ /g," ")[Le](/ /g,",")[Le](/,,/g,",");for(i=0;i0&&""===m[0]&&m.shift();for(var g=0;ga;a++){var o=t[a];o.path||o.createPathProxy(),o.__dirtyPath&&o.buildPath(o.path,o.shape,!0),i.push(o.path)}var s=new r(e);return s.createPathProxy(),s.buildPath=function(t){t.appendPath(i);var e=t.getContext();e&&t.rebuildPath(e)},s}}}),e("zrender/core/BoundingRect",[$i,"./vector","./matrix"],function(t){function e(t,e,i,n){0>i&&(t+=i,i=-i),0>n&&(e+=n,n=-n),this.x=t,this.y=e,this.width=i,this[zi]=n}var i=t("./vector"),n=t("./matrix"),r=i[de],a=Math.min,o=Math.max;return e[pi]={constructor:e,union:function(t){var e=a(t.x,this.x),i=a(t.y,this.y);this.width=o(t.x+t.width,this.x+this.width)-e,this[zi]=o(t.y+t[zi],this.y+this[zi])-i,this.x=e,this.y=i},applyTransform:function(){var t=[],e=[],i=[],n=[];return function(s){if(s){t[0]=i[0]=this.x,t[1]=n[1]=this.y,e[0]=n[0]=this.x+this.width,e[1]=i[1]=this.y+this[zi],r(t,t,s),r(e,e,s),r(i,i,s),r(n,n,s),this.x=a(t[0],e[0],i[0],n[0]),this.y=a(t[1],e[1],i[1],n[1]);var l=o(t[0],e[0],i[0],n[0]),u=o(t[1],e[1],i[1],n[1]);this.width=l-this.x,this[zi]=u-this.y}}}(),calculateTransform:function(t){var e=this,i=t.width/e.width,r=t[zi]/e[zi],a=n[ti]();return n.translate(a,a,[-e.x,-e.y]),n.scale(a,a,[i,r]),n.translate(a,a,[t.x,t.y]),a},intersect:function(t){if(!t)return!1;t instanceof e||(t=e[ti](t));var i=this,n=i.x,r=i.x+i.width,a=i.y,o=i.y+i[zi],s=t.x,l=t.x+t.width,u=t.y,c=t.y+t[zi];return!(s>r||n>l||u>o||a>c)},contain:function(t,e){var i=this;return t>=i.x&&t<=i.x+i.width&&e>=i.y&&e<=i.y+i[zi]},clone:function(){return new e(this.x,this.y,this.width,this[zi])},copy:function(t){this.x=t.x,this.y=t.y,this.width=t.width,this[zi]=t[zi]},plain:function(){return{x:this.x,y:this.y,width:this.width,height:this[zi]}}},e[ti]=function(t){return new e(t.x,t.y,t.width,t[zi])},e}),e("echarts/component/visualMapContinuous",[$i,Xi,"./visualMap/preprocessor","./visualMap/typeDefaulter","./visualMap/visualEncoding","./visualMap/ContinuousModel","./visualMap/ContinuousView","./visualMap/visualMapAction"],function(t){t(Xi).registerPreprocessor(t("./visualMap/preprocessor")),t("./visualMap/typeDefaulter"),t("./visualMap/visualEncoding"),t("./visualMap/ContinuousModel"),t("./visualMap/ContinuousView"),t("./visualMap/visualMapAction")}),e("zrender/container/Group",[$i,o,"../Element","../core/BoundingRect"],function(t){var e=t(o),i=t("../Element"),n=t("../core/BoundingRect"),r=function(t){t=t||{},i.call(this,t);for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this[a]=!0};return r[pi]={constructor:r,isGroup:!0,type:"group",silent:!1,children:function(){return this._children.slice()},childAt:function(t){return this._children[t]},childOfName:function(t){for(var e=this._children,i=0;i=0&&(i[Ne](n,0,t),this._doAdd(t))}return this},_doAdd:function(t){t[Ie]&&t[Ie][Ue](t),t[Ie]=this;var e=this.__storage,i=this.__zr;e&&e!==t.__storage&&(e.addToStorage(t),t instanceof r&&t.addChildrenToStorage(e)),i&&i.refresh()},remove:function(t){var i=this.__zr,n=this.__storage,a=this._children,o=e[ni](a,t);return 0>o?this:(a[Ne](o,1),t[Ie]=null,n&&(n.delFromStorage(t),t instanceof r&&t.delChildrenFromStorage(n)),i&&i.refresh(),this)},removeAll:function(){var t,e,i=this._children,n=this.__storage;for(e=0;ee[1]&&(e[1]=t[1]),o[pi].setExtent.call(this,e[0],e[1])},getInterval:function(){return this._interval||this.niceTicks(),this._interval},setInterval:function(t){this._interval=t,this._niceExtent=this[_e].slice()},getTicks:function(){return this._interval||this.niceTicks(),r.intervalScaleGetTicks(this._interval,this[_e],this._niceExtent,this._intervalPrecision)},getTicksLabels:function(){for(var t=[],e=this[ve](),i=0;ii&&(i=-i,e[A]());var n=r.intervalScaleNiceTicks(e,t);this._intervalPrecision=n.intervalPrecision,this._interval=n[m],this._niceExtent=n.niceTickExtent}},niceExtent:function(t,e,i){var n=this[_e];if(n[0]===n[1])if(0!==n[0]){var r=n[0];i?n[0]-=r/2:(n[1]+=r/2,n[0]-=r/2)}else n[1]=1;var o=n[1]-n[0];isFinite(o)||(n[0]=0,n[1]=1),this.niceTicks(t);var s=this._interval;e||(n[0]=a(Math.floor(n[0]/s)*s)),i||(n[1]=a(Math.ceil(n[1]/s)*s))}});return o[ti]=function(){return new o},o}),e("zrender/graphic/shape/Sector",[$i,"../../core/env","../Path"],function(t){var e=t("../../core/env"),a=t("../Path"),o=[[r,0],["shadowColor","#000"],[n,0],[i,0]];return a[We]({type:"sector",shape:{cx:0,cy:0,r0:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},brush:e.browser.ie&&e.browser.version>=11?function(){var t,e=this.__clipPaths,i=this.style;if(e)for(var n=0;nf&&(r(i,l,o,f,c),l=c[1],o=c[2],r(n,u,s,f,c),u=c[1],s=c[2]),t.quadraticCurveTo(l,u,o,s)):(1>f&&(a(i,l,h,o,f,c),l=c[1],h=c[2],o=c[3],a(n,u,d,s,f,c),u=c[1],d=c[2],s=c[3]),t.bezierCurveTo(l,u,h,d,o,s))) +},pointAt:function(t){return e(this.shape,t,!1)},tangentAt:function(t){var i=e(this.shape,t,!0);return n[ye](i,i)}})}),e("zrender/graphic/shape/Line",[$i,"../Path"],function(t){return t("../Path")[We]({type:"line",shape:{x1:0,y1:0,x2:0,y2:0,percent:1},style:{stroke:"#000",fill:null},buildPath:function(t,e){var i=e.x1,n=e.y1,r=e.x2,a=e.y2,o=e.percent;0!==o&&(t.moveTo(i,n),1>o&&(r=i*(1-o)+r*o,a=n*(1-o)+a*o),t.lineTo(r,a))},pointAt:function(t){var e=this.shape;return[e.x1*(1-t)+e.x2*t,e.y1*(1-t)+e.y2*t]}})}),e("zrender/graphic/LinearGradient",[$i,o,"./Gradient"],function(t){var e=t(o),i=t("./Gradient"),n=function(t,e,n,r,a,o){this.x=null==t?0:t,this.y=null==e?0:e,this.x2=null==n?1:n,this.y2=null==r?0:r,this.type="linear",this.global=o||!1,i.call(this,a)};return n[pi]={constructor:n},e[Me](n,i),n}),e("zrender/graphic/CompoundPath",[$i,"./Path"],function(t){var e=t("./Path");return e[We]({type:"compound",shape:{paths:null},_updatePathDirty:function(){for(var t=this.__dirtyPath,e=this.shape.paths,i=0;i0&&u>0&&!c&&(l=0),0>l&&0>u&&!h&&(u=0)),[l,u]},s.niceScaleExtent=function(t,e){var i=s.getScaleExtent(t,e),n=null!=e.getMin(),r=null!=e.getMax(),a=e.get("splitNumber");"log"===t.type&&(t.base=e.get("logBase")),t.setExtent(i[0],i[1]),t.niceExtent(a,n,r);var o=e.get("minInterval");if(isFinite(o)&&!n&&!r&&t.type===m){var l=t.getInterval(),u=Math.max(Math.abs(l),o)/l;i=t[me]();var c=(i[1]+i[0])/2;t.setExtent(u*(i[0]-c)+c,u*(i[1]-c)+c),t.niceExtent(a)}var l=e.get(m);null!=l&&t.setInterval&&t.setInterval(l)},s.createScaleByModel=function(t,r){if(r=r||t.get("type"))switch(r){case te:return new e(t.getCategories(),[1/0,-1/0]);case"value":return new i;default:return(n.getClass(r)||i)[ti](t)}},s.ifAxisCrossZero=function(t){var e=t.scale[me](),i=e[0],n=e[1];return!(i>0&&n>0||0>i&&0>n)},s.getAxisLabelInterval=function(t,e,i,n){var r,a=0,s=0,l=1;e[ri]>40&&(l=Math.floor(e[ri]/40));for(var u=0;u1?l:(a+1)*l-1},s.getFormattedLabels=function(t,e){var i=t.scale,n=i.getTicksLabels(),r=i[ve]();return typeof e===fi?(e=function(t){return function(e){return t[Le]("{value}",null!=e?e:"")}}(e),a.map(n,e)):typeof e===Ae?a.map(r,function(i,n){return e(s.getAxisRawValue(t,i),n)},this):n},s.getAxisRawValue=function(t,e){return t.type===te?t.scale[pe](e):e},s}),e("echarts/coord/cartesian/GridModel",[$i,"./AxisModel","../../model/Component"],function(t){t("./AxisModel");var e=t("../../model/Component");return e[We]({type:"grid",dependencies:["xAxis","yAxis"],layoutMode:"box",coordinateSystem:null,defaultOption:{show:!1,zlevel:0,z:0,left:"10%",top:60,right:"10%",bottom:60,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"}})}),e("echarts/coord/cartesian/Cartesian2D",[$i,Yi,"./Cartesian"],function(t){function e(t){n.call(this,t)}var i=t(Yi),n=t("./Cartesian");return e[pi]={constructor:e,type:"cartesian2d",dimensions:["x","y"],getBaseAxis:function(){return this.getAxesByScale(T)[0]||this.getAxesByScale("time")[0]||this[Q]("x")},containPoint:function(t){var e=this[Q]("x"),i=this[Q]("y");return e[xe](e.toLocalCoord(t[0]))&&i[xe](i.toLocalCoord(t[1]))},containData:function(t){return this[Q]("x").containData(t[0])&&this[Q]("y").containData(t[1])},dataToPoints:function(t,e){return t.mapArray(["x","y"],function(t,e){return this[K]([t,e])},e,this)},dataToPoint:function(t,e){var i=this[Q]("x"),n=this[Q]("y");return[i[$](i[Y](t[0],e)),n[$](n[Y](t[1],e))]},pointToData:function(t,e){var i=this[Q]("x"),n=this[Q]("y");return[i.coordToData(i.toLocalCoord(t[0]),e),n.coordToData(n.toLocalCoord(t[1]),e)]},getOtherAxis:function(t){return this[Q]("x"===t.dim?"y":"x")}},i[Me](e,n),e}),e("echarts/coord/cartesian/Axis2D",[$i,Yi,"../Axis","./axisLabelInterval"],function(t){var e=t(Yi),i=t("../Axis"),n=t("./axisLabelInterval"),r=function(t,e,n,r,a){i.call(this,t,e,n),this.type=r||"value",this[Mi]=a||Si};return r[pi]={constructor:r,index:0,onZero:!1,model:null,isHorizontal:function(){var t=this[Mi];return"top"===t||t===Si},getGlobalExtent:function(t){var e=this[me]();return e[0]=this[$](e[0]),e[1]=this[$](e[1]),t&&e[0]>e[1]&&e[A](),e},getOtherAxis:function(){this.grid[X]()},getLabelInterval:function(){var t=this._labelInterval;return t||(t=this._labelInterval=n(this)),t},isLabelIgnored:function(t){if(this.type===te){var e=this.getLabelInterval();return typeof e===Ae&&!e(t,this.scale[pe](t))||t%(e+1)}},pointToData:function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},toLocalCoord:null,toGlobalCoord:null},e[Me](r,i),r}),e("echarts/model/globalDefault",[],function(){var t="";return typeof navigator!==g&&(t=navigator.platform||""),{color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],textStyle:{fontFamily:t.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,animation:"auto",animationDuration:1e3,animationDurationUpdate:300,animationEasing:"exponentialOut",animationEasingUpdate:"cubicOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1}}),e("echarts/model/mixin/colorPalette",[$i,"../../util/clazz"],function(t){var e=t("../../util/clazz"),i=e.set,n=e.get;return{clearColorPalette:function(){i(this,"colorIdx",0),i(this,"colorNameMap",{})},getColorFromPalette:function(t,e){e=e||this;var r=n(e,"colorIdx")||0,a=n(e,"colorNameMap")||i(e,"colorNameMap",{});if(a[t])return a[t];var o=this.get("color",!0)||[];if(o[ri]){var s=o[r];return t&&(a[t]=s),i(e,"colorIdx",(r+1)%o[ri]),s}}}}),e("zrender/contain/text",[$i,o,"../core/BoundingRect"],function(t){function e(t,e){var i=t+":"+e;if(s[i])return s[i];for(var n=(t+"").split("\n"),r=0,a=0,o=n[ri];o>a;a++)r=Math.max(f.measureText(n[a],e).width,r);return l>u&&(l=0,s={}),l++,s[i]=r,r}function i(t,i,n,r){var a=((t||"")+"").split("\n")[ri],o=e(t,i),s=e("国",i),l=a*s,u=new h(0,0,o,l);switch(u.lineHeight=s,r){case Si:case"alphabetic":u.y-=s;break;case Pi:u.y-=s/2}switch(n){case"end":case"right":u.x-=u.width;break;case Ti:u.x-=u.width/2}return u}function n(t,e,i,n){var r=e.x,a=e.y,o=e[zi],s=e.width,l=i[zi],u=i.lineHeight,c=o/2-l/2+u,h="left";switch(t){case"left":r-=n,a+=c,h="right";break;case"right":r+=n+s,a+=c,h="left";break;case"top":r+=s/2,a-=n+l-u,h=Ti;break;case Si:r+=s/2,a+=o+n+u,h=Ti;break;case ae:r+=s/2,a+=c,h=Ti;break;case"insideLeft":r+=n,a+=c,h="left";break;case"insideRight":r+=s-n,a+=c,h="right";break;case"insideTop":r+=s/2,a+=n+u,h=Ti;break;case"insideBottom":r+=s/2,a+=o-l-n+u,h=Ti;break;case"insideTopLeft":r+=n,a+=n+u,h="left";break;case"insideTopRight":r+=s-n,a+=n+u,h="right";break;case"insideBottomLeft":r+=n,a+=o-l-n+u;break;case"insideBottomRight":r+=s-n,a+=o-l-n+u,h="right"}return{x:r,y:a,textAlign:h,textBaseline:"alphabetic"}}function r(t,i,n,r,o){if(!i)return"";o=o||{},r=d(r,"...");for(var s=d(o.maxIterations,2),l=d(o.minChar,0),u=e("国",n),c=e("a",n),h=d(o.placeholder,""),f=i=Math.max(0,i-1),p=0;l>p&&f>=c;p++)f-=c;var v=e(r);v>f&&(r="",v=0),f=i-v;for(var m=(t+"").split("\n"),p=0,g=m[ri];g>p;p++){var y=m[p],x=e(y,n);if(!(i>=x)){for(var _=0;;_++){if(f>=x||_>=s){y+=r;break}var b=0===_?a(y,f,c,u):x>0?Math.floor(y[ri]*f/x):0;y=y.substr(0,b),x=e(y,n)}""===y&&(y=h),m[p]=y}}return m.join("\n")}function a(t,e,i,n){for(var r=0,a=0,o=t[ri];o>a&&e>r;a++){var s=t.charCodeAt(a);r+=s>=0&&127>=s?i:n}return a}var s={},l=0,u=5e3,c=t(o),h=t("../core/BoundingRect"),d=c[j],f={getWidth:e,getBoundingRect:i,adjustTextPositionOnRect:n,truncateText:r,measureText:function(t,e){var i=c.getContext();return i.font=e||"12px sans-serif",i.measureText(t)}};return f}),e("echarts/model/mixin/textStyle",[$i,"zrender/contain/text"],function(t){function e(t,e){return t&&t[oe](e)}var i=t("zrender/contain/text");return{getTextColor:function(){var t=this[ge];return this[oe]("color")||t&&t.get("textStyle.color")},getFont:function(){var t=this[ge],i=t&&t[Ni](Bi);return[this[oe]("fontStyle")||e(i,"fontStyle"),this[oe]("fontWeight")||e(i,"fontWeight"),(this[oe]("fontSize")||e(i,"fontSize")||12)+"px",this[oe]("fontFamily")||e(i,"fontFamily")||"sans-serif"].join(" ")},getTextRect:function(t){return i[Oi](t,this[Ri](),this[oe]("align"),this[oe]("baseline"))},truncateText:function(t,e,n,r){return i.truncateText(t,e,this[Ri](),n,r)}}}),e("echarts/model/mixin/lineStyle",[$i,"./makeStyleMapper"],function(t){var e=t("./makeStyleMapper")([[he,"width"],[ce,"color"],[bi],[r],[n],[i],["shadowColor"]]);return{getLineStyle:function(t){var i=e.call(this,t),n=this.getLineDash(i[he]);return n&&(i.lineDash=n),i},getLineDash:function(t){null==t&&(t=1);var e=this.get("type"),i=Math.max(t,2),n=4*t;return"solid"===e||null==e?null:"dashed"===e?[n,n]:[i,i]}}}),e("echarts/util/clazz",[$i,Yi],function(t){function e(t){r[ci](/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t),'componentType "'+t+'" illegal')}function i(t,e){var i=r.slice(arguments,2);return this.superClass[pi][e].apply(t,i)}function n(t,e,i){return this.superClass[pi][e].apply(t,i)}var r=t(Yi),a={},o=".",s="___EC__COMPONENT__CONTAINER___",l="\x00ec_\x00";a.set=function(t,e,i){return t[l+e]=i},a.get=function(t,e){return t[l+e]},a.hasOwn=function(t,e){return t.hasOwnProperty(l+e)};var u=a.parseClassType=function(t){var e={main:"",sub:""};return t&&(t=t.split(o),e.main=t[0]||"",e.sub=t[1]||""),e};return a.enableClassExtend=function(t,e){t.$constructor=t,t[We]=function(t){var e=this,a=function(){t.$constructor?t.$constructor.apply(this,arguments):e.apply(this,arguments)};return r[We](a[pi],t),a[We]=this[We],a.superCall=i,a[z]=n,r[Me](a,this),a.superClass=e,a}},a.enableClassManagement=function(t,i){function n(t){var e=a[t.main];return e&&e[s]||(e=a[t.main]={},e[s]=!0),e}i=i||{};var a={};if(t.registerClass=function(t,i){if(i)if(e(i),i=u(i),i.sub){if(i.sub!==s){var r=n(i);r[i.sub]=t}}else a[i.main]=t;return t},t.getClass=function(t,e,i){var n=a[t];if(n&&n[s]&&(n=e?n[e]:null),i&&!n)throw new Error(e?"Component "+t+"."+(e||"")+" not exists. Load it first.":t+".type should be specified.");return n},t.getClassesByMainType=function(t){t=u(t);var e=[],i=a[t.main];return i&&i[s]?r.each(i,function(t,i){i!==s&&e.push(t)}):e.push(i),e},t.hasClass=function(t){return t=u(t),!!a[t.main]},t.getAllClassMainTypes=function(){var t=[];return r.each(a,function(e,i){t.push(i)}),t},t.hasSubTypes=function(t){t=u(t);var e=a[t.main];return e&&e[s]},t.parseClassType=u,i.registerWhenExtend){var o=t[We];o&&(t[We]=function(e){var i=o.call(this,e);return t.registerClass(i,e.type)})}return t},a.setReadOnly=function(){},a}),e("echarts/model/mixin/areaStyle",[$i,"./makeStyleMapper"],function(t){return{getAreaStyle:t("./makeStyleMapper")([["fill","color"],[r],[n],[i],[bi],["shadowColor"]])}}),e("echarts/model/mixin/itemStyle",[$i,"./makeStyleMapper"],function(t){var e=t("./makeStyleMapper")([["fill","color"],[ce,"borderColor"],[he,"borderWidth"],[bi],[r],[n],[i],["shadowColor"],["textPosition"],[Ei]]);return{getItemStyle:function(t,i){var n=e.call(this,t,i),r=this.getBorderLineDash();return r&&(n.lineDash=r),n},getBorderLineDash:function(){var t=this.get("borderType");return"solid"===t||null==t?null:"dashed"===t?[5,5]:[1,1]}}}),e("echarts/component/axisPointer/axisTrigger",[$i,Yi,O,"./modelHelper","./findPointFromSeries"],function(t){function e(t,e,n,f,p,v,x,_,b){f=f||{},n&&null!=n[0]&&null!=n[1]||(n=m({seriesIndex:f[Ve],dataIndex:f[ii]},v).point);var w=t.axesInfo,M="leave"===e||d(n),S={},T={},P={list:[],map:{}},A=[],C={showPointer:y(r,T),showTooltip:y(a,P),highlight:y(o,A)};g(t.coordSysMap,function(e,r){var a=e.containPoint(n);g(t.coordSysAxesInfo[r],function(t){var e=t.axis;M||!a||c(f,e)||i(t,e.pointToData(n),C,!1,S)})});var L={};return g(w,function(t,e){var i=t.linkGroup;i&&!T[e]&&g(i.axesInfo,function(e,n){var r=T[n];if(e!==t&&r){var a=r.value;i.mapper&&(a=t.axis.scale.parse(i.mapper(a,h(e),h(t)))),L[t.key]=a}})}),g(L,function(t,e){i(w[e],t,C,!0,S)}),s(T,w),l(P,n,_,p),u(A,p,x,b),S}function i(t,e,i,r,a){var o=t.axis;if(!o.scale.isBlank()&&o.containData(e)){if(!t.involveSeries)return void i.showPointer(t,e);var s=n(e,t),l=s.payloadBatch,u=s.snapToValue;l[0]&&null==a[Ve]&&f[We](a,l[0]),!r&&t.snap&&o.containData(u)&&null!=u&&(e=u),i[Ze](Ze,l),i.showPointer(t,e,l),i.showTooltip(t,s,u)}}function n(t,e){var i=e.axis,n=i.dim,r=t,a=[],o=Number.MAX_VALUE,s=-1;return g(e.seriesModels,function(e){var l,u,c=e.coordDimToDataDim(n);if(e.getAxisTooltipData){var h=e.getAxisTooltipData(c,t,i);u=h.dataIndices,l=h.nestestValue}else{if(u=e[Fi]().indicesOfNearest(c[0],t,!1,i.type===te?.5:null),!u[ri])return;l=e[Fi]().get(c[0],u[0])}if(null!=l&&isFinite(l)){var d=t-l,f=Math.abs(d);o>=f&&((o>f||d>=0&&0>s)&&(o=f,s=d,r=l,a[ri]=0),g(u,function(t){a.push({seriesIndex:e[Ve],dataIndexInside:t,dataIndex:e[Fi]()[V](t)})}))}}),{payloadBatch:a,snapToValue:r}}function r(t,e,i,n){t[e.key]={value:i,payloadBatch:n}}function a(t,e,i,n){var r=i.payloadBatch,a=e.axis,o=a.model,s=e.axisPointerModel;if(e.triggerTooltip&&r[ri]){var l=e.coordSys.model,u=v.makeKey(l),c=t.map[u];c||(c=t.map[u]={coordSysId:l.id,coordSysIndex:l[Fe],coordSysType:l.type,coordSysMainType:l[Ye],dataByAxis:[]},t.list.push(c)),c.dataByAxis.push({axisDim:a.dim,axisIndex:o[Fe],axisType:o.type,axisId:o.id,value:n,valueLabelOpt:{precision:s.get("label.precision"),formatter:s.get("label.formatter")},seriesDataIndices:r.slice()})}}function o(t,e,i){t.push.apply(t,i)}function s(t,e){g(e,function(e,i){var n=e.axisPointerModel[k],r=t[i];r?(!e.useHandle&&(n.status="show"),n.value=r.value,n.seriesDataIndices=(r.payloadBatch||[]).slice()):!e.useHandle&&(n.status="hide")})}function l(t,e,i,n){if(d(e)||!t.list[ri])return void n({type:"hideTip"});var r=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};n({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:i,dataIndexInside:r.dataIndexInside,dataIndex:r[ii],seriesIndex:r[Ve],dataByCoordSys:t.list})}function u(t,e,i,n){var r=i.getZr();n="lastHighlights"+(n||"");var a=x(r)[n]||{},o=x(r)[n]={};f.each(t,function(t){var e=t[Ve]+" | "+t[ii];o[e]=t});var s=[],l=[];f.each(a,function(t,e){!o[e]&&l.push(t)}),f.each(o,function(t,e){!a[e]&&s.push(t)}),l[ri]&&i[qe]({type:"downplay",escapeConnect:!0,batch:l}),s[ri]&&i[qe]({type:"highlight",escapeConnect:!0,batch:s})}function c(t,e){var i=1;return g(t,function(t,e){i&=!/^.+(AxisId|AxisName|AxisIndex)$/.test(e)}),!i&&g([["AxisId","id"],["AxisIndex",Fe],["AxisName","name"]],function(n){var r=p.normalizeToArray(t[e.dim+n[0]]);i|=f[ni](r,e.model[n[1]])>=0}),!i}function h(t){var e=t.axis.model,i={},n=i.axisDim=t.axis.dim;return i.axisIndex=i[n+"AxisIndex"]=e[Fe],i.axisName=i[n+"AxisName"]=e.name,i.axisId=i[n+"AxisId"]=e.id,i}function d(t){return null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}var f=t(Yi),p=t(O),v=t("./modelHelper"),m=t("./findPointFromSeries"),g=f.each,y=f.curry,x=p.makeGetter();return e}),e("echarts/component/axisPointer/modelHelper",[$i,Yi,"../../model/Model"],function(t){function e(t,e,n){var a=e[ke]("tooltip"),s=e[ke]("axisPointer"),l=s.get("link",!0)||[],h=[];u(n.getCoordinateSystems(),function(n){function f(a,u,c){var f=c.model[Ni]("axisPointer",s),p=f.get("show");if(p&&("auto"!==p||a||o(f))){null==u&&(u=f.get("triggerTooltip")),f=a?i(c,g,s,e,a,u):f;var m=f.get("snap"),y=d(c.model),x=u||m||c.type===te,_=t.axesInfo[y]={key:y,axis:c,coordSys:n,axisPointerModel:f,triggerTooltip:u,involveSeries:x,snap:m,useHandle:o(f),seriesModels:[]};v[y]=_,t.seriesInvolved|=x;var b=r(l,c);if(null!=b){var w=h[b]||(h[b]={axesInfo:{}});w.axesInfo[y]=_,w.mapper=l[b].mapper,_.linkGroup=w}}}if(n.axisPointerEnabled){var p=d(n.model),v=t.coordSysAxesInfo[p]={};t.coordSysMap[p]=n;var m=n.model,g=m[Ni]("tooltip",a);if(u(n.getAxes(),c(f,!1,null)),n.getTooltipAxes&&a&&g.get("show")){var y="axis"===g.get(Ge),x="cross"===g.get("axisPointer.type"),_=n.getTooltipAxes(g.get("axisPointer.axis"));(y||x)&&u(_.baseAxes,c(f,x?"cross":!0,y)),x&&u(_.otherAxes,c(f,"cross",!1))}}})}function i(t,e,i,n,r,a){var o=e[Ni]("axisPointer"),c={};u(["type","snap","lineStyle","shadowStyle","label",hi,"animationDurationUpdate","animationEasingUpdate","z"],function(t){c[t]=s.clone(o.get(t))}),c.snap=t.type!==te&&!!a,"cross"===o.get("type")&&(c.type="line");var h=c.label||(c.label={});if(null==h.show&&(h.show=!1),"cross"===r&&(h.show=!0,!a)){var d=c.lineStyle=o.get("crossStyle");d&&s[qi](h[Bi]||(h[Bi]={}),d[Bi])}return t.model[Ni]("axisPointer",new l(c,i,n))}function n(t,e){e[$e](function(e){var i=e[Wi],n=e.get("tooltip.trigger",!0);i&&"none"!==n&&n!==!1&&"item"!==n&&e.get("axisPointer.show",!0)!==!1&&u(t.coordSysAxesInfo[d(i.model)],function(t){var n=t.axis;i[Q](n.dim)===n&&(t.seriesModels.push(e),null==t.seriesDataCount&&(t.seriesDataCount=0),t.seriesDataCount+=e[Fi]().count())})},this)}function r(t,e){for(var i=e.model,n=e.dim,r=0;r=0||t===e}function o(t){return!!t.get("handle.show")}var s=t(Yi),l=t("../../model/Model"),u=s.each,c=s.curry,h={};h.collect=function(t,i){var r={axesInfo:{},seriesInvolved:!1,coordSysAxesInfo:{},coordSysMap:{}};return e(r,t,i),r.seriesInvolved&&n(r,t),r},h.fixValue=function(t){var e=h.getAxisInfo(t);if(e){var i=e.axisPointerModel,n=e.axis.scale,r=i[k],a=i.get("status"),s=i.get("value");null!=s&&(s=n.parse(s));var l=o(i);null==a&&(r.status=l?"show":"hide");var u=n[me]().slice();u[0]>u[1]&&u[A](),(null==s||s>u[1])&&(s=u[1]),s=0)&&i({type:"updateAxisPointer",currTrigger:t,x:e&&e[f],y:e&&e[d]})})},remove:function(t,n){e.disopse(n.getZr(),"axisPointer"),i[z](this._model,Ue,arguments)},dispose:function(t,n){e.unregister("axisPointer",n),i[z](this._model,He,arguments)}})}),e("echarts/component/marker/MarkerModel",[$i,O,Yi,_i,p,q],function(t){function e(t){i.defaultEmphasis(t.label,i.LABEL_OPTIONS)}var i=t(O),n=t(Yi),r=t(_i),a=t(p),o=a.addCommas,s=a.encodeHTML,l=t(q)[Hi]({type:"marker",dependencies:[je,"grid","polar","geo"],init:function(t,e,i,n){this[y](t,i),this[D](t,i,n.createdBySelf,!0)},isAnimationEnabled:function(){if(r.node)return!1;var t=this.__hostSeries;return this[oe](hi)&&t&&t.isAnimationEnabled()},mergeOption:function(t,i,r,a){var o=this.constructor,s=this[Ye]+"Model";r||i[$e](function(t){var r=t.get(this[Ye]),l=t[s];return r&&r.data?(l?l[D](r,i,!0):(a&&e(r),n.each(r.data,function(t){t instanceof Array?(e(t[0]),e(t[1])):e(t)}),l=new o(r,this,i),n[We](l,{mainType:this[Ye],seriesIndex:t[Ve],name:t.name,createdBySelf:!0}),l.__hostSeries=t),void(t[s]=l)):void(t[s]=null)},this)},formatTooltip:function(t){var e=this[Fi](),i=this[b](t),r=n[Ce](i)?n.map(i,o).join(", "):o(i),a=e[R](t),l=s(this.name);return(null!=i||a)&&(l+="
"),a&&(l+=s(a),null!=i&&(l+=" : ")),null!=i&&(l+=s(r)),l},getData:function(){return this._data},setData:function(t){this._data=t}});return n.mixin(l,i.dataFormatMixin),l}),e("echarts/model/mixin/boxLayout",[$i],function(){return{getBoxLayoutParams:function(){return{left:this.get("left"),top:this.get("top"),right:this.get("right"),bottom:this.get(Si),width:this.get("width"),height:this.get(zi)}}}}),e("echarts/util/component",[$i,Yi,"./clazz"],function(t){var e=t(Yi),i=t("./clazz"),n=i.parseClassType,r=0,a={},o="_";return a.getUID=function(t){return[t||"",r++,Math.random()].join(o)},a.enableSubTypeDefaulter=function(t){var e={};return t.registerSubTypeDefaulter=function(t,i){t=n(t),e[t.main]=i},t.determineSubType=function(i,r){var a=r.type;if(!a){var o=n(i).main;t.hasSubTypes(i)&&e[o]&&(a=e[o](r))}return a},t},a.enableTopologicalTravel=function(t,i){function n(t){var n={},o=[];return e.each(t,function(s){var l=r(n,s),u=l.originalDeps=i(s),c=a(u,t);l.entryCount=c[ri],0===l.entryCount&&o.push(s),e.each(c,function(t){e[ni](l.predecessor,t)<0&&l.predecessor.push(t);var i=r(n,t);e[ni](i.successor,t)<0&&i.successor.push(s)})}),{graph:n,noEntryList:o}}function r(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}function a(t,i){var n=[];return e.each(t,function(t){e[ni](i,t)>=0&&n.push(t)}),n}t.topologicalTravel=function(t,i,r,a){function o(t){u[t].entryCount--,0===u[t].entryCount&&c.push(t)}function s(t){h[t]=!0,o(t)}if(t[ri]){var l=n(i),u=l.graph,c=l.noEntryList,h={};for(e.each(t,function(t){h[t]=!0});c[ri];){var d=c.pop(),f=u[d],p=!!h[d];p&&(r.call(a,d,f.originalDeps.slice()),delete h[d]),e.each(f.successor,p?s:o)}e.each(h,function(){throw new Error("Circle dependency may exists")})}}},a}),e("zrender/core/PathProxy",[$i,"./curve","./vector","./bbox","./BoundingRect","../config"],function(t){var e=t("./curve"),i=t("./vector"),n=t("./bbox"),r=t("./BoundingRect"),a=t("../config").devicePixelRatio,o={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},s=[],u=[],c=[],h=[],d=Math.min,f=Math.max,p=Math.cos,v=Math.sin,m=Math.sqrt,y=Math.abs,x=typeof Float32Array!=g,_=function(t){this._saveData=!t,this._saveData&&(this.data=[]),this._ctx=null};return _[pi]={constructor:_,_xi:0,_yi:0,_x0:0,_y0:0,_ux:0,_uy:0,_len:0,_lineDash:null,_dashOffset:0,_dashIdx:0,_dashSum:0,setScale:function(t,e){this._ux=y(1/a/t)||0,this._uy=y(1/a/e)||0},getContext:function(){return this._ctx},beginPath:function(t){return this._ctx=t,t&&t.beginPath(),t&&(this.dpr=t.dpr),this._saveData&&(this._len=0),this._lineDash&&(this._lineDash=null,this._dashOffset=0),this},moveTo:function(t,e){return this.addData(o.M,t,e),this._ctx&&this._ctx.moveTo(t,e),this._x0=t,this._y0=e,this._xi=t,this._yi=e,this},lineTo:function(t,e){var i=y(t-this._xi)>this._ux||y(e-this._yi)>this._uy||this._len<5;return this.addData(o.L,t,e),this._ctx&&i&&(this._needsDash()?this._dashedLineTo(t,e):this._ctx.lineTo(t,e)),i&&(this._xi=t,this._yi=e),this},bezierCurveTo:function(t,e,i,n,r,a){return this.addData(o.C,t,e,i,n,r,a),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,i,n,r,a):this._ctx.bezierCurveTo(t,e,i,n,r,a)),this._xi=r,this._yi=a,this},quadraticCurveTo:function(t,e,i,n){return this.addData(o.Q,t,e,i,n),this._ctx&&(this._needsDash()?this._dashedQuadraticTo(t,e,i,n):this._ctx.quadraticCurveTo(t,e,i,n)),this._xi=i,this._yi=n,this},arc:function(t,e,i,n,r,a){return this.addData(o.A,t,e,i,i,n,r-n,0,a?0:1),this._ctx&&this._ctx.arc(t,e,i,n,r,a),this._xi=p(r)*i+t,this._yi=v(r)*i+t,this},arcTo:function(t,e,i,n,r){return this._ctx&&this._ctx.arcTo(t,e,i,n,r),this},rect:function(t,e,i,n){return this._ctx&&this._ctx.rect(t,e,i,n),this.addData(o.R,t,e,i,n),this},closePath:function(){this.addData(o.Z);var t=this._ctx,e=this._x0,i=this._y0;return t&&(this._needsDash()&&this._dashedLineTo(e,i),t.closePath()),this._xi=e,this._yi=i,this},fill:function(t){t&&t.fill(),this.toStatic()},stroke:function(t){t&&t[ce](),this.toStatic()},setLineDash:function(t){if(t instanceof Array){this._lineDash=t,this._dashIdx=0;for(var e=0,i=0;ii;i++)this.data[i]=t[i];this._len=e},appendPath:function(t){t instanceof Array||(t=[t]);for(var e=t[ri],i=0,n=this._len,r=0;e>r;r++)i+=t[r].len();x&&this.data instanceof Float32Array&&(this.data=new Float32Array(n+i));for(var r=0;e>r;r++)for(var a=t[r].data,o=0;oe[ri]&&(this._expandData(),e=this.data);for(var i=0;ia&&(a=r+a),a%=r,v-=a*c,g-=a*h;c>0&&t>=v||0>c&&v>=t||0==c&&(h>0&&e>=g||0>h&&g>=e);)n=this._dashIdx,i=o[n],v+=c*i,g+=h*i,this._dashIdx=(n+1)%y,c>0&&l>v||0>c&&v>l||h>0&&u>g||0>h&&g>u||s[n%2?"moveTo":"lineTo"](c>=0?d(v,t):f(v,t),h>=0?d(g,e):f(g,e));c=v-t,h=g-e,this._dashOffset=-m(c*c+h*h)},_dashedBezierTo:function(t,i,n,r,a,o){var s,l,u,c,h,d=this._dashSum,f=this._dashOffset,p=this._lineDash,v=this._ctx,g=this._xi,y=this._yi,x=e.cubicAt,_=0,b=this._dashIdx,w=p[ri],M=0;for(0>f&&(f=d+f),f%=d,s=0;1>s;s+=.1)l=x(g,t,n,a,s+.1)-x(g,t,n,a,s),u=x(y,i,r,o,s+.1)-x(y,i,r,o,s),_+=m(l*l+u*u);for(;w>b&&(M+=p[b],!(M>f));b++);for(s=(M-f)/_;1>=s;)c=x(g,t,n,a,s),h=x(y,i,r,o,s),b%2?v.moveTo(c,h):v.lineTo(c,h),s+=p[b]/_,b=(b+1)%w;b%2!==0&&v.lineTo(a,o),l=a-c,u=o-h,this._dashOffset=-m(l*l+u*u)},_dashedQuadraticTo:function(t,e,i,n){var r=i,a=n;i=(i+2*t)/3,n=(n+2*e)/3,t=(this._xi+2*t)/3,e=(this._yi+2*e)/3,this._dashedBezierTo(t,e,i,n,r,a)},toStatic:function(){var t=this.data;t instanceof Array&&(t[ri]=this._len,x&&(this.data=new Float32Array(t)))},getBoundingRect:function(){s[0]=s[1]=c[0]=c[1]=Number.MAX_VALUE,u[0]=u[1]=h[0]=h[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,a=0,l=0,d=0,f=0;ff;){var m=u[f++];switch(1==f&&(n=u[f],r=u[f+1],e=n,i=r),m){case o.M:e=n=u[f++],i=r=u[f++],t.moveTo(n,r);break;case o.L:a=u[f++],s=u[f++],(y(a-n)>c||y(s-r)>h||f===d-1)&&(t.lineTo(a,s),n=a,r=s);break;case o.C:t.bezierCurveTo(u[f++],u[f++],u[f++],u[f++],u[f++],u[f++]),n=u[f-2],r=u[f-1];break;case o.Q:t.quadraticCurveTo(u[f++],u[f++],u[f++],u[f++]),n=u[f-2],r=u[f-1];break;case o.A:var g=u[f++],x=u[f++],_=u[f++],b=u[f++],w=u[f++],M=u[f++],S=u[f++],T=u[f++],P=_>b?_:b,A=_>b?1:_/b,C=_>b?b/_:1,L=Math.abs(_-b)>.001,I=w+M;L?(t.translate(g,x),t[l](S),t.scale(A,C),t.arc(0,0,P,w,I,1-T),t.scale(1/A,1/C),t[l](-S),t.translate(-g,-x)):t.arc(g,x,P,w,I,1-T),1==f&&(e=p(w)*_+g,i=v(w)*b+x),n=p(I)*_+g,r=v(I)*b+x;break;case o.R:e=n=u[f],i=r=u[f+1],t.rect(u[f++],u[f++],u[f++],u[f++]);break;case o.Z:t.closePath(),n=e,r=i}}}},_.CMD=o,_ +}),e("zrender/tool/transformPath",[$i,"../core/PathProxy","../core/vector"],function(t){function e(t,e){var n,l,u,c,h,d,f=t.data,p=i.M,v=i.C,m=i.L,g=i.R,y=i.A,x=i.Q;for(u=0,c=0;uh;h++){var d=a[h];d[0]=f[u++],d[1]=f[u++],r(d,d,e),f[c++]=d[0],f[c++]=d[1]}}}var i=t("../core/PathProxy").CMD,n=t("../core/vector"),r=n[de],a=[[],[],[]],o=Math.sqrt,s=Math.atan2;return e}),e("zrender/graphic/Displayable",[$i,o,"./Style","../Element","./mixin/RectText"],function(t){function e(t){t=t||{},r.call(this,t);for(var e in t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new n(t.style),this._rect=null,this.__clipPaths=[]}var i=t(o),n=t("./Style"),r=t("../Element"),s=t("./mixin/RectText");return e[pi]={constructor:e,type:"displayable",__dirty:!0,invisible:!1,z:0,z2:0,zlevel:0,draggable:!1,dragging:!1,silent:!1,culling:!1,cursor:"pointer",rectHover:!1,progressive:-1,beforeBrush:function(){},afterBrush:function(){},brush:function(){},getBoundingRect:function(){},contain:function(t,e){return this.rectContain(t,e)},traverse:function(t,e){t.call(e,this)},rectContain:function(t,e){var i=this.transformCoordToLocal(t,e),n=this[Oi]();return n[xe](i[0],i[1])},dirty:function(){this[a]=!0,this._rect=null,this.__zr&&this.__zr.refresh()},animateStyle:function(t){return this.animate("style",t)},attrKV:function(t,e){"style"!==t?r[pi].attrKV.call(this,t,e):this.style.set(e)},setStyle:function(t,e){return this.style.set(t,e),this.dirty(!1),this},useStyle:function(t){return this.style=new n(t),this.dirty(!1),this}},i[Me](e,r),i.mixin(e,s),e}),e("zrender/graphic/Pattern",[$i],function(){var t=function(t,e){this.image=t,this.repeat=e,this.type="pattern"};return t[pi].getCanvasPattern=function(t){return t.createPattern(this.image,this.repeat||"repeat")},t}),e("zrender/contain/path",[$i,"../core/PathProxy","./line","./cubic","./quadratic","./arc","./util","../core/curve","./windingLine"],function(t){function e(t,e){return Math.abs(t-e)e&&c>r&&c>o&&c>l||e>c&&r>c&&o>c&&l>c)return 0;var h=f.cubicRootAt(e,r,o,l,c,y);if(0===h)return 0;for(var d,p,v=0,m=-1,g=0;h>g;g++){var _=y[g],b=0===_||1===_?.5:1,w=f.cubicAt(t,n,a,s,_);u>w||(0>m&&(m=f.cubicExtrema(e,r,o,l,x),x[1]1&&i(),d=f.cubicAt(e,r,o,l,x[0]),m>1&&(p=f.cubicAt(e,r,o,l,x[1]))),v+=2==m?_d?b:-b:_p?b:-b:p>l?b:-b:_d?b:-b:d>l?b:-b)}return v}function r(t,e,i,n,r,a,o,s){if(s>e&&s>n&&s>a||e>s&&n>s&&a>s)return 0;var l=f.quadraticRootAt(e,n,a,s,y);if(0===l)return 0;var u=f.quadraticExtremum(e,n,a);if(u>=0&&1>=u){for(var c=0,h=f.quadraticAt(e,n,a,u),d=0;l>d;d++){var p=0===y[d]||1===y[d]?.5:1,v=f.quadraticAt(t,i,r,y[d]);o>v||(c+=y[d]h?p:-p:h>a?p:-p)}return c}var p=0===y[0]||1===y[0]?.5:1,v=f.quadraticAt(t,i,r,y[0]);return o>v?0:e>a?p:-p}function a(t,e,i,n,r,a,o,s){if(s-=e,s>i||-i>s)return 0;var l=Math.sqrt(i*i-s*s);y[0]=-l,y[1]=l;var u=Math.abs(n-r);if(1e-4>u)return 0;if(1e-4>u%m){n=0,r=m;var c=a?1:-1;return o>=y[0]+t&&o<=y[1]+t?c:0}if(a){var l=n;n=d(r),r=d(l)}else n=d(n),r=d(r);n>r&&(r+=m);for(var h=0,f=0;2>f;f++){var p=y[f];if(p+t>o){var v=Math.atan2(s,p),c=a?1:-1;0>v&&(v=m+v),(v>=n&&r>=v||v+m>=n&&r>=v+m)&&(v>Math.PI/2&&v<1.5*Math.PI&&(c=-c),h+=c)}}return h}function o(t,i,o,l,d){for(var f=0,m=0,g=0,y=0,x=0,_=0;_1&&(o||(f+=p(m,g,y,x,l,d))),1==_&&(m=t[_],g=t[_+1],y=m,x=g),b){case s.M:y=t[_++],x=t[_++],m=y,g=x;break;case s.L:if(o){if(v(m,g,t[_],t[_+1],i,l,d))return!0}else f+=p(m,g,t[_],t[_+1],l,d)||0;m=t[_++],g=t[_++];break;case s.C:if(o){if(u.containStroke(m,g,t[_++],t[_++],t[_++],t[_++],t[_],t[_+1],i,l,d))return!0}else f+=n(m,g,t[_++],t[_++],t[_++],t[_++],t[_],t[_+1],l,d)||0;m=t[_++],g=t[_++];break;case s.Q:if(o){if(c.containStroke(m,g,t[_++],t[_++],t[_],t[_+1],i,l,d))return!0}else f+=r(m,g,t[_++],t[_++],t[_],t[_+1],l,d)||0;m=t[_++],g=t[_++];break;case s.A:var w=t[_++],M=t[_++],S=t[_++],T=t[_++],P=t[_++],A=t[_++],C=(t[_++],1-t[_++]),L=Math.cos(P)*S+w,I=Math.sin(P)*T+M;_>1?f+=p(m,g,L,I,l,d):(y=L,x=I);var k=(l-w)*T/S+w;if(o){if(h.containStroke(w,M,T,P,P+A,C,i,k,d))return!0}else f+=a(w,M,T,P,P+A,C,k,d);m=Math.cos(P+A)*S+w,g=Math.sin(P+A)*T+M;break;case s.R:y=m=t[_++],x=g=t[_++];var D=t[_++],z=t[_++],L=y+D,I=x+z;if(o){if(v(y,x,L,x,i,l,d)||v(L,x,L,I,i,l,d)||v(L,I,y,I,i,l,d)||v(y,I,y,x,i,l,d))return!0}else f+=p(L,x,L,I,l,d),f+=p(y,I,y,x,l,d);break;case s.Z:if(o){if(v(m,g,y,x,i,l,d))return!0}else f+=p(m,g,y,x,l,d);m=y,g=x}}return o||e(g,x)||(f+=p(m,g,y,x,l,d)||0),0!==f}var s=t("../core/PathProxy").CMD,l=t("./line"),u=t("./cubic"),c=t("./quadratic"),h=t("./arc"),d=t("./util").normalizeRadian,f=t("../core/curve"),p=t("./windingLine"),v=l.containStroke,m=2*Math.PI,g=1e-4,y=[-1,-1,-1],x=[-1,-1];return{contain:function(t,e,i){return o(t,0,!1,e,i)},containStroke:function(t,e,i,n){return o(t,e,!0,i,n)}}}),e("echarts/component/visualMap/ContinuousModel",[$i,"./VisualMapModel",Yi,L],function(t){function e(t,e,i){if(i[0]===i[1])return i.slice();for(var n=200,r=(i[1]-i[0])/n,a=i[0],o=[],s=0;n>=s&&ae[1]&&e[A](),e[0]=Math.max(e[0],t[0]),e[1]=Math.min(e[1],t[1]))},completeVisualOption:function(){i[pi].completeVisualOption.apply(this,arguments),n.each(this.stateList,function(t){var e=this[k].controller[t][w];e&&e[0]!==e[1]&&(e[0]=0)},this)},setSelected:function(t){this[k].range=t.slice(),this._resetRange()},getSelected:function(){var t=this[me](),e=r.asc((this.get("range")||[]).slice());return e[0]>t[1]&&(e[0]=t[1]),e[1]>t[1]&&(e[1]=t[1]),e[0]=i[1]||t<=e[1])?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],r=i[Fi]();r.each(this.getDataDimension(r),function(e,i){t[0]<=e&&e<=t[1]&&n.push(i)},!0,this),e.push({seriesId:i.id,dataIndex:n})},this),e},getVisualMeta:function(t){function i(e,i){a.push({value:e,color:t(e,i)})}for(var n=e(this,"outOfRange",this[me]()),r=e(this,"inRange",this[k].range.slice()),a=[],o=0,s=0,l=r[ri],u=n[ri];u>s&&(!r[ri]||n[s]<=r[0]);s++)n[s]o;o++,c=0)c&&a[ri]&&i(r[o],"outOfRange"),i(r[o],"inRange");for(var c=1;u>s;s++)(!r[ri]||r[r[ri]-1]0:t.splitNumber>0)&&!t.calculable?"piecewise":"continuous"})}),e("echarts/component/visualMap/visualEncoding",[$i,q,"../../visual/visualSolution","../../visual/VisualMapping",Yi],function(t){function e(t){t.eachTargetSeries(function(e){var i=e[Fi]();a.applyVisual(t.stateList,t.targetVisuals,i,t.getValueState,t,t.getDataDimension(i))})}function i(t){t[$e](function(e){var i=e[Fi](),r=[];t[oi]("visualMap",function(t){if(t.isTargetSeries(e)){var a=t.getVisualMeta(s.bind(n,null,e,t))||{stops:[],outerColors:[]};a.dimension=t.getDataDimension(i),r.push(a)}}),e[Fi]().setVisual("visualMeta",r)})}function n(t,e,i,n){function r(t){return u[t]}function a(t,e){u[t]=e}for(var s=e.targetVisuals[n],l=o.prepareVisualTypes(s),u={color:t[Fi]().getVisual("color")},c=0,h=l[ri];h>c;c++){var d=l[c],f=s[d===bi?"__alphaForOpacity":d];f&&f.applyVisual(i,r,a)}return u.color}var r=t(q),a=t("../../visual/visualSolution"),o=t("../../visual/VisualMapping"),s=t(Yi);r.registerVisual(r.PRIORITY.VISUAL.COMPONENT,function(t){t[oi]("visualMap",function(i){e(i,t)}),i(t)})}),e("echarts/component/visualMap/ContinuousView",[$i,"./VisualMapView",W,Yi,L,"../helper/sliderMove","zrender/graphic/LinearGradient",mi,O,"zrender/core/event"],function(t){function e(t,e,i,n){return new s.Polygon({shape:{points:t},draggable:!!i,cursor:e,drift:i,onmousemove:function(t){g.stop(t.event)},ondragend:n})}function i(t,e){return 0===t?[[0,0],[e,0],[e,-e]]:[[0,0],[e,0],[e,e]]}function n(t,e,i,n){return t?[[0,-M(e,T(i,0))],[A,0],[0,M(e,T(n-i,0))]]:[[0,0],[5,-5],[5,5]]}function r(t,e,i){var n=P/2,r=t.get("hoverLinkDataSize");return r&&(n=y(r,e,i,!0)/2),n}function a(t){return!t.get("realtime")&&t.get("hoverLinkOnHandle")}var o=t("./VisualMapView"),s=t(W),l=t(Yi),u=t(L),h=t("../helper/sliderMove"),p=t("zrender/graphic/LinearGradient"),v=t(mi),m=t(O),g=t("zrender/core/event"),y=u[C],b=l.each,M=Math.min,T=Math.max,P=12,A=6,I=o[We]({type:"visualMap.continuous",init:function(){I[z](this,"init",arguments),this._shapes={},this._dataInterval=[],this._handleEnds=[],this._orient,this._useHandle,this._hoverLinkDataIndices=[],this._dragging,this._hovering},doRender:function(t,e,i,n){n&&"selectDataRange"===n.type&&n.from===this.uid||this._buildView()},_buildView:function(){this.group[Ui]();var t=this.visualMapModel,e=this.group;this._orient=t.get(c),this._useHandle=t.get("calculable"),this._resetInterval(),this._renderBar(e);var i=t.get("text");this._renderEndsText(e,i,0),this._renderEndsText(e,i,1),this._updateView(!0),this.renderBackground(e),this._updateView(),this._enableHoverLinkToSeries(),this._enableHoverLinkFromSeries(),this.positionGroup(e)},_renderEndsText:function(t,e,i){if(e){var n=e[1-i];n=null!=n?n+"":"";var r=this.visualMapModel,a=r.get("textGap"),o=r.itemSize,l=this._shapes.barGroup,u=this._applyTransform([o[0]/2,0===i?-a:o[1]+a],l),c=this._applyTransform(0===i?Si:"top",l),h=this._orient,d=this.visualMapModel.textStyleModel;this.group.add(new s.Text({style:{x:u[0],y:u[1],textVerticalAlign:h===_?Pi:c,textAlign:h===_?c:Ti,text:n,textFont:d[Ri](),fill:d[Vi]()}}))}},_renderBar:function(t){var i=this.visualMapModel,n=this._shapes,r=i.itemSize,a=this._orient,o=this._useHandle,s=v.getItemAlign(i,this.api,r),u=n.barGroup=this._createBarGroup(s);u.add(n.outOfRange=e()),u.add(n.inRange=e(null,o?"move":null,l.bind(this._dragHandle,this,"all",!1),l.bind(this._dragHandle,this,"all",!0)));var c=i.textStyleModel.getTextRect("国"),h=T(c.width,c[zi]);o&&(n.handleThumbs=[],n.handleLabels=[],n.handleLabelPoints=[],this._createHandle(u,0,r,h,a,s),this._createHandle(u,1,r,h,a,s)),this._createIndicator(u,r,h,a),t.add(u)},_createHandle:function(t,n,r,a,o){var u=l.bind(this._dragHandle,this,n,!1),c=l.bind(this._dragHandle,this,n,!0),h=e(i(n,a),"move",u,c);h[Mi][0]=r[0],t.add(h);var d=this.visualMapModel.textStyleModel,f=new s.Text({draggable:!0,drift:u,onmousemove:function(t){g.stop(t.event)},ondragend:c,style:{x:0,y:0,text:"",textFont:d[Ri](),fill:d[Vi]()}});this.group.add(f);var p=[o===_?a/2:1.5*a,o===_?0===n?-(1.5*a):1.5*a:0===n?-a/2:a/2],v=this._shapes;v.handleThumbs[n]=h,v.handleLabelPoints[n]=p,v.handleLabels[n]=f},_createIndicator:function(t,i,n,r){var a=e([[0,0]],"move");a[Mi][0]=i[0],a.attr({invisible:!0,silent:!0}),t.add(a);var o=this.visualMapModel.textStyleModel,l=new s.Text({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textFont:o[Ri](),fill:o[Vi]()}});this.group.add(l);var u=[r===_?n/2:A+3,0],c=this._shapes;c.indicator=a,c.indicatorLabel=l,c.indicatorLabelPoint=u},_dragHandle:function(t,e,i,n){if(this._useHandle){if(this._dragging=!e,!e){var r=this._applyTransform([i,n],this._shapes.barGroup,!0);this._updateInterval(t,r[1]),this._updateView()}e===!this.visualMapModel.get("realtime")&&this.api[qe]({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:this._dataInterval.slice()}),e?!this._hovering&&this._clearHoverLinkToSeries():a(this.visualMapModel)&&this._doHoverLinkToSeries(this._handleEnds[t],!1)}},_resetInterval:function(){var t=this.visualMapModel,e=this._dataInterval=t.getSelected(),i=t[me](),n=[0,t.itemSize[1]];this._handleEnds=[y(e[0],i,n,!0),y(e[1],i,n,!0)]},_updateInterval:function(t,e){e=e||0;var i=this.visualMapModel,n=this._handleEnds;h(e,n,[0,i.itemSize[1]],"all"===t?"rigid":"push",t);var r=i[me](),a=[0,i.itemSize[1]];this._dataInterval=[y(n[0],a,r,!0),y(n[1],a,r,!0)]},_updateView:function(t){var e=this.visualMapModel,i=e[me](),n=this._shapes,r=[0,e.itemSize[1]],a=t?r:this._handleEnds,o=this._createBarVisual(this._dataInterval,i,a,"inRange"),s=this._createBarVisual(i,i,r,"outOfRange");n.inRange[wi]({fill:o.barColor,opacity:o[bi]})[B](S,o.barPoints),n.outOfRange[wi]({fill:s.barColor,opacity:s[bi]})[B](S,s.barPoints),this._updateHandle(a,o)},_createBarVisual:function(t,e,i,n){var r={forceState:n,convertOpacityToAlpha:!0},a=this._makeColorGradient(t,r),o=[this.getControllerVisual(t[0],w,r),this.getControllerVisual(t[1],w,r)],s=this._createBarPoints(i,o);return{barColor:new p(0,0,0,1,a),barPoints:s,handlesColor:[a[0].color,a[a[ri]-1].color]}},_makeColorGradient:function(t,e){var i=100,n=[],r=(t[1]-t[0])/i;n.push({color:this.getControllerVisual(t[0],"color",e),offset:0});for(var a=1;i>a;a++){var o=t[0]+r*a;if(o>t[1])break;n.push({color:this.getControllerVisual(o,"color",e),offset:a/i})}return n.push({color:this.getControllerVisual(t[1],"color",e),offset:1}),n},_createBarPoints:function(t,e){var i=this.visualMapModel.itemSize;return[[i[0]-e[0],t[0]],[i[0],t[0]],[i[0],t[1]],[i[0]-e[1],t[1]]]},_createBarGroup:function(t){var e=this._orient,i=this.visualMapModel.get(J);return new s.Group(e!==_||i?e===_&&i?{scale:t===Si?[-1,1]:[1,1],rotation:-Math.PI/2}:e!==x||i?{scale:"left"===t?[1,1]:[-1,1]}:{scale:"left"===t?[1,-1]:[-1,-1]}:{scale:t===Si?[1,1]:[-1,1],rotation:Math.PI/2})},_updateHandle:function(t,e){if(this._useHandle){var i=this._shapes,n=this.visualMapModel,r=i.handleThumbs,a=i.handleLabels;b([0,1],function(o){var l=r[o];l[wi]("fill",e.handlesColor[o]),l[Mi][1]=t[o];var u=s[de](i.handleLabelPoints[o],s.getTransform(l,this.group));a[o][wi]({x:u[0],y:u[1],text:n.formatValueText(this._dataInterval[o]),textVerticalAlign:"middle",textAlign:this._applyTransform(this._orient===_?0===o?Si:"top":"left",i.barGroup)})},this)}},_showIndicator:function(t,e,i,r){var a=this.visualMapModel,o=a[me](),l=a.itemSize,u=[0,l[1]],c=y(t,o,u,!0),h=this._shapes,d=h.indicator;if(d){d[Mi][1]=c,d.attr("invisible",!1),d[B](S,n(!!i,r,c,l[1]));var f={convertOpacityToAlpha:!0},p=this.getControllerVisual(t,"color",f);d[wi]("fill",p);var v=s[de](h.indicatorLabelPoint,s.getTransform(d,this.group)),m=h.indicatorLabel;m.attr("invisible",!1);var g=this._applyTransform("left",h.barGroup),x=this._orient;m[wi]({text:(i?i:"")+a.formatValueText(e),textVerticalAlign:x===_?g:Pi,textAlign:x===_?Ti:g,x:v[0],y:v[1]})}},_enableHoverLinkToSeries:function(){var t=this;this._shapes.barGroup.on(Re,function(e){if(t._hovering=!0,!t._dragging){var i=t.visualMapModel.itemSize,n=t._applyTransform([e[f],e[d]],t._shapes.barGroup,!0,!0);n[1]=M(T(0,n[1]),i[1]),t._doHoverLinkToSeries(n[1],0<=n[0]&&n[0]<=i[0])}}).on(Ee,function(){t._hovering=!1,!t._dragging&&t._clearHoverLinkToSeries()})},_enableHoverLinkFromSeries:function(){var t=this.api.getZr();this.visualMapModel[k].hoverLink?(t.on(Be,this._hoverLinkFromSeriesMouseOver,this),t.on(Ee,this._hideIndicator,this)):this._clearHoverLinkFromSeries()},_doHoverLinkToSeries:function(t,e){var i=this.visualMapModel,n=i.itemSize;if(i[k].hoverLink){var o=[0,n[1]],s=i[me]();t=M(T(o[0],t),o[1]);var l=r(i,s,o),u=[t-l,t+l],c=y(t,o,s,!0),h=[y(u[0],o,s,!0),y(u[1],o,s,!0)];u[0]o[1]&&(h[1]=1/0),e&&(h[0]===-1/0?this._showIndicator(c,h[1],"< ",l):1/0===h[1]?this._showIndicator(c,h[0],"> ",l):this._showIndicator(c,c,"≈ ",l));var d=this._hoverLinkDataIndices,f=[];(e||a(i))&&(f=this._hoverLinkDataIndices=i.findTargetDataIndices(h));var p=m.compressBatches(d,f);this._dispatchHighDown("downplay",v.convertDataIndex(p[0])),this._dispatchHighDown(Ze,v.convertDataIndex(p[1]))}},_hoverLinkFromSeriesMouseOver:function(t){var e=t[ki],i=this.visualMapModel;if(e&&null!=e[ii]){var n=this[ge].getSeriesByIndex(e[Ve]);if(i.isTargetSeries(n)){var r=n[Fi](e.dataType),a=r.getDimension(i.getDataDimension(r)),o=r.get(a,e[ii],!0);isNaN(o)||this._showIndicator(o,o)}}},_hideIndicator:function(){var t=this._shapes;t.indicator&&t.indicator.attr("invisible",!0),t.indicatorLabel&&t.indicatorLabel.attr("invisible",!0)},_clearHoverLinkToSeries:function(){this._hideIndicator();var t=this._hoverLinkDataIndices;this._dispatchHighDown("downplay",v.convertDataIndex(t)),t[ri]=0},_clearHoverLinkFromSeries:function(){this._hideIndicator();var t=this.api.getZr();t.off(Be,this._hoverLinkFromSeriesMouseOver),t.off(Ee,this._hideIndicator)},_applyTransform:function(t,e,i,n){var r=s.getTransform(e,n?null:this.group);return s[l[Ce](t)?de:"transformDirection"](t,r,i)},_dispatchHighDown:function(t,e){e&&e[ri]&&this.api[qe]({type:t,batch:e})},dispose:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()},remove:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()}});return I}),e("echarts/component/visualMap/visualMapAction",[$i,q],function(t){var e=t(q),i={type:"selectDataRange",event:"dataRangeSelected",update:"update"};e[Pe](i,function(t,e){e[oi]({mainType:"visualMap",query:t},function(e){e.setSelected(t.selected)})})}),e("echarts/scale/Ordinal",[$i,Yi,"./Scale"],function(t){var e=t(Yi),i=t("./Scale"),n=i[pi],r=i[We]({type:"ordinal",init:function(t,e){this._data=t,this[_e]=e||[0,t[ri]-1]},parse:function(t){return typeof t===fi?e[ni](this._data,t):Math.round(t)},contain:function(t){return t=this.parse(t),n[xe].call(this,t)&&null!=this._data[t]},normalize:function(t){return n[ye].call(this,this.parse(t))},scale:function(t){return Math.round(n.scale.call(this,t))},getTicks:function(){for(var t=[],e=this[_e],i=e[0];i<=e[1];)t.push(i),i++;return t},getLabel:function(t){return this._data[t]},count:function(){return this[_e][1]-this[_e][0]+1},unionExtentFromData:function(t,e){this.unionExtent(t[fe](e,!1))},niceTicks:e.noop,niceExtent:e.noop});return r[ti]=function(){return new r},r}),e("echarts/model/mixin/makeStyleMapper",[$i,Yi],function(t){var e=t(Yi);return function(t){for(var i=0;i=0||n&&e[ni](n,o)<0)){var s=this[oe](o);null!=s&&(r[t[a][0]]=s)}}return r}}}),e("zrender/graphic/Style",[$i],function(){function t(t,e,i){var n=null==e.x?0:e.x,r=null==e.x2?1:e.x2,a=null==e.y?0:e.y,o=null==e.y2?0:e.y2;e.global||(n=n*i.width+i.x,r=r*i.width+i.x,a=a*i[zi]+i.y,o=o*i[zi]+i.y);var s=t.createLinearGradient(n,a,r,o);return s}function e(t,e,i){var n=i.width,r=i[zi],a=Math.min(n,r),o=null==e.x?.5:e.x,s=null==e.y?.5:e.y,l=null==e.r?.5:e.r;e.global||(o=o*n+i.x,s=s*r+i.y,l*=a);var u=t.createRadialGradient(o,s,0,o,s,l);return u}var a=[[r,0],[n,0],[i,0],["shadowColor","#000"],["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]],o=function(t){this.extendFrom(t)};o[pi]={constructor:o,fill:"#000000",stroke:null,opacity:1,lineDash:null,lineDashOffset:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,lineWidth:1,strokeNoScale:!1,text:null,textFill:"#000",textStroke:null,textPosition:"inside",textOffset:null,textBaseline:null,textAlign:null,textVerticalAlign:null,textDistance:5,textShadowBlur:0,textShadowOffsetX:0,textShadowOffsetY:0,textTransform:!1,textRotation:0,blend:null,bind:function(t,e,i){for(var n=this,r=i&&i.style,o=!r,s=0;s0},extendFrom:function(t,e){if(t){var i=this;for(var n in t)!t.hasOwnProperty(n)||!e&&i.hasOwnProperty(n)||(i[n]=t[n])}},set:function(t,e){typeof t===fi?this[t]=e:this.extendFrom(t,!0)},clone:function(){var t=new this.constructor;return t.extendFrom(this,!0),t},getGradient:function(i,n,r){for(var a="radial"===n.type?e:t,o=a(i,n,r),s=n[Ke],l=0;l=0?parseFloat(t)/100*e:parseFloat(t):t}var a=t("../../contain/text"),o=t("../../core/BoundingRect"),s=new o,u=function(){};return u[pi]={constructor:u,drawRectText:function(t,o,u){var c=this.style,d=c.text;if(null!=d&&(d+=""),d){t.save();var f,p,v=c.textPosition,m=c.textOffset,g=c.textDistance,y=c[Ei],x=c.textFont||c.font,_=c.textBaseline,b=c.textVerticalAlign;u=u||a[Oi](d,x,y,_);var w=this[h];if(c.textTransform?this.setTransform(t):w&&(s.copy(o),s[de](w),o=s),v instanceof Array){if(f=o.x+e(v[0],o.width),p=o.y+e(v[1],o[zi]),y=y||"left",_=_||"top",b){switch(b){case Pi:p-=u[zi]/2-u.lineHeight/2;break;case Si:p-=u[zi]-u.lineHeight/2;break;default:p+=u.lineHeight/2}_=Pi}}else{var M=a.adjustTextPositionOnRect(v,o,u,g);f=M.x,p=M.y,y=y||M[Ei],_=_||M.textBaseline}m&&(f+=m[0],p+=m[1]),t[Ei]=y||"left",t.textBaseline=_||"alphabetic";var S=c.textFill,T=c.textStroke;S&&(t.fillStyle=S),T&&(t.strokeStyle=T),t.font=x||"12px sans-serif",t[r]=c.textShadowBlur,t.shadowColor=c.textShadowColor||Qe,t[n]=c.textShadowOffsetX,t[i]=c.textShadowOffsetY;var P=d.split("\n");c.textRotation&&(w&&t.translate(w[4],w[5]),t[l](c.textRotation),w&&t.translate(-w[4],-w[5]));for(var A=0;Ar[1]&&(r[1]=e[1])})}),r[1]0?0:0/0);var o=i.getMax(!0);return null!=o&&"dataMax"!==o?e[1]=o:r&&(e[1]=a>0?a-1:0/0),i.get("scale",!0)||(e[0]>0&&(e[0]=0),e[1]<0&&(e[1]=0)),e}function n(t,e){var i=t.getAxisModel(),n=t._percentWindow,r=t._valueWindow;if(n){var o=a.getPixelPrecision(r,[0,500]),s=e||0===n[0]&&100===n[1];i.setRange(s?null:+r[0][I](o),s?null:+r[1][I](o))}}var r=t(Yi),a=t(L),o=t(mi),s=r.each,l=a.asc,u=function(t,e,i,n){this._dimName=t,this._axisIndex=e,this._valueWindow,this._percentWindow,this._dataExtent,this[ge]=n,this._dataZoomModel=i};return u[pi]={constructor:u,hostedBy:function(t){return this._dataZoomModel===t},getDataValueWindow:function(){return this._valueWindow.slice()},getDataPercentWindow:function(){return this._percentWindow.slice()},getTargetSeriesModels:function(){var t=[],e=this[ge];return e[$e](function(i){if(o.isCoordSupported(i.get(Wi))){var n=this._dimName,r=e.queryComponents({mainType:n+"Axis",index:i.get(n+"AxisIndex"),id:i.get(n+"AxisId")})[0];this._axisIndex===(r&&r[Fe])&&t.push(i)}},this),t},getAxisModel:function(){return this[ge][ke](this._dimName+"Axis",this._axisIndex)},getOtherAxisModel:function(){var t,e,i=this._dimName,n=this[ge],r=this.getAxisModel(),a="x"===i||"y"===i;a?(e="gridIndex",t="x"===i?"y":"x"):(e="polarIndex",t="angle"===i?"radius":"angle");var o;return n[oi](t+"Axis",function(t){(t.get(e)||0)===(r.get(e)||0)&&(o=t)}),o},calculateDataWindow:function(t){var e=this._dataExtent,i=this.getAxisModel(),n=i.axis.scale,r=this._dataZoomModel.getRangePropMode(),o=[0,100],u=[t.start,t.end],c=[];return s(["startValue","endValue"],function(e){c.push(null!=t[e]?n.parse(t[e]):null)}),s([0,1],function(t){var i=c[t],s=u[t];"percent"===r[t]?(null==s&&(s=o[t]),i=n.parse(a[C](s,o,e,!0))):s=a[C](i,e,o,!0),c[t]=i,u[t]=s}),{valueWindow:l(c),percentWindow:l(u)}},reset:function(t){if(t===this._dataZoomModel){this._dataExtent=e(this,this._dimName,this.getTargetSeriesModels());var i=this.calculateDataWindow(t[k]);this._valueWindow=i.valueWindow,this._percentWindow=i.percentWindow,n(this)}},restore:function(t){t===this._dataZoomModel&&(this._valueWindow=this._percentWindow=null,n(this,!0))},filterData:function(t){function e(t){return t>=a[0]&&t<=a[1]}if(t===this._dataZoomModel){var i=this._dimName,n=this.getTargetSeriesModels(),r=t.get("filterMode"),a=this._valueWindow,o=this.getOtherAxisModel();t.get("$fromToolbox")&&o&&o.get("type")===te&&(r="empty"),s(n,function(t){var n=t[Fi]();n&&s(t.coordDimToDataDim(i),function(i){"empty"===r?t.setData(n.map(i,function(t){return e(t)?t:0/0})):n.filterSelf(i,e)})})}}},u}),e("echarts/component/dataZoom/helper",[$i,p,Yi],function(t){var e=t(p),i=t(Yi),n={},r=["x","y","z","radius","angle","single"],a=["cartesian2d","polar","singleAxis"];return n.isCoordSupported=function(t){return i[ni](a,t)>=0},n.createNameEach=function(t,n){t=t.slice();var r=i.map(t,e.capitalFirst);n=(n||[]).slice();var a=i.map(n,e.capitalFirst);return function(e,o){i.each(t,function(t,i){for(var s={name:t,capital:r[i]},l=0;l=0}function a(t,r){var a=!1;return e(function(e){i.each(n(t,e)||[],function(t){r.records[e.name][t]&&(a=!0)})}),a}function o(t,r){r.nodes.push(t),e(function(e){i.each(n(t,e)||[],function(t){r.records[e.name][t]=!0})})}return function(i){function n(t){!r(t,s)&&a(t,s)&&(o(t,s),l=!0)}var s={nodes:[],records:{}};if(e(function(t){s.records[t.name]={}}),!i)return s;o(i,s);var l;do l=!1,t(n);while(l);return s}},n}),e("zrender/core/guid",[],function(){var t=2311;return function(){return t++}}),e("zrender/mixin/Animatable",[$i,"../animation/Animator",o,"../core/log"],function(t){var e=t("../animation/Animator"),i=t(o),n=i[we],r=i.isFunction,a=i[ui],s=t("../core/log"),l=function(){this.animators=[]};return l[pi]={constructor:l,animate:function(t,n){var r,a=!1,o=this,l=this.__zr;if(t){var u=t.split("."),c=o;a="shape"===u[0];for(var h=0,d=u[ri];d>h;h++)c&&(c=c[u[h]]);c&&(r=c)}else r=o;if(!r)return void s('Property "'+t+'" is not existed in element '+o.id);var f=o.animators,p=new e(r,n);return p.during(function(){o.dirty(a)}).done(function(){f[Ne](i[ni](f,p),1)}),f.push(p),l&&l[hi].addAnimator(p),p},stopAnimation:function(t){for(var e=this.animators,i=e[ri],n=0;i>n;n++)e[n].stop(t);return e[ri]=0,this},animateTo:function(t,e,i,a,o){function s(){u--,u||o&&o()}n(i)?(o=a,a=i,i=0):r(a)?(o=a,a="linear",i=0):r(i)?(o=i,i=0):r(e)?(o=e,e=500):e||(e=500),this[si](),this._animateToShallow("",this,t,e,i,a,o);var l=this.animators.slice(),u=l[ri];u||o&&o();for(var c=0;c0&&this.animate(t,!1).when(null==r?500:r,s).delay(o||0),this}},l}),e("echarts/coord/cartesian/axisLabelInterval",[$i,Yi,"../axisHelper"],function(t){var e=t(Yi),i=t("../axisHelper");return function(t){var n=t.model,r=n[Ni]("axisLabel"),a=r.get(m);return t.type!==te||"auto"!==a?"auto"===a?0:a:i.getAxisLabelInterval(e.map(t.scale[ve](),t[Y],t),n.getFormattedLabels(),r[Ni](Bi)[Ri](),t.isHorizontal())}}),e("echarts/chart/pie/PieView",[$i,W,Yi,"../../view/Chart"],function(t){function e(t,e,n,r){var a=e[Fi](),o=this[ii],s=a[R](o),l=e.get("selectedOffset");r[qe]({type:"pieToggleSelect",from:t,name:s,seriesId:e.id}),a.each(function(t){i(a[F](t),a[N](t),e.isSelected(a[R](t)),l,n)})}function i(t,e,i,n,r){var a=(e.startAngle+e.endAngle)/2,o=Math.cos(a),s=Math.sin(a),l=i?n:0,u=[o*l,s*l]; +r?t.animate().when(200,{position:u}).start("bounceOut"):t.attr(Mi,u)}function n(t,e){function i(){o[ai]=o.hoverIgnore,s[ai]=s.hoverIgnore}function n(){o[ai]=o.normalIgnore,s[ai]=s.normalIgnore}a.Group.call(this);var r=new a.Sector({z2:2}),o=new a.Polyline,s=new a.Text;this.add(r),this.add(o),this.add(s),this.updateData(t,e,!0),this.on(le,i).on(se,n).on(Be,i).on(Ee,n)}function r(t,e,i,n,r){var a=n[Ni](Bi),s=r===ae||"inner"===r;return{fill:a[Vi]()||(s?"#fff":t[ei](e,"color")),opacity:t[ei](e,bi),textFont:a[Ri](),text:o[j](t.hostModel.getFormattedLabel(e,i),t[R](e))}}var a=t(W),o=t(Yi),s=n[pi];s.updateData=function(t,e,n){function r(){l[si](!0),l.animateTo({shape:{r:h.r+10}},300,"elasticOut")}function s(){l[si](!0),l.animateTo({shape:{r:h.r}},300,"elasticOut")}var l=this.childAt(0),u=t.hostModel,c=t[Z](e),h=t[N](e),d=o[We]({},h);if(d.label=null,n){l[B](d);var f=u[oe]("animationType");"scale"===f?(l.shape.r=h.r0,a.initProps(l,{shape:{r:h.r}},u,e)):(l.shape.endAngle=h.startAngle,a[ne](l,{shape:{endAngle:h.endAngle}},u,e))}else a[ne](l,{shape:d},u,e);var p=c[Ni]("itemStyle"),v=t[ei](e,"color");l.useStyle(o[qi]({lineJoin:"bevel",fill:v},p[Ni](se)[Gi]())),l.hoverStyle=p[Ni](le)[Gi](),i(this,t[N](e),c.get("selected"),u.get("selectedOffset"),u.get(hi)),l.off(Be).off(Ee).off(le).off(se),c.get("hoverAnimation")&&u.isAnimationEnabled()&&l.on(Be,r).on(Ee,s).on(le,r).on(se,s),this._updateLabel(t,e),a[ue](this)},s._updateLabel=function(t,e){var i=this.childAt(1),n=this.childAt(2),o=t.hostModel,s=t[Z](e),l=t[N](e),c=l.label,h=t[ei](e,"color");a[ne](i,{shape:{points:c.linePoints||[[c.x,c.y],[c.x,c.y],[c.x,c.y]]}},o,e),a[ne](n,{style:{x:c.x,y:c.y}},o,e),n.attr({style:{textVerticalAlign:c.verticalAlign,textAlign:c[Ei],textFont:c.font},rotation:c[ee],origin:[c.x,c.y],z2:10});var d=s[Ni](u),f=s[Ni]("label.emphasis"),p=s[Ni]("labelLine.normal"),v=s[Ni]("labelLine.emphasis"),m=d.get(Mi)||f.get(Mi);n[wi](r(t,e,se,d,m)),n[ai]=n.normalIgnore=!d.get("show"),n.hoverIgnore=!f.get("show"),i[ai]=i.normalIgnore=!p.get("show"),i.hoverIgnore=!v.get("show"),i[wi]({stroke:h,opacity:t[ei](e,bi)}),i[wi](p[Ni]("lineStyle")[P]()),n.hoverStyle=r(t,e,le,f,m),i.hoverStyle=v[Ni]("lineStyle")[P]();var g=p.get("smooth");g&&g===!0&&(g=.4),i[B]({smooth:g})},o[Me](n,a.Group);var l=t("../../view/Chart")[We]({type:"pie",init:function(){var t=new a.Group;this._sectorGroup=t},render:function(t,i,r,a){if(!a||a.from!==this.uid){var s=t[Fi](),l=this._data,u=this.group,c=i.get(hi),h=!l,d=t.get("animationType"),f=o.curry(e,this.uid,t,c,r),p=t.get("selectedMode");if(s.diff(l).add(function(t){var e=new n(s,t);h&&"scale"!==d&&e.eachChild(function(t){t[si](!0)}),p&&e.on("click",f),s[G](t,e),u.add(e)})[Je](function(t,e){var i=l[F](e);i.updateData(s,t),i.off("click"),p&&i.on("click",f),u.add(i),s[G](t,i)})[Ue](function(t){var e=l[F](t);u[Ue](e)}).execute(),c&&h&&s.count()>0&&"scale"!==d){var v=s[N](0),m=Math.max(r[Li](),r[Ci]())/2,g=o.bind(u.removeClipPath,u);u.setClipPath(this._createClipPath(v.cx,v.cy,m,v.startAngle,v.clockwise,g,t))}this._data=s}},dispose:function(){},_createClipPath:function(t,e,i,n,r,o,s){var l=new a.Sector({shape:{cx:t,cy:e,r0:0,r:i,startAngle:n,endAngle:n,clockwise:r}});return a.initProps(l,{shape:{endAngle:n+(r?1:-1)*Math.PI*2}},s,o),l},containPoint:function(t,e){var i=e[Fi](),n=i[N](0);if(n){var r=t[0]-n.cx,a=t[1]-n.cy,o=Math.sqrt(r*r+a*a);return o<=n.r&&o>=n.r0}}});return l}),e("zrender/animation/Animator",[$i,"./Clip","../tool/color",o],function(t){function e(t,e){return t[e]}function i(t,e,i){t[e]=i}function n(t,e,i){return(e-t)*i+t}function r(t,e,i){return i>.5?e:t}function a(t,e,i,r,a){var o=t[ri];if(1==a)for(var s=0;o>s;s++)r[s]=n(t[s],e[s],i);else for(var l=t[0][ri],s=0;o>s;s++)for(var u=0;l>u;u++)r[s][u]=n(t[s][u],e[s][u],i)}function s(t,e,i){var n=t[ri],r=e[ri];if(n!==r){var a=n>r;if(a)t[ri]=r;else for(var o=n;r>o;o++)t.push(1===i?e[o]:y.call(e[o]))}for(var s=t[0]&&t[0][ri],o=0;ol;l++)isNaN(t[o][l])&&(t[o][l]=e[o][l])}function l(t,e,i){if(t===e)return!0;var n=t[ri];if(n!==e[ri])return!1;if(1===i){for(var r=0;n>r;r++)if(t[r]!==e[r])return!1}else for(var a=t[0][ri],r=0;n>r;r++)for(var o=0;a>o;o++)if(t[r][o]!==e[r][o])return!1;return!0}function u(t,e,i,n,r,a,o,s,l){var u=t[ri];if(1==l)for(var h=0;u>h;h++)s[h]=c(t[h],e[h],i[h],n[h],r,a,o);else for(var d=t[0][ri],h=0;u>h;h++)for(var f=0;d>f;f++)s[h][f]=c(t[h][f],e[h][f],i[h][f],n[h][f],r,a,o)}function c(t,e,i,n,r,a,o){var s=.5*(i-t),l=.5*(n-e);return(2*(e-i)+s+l)*o+(-3*(e-i)-2*s-l)*a+s*r+e}function h(t){if(g(t)){var e=t[ri];if(g(t[0])){for(var i=[],n=0;e>n;n++)i.push(y.call(t[n]));return i}return y.call(t)}return t}function d(t){return t[0]=Math.floor(t[0]),t[1]=Math.floor(t[1]),t[2]=Math.floor(t[2]),"rgba("+t.join(",")+")"}function f(t,e,i,o,h){var f=t._getter,m=t._setter,y="spline"===e,x=o[ri];if(x){var _,b=o[0].value,w=g(b),M=!1,S=!1,T=w&&g(b[0])?2:1;o.sort(function(t,e){return t.time-e.time}),_=o[x-1].time;for(var P=[],A=[],C=o[0].value,L=!0,I=0;x>I;I++){P.push(o[I].time/_);var k=o[I].value;if(w&&l(k,C,T)||!w&&k===C||(L=!1),C=k,typeof k==fi){var D=v.parse(k);D?(k=D,M=!0):S=!0}A.push(k)}if(!L){for(var z=A[x-1],I=0;x-1>I;I++)w?s(A[I],z,T):!isNaN(A[I])||isNaN(z)||S||M||(A[I]=z);w&&s(f(t._target,h),z,T);var O,V,R,E,B,N,H=0,F=0;if(M)var G=[0,0,0,0];var Z=function(t,e){var i;if(0>e)i=0;else if(F>e){for(O=Math.min(H+1,x-1),i=O;i>=0&&!(P[i]<=e);i--);i=Math.min(i,x-2)}else{for(i=H;x>i&&!(P[i]>e);i++);i=Math.min(i-1,x-2)}H=i,F=e;var o=P[i+1]-P[i];if(0!==o)if(V=(e-P[i])/o,y)if(E=A[i],R=A[0===i?i:i-1],B=A[i>x-2?x-1:i+1],N=A[i>x-3?x-1:i+2],w)u(R,E,B,N,V,V*V,V*V*V,f(t,h),T);else{var s;if(M)s=u(R,E,B,N,V,V*V,V*V*V,G,1),s=d(G);else{if(S)return r(E,B,V);s=c(R,E,B,N,V,V*V,V*V*V)}m(t,h,s)}else if(w)a(A[i],A[i+1],V,f(t,h),T);else{var s;if(M)a(A[i],A[i+1],V,G,1),s=d(G);else{if(S)return r(A[i],A[i+1],V);s=n(A[i],A[i+1],V)}m(t,h,s)}},q=new p({target:t._target,life:_,loop:t._loop,delay:t._delay,onframe:Z,ondestroy:i});return e&&"spline"!==e&&(q.easing=e),q}}}var p=t("./Clip"),v=t("../tool/color"),m=t(o),g=m.isArrayLike,y=Array[pi].slice,x=function(t,n,r,a){this._tracks={},this._target=t,this._loop=n||!1,this._getter=r||e,this._setter=a||i,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]};return x[pi]={when:function(t,e){var i=this._tracks;for(var n in e)if(e.hasOwnProperty(n)){if(!i[n]){i[n]=[];var r=this._getter(this._target,n);if(null==r)continue;0!==t&&i[n].push({time:0,value:h(r)})}i[n].push({time:t,value:e[n]})}return this},during:function(t){return this._onframeList.push(t),this},pause:function(){for(var t=0;ti;i++)t[i].call(this)},start:function(t){var e,i=this,n=0,r=function(){n--,n||i._doneCallback()};for(var a in this._tracks)if(this._tracks.hasOwnProperty(a)){var o=f(this,t,r,this._tracks[a],a);o&&(this._clipList.push(o),n++,this[hi]&&this[hi].addClip(o),e=o)}if(e){var s=e.onframe;e.onframe=function(t,e){s(t,e);for(var n=0;n1)for(var t in arguments)console.log(arguments[t])}}),e("echarts/coord/cartesian/AxisModel",[$i,"../../model/Component",Yi,"../axisModelCreator","../axisModelCommonMixin"],function(t){function e(t,e){return e.type||(e.data?te:"value")}var i=t("../../model/Component"),n=t(Yi),r=t("../axisModelCreator"),a=i[We]({type:"cartesian2dAxis",axis:null,init:function(){a[z](this,"init",arguments),this.resetRange()},mergeOption:function(){a[z](this,D,arguments),this.resetRange()},restoreData:function(){a[z](this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this[ge].queryComponents({mainType:"grid",index:this[k].gridIndex,id:this[k].gridId})[0]}});n.merge(a[pi],t("../axisModelCommonMixin"));var o={offset:0};return r("x",a,e,o),r("y",a,e,o),a}),e("zrender/animation/Clip",[$i,"./easing"],function(t){function e(t){this._target=t[ki],this._life=t.life||1e3,this._delay=t.delay||0,this._initialized=!1,this.loop=null==t.loop?!1:t.loop,this.gap=t.gap||0,this.easing=t.easing||"Linear",this.onframe=t.onframe,this.ondestroy=t.ondestroy,this.onrestart=t.onrestart,this._pausedTime=0,this._paused=!1}var i=t("./easing");return e[pi]={constructor:e,step:function(t,e){if(this._initialized||(this._startTime=t+this._delay,this._initialized=!0),this._paused)return void(this._pausedTime+=e);var n=(t-this._startTime-this._pausedTime)/this._life;if(!(0>n)){n=Math.min(n,1);var r=this.easing,a=typeof r==fi?i[r]:r,o=typeof a===Ae?a(n):n;return this.fire("frame",o),1==n?this.loop?(this.restart(t),"restart"):(this._needsRemove=!0,"destroy"):null}},restart:function(t){var e=(t-this._startTime-this._pausedTime)%this._life;this._startTime=t-e+this.gap,this._pausedTime=0,this._needsRemove=!1},fire:function(t,e){t="on"+t,this[t]&&this[t](this._target,e)},pause:function(){this._paused=!0},resume:function(){this._paused=!1}},e}),e("echarts/coord/axisModelCommonMixin",[$i,Yi,"./axisHelper"],function(t){function e(t){return i[ui](t)&&null!=t.value?t.value:t}var i=t(Yi),n=t("./axisHelper");return{getFormattedLabels:function(){return n.getFormattedLabels(this.axis,this.get("axisLabel.formatter"))},getCategories:function(){return this.get("type")===te&&i.map(this.get("data"),e)},getMin:function(t){var e=this[k],n=t||null==e.rangeStart?e.min:e.rangeStart;return this.axis&&null!=n&&"dataMin"!==n&&!i.eqNaN(n)&&(n=this.axis.scale.parse(n)),n},getMax:function(t){var e=this[k],n=t||null==e.rangeEnd?e.max:e.rangeEnd;return this.axis&&null!=n&&"dataMax"!==n&&!i.eqNaN(n)&&(n=this.axis.scale.parse(n)),n},getNeedCrossZero:function(){var t=this[k];return null!=t.rangeStart||null!=t.rangeEnd?!1:!t.scale},getCoordSysModel:i.noop,setRange:function(t,e){this[k].rangeStart=t,this[k].rangeEnd=e},resetRange:function(){this[k].rangeStart=this[k].rangeEnd=null}}}),e("echarts/coord/axisModelCreator",[$i,"./axisDefault",Yi,"../model/Component","../util/layout"],function(t){var e=t("./axisDefault"),i=t(Yi),n=t("../model/Component"),r=t("../util/layout"),a=["value",te,"time","log"];return function(t,o,s,l){i.each(a,function(n){o[We]({type:t+"Axis."+n,mergeDefaultAndTheme:function(e,a){var o=this.layoutMode,l=o?r.getLayoutParams(e):{},u=a.getTheme();i.merge(e,u.get(n+"Axis")),i.merge(e,this.getDefaultOption()),e.type=s(t,e),o&&r.mergeLayoutParam(e,l,o)},defaultOption:i.mergeAll([{},e[n+"Axis"],l],!0)})}),n.registerSubTypeDefaulter(t+"Axis",i.curry(s,t))}}),e("zrender/animation/easing",[],function(){var t={linear:function(t){return t},quadraticIn:function(t){return t*t},quadraticOut:function(t){return t*(2-t)},quadraticInOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)},cubicIn:function(t){return t*t*t},cubicOut:function(t){return--t*t*t+1},cubicInOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},quarticIn:function(t){return t*t*t*t},quarticOut:function(t){return 1- --t*t*t*t},quarticInOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},quinticIn:function(t){return t*t*t*t*t},quinticOut:function(t){return--t*t*t*t*t+1},quinticInOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},sinusoidalIn:function(t){return 1-Math.cos(t*Math.PI/2)},sinusoidalOut:function(t){return Math.sin(t*Math.PI/2)},sinusoidalInOut:function(t){return.5*(1-Math.cos(Math.PI*t))},exponentialIn:function(t){return 0===t?0:Math.pow(1024,t-1)},exponentialOut:function(t){return 1===t?1:1-Math.pow(2,-10*t)},exponentialInOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(-Math.pow(2,-10*(t-1))+2)},circularIn:function(t){return 1-Math.sqrt(1-t*t)},circularOut:function(t){return Math.sqrt(1- --t*t)},circularInOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},elasticIn:function(t){var e,i=.1,n=.4;return 0===t?0:1===t?1:(!i||1>i?(i=1,e=n/4):e=n*Math.asin(1/i)/(2*Math.PI),-(i*Math.pow(2,10*(t-=1))*Math.sin(2*(t-e)*Math.PI/n)))},elasticOut:function(t){var e,i=.1,n=.4;return 0===t?0:1===t?1:(!i||1>i?(i=1,e=n/4):e=n*Math.asin(1/i)/(2*Math.PI),i*Math.pow(2,-10*t)*Math.sin(2*(t-e)*Math.PI/n)+1)},elasticInOut:function(t){var e,i=.1,n=.4;return 0===t?0:1===t?1:(!i||1>i?(i=1,e=n/4):e=n*Math.asin(1/i)/(2*Math.PI),(t*=2)<1?-.5*i*Math.pow(2,10*(t-=1))*Math.sin(2*(t-e)*Math.PI/n):i*Math.pow(2,-10*(t-=1))*Math.sin(2*(t-e)*Math.PI/n)*.5+1)},backIn:function(t){var e=1.70158;return t*t*((e+1)*t-e)},backOut:function(t){var e=1.70158;return--t*t*((e+1)*t+e)+1},backInOut:function(t){var e=2.5949095;return(t*=2)<1?.5*t*t*((e+1)*t-e):.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(e){return 1-t.bounceOut(1-e)},bounceOut:function(t){return 1/2.75>t?7.5625*t*t:2/2.75>t?7.5625*(t-=1.5/2.75)*t+.75:2.5/2.75>t?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},bounceInOut:function(e){return.5>e?.5*t.bounceIn(2*e):.5*t.bounceOut(2*e-1)+.5}};return t}),e("echarts/coord/axisDefault",[$i,Yi],function(t){var e=t(Yi),i={show:!0,zlevel:0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,lineStyle:{color:"#333",width:1,type:"solid"}},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,textStyle:{fontSize:12}},splitLine:{show:!0,lineStyle:{color:["#ccc"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]}}},n=e.merge({boundaryGap:!0,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},i),r=e.merge({boundaryGap:[0,0],splitNumber:5},i),a=e[qi]({scale:!0,min:"dataMin",max:"dataMax"},r),o=e[qi]({logBase:10},r);return o.scale=!0,{categoryAxis:n,valueAxis:r,timeAxis:a,logAxis:o}}),e("zrender/core/LRU",[$i],function(){var t=function(){this.head=null,this.tail=null,this._len=0},e=t[pi];e.insert=function(t){var e=new i(t);return this.insertEntry(e),e},e.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,t.next=null,this.tail=t):this.head=this.tail=t,this._len++},e[Ue]=function(t){var e=t.prev,i=t.next;e?e.next=i:this.head=i,i?i.prev=e:this.tail=e,t.next=t.prev=null,this._len--},e.len=function(){return this._len},e.clear=function(){this.head=this.tail=null,this._len=0};var i=function(t){this.value=t,this.next,this.prev},n=function(e){this._list=new t,this._map={},this._maxSize=e||10,this._lastRemovedEntry=null},r=n[pi];return r.put=function(t,e){var n=this._list,r=this._map,a=null;if(null==r[t]){var o=n.len(),s=this._lastRemovedEntry;if(o>=this._maxSize&&o>0){var l=n.head;n[Ue](l),delete r[l.key],a=l.value,this._lastRemovedEntry=l}s?s.value=e:s=new i(e),s.key=t,n.insertEntry(s),r[t]=s}return a},r.get=function(t){var e=this._map[t],i=this._list;return null!=e?(e!==i.tail&&(i[Ue](e),i.insertEntry(e)),e.value):void 0},r.clear=function(){this._list.clear(),this._map={}},n}),e("echarts/chart/bar/BaseBarSeries",[$i,"../../model/Series","../helper/createListFromArray"],function(t){var e=t("../../model/Series"),i=t("../helper/createListFromArray");return e[We]({type:"series.__base_bar__",getInitialData:function(t,e){return i(t.data,this,e)},getMarkerPosition:function(t){var e=this[Wi];if(e){var i=e[K](t,!0),n=this[Fi](),r=n.getLayout(re),a=n.getLayout("size"),o=e.getBaseAxis().isHorizontal()?0:1;return i[o]+=r+a/2,i}return[0/0,0/0]},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,itemStyle:{normal:{},emphasis:{}}}})}),e("zrender/config",[],function(){var t=1;typeof window!==g&&(t=Math.max(window.devicePixelRatio||1,1));var e={debugMode:0,devicePixelRatio:t};return e}),e("echarts/chart/helper/createListFromArray",[$i,"../../data/List","../../data/helper/completeDimensions",Yi,O,"../../CoordinateSystem"],function(t){function e(t){for(var e=0;e=0&&i(t)?function(t,e,i,n){return c.isDataItemOption(t)&&(x.hasItemOption=!0),n===y?i:f(d(t),g[n])}:function(t,e,i,n){var r=d(t),a=f(r&&r[n],g[n]);c.isDataItemOption(t)&&(x.hasItemOption=!0);var o=m&&m.categoryAxesModels;return o&&o[e]&&typeof a===fi&&(b[e]=b[e]||o[e].getCategories(),a=u[ni](b[e],a),0>a&&!isNaN(a)&&(a=+a)),a};return x.hasItemOption=!1,x.initData(t,_,w),x}function r(t){return t!==te&&"time"!==t}function a(t){return t===te?T:"time"===t?"time":"float"}function o(t,e){var i,n=[],r=t&&t[U][t.categoryIndex];if(r&&(i=t.categoryAxesModels[r.name]),i){var a=i.getCategories();if(a){var o=e[ri];if(u[Ce](e[0])&&e[0][ri]>1){n=[];for(var s=0;o>s;s++)n[s]=a[e[s][t.categoryIndex||0]]}else n=a.slice(0)}}return n}var s=t("../../data/List"),l=t("../../data/helper/completeDimensions"),u=t(Yi),c=t(O),h=t("../../CoordinateSystem"),d=c.getDataItemValue,f=c.converDataValue,p={cartesian2d:function(t,e,i){var n=u.map(["xAxis","yAxis"],function(t){return i.queryComponents({mainType:t,index:e.get(t+"Index"),id:e.get(t+"Id")})[0]}),o=n[0],s=n[1],c=o.get("type"),h=s.get("type"),d=[{name:"x",type:a(c),stackable:r(c)},{name:"y",type:a(h),stackable:r(h)}],f=c===te,p=h===te;l(d,t,{defaultNames:["x","y","z"]});var v={};return f&&(v.x=o),p&&(v.y=s),{dimensions:d,categoryIndex:f?0:p?1:-1,categoryAxesModels:v}},singleAxis:function(t,e,i){var n=i.queryComponents({mainType:"singleAxis",index:e.get("singleAxisIndex"),id:e.get("singleAxisId")})[0],o=n.get("type"),s=o===te,u=[{name:"single",type:a(o),stackable:r(o)}];l(u,t);var c={};return s&&(c.single=n),{dimensions:u,categoryIndex:s?0:-1,categoryAxesModels:c}},polar:function(t,e,i){var n=i.queryComponents({mainType:"polar",index:e.get("polarIndex"),id:e.get("polarId")})[0],o=n.findAxisModel("angleAxis"),s=n.findAxisModel("radiusAxis"),u=s.get("type"),c=o.get("type"),h=[{name:"radius",type:a(u),stackable:r(u)},{name:"angle",type:a(c),stackable:r(c)}],d=c===te,f=u===te;l(h,t,{defaultNames:["radius","angle","value"]});var p={};return f&&(p.radius=s),d&&(p.angle=o),{dimensions:h,categoryIndex:d?1:f?0:-1,categoryAxesModels:p}},geo:function(t){return{dimensions:l([{name:"lng"},{name:"lat"}],t,{defaultNames:["lng","lat","value"]})}}};return n}),e("zrender/core/bbox",[$i,"./vector","./curve"],function(t){var e=t("./vector"),i=t("./curve"),n={},r=Math.min,a=Math.max,o=Math.sin,s=Math.cos,l=e[ti](),u=e[ti](),c=e[ti](),h=2*Math.PI;n.fromPoints=function(t,e,i){if(0!==t[ri]){var n,o=t[0],s=o[0],l=o[0],u=o[1],c=o[1];for(n=1;nv;v++){var x=g(t,n,s,u,d[v]);h[0]=r(x,h[0]),p[0]=a(x,p[0])}for(y=m(e,o,l,c,f),v=0;y>v;v++){var _=g(e,o,l,c,f[v]);h[1]=r(_,h[1]),p[1]=a(_,p[1])}h[0]=r(t,h[0]),p[0]=a(t,p[0]),h[0]=r(u,h[0]),p[0]=a(u,p[0]),h[1]=r(e,h[1]),p[1]=a(e,p[1]),h[1]=r(c,h[1]),p[1]=a(c,p[1])},n.fromQuadratic=function(t,e,n,o,s,l,u,c){var h=i.quadraticExtremum,d=i.quadraticAt,f=a(r(h(t,n,s),1),0),p=a(r(h(e,o,l),1),0),v=d(t,n,s,f),m=d(e,o,l,p);u[0]=r(t,s,v),u[1]=r(e,l,m),c[0]=a(t,s,v),c[1]=a(e,l,m)},n.fromArc=function(t,i,n,r,a,d,f,p,v){var m=e.min,g=e.max,y=Math.abs(a-d);if(1e-4>y%h&&y>1e-4)return p[0]=t-n,p[1]=i-r,v[0]=t+n,void(v[1]=i+r);if(l[0]=s(a)*n+t,l[1]=o(a)*r+i,u[0]=s(d)*n+t,u[1]=o(d)*r+i,m(p,l,u),g(v,l,u),a%=h,0>a&&(a+=h),d%=h,0>d&&(d+=h),a>d&&!f?d+=h:d>a&&f&&(a+=h),f){var x=d;d=a,a=x}for(var _=0;d>_;_+=Math.PI/2)_>a&&(c[0]=s(_)*n+t,c[1]=o(_)*r+i,m(p,c,p),g(v,c,v))},n}),e("zrender/core/curve",[$i,"./vector"],function(t){function e(t){return t>-_&&_>t}function i(t){return t>_||-_>t}function n(t,e,i,n,r){var a=1-r;return a*a*(a*t+3*r*e)+r*r*(r*n+3*a*i)}function r(t,e,i,n,r){var a=1-r;return 3*(((e-t)*a+2*(i-e)*r)*a+(n-i)*r*r)}function a(t,i,n,r,a,o){var s=r+3*(i-n)-t,l=3*(n-2*i+t),u=3*(i-t),c=t-a,h=l*l-3*s*u,d=l*u-9*s*c,f=u*u-3*l*c,p=0;if(e(h)&&e(d))if(e(l))o[0]=0;else{var v=-u/l;v>=0&&1>=v&&(o[p++]=v)}else{var m=d*d-4*h*f;if(e(m)){var g=d/h,v=-l/s+g,_=-g/2;v>=0&&1>=v&&(o[p++]=v),_>=0&&1>=_&&(o[p++]=_)}else if(m>0){var b=x(m),S=h*l+1.5*s*(-d+b),T=h*l+1.5*s*(-d-b);S=0>S?-y(-S,M):y(S,M),T=0>T?-y(-T,M):y(T,M);var v=(-l-(S+T))/(3*s);v>=0&&1>=v&&(o[p++]=v)}else{var P=(2*h*l-3*s*d)/(2*x(h*h*h)),A=Math.acos(P)/3,C=x(h),L=Math.cos(A),v=(-l-2*C*L)/(3*s),_=(-l+C*(L+w*Math.sin(A)))/(3*s),I=(-l+C*(L-w*Math.sin(A)))/(3*s);v>=0&&1>=v&&(o[p++]=v),_>=0&&1>=_&&(o[p++]=_),I>=0&&1>=I&&(o[p++]=I)}}return p}function o(t,n,r,a,o){var s=6*r-12*n+6*t,l=9*n+3*a-3*t-9*r,u=3*n-3*t,c=0;if(e(l)){if(i(s)){var h=-u/s;h>=0&&1>=h&&(o[c++]=h)}}else{var d=s*s-4*l*u;if(e(d))o[0]=-s/(2*l);else if(d>0){var f=x(d),h=(-s+f)/(2*l),p=(-s-f)/(2*l);h>=0&&1>=h&&(o[c++]=h),p>=0&&1>=p&&(o[c++]=p)}}return c}function s(t,e,i,n,r,a){var o=(e-t)*r+t,s=(i-e)*r+e,l=(n-i)*r+i,u=(s-o)*r+o,c=(l-s)*r+s,h=(c-u)*r+u;a[0]=t,a[1]=o,a[2]=u,a[3]=h,a[4]=h,a[5]=c,a[6]=l,a[7]=n}function l(t,e,i,r,a,o,s,l,u,c,h){var d,f,p,v,m,y=.005,_=1/0;S[0]=u,S[1]=c;for(var w=0;1>w;w+=.05)T[0]=n(t,i,a,s,w),T[1]=n(e,r,o,l,w),v=g(S,T),_>v&&(d=w,_=v);_=1/0;for(var M=0;32>M&&!(b>y);M++)f=d-y,p=d+y,T[0]=n(t,i,a,s,f),T[1]=n(e,r,o,l,f),v=g(T,S),f>=0&&_>v?(d=f,_=v):(P[0]=n(t,i,a,s,p),P[1]=n(e,r,o,l,p),m=g(P,S),1>=p&&_>m?(d=p,_=m):y*=.5);return h&&(h[0]=n(t,i,a,s,d),h[1]=n(e,r,o,l,d)),x(_)}function u(t,e,i,n){var r=1-n;return r*(r*t+2*n*e)+n*n*i}function c(t,e,i,n){return 2*((1-n)*(e-t)+n*(i-e))}function h(t,n,r,a,o){var s=t-2*n+r,l=2*(n-t),u=t-a,c=0;if(e(s)){if(i(l)){var h=-u/l;h>=0&&1>=h&&(o[c++]=h)}}else{var d=l*l-4*s*u;if(e(d)){var h=-l/(2*s);h>=0&&1>=h&&(o[c++]=h)}else if(d>0){var f=x(d),h=(-l+f)/(2*s),p=(-l-f)/(2*s);h>=0&&1>=h&&(o[c++]=h),p>=0&&1>=p&&(o[c++]=p)}}return c}function d(t,e,i){var n=t+i-2*e;return 0===n?.5:(t-e)/n}function f(t,e,i,n,r){var a=(e-t)*n+t,o=(i-e)*n+e,s=(o-a)*n+a;r[0]=t,r[1]=a,r[2]=s,r[3]=s,r[4]=o,r[5]=i}function p(t,e,i,n,r,a,o,s,l){var c,h=.005,d=1/0;S[0]=o,S[1]=s;for(var f=0;1>f;f+=.05){T[0]=u(t,i,r,f),T[1]=u(e,n,a,f);var p=g(S,T);d>p&&(c=f,d=p)}d=1/0;for(var v=0;32>v&&!(b>h);v++){var m=c-h,y=c+h;T[0]=u(t,i,r,m),T[1]=u(e,n,a,m);var p=g(T,S);if(m>=0&&d>p)c=m,d=p;else{P[0]=u(t,i,r,y),P[1]=u(e,n,a,y);var _=g(P,S);1>=y&&d>_?(c=y,d=_):h*=.5}}return l&&(l[0]=u(t,i,r,c),l[1]=u(e,n,a,c)),x(d)}var v=t("./vector"),m=v[ti],g=v.distSquare,y=Math.pow,x=Math.sqrt,_=1e-8,b=1e-4,w=x(3),M=1/3,S=m(),T=m(),P=m();return{cubicAt:n,cubicDerivativeAt:r,cubicRootAt:a,cubicExtrema:o,cubicSubdivide:s,cubicProjectPoint:l,quadraticAt:u,quadraticDerivativeAt:c,quadraticRootAt:h,quadraticExtremum:d,quadraticSubdivide:f,quadraticProjectPoint:p}}),e("echarts/data/helper/completeDimensions",[$i,Yi],function(t){function e(t,e,a){if(!e)return t;a=a||{};var o=a.dimCount;if(null==o){var s=i(e[0]);o=n[Ce](s)&&s[ri]||1}for(var l=a.defaultNames||[],u=a.extraPrefix||"extra",c=0;o>c;c++)if(!t[c]){var h=l[c]||u+(c-l[ri]);t[c]=r(e,c)?{type:"ordinal",name:h}:h}return t}function i(t){return n[Ce](t)?t:n[ui](t)?t.value:t}var n=t(Yi),r=e.guessOrdinal=function(t,e){for(var r=0,a=t[ri];a>r;r++){var o=i(t[r]);if(!n[Ce](o))return!1;var o=o[e];if(null!=o&&isFinite(o))return!1;if(n[we](o)&&"-"!==o)return!0}return!1};return e}),e("echarts/data/DataDiffer",[$i],function(){function t(t){return t}function e(e,i,n,r){this._old=e,this._new=i,this._oldKeyGetter=n||t,this._newKeyGetter=r||t}function i(t,e,i,n){for(var r=0;rf;f++)this._add&&this._add(h[f]);else this._add&&this._add(h)}}}},e}),e("zrender/contain/arc",[$i,"./util"],function(t){var e=t("./util").normalizeRadian,i=2*Math.PI;return{containStroke:function(t,n,r,a,o,s,l,u,c){if(0===l)return!1;var h=l;u-=t,c-=n;var d=Math.sqrt(u*u+c*c);if(d-h>r||r>d+h)return!1;if(Math.abs(a-o)%i<1e-4)return!0;if(s){var f=a;a=e(o),o=e(f)}else a=e(a),o=e(o);a>o&&(o+=i);var p=Math.atan2(c,u);return 0>p&&(p+=i),p>=a&&o>=p||p+i>=a&&o>=p+i}}}),e("zrender/contain/quadratic",[$i,"../core/curve"],function(t){var e=t("../core/curve");return{containStroke:function(t,i,n,r,a,o,s,l,u){if(0===s)return!1;var c=s;if(u>i+c&&u>r+c&&u>o+c||i-c>u&&r-c>u&&o-c>u||l>t+c&&l>n+c&&l>a+c||t-c>l&&n-c>l&&a-c>l)return!1;var h=e.quadraticProjectPoint(t,i,n,r,a,o,l,u,null);return c/2>=h}}}),e("zrender/contain/util",[$i],function(){var t=2*Math.PI;return{normalizeRadian:function(e){return e%=t,0>e&&(e+=t),e}}}),e("zrender/contain/cubic",[$i,"../core/curve"],function(t){var e=t("../core/curve");return{containStroke:function(t,i,n,r,a,o,s,l,u,c,h){if(0===u)return!1;var d=u;if(h>i+d&&h>r+d&&h>o+d&&h>l+d||i-d>h&&r-d>h&&o-d>h&&l-d>h||c>t+d&&c>n+d&&c>a+d&&c>s+d||t-d>c&&n-d>c&&a-d>c&&s-d>c)return!1;var f=e.cubicProjectPoint(t,i,n,r,a,o,s,l,c,h,null);return d/2>=f}}}),e("zrender/contain/line",[],function(){return{containStroke:function(t,e,i,n,r,a,o){if(0===r)return!1;var s=r,l=0,u=t;if(o>e+s&&o>n+s||e-s>o&&n-s>o||a>t+s&&a>i+s||t-s>a&&i-s>a)return!1;if(t===i)return Math.abs(a-t)<=s/2;l=(e-n)/(t-i),u=(t*n-i*e)/(t-i);var c=l*a-o+u,h=c*c/(l*l+1);return s/2*s/2>=h}}}),e("zrender/contain/windingLine",[],function(){return function(t,e,i,n,r,a){if(a>e&&a>n||e>a&&n>a)return 0;if(n===e)return 0;var o=e>n?1:-1,s=(a-e)/(n-e);(1===s||0===s)&&(o=e>n?.5:-.5);var l=s*(i-t)+t;return l>r?o:0}}),e("echarts/chart/bar/barItemStyle",[$i,"../../model/mixin/makeStyleMapper"],function(t){var e=t("../../model/mixin/makeStyleMapper")([["fill","color"],[ce,"borderColor"],[he,"borderWidth"],[ce,"barBorderColor"],[he,"barBorderWidth"],[bi],[r],[n],[i],["shadowColor"]]);return{getBarItemStyle:function(t){var i=e.call(this,t);if(this.getBorderLineDash){var n=this.getBorderLineDash();n&&(i.lineDash=n)}return i}}}),e("echarts/chart/bar/helper",[$i,Yi,W],function(t){function e(t,e,i,r,a){n.setText(t,e,i),t.text=r,"outside"===t.textPosition&&(t.textPosition=a)}var i=t(Yi),n=t(W),r={};return r.setLabel=function(t,n,r,a,o,s,l){var c=r[Ni](u),h=r[Ni]("label.emphasis");c.get("show")?e(t,c,a,i[j](o.getFormattedLabel(s,se),o[b](s)),l):t.text="",h.get("show")?e(n,h,a,i[j](o.getFormattedLabel(s,le),o[b](s)),l):n.text=""},r}),e("zrender/graphic/helper/poly",[$i,"./smoothSpline","./smoothBezier"],function(t){var e=t("./smoothSpline"),i=t("./smoothBezier");return{buildPath:function(t,n,r){var a=n[S],o=n.smooth;if(a&&a[ri]>=2){if(o&&"spline"!==o){var s=i(a,o,r,n.smoothConstraint);t.moveTo(a[0][0],a[0][1]);for(var l=a[ri],u=0;(r?l:l-1)>u;u++){var c=s[2*u],h=s[2*u+1],d=a[(u+1)%l];t.bezierCurveTo(c[0],c[1],h[0],h[1],d[0],d[1])}}else{"spline"===o&&(a=e(a,r)),t.moveTo(a[0][0],a[0][1]);for(var u=1,f=a[ri];f>u;u++)t.lineTo(a[u][0],a[u][1])}r&&t.closePath()}}}}),e("zrender/graphic/helper/smoothBezier",[$i,"../../core/vector"],function(t){var e=t("../../core/vector"),i=e.min,n=e.max,r=e.scale,a=e.distance,o=e.add;return function(t,s,l,u){var c,h,d,f,p=[],v=[],m=[],g=[];if(u){d=[1/0,1/0],f=[-1/0,-1/0];for(var y=0,x=t[ri];x>y;y++)i(d,d,t[y]),n(f,f,t[y]);i(d,d,u[0]),n(f,f,u[1])}for(var y=0,x=t[ri];x>y;y++){var _=t[y];if(l)c=t[y?y-1:x-1],h=t[(y+1)%x];else{if(0===y||y===x-1){p.push(e.clone(t[y]));continue}c=t[y-1],h=t[y+1]}e.sub(v,h,c),r(v,v,s);var b=a(_,c),w=a(_,h),M=b+w;0!==M&&(b/=M,w/=M),r(m,v,-b),r(g,v,w);var S=o([],_,m),T=o([],_,g);u&&(n(S,S,d),i(S,S,f),n(T,T,d),i(T,T,f)),p.push(S),p.push(T)}return l&&p.push(p.shift()),p}}),e("zrender/graphic/helper/smoothSpline",[$i,"../../core/vector"],function(t){function e(t,e,i,n,r,a,o){var s=.5*(i-t),l=.5*(n-e);return(2*(e-i)+s+l)*o+(-3*(e-i)-2*s-l)*a+s*r+e}var i=t("../../core/vector");return function(t,n){for(var r=t[ri],a=[],o=0,s=1;r>s;s++)o+=i.distance(t[s-1],t[s]);var l=o/2;l=r>l?r:l;for(var s=0;l>s;s++){var u,c,h,d=s/(l-1)*(n?r:r-1),f=Math.floor(d),p=d-f,v=t[f%r];n?(u=t[(f-1+r)%r],c=t[(f+1)%r],h=t[(f+2)%r]):(u=t[0===f?f:f-1],c=t[f>r-2?r-1:f+1],h=t[f>r-3?r-1:f+2]);var m=p*p,g=p*m;a.push([e(u[0],v[0],c[0],h[0],p,m,g),e(u[1],v[1],c[1],h[1],p,m,g)])}return a}}),e("zrender/graphic/helper/roundRect",[$i],function(){return{buildPath:function(t,e){var i,n,r,a,o=e.x,s=e.y,l=e.width,u=e[zi],c=e.r;0>l&&(o+=l,l=-l),0>u&&(s+=u,u=-u),typeof c===Se?i=n=r=a=c:c instanceof Array?1===c[ri]?i=n=r=a=c[0]:2===c[ri]?(i=r=c[0],n=a=c[1]):3===c[ri]?(i=c[0],n=a=c[1],r=c[2]):(i=c[0],n=c[1],r=c[2],a=c[3]):i=n=r=a=0;var h;i+n>l&&(h=i+n,i*=l/h,n*=l/h),r+a>l&&(h=r+a,r*=l/h,a*=l/h),n+r>u&&(h=n+r,n*=u/h,r*=u/h),i+a>u&&(h=i+a,i*=u/h,a*=u/h),t.moveTo(o+i,s),t.lineTo(o+l-n,s),0!==n&&t.quadraticCurveTo(o+l,s,o+l,s+n),t.lineTo(o+l,s+u-r),0!==r&&t.quadraticCurveTo(o+l,s+u,o+l-r,s+u),t.lineTo(o+a,s+u),0!==a&&t.quadraticCurveTo(o,s+u,o,s+u-a),t.lineTo(o,s+i),0!==i&&t.quadraticCurveTo(o,s,o+i,s)}}}),e("zrender/graphic/Gradient",[$i],function(){var t=function(t){this[Ke]=t||[]};return t[pi]={constructor:t,addColorStop:function(t,e){this[Ke].push({offset:t,color:e})}},t}),e("zrender/Storage",[$i,"./core/util","./core/env","./container/Group","./core/timsort"],function(t){function e(t,e){return t[De]===e[De]?t.z===e.z?t.z2-e.z2:t.z-e.z:t[De]-e[De]}var i=t("./core/util"),n=t("./core/env"),r=t("./container/Group"),o=t("./core/timsort"),l=function(){this._roots=[],this._displayList=[],this._displayListLen=0};return l[pi]={constructor:l,traverse:function(t,e){for(var i=0;ia;a++)this._updateAndAddDisplayable(i[a],null,t);r[ri]=this._displayListLen,n[li]&&o(r,e)},_updateAndAddDisplayable:function(t,e,i){if(!t[ai]||i){t.beforeUpdate(),t[a]&&t[Je](),t.afterUpdate();var n=t.clipPath;if(n){e=e?e.slice():[];for(var r=n,o=t;r;)r[Ie]=o,r[s](),e.push(r),o=r,r=r.clipPath}if(t.isGroup){for(var l=t._children,u=0;ue;e++)this.delRoot(t[e]); +else{var o=i[ni](this._roots,t);o>=0&&(this.delFromStorage(t),this._roots[Ne](o,1),t instanceof r&&t.delChildrenFromStorage(this))}},addToStorage:function(t){return t.__storage=this,t.dirty(!1),this},delFromStorage:function(t){return t&&(t.__storage=null),this},dispose:function(){this._renderList=this._roots=null},displayableSortFunc:e},l}),e("zrender/animation/Animation",[$i,o,"../core/event","./requestAnimationFrame","./Animator"],function(t){var e=t(o),i=t("../core/event").Dispatcher,n=t("./requestAnimationFrame"),r=t("./Animator"),a=function(t){t=t||{},this.stage=t.stage||{},this.onframe=t.onframe||function(){},this._clips=[],this._running=!1,this._time,this._pausedTime,this._pauseStart,this._paused=!1,i.call(this)};return a[pi]={constructor:a,addClip:function(t){this._clips.push(t)},addAnimator:function(t){t[hi]=this;for(var e=t.getClips(),i=0;i=0&&this._clips[Ne](i,1)},removeAnimator:function(t){for(var e=t.getClips(),i=0;io;o++){var s=i[o],l=s.step(t,e);l&&(r.push(l),a.push(s))}for(var o=0;n>o;)i[o]._needsRemove?(i[o]=i[n-1],i.pop(),n--):o++;n=r[ri];for(var o=0;n>o;o++)a[o].fire(r[o]);this._time=t,this.onframe(e),this[Ge]("frame",e),this.stage[Je]&&this.stage[Je]()},_startLoop:function(){function t(){e._running&&(n(t),!e._paused&&e._update())}var e=this;this._running=!0,n(t)},start:function(){this._time=(new Date).getTime(),this._pausedTime=0,this._startLoop()},stop:function(){this._running=!1},pause:function(){this._paused||(this._pauseStart=(new Date).getTime(),this._paused=!0)},resume:function(){this._paused&&(this._pausedTime+=(new Date).getTime()-this._pauseStart,this._paused=!1)},clear:function(){this._clips=[]},animate:function(t,e){e=e||{};var i=new r(t,e.loop,e.getter,e.setter);return this.addAnimator(i),i}},e.mixin(a,i),a}),e("zrender/Handler",[$i,"./core/util","./mixin/Draggable","./mixin/Eventful"],function(t){function e(t,e,i){return{type:t,event:i,target:e[ki],topTarget:e.topTarget,cancelBubble:!1,offsetX:i.zrX,offsetY:i.zrY,gestureEvent:i.gestureEvent,pinchX:i.pinchX,pinchY:i.pinchY,pinchScale:i.pinchScale,wheelDelta:i.zrDelta,zrByTouch:i.zrByTouch}}function i(){}function n(t,e,i){if(t[t.rectHover?"rectContain":xe](e,i)){for(var n,r=t;r;){if(r.clipPath&&!r.clipPath[xe](e,i))return!1;r[Di]&&(n=!0),r=r[Ie]}return n?s:!0}return!1}var r=t("./core/util"),a=t("./mixin/Draggable"),o=t("./mixin/Eventful"),s=Di;i[pi][He]=function(){};var l=["click","dblclick","mousewheel",Ee,"mouseup","mousedown",Re,"contextmenu"],u=function(t,e,n,s){o.call(this),this.storage=t,this.painter=e,this.painterRoot=s,n=n||new i,this.proxy=n,n.handler=this,this._hovered={},this._lastTouchMoment,this._lastX,this._lastY,a.call(this),r.each(l,function(t){n.on&&n.on(t,this[t],this)},this)};return u[pi]={constructor:u,mousemove:function(t){var e=t.zrX,i=t.zrY,n=this._hovered,r=this._hovered=this.findHover(e,i),a=r[ki],o=n[ki],s=this.proxy;s.setCursor&&s.setCursor(a?a.cursor:"default"),o&&a!==o&&o.__zr&&this.dispatchToElement(n,Ee,t),this.dispatchToElement(r,Re,t),a&&a!==o&&this.dispatchToElement(r,Be,t)},mouseout:function(t){this.dispatchToElement(this._hovered,Ee,t);var e,i=t.toElement||t.relatedTarget;do i=i&&i.parentNode;while(i&&9!=i.nodeType&&!(e=i===this.painterRoot));!e&&this[Ge]("globalout",{event:t})},resize:function(){this._hovered={}},dispatch:function(t,e){var i=this[t];i&&i.call(this,e)},dispose:function(){this.proxy[He](),this.storage=this.proxy=this.painter=null},setCursorStyle:function(t){var e=this.proxy;e.setCursor&&e.setCursor(t)},dispatchToElement:function(t,i,n){t=t||{};for(var r="on"+i,a=e(i,t,n),o=t[ki];o&&(o[r]&&(a.cancelBubble=o[r].call(o,a)),o[Ge](i,a),o=o[Ie],!a.cancelBubble););a.cancelBubble||(this[Ge](i,a),this.painter&&this.painter.eachOtherLayer(function(t){typeof t[r]==Ae&&t[r].call(t,a),t[Ge]&&t[Ge](i,a)}))},findHover:function(t,e,i){for(var r=this.storage.getDisplayList(),a={},o=r[ri]-1;o>=0;o--){var l;if(r[o]!==i&&!r[o][ai]&&(l=n(r[o],t,e))&&(!a.topTarget&&(a.topTarget=r[o]),l!==s)){a[ki]=r[o];break}}return a}},r.each(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){u[pi][t]=function(e){var i=this.findHover(e.zrX,e.zrY),n=i[ki];if("mousedown"===t)this._downel=n,this._upel=n;else if("mosueup"===t)this._upel=n;else if("click"===t&&this._downel!==this._upel)return;this.dispatchToElement(i,t,e)}}),r.mixin(u,o),r.mixin(u,a),u}),e("zrender/dom/HandlerProxy",[$i,"../core/event",o,"../mixin/Eventful","../core/env","../core/GestureMgr"],function(t){function e(t){return"mousewheel"===t&&h.browser.firefox?"DOMMouseScroll":t}function i(t,e,i){var n=t._gestureMgr;"start"===i&&n.clear();var r=n.recognize(e,t.handler.findHover(e.zrX,e.zrY,null)[ki],t.dom);if("end"===i&&n.clear(),r){var a=r.type;e.gestureEvent=a,t.handler.dispatchToElement({target:r[ki]},a,r.event)}}function n(t){t._touching=!0,clearTimeout(t._touchTimer),t._touchTimer=setTimeout(function(){t._touching=!1},700)}function r(t){var e=t.pointerType;return"pen"===e||"touch"===e}function a(t){function e(t,e){return function(){return e._touching?void 0:t.apply(e,arguments)}}u.each(y,function(e){t._handlers[e]=u.bind(b[e],t)}),u.each(_,function(e){t._handlers[e]=u.bind(b[e],t)}),u.each(g,function(i){t._handlers[i]=e(b[i],t)})}function s(t){function i(i,n){u.each(i,function(i){f(t,e(i),n._handlers[i])},n)}c.call(this),this.dom=t,this._touching=!1,this._touchTimer,this._gestureMgr=new d,this._handlers={},a(this),h.pointerEventsSupported?i(_,this):(h.touchEventsSupported&&i(y,this),i(g,this))}var l=t("../core/event"),u=t(o),c=t("../mixin/Eventful"),h=t("../core/env"),d=t("../core/GestureMgr"),f=l.addEventListener,p=l.removeEventListener,v=l.normalizeEvent,m=300,g=["click","dblclick","mousewheel",Ee,"mouseup","mousedown",Re,"contextmenu"],y=["touchstart","touchend","touchmove"],x={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},_=u.map(g,function(t){var e=t[Le]("mouse","pointer");return x[e]?e:t}),b={mousemove:function(t){t=v(this.dom,t),this[Ge](Re,t)},mouseout:function(t){t=v(this.dom,t);var e=t.toElement||t.relatedTarget;if(e!=this.dom)for(;e&&9!=e.nodeType;){if(e===this.dom)return;e=e.parentNode}this[Ge](Ee,t)},touchstart:function(t){t=v(this.dom,t),t.zrByTouch=!0,this._lastTouchMoment=new Date,i(this,t,"start"),b[Re].call(this,t),b.mousedown.call(this,t),n(this)},touchmove:function(t){t=v(this.dom,t),t.zrByTouch=!0,i(this,t,"change"),b[Re].call(this,t),n(this)},touchend:function(t){t=v(this.dom,t),t.zrByTouch=!0,i(this,t,"end"),b.mouseup.call(this,t),+new Date-this._lastTouchMoment=0&&i[Ne](n,1),t.__hoverMir=null},clearHover:function(){for(var t=this._hoverElements,e=0;er;){var a=t[r],o=a.__from;o&&o.__zr?(r++,o.invisible||(a[h]=o[h],a.invTransform=o.invTransform,a.__clipPaths=o.__clipPaths,this._doPaintEl(a,i,!0,n))):(t[Ne](r,1),o.__hoverMir=null,e--)}i.ctx.restore()}},_startProgessive:function(){function t(){i===e._progressiveToken&&e.storage&&(e._doPaintList(e.storage.getDisplayList()),e._furtherProgressive?(e._progress++,b(t)):e._progressiveToken=-1)}var e=this;if(e._furtherProgressive){var i=e._progressiveToken=+new Date;e._progress++,b(t)}},_clearProgressive:function(){this._progressiveToken=-1,this._progress=0,m.each(this._progressiveLayers,function(t){t[a]&&t.clear()})},_paintList:function(t,e){null==e&&(e=!1),this._updateLayerStatus(t),this._clearProgressive(),this.eachBuiltinLayer(l),this._doPaintList(t,e),this.eachBuiltinLayer(u)},_doPaintList:function(t,e){function i(t){var e=s.dpr||1;s.save(),s.globalAlpha=1,s[r]=0,n[a]=!0,s.setTransform(1,0,0,1,0,0),s.drawImage(t.dom,0,0,d*e,f*e),s.restore()}for(var n,o,s,l,u,c,h=0,d=this._width,f=this._height,p=this._progress,v=0,y=t[ri];y>v;v++){var x=t[v],_=this._singleCanvas?0:x[De],b=x.__frame;if(0>b&&u&&(i(u),u=null),o!==_&&(s&&s.restore(),l={},o=_,n=this.getLayer(o),n.__builtin__||g("ZLevel "+o+" has been used by unkown layer "+n.id),s=n.ctx,s.save(),n.__unusedCount=0,(n[a]||e)&&n.clear()),n[a]||e){if(b>=0){if(!u){if(u=this._progressiveLayers[Math.min(h++,w-1)],u.ctx.save(),u.renderScope={},u&&u.__progress>u.__maxProgress){v=u.__nextIdxNotProg-1;continue}c=u.__progress,u[a]||(p=c),u.__progress=p+1}b===p&&this._doPaintEl(x,u,!0,u.renderScope)}else this._doPaintEl(x,n,e,l);x[a]=!1}}u&&i(u),s&&s.restore(),this._furtherProgressive=!1,m.each(this._progressiveLayers,function(t){t.__maxProgress>=t.__progress&&(this._furtherProgressive=!0)},this)},_doPaintEl:function(t,e,i,n){var r=e.ctx,o=t[h];if(!(!e[a]&&!i||t.invisible||0===t.style[bi]||o&&!o[0]&&!o[3]||t.culling&&c(t,this._width,this._height))){var s=t.__clipPaths;(n.prevClipLayer!==e||d(s,n.prevElClipPaths))&&(n.prevElClipPaths&&(n.prevClipLayer.ctx.restore(),n.prevClipLayer=n.prevElClipPaths=null,n.prevEl=null),s&&(r.save(),f(s,r),n.prevClipLayer=e,n.prevElClipPaths=s)),t.beforeBrush&&t.beforeBrush(r),t.brush(r,n.prevEl||null),n.prevEl=t,t.afterBrush&&t.afterBrush(r)}},getLayer:function(t){if(this._singleCanvas)return this._layers[0];var e=this._layers[t];return e||(e=new _("zr_"+t,this,this.dpr),e.__builtin__=!0,this._layerConfig[t]&&m.merge(e,this._layerConfig[t],!0),this.insertLayer(t,e),e.initContext()),e},insertLayer:function(t,e){var i=this._layers,n=this._zlevelList,r=n[ri],a=null,s=-1,l=this._domRoot;if(i[t])return void g("ZLevel "+t+" has been used already");if(!o(e))return void g("Layer of zlevel "+t+" is not valid");if(r>0&&t>n[0]){for(s=0;r-1>s&&!(n[s]t);s++);a=i[n[s]]}if(n[Ne](s+1,0,t),i[t]=e,!e.virtual)if(a){var u=a.dom;u.nextSibling?l.insertBefore(e.dom,u.nextSibling):l.appendChild(e.dom)}else l.firstChild?l.insertBefore(e.dom,l.firstChild):l.appendChild(e.dom)},eachLayer:function(t,e){var i,n,r=this._zlevelList;for(n=0;nc;c++){var d=t[c],f=this._singleCanvas?0:d[De],p=e[f],v=d.progressive;if(p&&(p.elCount++,p[a]=p[a]||d[a]),v>=0){s!==v&&(s=v,u++);var g=d.__frame=u-1;if(!o){var y=Math.min(l,w-1);o=i[y],o||(o=i[y]=new _("progressive",this,this.dpr),o.initContext()),o.__maxProgress=0}o[a]=o[a]||d[a],o.elCount++,o.__maxProgress=Math.max(o.__maxProgress,g),o.__maxProgress>=o.__progress&&(p[a]=!0)}else d.__frame=-1,o&&(o.__nextIdxNotProg=c,l++,o=null)}o&&(l++,o.__nextIdxNotProg=c),this.eachBuiltinLayer(function(t,e){n[e]!==t.elCount&&(t[a]=!0)}),i[ri]=Math.min(l,w),m.each(i,function(t,e){r[e]!==t.elCount&&(d[a]=!0),t[a]&&(t.__progress=0)})},clear:function(){return this.eachBuiltinLayer(this._clearLayer),this},_clearLayer:function(t){t.clear()},configLayer:function(t,e){if(e){var i=this._layerConfig;i[t]?m.merge(i[t],e,!0):i[t]=e;var n=this._layers[t];n&&m.merge(n,i[t],!0)}},delLayer:function(t){var e=this._layers,i=this._zlevelList,n=e[t];n&&(n.dom.parentNode.removeChild(n.dom),delete e[t],i[Ne](m[ni](i,t),1))},resize:function(t,e){var i=this._domRoot;i.style.display="none";var n=this._opts;if(null!=t&&(n.width=t),null!=e&&(n[zi]=e),t=this._getSize(0),e=this._getSize(1),i.style.display="",this._width!=t||e!=this._height){i.style.width=t+"px",i.style[zi]=e+"px";for(var r in this._layers)this._layers.hasOwnProperty(r)&&this._layers[r].resize(t,e);m.each(this._progressiveLayers,function(i){i.resize(t,e)}),this.refresh(!0)}return this._width=t,this._height=e,this},clearLayer:function(t){var e=this._layers[t];e&&e.clear()},dispose:function(){this.root.innerHTML="",this.root=this.storage=this._domRoot=this._layers=null},getRenderedCanvas:function(t){if(t=t||{},this._singleCanvas)return this._layers[0].dom;var e=new _("image",this,t.pixelRatio||this.dpr);e.initContext(),e.clearColor=t[Zi],e.clear();for(var i=this.storage.getDisplayList(!0),n={},r=0;r=0;if(a){var o="touchend"!=r?e.targetTouches[0]:e.changedTouches[0];o&&i(t,o,e,n)}else i(t,e,e,n),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;return e}function a(t,e,i){u?t.addEventListener(e,i):t.attachEvent("on"+e,i)}function o(t,e,i){u?t.removeEventListener(e,i):t.detachEvent("on"+e,i)}var s=t("../mixin/Eventful"),l=t("./env"),u=typeof window!==g&&!!window.addEventListener,c=u?function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0}:function(t){t.returnValue=!1,t.cancelBubble=!0};return{clientToLocal:i,normalizeEvent:r,addEventListener:a,removeEventListener:o,stop:c,Dispatcher:s}}),e("zrender/core/GestureMgr",[$i,"./event"],function(t){function e(t){var e=t[1][0]-t[0][0],i=t[1][1]-t[0][1];return Math.sqrt(e*e+i*i)}function i(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}var n=t("./event"),r=function(){this._track=[]};r[pi]={constructor:r,recognize:function(t,e,i){return this._doTrack(t,e,i),this._recognize(t)},clear:function(){return this._track[ri]=0,this},_doTrack:function(t,e,i){var r=t.touches;if(r){for(var a={points:[],touches:[],target:e,event:t},o=0,s=r[ri];s>o;o++){var l=r[o],u=n.clientToLocal(i,l,{});a[S].push([u.zrX,u.zrY]),a.touches.push(l)}this._track.push(a)}},_recognize:function(t){for(var e in a)if(a.hasOwnProperty(e)){var i=a[e](this._track,t);if(i)return i}}};var a={pinch:function(t,n){var r=t[ri];if(r){var a=(t[r-1]||{})[S],o=(t[r-2]||{})[S]||a;if(o&&o[ri]>1&&a&&a[ri]>1){var s=e(a)/e(o);!isFinite(s)&&(s=1),n.pinchScale=s;var l=i(a);return n.pinchX=l[0],n.pinchY=l[1],{type:"pinch",target:t[0][ki],event:n}}}}};return r}),e("zrender/Layer",[$i,"./core/util","./config","./graphic/Style","./graphic/Pattern"],function(t){function e(){return!1}function i(t,e,i,n){var r=document.createElement(e),a=i[Li](),o=i[Ci](),s=r.style;return s[Mi]="absolute",s.left=0,s.top=0,s.width=a+"px",s[zi]=o+"px",r.width=a*n,r[zi]=o*n,r.setAttribute("data-zr-dom-id",t),r}var n=t("./core/util"),r=t("./config"),a=t("./graphic/Style"),o=t("./graphic/Pattern"),s=function(t,a,o){var s;o=o||r.devicePixelRatio,typeof t===fi?s=i(t,"canvas",a,o):n[ui](t)&&(s=t,t=s.id),this.id=t,this.dom=s;var l=s.style;l&&(s.onselectstart=e,l["-webkit-user-select"]="none",l["user-select"]="none",l["-webkit-touch-callout"]="none",l["-webkit-tap-highlight-color"]="rgba(0,0,0,0)",l[Ai]=0,l.margin=0,l["border-width"]=0),this.domBack=null,this.ctxBack=null,this.painter=a,this.config=null,this.clearColor=0,this.motionBlur=!1,this.lastFrameAlpha=.7,this.dpr=o};return s[pi]={constructor:s,elCount:0,__dirty:!0,initContext:function(){this.ctx=this.dom.getContext("2d"),this.ctx.dpr=this.dpr},createBackBuffer:function(){var t=this.dpr;this.domBack=i("back-"+this.id,"canvas",this.painter,t),this.ctxBack=this.domBack.getContext("2d"),1!=t&&this.ctxBack.scale(t,t)},resize:function(t,e){var i=this.dpr,n=this.dom,r=n.style,a=this.domBack;r.width=t+"px",r[zi]=e+"px",n.width=t*i,n[zi]=e*i,a&&(a.width=t*i,a[zi]=e*i,1!=i&&this.ctxBack.scale(i,i))},clear:function(t){var e=this.dom,i=this.ctx,n=e.width,r=e[zi],s=this.clearColor,l=this.motionBlur&&!t,u=this.lastFrameAlpha,c=this.dpr;if(l&&(this.domBack||this.createBackBuffer(),this.ctxBack.globalCompositeOperation="copy",this.ctxBack.drawImage(e,0,0,n/c,r/c)),i.clearRect(0,0,n,r),s){var h;s[Ke]?(h=s.__canvasGradient||a.getGradient(i,s,{x:0,y:0,width:n,height:r}),s.__canvasGradient=h):s.image&&(h=o[pi].getCanvasPattern.call(s,i)),i.save(),i.fillStyle=h||s,i.fillRect(0,0,n,r),i.restore()}if(l){var d=this.domBack;i.save(),i.globalAlpha=u,i.drawImage(d,0,0,n,r),i.restore()}}},s}),e("echarts/preprocessor/helper/compatStyle",[$i,Yi],function(t){function e(t){var e=t&&t.itemStyle;e&&i.each(n,function(n){var r=e[se],a=e[le];r&&r[n]&&(t[n]=t[n]||{},t[n][se]?i.merge(t[n][se],r[n]):t[n][se]=r[n],r[n]=null),a&&a[n]&&(t[n]=t[n]||{},t[n][le]?i.merge(t[n][le],a[n]):t[n][le]=a[n],a[n]=null)})}var i=t(Yi),n=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];return function(t){if(t){e(t),e(t.markPoint),e(t.markLine);var n=t.data;if(n){for(var r=0;r=0?1:-1}function e(e,i,n){for(var r,a=e.getBaseAxis(),o=e[X](a),s=a.onZero?0:o.scale[me]()[0],l=o.dim,u="x"===l||"radius"===l?1:0,c=i.stackedOn,h=i.get(l,n);c&&t(c.get(l,n))===t(h);){r=c;break}var d=[];return d[u]=i.get(a.dim,n),d[1-u]=r?r.get(l,n,!0):s,e[K](d)}function i(t,e){var i=[];return e.diff(t).add(function(t){i.push({cmd:"+",idx:t})})[Je](function(t,e){i.push({cmd:"=",idx:e,idx1:t})})[Ue](function(t){i.push({cmd:"-",idx:t})}).execute(),i}return function(t,n,r,a,o,s){for(var l=i(t,n),u=[],c=[],h=[],d=[],f=[],p=[],v=[],m=s[U],g=0;gw;w++){var M=i[b];if(b>=f||0>b)break;if(e(M)){if(x){b+=p;continue}break}if(b===n)t[p>0?"moveTo":"lineTo"](M[0],M[1]),u(h,M);else if(g>0){var S=b+p,T=i[S];if(x)for(;T&&e(i[S]);)S+=p,T=i[S];var P=.5,A=i[_],T=i[S];if(!T||e(T))u(d,M);else{e(T)&&!x&&(T=M),a.sub(c,T,A);var C,L;if("x"===y||"y"===y){var I="x"===y?0:1;C=Math.abs(M[I]-A[I]),L=Math.abs(M[I]-T[I])}else C=a.dist(M,A),L=a.dist(M,T);P=L/(L+C),l(d,M,c,-g*(1-P))}o(h,h,m),s(h,h,v),o(d,d,m),s(d,d,v),t.bezierCurveTo(h[0],h[1],d[0],d[1],M[0],M[1]),l(h,M,c,g*P)}else t.lineTo(M[0],M[1]);_=b,b+=p}return w}function n(t,e){var i=[1/0,1/0],n=[-1/0,-1/0];if(e)for(var r=0;rn[0]&&(n[0]=a[0]),a[1]>n[1]&&(n[1]=a[1])}return{min:e?i:n,max:e?n:i}}var r=t("zrender/graphic/Path"),a=t(gi),o=a.min,s=a.max,l=a.scaleAndAdd,u=a.copy,c=[],h=[],d=[];return{Polyline:r[We]({type:"ec-polyline",shape:{points:[],smooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},style:{fill:null,stroke:"#000"},buildPath:function(t,r){var a=r[S],o=0,s=a[ri],l=n(a,r.smoothConstraint);if(r.connectNulls){for(;s>0&&e(a[s-1]);s--);for(;s>o&&e(a[o]);o++);}for(;s>o;)o+=i(t,a,o,s,s,1,l.min,l.max,r.smooth,r.smoothMonotone,r.connectNulls)+1}}),Polygon:r[We]({type:"ec-polygon",shape:{points:[],stackedOnPoints:[],smooth:0,stackedOnSmooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},buildPath:function(t,r){var a=r[S],o=r.stackedOnPoints,s=0,l=a[ri],u=r.smoothMonotone,c=n(a,r.smoothConstraint),h=n(o,r.smoothConstraint);if(r.connectNulls){for(;l>0&&e(a[l-1]);l--);for(;l>s&&e(a[s]);s++);}for(;l>s;){var d=i(t,a,s,l,l,1,c.min,c.max,r.smooth,u,r.connectNulls);i(t,o,s+d-1,d,l,-1,h.min,h.max,r.stackedOnSmooth,u,r.connectNulls),s+=d+1,t.closePath()}}})}}),e("echarts/component/axisPointer/findPointFromSeries",[$i,Yi,O],function(t){var e=t(Yi),i=t(O);return function(t,n){var r,a=[],o=t[Ve];if(null==o||!(r=n.getSeriesByIndex(o)))return{point:[]};var s=r[Fi](),l=i.queryDataIndex(s,t);if(null==l||e[Ce](l))return{point:[]};var u=s[F](l),c=r[Wi];if(r.getTooltipPosition)a=r.getTooltipPosition(l)||[];else if(c&&c[K])a=c[K](s.getValues(e.map(c[U],function(t){return r.coordDimToDataDim(t)[0]}),l,!0))||[];else if(u){var d=u[Oi]().clone();d[de](u[h]),a=[d.x+d.width/2,d.y+d[zi]/2]}return{point:a,el:u}}}),e("echarts/component/marker/MarkerView",[$i,q],function(t){return t(q)[ji]({type:"marker",init:function(){this.markerGroupMap={}},render:function(t,e,i){var n=this.markerGroupMap;for(var r in n)n.hasOwnProperty(r)&&(n[r].__keep=!1);var a=this.type+"Model";e[$e](function(t){var n=t[a];n&&this.renderSeries(t,n,e,i)},this);for(var r in n)n.hasOwnProperty(r)&&!n[r].__keep&&this.group[Ue](n[r].group)},renderSeries:function(){}})}),e("echarts/chart/helper/LineDraw",[$i,W,"./Line"],function(t){function e(t){return isNaN(t[0])||isNaN(t[1])}function i(t){return!e(t[0])&&!e(t[1])}function n(t){this._ctor=t||a,this.group=new r.Group}var r=t(W),a=t("./Line"),o=n[pi];return o.updateData=function(t){var e=this._lineData,n=this.group,r=this._ctor,a=t.hostModel,o={lineStyle:a[Ni]("lineStyle.normal")[P](),hoverLineStyle:a[Ni]("lineStyle.emphasis")[P](),labelModel:a[Ni](u),hoverLabelModel:a[Ni]("label.emphasis")};t.diff(e).add(function(e){if(i(t[N](e))){var a=new r(t,e,o);t[G](e,a),n.add(a)}})[Je](function(a,s){var l=e[F](s);return i(t[N](a))?(l?l.updateData(t,a,o):l=new r(t,a,o),t[G](a,l),void n.add(l)):void n[Ue](l)})[Ue](function(t){n[Ue](e[F](t))}).execute(),this._lineData=t},o.updateLayout=function(){var t=this._lineData;t[H](function(e,i){e.updateLayout(t,i)},this)},o[Ue]=function(){this.group[Ui]()},n}),e("echarts/component/marker/markerHelper",[$i,Yi,L],function(t){function e(t){return!(isNaN(parseFloat(t.x))&&isNaN(parseFloat(t.y)))}function i(t){return!isNaN(parseFloat(t.x))&&!isNaN(parseFloat(t.y))}function n(t,e,i){var n=-1;do n=Math.max(o.getPrecision(t.get(e,i)),n),t=t.stackedOn;while(t);return n}function r(t,e,i,r,a,o){var s=[],l=p(e,r,t),u=e.indicesOfNearest(r,l,!0)[0];s[a]=e.get(i,u,!0),s[o]=e.get(r,u,!0);var c=n(e,r,u);return c>=0&&(s[o]=+s[o][I](c)),s}var a=t(Yi),o=t(L),s=a[ni],l=a.curry,u={min:l(r,"min"),max:l(r,"max"),average:l(r,"average")},c=function(t,e){var n=t[Fi](),r=t[Wi];if(e&&!i(e)&&!a[Ce](e.coord)&&r){var o=r[U],l=h(e,n,r,t);if(e=a.clone(e),e.type&&u[e.type]&&l.baseAxis&&l.valueAxis){var c=s(o,l.baseAxis.dim),d=s(o,l.valueAxis.dim);e.coord=u[e.type](n,l.baseDataDim,l.valueDataDim,c,d),e.value=e.coord[d]}else{for(var f=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],v=0;2>v;v++)if(u[f[v]]){var m=t.coordDimToDataDim(o[v])[0];f[v]=p(n,m,f[v])}e.coord=f}}return e},h=function(t,e,i,n){var r={};return null!=t.valueIndex||null!=t.valueDim?(r.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,r.valueAxis=i[Q](n.dataDimToCoordDim(r.valueDataDim)),r.baseAxis=i[X](r.valueAxis),r.baseDataDim=n.coordDimToDataDim(r.baseAxis.dim)[0]):(r.baseAxis=n.getBaseAxis(),r.valueAxis=i[X](r.baseAxis),r.baseDataDim=n.coordDimToDataDim(r.baseAxis.dim)[0],r.valueDataDim=n.coordDimToDataDim(r.valueAxis.dim)[0]),r},d=function(t,i){return t&&t.containData&&i.coord&&!e(i)?t.containData(i.coord):!0},f=function(t,e,i,n){return 2>n?t.coord&&t.coord[n]:t.value},p=function(t,e,i){if("average"===i){var n=0,r=0;return t.each(e,function(t){isNaN(t)||(n+=t,r++)},!0),n/r}return t[fe](e,!0)["max"===i?1:0]};return{dataTransform:c,dataFilter:d,dimValueGetter:f,getAxisInfo:h,numCalculate:p}}),e("echarts/component/helper/listComponent",[$i,"../../util/layout",p,W],function(t){function e(t,e,n){i.positionElement(t,e.getBoxLayoutParams(),{width:n[Li](),height:n[Ci]()},e.get(Ai))}var i=t("../../util/layout"),n=t(p),r=t(W);return{layout:function(t,n,r){var a=i[Ii](n.getBoxLayoutParams(),{width:r[Li](),height:r[Ci]()},n.get(Ai));i.box(n.get(c),t,n.get("itemGap"),a.width,a[zi]),e(t,n,r)},addBackground:function(t,e){var i=n.normalizeCssArray(e.get(Ai)),a=t[Oi](),o=e[Gi](["color",bi]);o.fill=e.get(Zi);var s=new r.Rect({shape:{x:a.x-i[3],y:a.y-i[0],width:a.width+i[1]+i[3],height:a[zi]+i[0]+i[2]},style:o,silent:!0,z2:-1});r.subPixelOptimizeRect(s),t.add(s)}}}),e("echarts/component/timeline/TimelineModel",[$i,"../../model/Component","../../data/List",Yi,O],function(t){var e=t("../../model/Component"),i=t("../../data/List"),n=t(Yi),r=t(O),a=e[We]({type:"timeline",layoutMode:"box",defaultOption:{zlevel:0,z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{normal:{},emphasis:{}},label:{normal:{textStyle:{color:"#000"}},emphasis:{}},data:[]},init:function(t,e,i){this._data,this._names,this[y](t,i),this._initData()},mergeOption:function(){a[z](this,D,arguments),this._initData()},setCurrentIndex:function(t){null==t&&(t=this[k].currentIndex);var e=this._data.count();this[k].loop?t=(t%e+e)%e:(t>=e&&(t=e-1),0>t&&(t=0)),this[k].currentIndex=t},getCurrentIndex:function(){return this[k].currentIndex},isIndexMax:function(){return this.getCurrentIndex()>=this._data.count()-1},setPlayState:function(t){this[k].autoPlay=!!t},getPlayState:function(){return!!this[k].autoPlay},_initData:function(){var t=this[k],e=t.data||[],a=t.axisType,o=this._names=[];if(a===te){var s=[];n.each(e,function(t,e){var i,a=r.getDataItemValue(t);n[ui](t)?(i=n.clone(t),i.value=e):i=e,s.push(i),n[we](a)||null!=a&&!isNaN(a)||(a=""),o.push(a+"")}),e=s}var l={category:"ordinal",time:"time"}[a]||Se,u=this._data=new i([{name:"value",type:l}],this);u.initData(e,o)},getData:function(){return this._data},getCategories:function(){return this.get("axisType")===te?this._names.slice():void 0}});return a}),e("echarts/component/helper/sliderMove",[$i],function(){return function(t,e,i,n,r){function a(t,e,i){var n=e[ri]?e.slice():[e,e];return e[0]>e[1]&&n[A](),0>t&&n[0]+t0&&n[1]+t>i[1]&&(t=i[1]-n[1]),t}return t?("rigid"===n?(t=a(t,e,i),e[0]+=t,e[1]+=t):(t=a(t,e[r],i),e[r]+=t,"push"===n&&e[0]>e[1]&&(e[1-r]=e[r])),e):e}}),e("echarts/visual/visualSolution",[$i,Yi,"./VisualMapping"],function(t){function e(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!0}var i=t(Yi),n=t("./VisualMapping"),r=i.each,a={createVisualMappings:function(t,e,a){function o(){var t=function(){};t[pi].__hidden=t[pi];var e=new t;return e}var s={};return r(e,function(e){var l=s[e]=o();r(t[e],function(t,r){if(n.isValidType(r)){var o={type:r,visual:t};a&&a(o,e),l[r]=new n(o),r===bi&&(o=i.clone(o),o.type="colorAlpha",l.__hidden.__alphaForOpacity=new n(o))}})}),s},replaceVisualOption:function(t,n,r){var a;i.each(r,function(t){n.hasOwnProperty(t)&&e(n[t])&&(a=!0)}),a&&i.each(r,function(r){n.hasOwnProperty(r)&&e(n[r])?t[r]=i.clone(n[r]):delete t[r]})},applyVisual:function(t,e,r,a,o,s){function l(t){return r[ei](d,t)}function u(t,e){r.setItemVisual(d,t,e)}function c(t,i){d=null==s?t:i;var n=r.getRawDataItem(d);if(!n||n.visualMap!==!1)for(var c=a.call(o,t),f=e[c],p=h[c],v=0,m=p[ri];m>v;v++){var g=p[v];f[g]&&f[g].applyVisual(t,l,u)}}var h={};i.each(t,function(t){var i=n.prepareVisualTypes(e[t]);h[t]=i});var d;null==s?r.each(c,!0):r.each([s],c,!0)}};return a}),e("echarts/visual/VisualMapping",[$i,Yi,xi,be],function(t){function e(t){var e=t.pieceList;t.hasSpecialVisual=!1,f.each(e,function(e,i){e.originIndex=i,null!=e.visual&&(t.hasSpecialVisual=!0)})}function i(t){var e=t.categories,i=t.visual,n=t.categoryMap={};if(g(e,function(t,e){n[t]=e}),!f[Ce](i)){var r=[];f[ui](i)?g(i,function(t,e){var i=n[e];r[null!=i?i:x]=t}):r[x]=i,i=h(t,r)}for(var a=e[ri]-1;a>=0;a--)null==i[a]&&(delete n[e[a]],e.pop())}function n(t,e){var i=t.visual,n=[];f[ui](i)?g(i,function(t){n.push(t)}):null!=i&&n.push(i);var r={color:1,symbol:1};e||1!==n[ri]||r.hasOwnProperty(t.type)||(n[1]=n[0]),h(t,n)}function r(t){return{applyVisual:function(e,i,n){e=this.mapValueToVisual(e),n("color",t(i("color"),e))},_doMap:u([0,1])}}function a(t){var e=this[k].visual;return e[Math.round(v(t,[0,1],[0,e[ri]-1],!0))]||{}}function o(t){return function(e,i,n){n(t,this.mapValueToVisual(e))}}function s(t){var e=this[k].visual;return e[this[k].loop&&t!==x?t%e[ri]:t]}function l(){return this[k].visual[0]}function u(t){return{linear:function(e){return v(e,t,this[k].visual,!0)},category:s,piecewise:function(e,i){var n=c.call(this,i);return null==n&&(n=v(e,t,this[k].visual,!0)),n},fixed:l}}function c(t){var e=this[k],i=e.pieceList;if(e.hasSpecialVisual){var n=_.findPieceIndex(t,i),r=i[n];if(r&&r.visual)return r.visual[this.type]}}function h(t,e){return t.visual=e,"color"===t.type&&(t.parsedVisual=f.map(e,function(t){return p.parse(t)})),e}function d(t,e,i){return t?i>=e:i>e}var f=t(Yi),p=t(xi),v=t(be)[C],g=f.each,y=f[ui],x=-1,_=function(t){var r=t.mappingMethod,a=t.type,o=this[k]=f.clone(t);this.type=a,this.mappingMethod=r,this._normalizeData=S[r];var s=b[a];this.applyVisual=s.applyVisual,this.getColorMapper=s.getColorMapper,this._doMap=s._doMap[r],"piecewise"===r?(n(o),e(o)):r===te?o.categories?i(o):n(o,!0):(f[ci]("linear"!==r||o.dataExtent),n(o))};_[pi]={constructor:_,mapValueToVisual:function(t){var e=this._normalizeData(t);return this._doMap(e,t)},getNormalizer:function(){return f.bind(this._normalizeData,this)}};var b=_.visualHandlers={color:{applyVisual:o("color"),getColorMapper:function(){var t=this[k];return f.bind(t.mappingMethod===te?function(t,e){return!e&&(t=this._normalizeData(t)),s.call(this,t)}:function(e,i,n){var r=!!n;return!i&&(e=this._normalizeData(e)),n=p.fastMapToColor(e,t.parsedVisual,n),r?n:p.stringify(n,"rgba")},this)},_doMap:{linear:function(t){return p.stringify(p.fastMapToColor(t,this[k].parsedVisual),"rgba")},category:s,piecewise:function(t,e){var i=c.call(this,e);return null==i&&(i=p.stringify(p.fastMapToColor(t,this[k].parsedVisual),"rgba")),i},fixed:l}},colorHue:r(function(t,e){return p.modifyHSL(t,e)}),colorSaturation:r(function(t,e){return p.modifyHSL(t,null,e)}),colorLightness:r(function(t,e){return p.modifyHSL(t,null,null,e)}),colorAlpha:r(function(t,e){return p.modifyAlpha(t,e)}),opacity:{applyVisual:o(bi),_doMap:u([0,1])},symbol:{applyVisual:function(t,e,i){var n=this.mapValueToVisual(t);if(f[we](n))i(M,n);else if(y(n))for(var r in n)n.hasOwnProperty(r)&&i(r,n[r])},_doMap:{linear:a,category:s,piecewise:function(t,e){var i=c.call(this,e);return null==i&&(i=a.call(this,t)),i},fixed:l}},symbolSize:{applyVisual:o(w),_doMap:u([0,1])}},S={linear:function(t){return v(t,this[k].dataExtent,[0,1],!0)},piecewise:function(t){var e=this[k].pieceList,i=_.findPieceIndex(t,e,!0);return null!=i?v(i,[0,e[ri]-1],[0,1],!0):void 0},category:function(t){var e=this[k].categories?this[k].categoryMap[t]:t;return null==e?x:e},fixed:f.noop};return _.listVisualTypes=function(){var t=[];return f.each(b,function(e,i){t.push(i)}),t},_.addVisualHandler=function(t,e){b[t]=e},_.isValidType=function(t){return b.hasOwnProperty(t)},_.eachVisual=function(t,e,i){f[ui](t)?f.each(t,e,i):e.call(i,t)},_.mapVisual=function(t,e,i){var n,r=f[Ce](t)?[]:f[ui](t)?{}:(n=!0,null);return _.eachVisual(t,function(t,a){var o=e.call(i,t,a);n?r=o:r[a]=o}),r},_.retrieveVisuals=function(t){var e,i={};return t&&g(b,function(n,r){t.hasOwnProperty(r)&&(i[r]=t[r],e=!0)}),e?i:null},_.prepareVisualTypes=function(t){if(y(t)){var e=[];g(t,function(t,i){e.push(i)}),t=e}else{if(!f[Ce](t))return[];t=t.slice()}return t.sort(function(t,e){return"color"===e&&"color"!==t&&0===t[ni]("color")?1:-1}),t},_.dependsOn=function(t,e){return"color"===e?!(!t||0!==t[ni](e)):t===e},_.findPieceIndex=function(t,e,i){function n(e,i){var n=Math.abs(e-t);a>n&&(a=n,r=i)}for(var r,a=1/0,o=0,s=e[ri];s>o;o++){var l=e[o].value;if(null!=l){if(l===t||typeof l===fi&&l===t+"")return o;i&&n(l,o)}}for(var o=0,s=e[ri];s>o;o++){var u=e[o],c=u[m],h=u.close;if(c){if(c[0]===-1/0){if(d(h[1],t,c[1]))return o}else if(1/0===c[1]){if(d(h[0],c[0],t))return o}else if(d(h[0],c[0],t)&&d(h[1],t,c[1]))return o;i&&n(c[0],o),i&&n(c[1],o)}}return i?1/0===t?e[ri]-1:t===-1/0?0:r:void 0},_}),e("echarts/chart/pie/labelLayout",[$i,"zrender/contain/text"],function(t){function e(t,e,i,n,r,a,o){function s(e,i,n){for(var r=e;i>r;r++)if(t[r].y+=n,r>e&&i>r+1&&t[r+1].y>t[r].y+t[r][zi])return void l(r,n/2);l(i-1,n/2)}function l(e,i){for(var n=e;n>=0&&(t[n].y-=i,!(n>0&&t[n].y>t[n-1].y+t[n-1][zi]));n--);}function u(t,e,i,n,r,a){for(var o=a>0?e?Number.MAX_VALUE:0:e?Number.MAX_VALUE:0,s=0,l=t[ri];l>s;s++)if(t[s][Mi]!==Ti){var u=Math.abs(t[s].y-n),c=t[s].len,h=t[s].len2,d=r+c>u?Math.sqrt((r+c+h)*(r+c+h)-u*u):Math.abs(t[s].x-i);e&&d>=o&&(d=o-10),!e&&o>=d&&(d=o+10),t[s].x=i+d*a,o=d}}t.sort(function(t,e){return t.y-e.y});for(var c,h=0,d=t[ri],f=[],p=[],v=0;d>v;v++)c=t[v].y-h,0>c&&s(v,d,-c,r),h=t[v].y+t[v][zi];0>o-h&&l(d-1,h-o);for(var v=0;d>v;v++)t[v].y>=i?p.push(t[v]):f.push(t[v]);u(f,!1,e,i,n,r),u(p,!0,e,i,n,r)}function i(t,i,n,r,a,o){for(var s=[],l=[],u=0;uM?-1:1)*b,k=L;r=I+(0>M?-5:5),a=k,f=[[P,A],[C,L],[I,k]]}p=T?Ti:M>0?"left":"right"}var D=g[Ni](Bi)[Ri](),z=g.get(l)?0>M?-w+Math.PI:-w:0,O=t.getFormattedLabel(i,se)||c[R](i),V=n[Oi](O,D,p,"top");d=!!z,v.label={x:r,y:a,position:y,height:V[zi],len:_,len2:b,linePoints:f,textAlign:p,verticalAlign:"middle",font:D,rotation:z},T||h.push(v.label)}),!d&&t.get("avoidLabelOverlap")&&i(h,o,s,e,r,a)}}),e("echarts/component/axis/cartesianAxisHelper",[$i,Yi],function(t){var e=t(Yi),i={};return i.layout=function(t,i,n){function r(t){var e=a[Q](t);return e[$](e[Y](0))}n=n||{};var a=t[Wi],o=i.axis,s={},l=o[Mi],u=o.onZero?"onZero":l,c=o.dim,h=a.getRect(),d=[h.x,h.x+h.width,h.y,h.y+h[zi]],f=i.get(re)||0,p={x:{top:d[2]-f,bottom:d[3]+f},y:{left:d[0]-f,right:d[1]+f}};p.x.onZero=Math.max(Math.min(r("y"),p.x[Si]),p.x.top),p.y.onZero=Math.max(Math.min(r("x"),p.y.right),p.y.left),s[Mi]=["y"===c?p.y[u]:d[0],"x"===c?p.x[u]:d[3]],s[ee]=Math.PI/2*("x"===c?0:1);var v={top:-1,bottom:1,left:-1,right:1};s.labelDirection=s.tickDirection=s.nameDirection=v[l],s.labelOffset=o.onZero?p[c][l]-p[c].onZero:0,i.get("axisTick.inside")&&(s.tickDirection=-s.tickDirection),e[j](n.labelInside,i.get("axisLabel.inside"))&&(s.labelDirection=-s.labelDirection);var m=i.get("axisLabel.rotate");return s.labelRotate="top"===u?-m:m,s.labelInterval=o.getLabelInterval(),s.z2=1,s},i}),e("echarts/component/axis/AxisView",[$i,"../axisPointer/modelHelper",q],function(t){function e(t,e,a,o,s,l){var u=r.getAxisPointerClass(t.axisPointerClass);if(u){var c=n.getAxisPointerModel(e);c?(t._axisPointer||(t._axisPointer=new u)).render(e,c,o,l):i(t,o)}}function i(t,e,i){var n=t._axisPointer;n&&n[He](e,i),t._axisPointer=null}var n=t("../axisPointer/modelHelper"),r=t(q)[ji]({type:"axis",_axisPointer:null,axisPointerClass:null,render:function(t,i,a,o){this.axisPointerClass&&n.fixValue(t),r[z](this,"render",arguments),e(this,t,i,a,o,!0)},updateAxisPointer:function(t,i,n,r){e(this,t,i,n,r,!1)},remove:function(t,e){var i=this._axisPointer;i&&i[Ue](e),r[z](this,Ue,arguments)},dispose:function(t,e){i(this,e),r[z](this,He,arguments)}}),a=[];return r.registerAxisPointerClass=function(t,e){a[t]=e},r.getAxisPointerClass=function(t){return t&&a[t]},r}),e("echarts/component/axis/AxisBuilder",[$i,Yi,p,W,"../../model/Model",L,gi,yi],function(t){function e(t){var e={componentType:t[Ye]};return e[t[Ye]+"Index"]=t[Fe],e}function i(t,e,i,n){var r,a,o=v(i-t[ee]),s=n[0]>n[1],l="start"===e&&!s||"start"!==e&&s;return g(o-w/2)?(a=l?Si:"top",r=Ti):g(o-1.5*w)?(a=l?"top":Si,r=Ti):(a=Pi,r=1.5*w>o&&o>w/2?l?"left":"right":l?"right":"left"),{rotation:o,textAlign:r,textVerticalAlign:a}}function n(t){var e=t.get("tooltip");return t.get(Di)||!(t.get("triggerEvent")||e&&e.show)}function r(t,e){var i=t.get("axisLabel.showMinLabel"),n=t.get("axisLabel.showMaxLabel"),r=e[0],o=e[1],s=e[e[ri]-1],l=e[e[ri]-2];i===!1?r[ai]=!0:null!=t.getMin()&&a(r,o)&&(i?o[ai]=!0:r[ai]=!0),n===!1?s[ai]=!0:null!=t.getMax()&&a(l,s)&&(n?l[ai]=!0:s[ai]=!0)}function a(t,e){var i=t&&t[Oi]().clone(),n=e&&e[Oi]().clone();if(i&&n){var r=x.identity([]);return x[l](r,r,-t[ee]),i[de](x.mul([],r,t[ie]())),n[de](x.mul([],r,e[ie]())),i.intersect(n)}}var o=t(Yi),u=t(p),c=t(W),d=t("../../model/Model"),f=t(L),v=f.remRadian,g=f.isRadianAroundZero,y=t(gi),x=t(yi),_=y[de],b=o[j],w=Math.PI,M=function(t,e){this.opt=e,this.axisModel=t,o[qi](e,{labelOffset:0,nameDirection:1,tickDirection:1,labelDirection:1,silent:!0}),this.group=new c.Group;var i=new c.Group({position:e[Mi].slice(),rotation:e[ee]});i[s](),this._transform=i[h],this._dumbGroup=i};M[pi]={constructor:M,hasBuilder:function(t){return!!S[t]},add:function(t){S[t].call(this)},getGroup:function(){return this.group}};var S={axisLine:function(){var t=this.opt,e=this.axisModel;if(e.get("axisLine.show")){var i=this.axisModel.axis[me](),n=this._transform,r=[i[0],0],a=[i[1],0];n&&(_(r,r,n),_(a,a,n)),this.group.add(new c.Line(c.subPixelOptimizeLine({anid:"line",shape:{x1:r[0],y1:r[1],x2:a[0],y2:a[1]},style:o[We]({lineCap:"round"},e[Ni]("axisLine.lineStyle")[P]()),strokeContainThreshold:t.strokeContainThreshold||5,silent:!0,z2:1})))}},axisTick:function(){var t=this.axisModel,e=t.axis;if(t.get("axisTick.show")&&!e.scale.isBlank())for(var i=t[Ni]("axisTick"),n=this.opt,r=i[Ni]("lineStyle"),a=i.get(ri),s=I(i,n.labelInterval),l=e.getTicksCoords(i.get("alignWithLabel")),u=e.scale[ve](),h=[],d=[],f=this._transform,p=0;pv[1]?-1:1,g=["start"===h?v[0]-m*p:"end"===h?v[1]+m*p:(v[0]+v[1])/2,h===Pi?t.labelOffset+d*p:0],y=r.get("nameRotate");null!=y&&(y=y*w/180);var x;h===Pi?l=A(t[ee],null!=y?y:t[ee],d):(l=i(t,h,y||0,v),x=t.axisNameAvailableWidth,null!=x&&(x=Math.abs(x/Math.sin(l[ee])),!isFinite(x)&&(x=null)));var _=f[Ri](),M=r.get("nameTruncate",!0)||{},S=M.ellipsis,T=b(t.nameTruncateMaxWidth,M.maxWidth,x),P=null!=S&&null!=T?u.truncateText(a,T,_,S,{minChar:2,placeholder:M.placeholder}):a,C=r.get("tooltip",!0),L=r[Ye],I={componentType:L,name:a,$vars:["name"]};I[L+"Index"]=r[Fe];var k=new c.Text({anid:"name",__fullText:a,__truncatedText:P,style:{text:P,textFont:_,fill:f[Vi]()||r.get("axisLine.lineStyle.color"),textAlign:l[Ei],textVerticalAlign:l.textVerticalAlign},position:g,rotation:l[ee],silent:n(r),z2:1,tooltip:C&&C.show?o[We]({content:a,formatter:function(){return a},formatterParams:I},C):null});r.get("triggerEvent")&&(k.eventData=e(r),k.eventData.targetType="axisName",k.eventData.name=a),this._dumbGroup.add(k),k[s](),this.group.add(k),k.decomposeTransform()}}},A=M.innerTextLayout=function(t,e,i){var n,r,a=v(e-t);return g(a)?(r=i>0?"top":Si,n=Ti):g(a-w)?(r=i>0?Si:"top",n=Ti):(r=Pi,n=a>0&&w>a?i>0?"right":"left":i>0?"left":"right"),{rotation:a,textAlign:n,textVerticalAlign:r}},C=M.ifIgnoreOnTick=function(t,e,i){var n,r=t.scale;return r.type===T&&(typeof i===Ae?(n=r[ve]()[e],!i(n,r[pe](n))):e%(i+1))},I=M.getInterval=function(t,e){var i=t.get(m);return(null==i||"auto"==i)&&(i=e),i};return M}),e("echarts/component/axisPointer/globalListener",[$i,_i,Yi,O],function(t){function e(t,e){function o(n,r){t.on(n,function(n){var o=a(e);u(l(t).records,function(t){t&&r(t,n,o[qe])}),i(o.pendings,e)})}l(t).initialized||(l(t).initialized=!0,o("click",s.curry(r,"click")),o(Re,s.curry(r,Re)),o("globalout",n))}function i(t,e){var i,n=t.showTip[ri],r=t.hideTip[ri];n?i=t.showTip[n-1]:r&&(i=t.hideTip[r-1]),i&&(i[qe]=null,e[qe](i))}function n(t,e,i){t.handler("leave",null,i)}function r(t,e,i,n){e.handler(t,i,n)}function a(t){var e={showTip:[],hideTip:[]},i=function(n){var r=e[n.type];r?r.push(n):(n[qe]=i,t[qe](n))};return{dispatchAction:i,pendings:e}}var o=t(_i),s=t(Yi),l=t(O).makeGetter(),u=s.each,c={};return c[Te]=function(t,i,n){if(!o.node){var r=i.getZr();l(r).records||(l(r).records={}),e(r,i);var a=l(r).records[t]||(l(r).records[t]={});a.handler=n}},c.unregister=function(t,e){if(!o.node){var i=e.getZr(),n=(l(i).records||{})[t];n&&(l(i).records[t]=null)}},c}),e("echarts/chart/helper/Line",[$i,"../../util/symbol",gi,"./LinePath",W,Yi,L],function(t){function e(t){return"_"+t+"Type"}function i(t,e,i){var n=e[ei](i,"color"),r=e[ei](i,t),a=e[ei](i,t+"Size");if(r&&"none"!==r){f[Ce](a)||(a=[a,a]);var o=l[v](r,-a[0]/2,-a[1]/2,a[0],a[1],n);return o.name=t,o}}function n(t){var e=new h({name:"line"});return r(e.shape,t),e}function r(t,e){var i=e[0],n=e[1],r=e[2];t.x1=i[0],t.y1=i[1],t.x2=n[0],t.y2=n[1],t.percent=1,r?(t.cpx1=r[0],t.cpy1=r[1]):(t.cpx1=0/0,t.cpy1=0/0)}function o(){var t=this,e=t.childOfName("fromSymbol"),i=t.childOfName("toSymbol"),n=t.childOfName("label");if(e||i||!n[ai]){for(var r=1,o=this[Ie];o;)o.scale&&(r/=o.scale[0]),o=o[Ie];var s=t.childOfName("line");if(this[a]||s[a]){var l=s.shape.percent,u=s.pointAt(0),h=s.pointAt(l),d=c.sub([],h,u);if(c[ye](d,d),e){e.attr(Mi,u);var f=s.tangentAt(0);e.attr(ee,Math.PI/2-Math.atan2(f[1],f[0])),e.attr("scale",[r*l,r*l])}if(i){i.attr(Mi,h);var f=s.tangentAt(1);i.attr(ee,-Math.PI/2-Math.atan2(f[1],f[0])),i.attr("scale",[r*l,r*l])}if(!n[ai]){n.attr(Mi,h);var p,v,m,g=5*r;if("end"===n.__position)p=[d[0]*g+h[0],d[1]*g+h[1]],v=d[0]>.8?"left":d[0]<-.8?"right":Ti,m=d[1]>.8?"top":d[1]<-.8?Si:Pi;else if(n.__position===Pi){var y=l/2,f=s.tangentAt(y),x=[f[1],-f[0]],_=s.pointAt(y);x[1]>0&&(x[0]=-x[0],x[1]=-x[1]),p=[_[0]+x[0]*g,_[1]+x[1]*g],v=Ti,m=Si;var b=-Math.atan2(f[1],f[0]);h[0].8?"right":d[0]<-.8?"left":Ti,m=d[1]>.8?Si:d[1]<-.8?"top":Pi;n.attr({style:{textVerticalAlign:n.__verticalAlign||m,textAlign:n.__textAlign||v},position:p,scale:[r,r]})}}}}function s(t,e,i){d.Group.call(this),this._createLine(t,e,i)}var l=t("../../util/symbol"),c=t(gi),h=t("./LinePath"),d=t(W),f=t(Yi),p=t(L),m=["fromSymbol","toSymbol"],g=s[pi];return g.beforeUpdate=o,g._createLine=function(t,r,a){var o=t.hostModel,s=t[N](r),l=n(s);l.shape.percent=0,d.initProps(l,{shape:{percent:1}},o,r),this.add(l);var u=new d.Text({name:"label"});this.add(u),f.each(m,function(n){var a=i(n,t,r);this.add(a),this[e(n)]=t[ei](r,n)},this),this._updateCommonStl(t,r,a)},g.updateData=function(t,n,a){var o=t.hostModel,s=this.childOfName("line"),l=t[N](n),u={shape:{}};r(u.shape,l),d[ne](s,u,o,n),f.each(m,function(r){var a=t[ei](n,r),o=e(r);if(this[o]!==a){this[Ue](this.childOfName(r));var s=i(r,t,n);this.add(s)}this[o]=a},this),this._updateCommonStl(t,n,a)},g._updateCommonStl=function(t,e,i){var n=t.hostModel,r=this.childOfName("line"),a=i&&i.lineStyle,o=i&&i.hoverLineStyle,s=i&&i.labelModel,l=i&&i.hoverLabelModel;if(!i||t.hasItemOption){var c=t[Z](e);a=c[Ni]("lineStyle.normal")[P](),o=c[Ni]("lineStyle.emphasis")[P](),s=c[Ni](u),l=c[Ni]("label.emphasis")}var h=t[ei](e,"color"),v=f[j](t[ei](e,bi),a[bi],1);r.useStyle(f[qi]({strokeNoScale:!0,fill:"none",stroke:h,opacity:v},a)),r.hoverStyle=o,f.each(m,function(t){var e=this.childOfName(t);e&&(e.setColor(h),e[wi]({opacity:v}))},this);var g,y,x=s[oe]("show"),_=l[oe]("show"),w=this.childOfName("label");if(x||_){var M=n[b](e);y=null==M?y=t[R](e):isFinite(M)?p.round(M):M,g=h||"#000"}if(x){var S=s[Ni](Bi);w[wi]({text:f[j](n.getFormattedLabel(e,se,t.dataType),y),textFont:S[Ri](),fill:S[Vi]()||g}),w.__textAlign=S.get("align"),w.__verticalAlign=S.get("baseline"),w.__position=s.get(Mi)}else w[wi]("text","");if(_){var T=l[Ni](Bi);w.hoverStyle={text:f[j](n.getFormattedLabel(e,le,t.dataType),y),textFont:T[Ri](),fill:T[Vi]()||g}}else w.hoverStyle={text:""};w[ai]=!x&&!_,d[ue](this)},g.updateLayout=function(t,e){this.setLinePoints(t[N](e))},g.setLinePoints=function(t){var e=this.childOfName("line");r(e.shape,t),e.dirty()},f[Me](s,d.Group),s}),e("echarts/component/timeline/TimelineView",[$i,"../../view/Component"],function(t){var e=t("../../view/Component");return e[We]({type:"timeline"})}),e("echarts/component/timeline/TimelineAxis",[$i,Yi,"../../coord/Axis","../../coord/axisHelper"],function(t){var e=t(Yi),i=t("../../coord/Axis"),n=t("../../coord/axisHelper"),r=function(t,e,n,r){i.call(this,t,e,n),this.type=r||"value",this._autoLabelInterval,this.model=null};return r[pi]={constructor:r,getLabelInterval:function(){var t=this.model,i=t[Ni](u),r=i.get(m);if(null!=r&&"auto"!=r)return r;var r=this._autoLabelInterval;return r||(r=this._autoLabelInterval=n.getAxisLabelInterval(e.map(this.scale[ve](),this[Y],this),n.getFormattedLabels(this,i.get("formatter")),i[Ni](Bi)[Ri](),t.get(c)===_)),r},isLabelIgnored:function(t){if(this.type===te){var e=this.getLabelInterval();return typeof e===Ae&&!e(t,this.scale[pe](t))||t%(e+1)}}},e[Me](r,i),r}),e("echarts/component/dataZoom/roams",[$i,Yi,"../../component/helper/RoamController","../../util/throttle"],function(t){function e(t){var e=t.getZr();return e[d]||(e[d]={})}function i(t,e,i){var n=new u(t.getZr());return n.enable(),n.on("pan",h(r,i)),n.on("zoom",h(a,i)),n}function n(t){l.each(t,function(e,i){e.count||(e.controller[He](),delete t[i])})}function r(t,e,i,n,r,a,s){o(t,function(o){return o.panGetRange(t.controller,e,i,n,r,a,s)})}function a(t,e,i,n){o(t,function(r){return r.zoomGetRange(t.controller,e,i,n)})}function o(t,e){var i=[];l.each(t.dataZoomInfos,function(t){var n=e(t);n&&i.push({dataZoomId:t.dataZoomId,start:n[0],end:n[1]})}),t[qe](i)}function s(t,e){t[qe]({type:"dataZoom",batch:e})}var l=t(Yi),u=t("../../component/helper/RoamController"),c=t("../../util/throttle"),h=l.curry,d="\x00_ec_dataZoom_roams",f={register:function(t,r){var a=e(t),o=r.dataZoomId,u=r.coordId;l.each(a,function(t){var e=t.dataZoomInfos;e[o]&&l[ni](r.allCoordIds,u)<0&&(delete e[o],t.count--)}),n(a);var h=a[u];h||(h=a[u]={coordId:u,dataZoomInfos:{},count:0},h.controller=i(t,r,h),h[qe]=l.curry(s,t)),h.controller.setPointerChecker(r.containsPoint),c.createOrUpdate(h,qe,r.throttleRate,"fixRate"),!h.dataZoomInfos[o]&&h.count++,h.dataZoomInfos[o]=r},unregister:function(t,i){var r=e(t);l.each(r,function(t){t.controller[He]();var e=t.dataZoomInfos;e[i]&&(delete e[i],t.count--)}),n(r)},shouldRecordRange:function(t,e){if(t&&"dataZoom"===t.type&&t.batch)for(var i=0,n=t.batch[ri];n>i;i++)if(t.batch[i].dataZoomId===e)return!1;return!0},generateCoordId:function(t){return t.type+"\x00_"+t.id}};return f +}),e("echarts/component/visualMap/VisualMapModel",[$i,q,Yi,_i,"../../visual/visualDefault","../../visual/VisualMapping","../../visual/visualSolution",O,L],function(t){var e=t(q),i=t(Yi),n=t(_i),r=t("../../visual/visualDefault"),a=t("../../visual/VisualMapping"),o=t("../../visual/visualSolution"),s=a.mapVisual,l=t(O),u=a.eachVisual,c=t(L),h=i[Ce],d=i.each,f=c.asc,p=c[C],v=i.noop,m=["#f6efa6","#d88273","#bf444c"],g=e[Hi]({type:"visualMap",dependencies:[je],stateList:["inRange","outOfRange"],replacableOptionKeys:["inRange","outOfRange",ki,"controller","color"],dataBound:[-1/0,1/0],layoutMode:{type:"box",ignoreSize:!0},defaultOption:{show:!0,zlevel:0,z:4,seriesIndex:null,min:0,max:200,dimension:null,inRange:null,outOfRange:null,left:0,right:null,top:null,bottom:0,itemWidth:null,itemHeight:null,inverse:!1,orient:"vertical",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",contentColor:"#5793f3",inactiveColor:"#aaa",borderWidth:0,padding:5,textGap:10,precision:0,color:null,formatter:null,text:null,textStyle:{color:"#333"}},init:function(t,e,i){this._dataExtent,this.targetVisuals={},this.controllerVisuals={},this.textStyleModel,this.itemSize,this[y](t,i)},optionUpdated:function(t,e){var i=this[k];n[li]||(i.realtime=!1),!e&&o.replaceVisualOption(i,t,this.replacableOptionKeys),this.textStyleModel=this[Ni](Bi),this.resetItemSize(),this.completeVisualOption()},resetVisual:function(t){var e=this.stateList;t=i.bind(t,this),this.controllerVisuals=o.createVisualMappings(this[k].controller,e,t),this.targetVisuals=o.createVisualMappings(this[k][ki],e,t)},resetTargetSeries:function(){var t=this[k],e=null==t[Ve];t[Ve]=e?[]:l.normalizeToArray(t[Ve]),e&&this[ge][$e](function(e,i){t[Ve].push(i)})},eachTargetSeries:function(t,e){i.each(this[k][Ve],function(i){t.call(e,this[ge].getSeriesByIndex(i))},this)},isTargetSeries:function(t){var e=!1;return this.eachTargetSeries(function(i){i===t&&(e=!0)}),e},formatValueText:function(t,e,n){function r(t){return t===u[0]?"min":t===u[1]?"max":(+t)[I](l)}var a,o,s=this[k],l=s.precision,u=this.dataBound,c=s.formatter;return n=n||["<",">"],i[Ce](t)&&(t=t.slice(),a=!0),o=e?t:a?[r(t[0]),r(t[1])]:r(t),i[we](c)?c[Le]("{value}",a?o[0]:o)[Le]("{value2}",a?o[1]:o):i.isFunction(c)?a?c(t[0],t[1]):c(t):a?t[0]===u[0]?n[0]+" "+o[1]:t[1]===u[1]?n[1]+" "+o[0]:o[0]+" - "+o[1]:o},resetExtent:function(){var t=this[k],e=f([t.min,t.max]);this._dataExtent=e},getDataDimension:function(t){var e=this[k].dimension;return null!=e?e:t[U][ri]-1},getExtent:function(){return this._dataExtent.slice()},completeVisualOption:function(){function t(t){h(o.color)&&!t.inRange&&(t.inRange={color:o.color.slice()[A]()}),t.inRange=t.inRange||{color:m},d(this.stateList,function(e){var n=t[e];if(i[we](n)){var a=r.get(n,"active",v);a?(t[e]={},t[e][n]=a):delete t[e]}},this)}function e(t,e,i){var n=t[e],o=t[i];n&&!o&&(o=t[i]={},d(n,function(t,e){if(a.isValidType(e)){var i=r.get(e,"inactive",v);null!=i&&(o[e]=i,"color"!==e||o.hasOwnProperty(bi)||o.hasOwnProperty("colorAlpha")||(o[bi]=[0,0]))}}))}function n(t){var e=(t.inRange||{})[M]||(t.outOfRange||{})[M],n=(t.inRange||{})[w]||(t.outOfRange||{})[w],r=this.get("inactiveColor");d(this.stateList,function(a){var o=this.itemSize,l=t[a];l||(l=t[a]={color:v?r:[r]}),null==l[M]&&(l[M]=e&&i.clone(e)||(v?"roundRect":["roundRect"])),null==l[w]&&(l[w]=n&&i.clone(n)||(v?o[0]:[o[0],o[0]])),l[M]=s(l[M],function(t){return"none"===t||"square"===t?"roundRect":t});var c=l[w];if(null!=c){var h=-1/0;u(c,function(t){t>h&&(h=t)}),l[w]=s(c,function(t){return p(t,[0,h],[0,o[0]],!0)})}},this)}var o=this[k],l={inRange:o.inRange,outOfRange:o.outOfRange},c=o[ki]||(o[ki]={}),f=o.controller||(o.controller={});i.merge(c,l),i.merge(f,l);var v=this.isCategory();t.call(this,c),t.call(this,f),e.call(this,c,"inRange","outOfRange"),n.call(this,f)},resetItemSize:function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},isCategory:function(){return!!this[k].categories},setSelected:v,getValueState:v,getVisualMeta:v});return g}),e("echarts/component/axisPointer/viewHelper",[$i,Yi,W,"zrender/contain/text",p,yi,"../../coord/axisHelper","../axis/AxisBuilder"],function(t){function e(t,e,i,n){var r=n[Li](),a=n[Ci]();t[0]=Math.min(t[0]+e,r)-e,t[1]=Math.min(t[1]+i,a)-i,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}var a=t(Yi),o=t(W),s=t("zrender/contain/text"),u=t(p),c=t(yi),h=t("../../coord/axisHelper"),d=t("../axis/AxisBuilder"),f={};return f.buildElStyle=function(t){var e,i=t.get("type"),n=t[Ni](i+"Style");return"line"===i?(e=n[P](),e.fill=null):"shadow"===i&&(e=n.getAreaStyle(),e[ce]=null),e},f.buildLabelElOption=function(t,a,o,l,c){var h=o.get("value"),d=f.getValueLabel(h,a.axis,a[ge],o.get("seriesDataIndices"),{precision:o.get("label.precision"),formatter:o.get("label.formatter")}),p=o[Ni]("label"),v=p[Ni](Bi),m=u.normalizeCssArray(p.get(Ai)||0),g=v[Ri](),y=s[Oi](d,g,c[Ei],c.textBaseline),x=c[Mi],_=y.width+m[1]+m[3],b=y[zi]+m[0]+m[2],w=c.align;"right"===w&&(x[0]-=_),w===Ti&&(x[0]-=_/2);var M=c.verticalAlign;M===Si&&(x[1]-=b),M===Pi&&(x[1]-=b/2),e(x,_,b,l);var S=p.get(Zi);S&&"auto"!==S||(S=a.get("axisLine.lineStyle.color")),t.label={shape:{x:0,y:0,width:_,height:b,r:p.get("borderRadius")},position:x.slice(),style:{text:d,textFont:g,textFill:v[Vi](),textPosition:"inside",fill:S,stroke:p.get("borderColor")||Qe,lineWidth:p.get("borderWidth")||0,shadowBlur:p.get(r),shadowColor:p.get("shadowColor"),shadowOffsetX:p.get(n),shadowOffsetY:p.get(i)},z2:10}},f.getValueLabel=function(t,e,i,n,r){var o=e.scale[pe](t,{precision:r.precision}),s=r.formatter;if(s){var l={value:h.getAxisRawValue(e,t),seriesData:[]};a.each(n,function(t){var e=i.getSeriesByIndex(t[Ve]),n=t.dataIndexInside,r=e&&e[Oe](n);r&&l.seriesData.push(r)}),a[we](s)?o=s[Le]("{value}",o):a.isFunction(s)&&(o=s(l))}return o},f.getTransformedPosition=function(t,e,i){var n=c[ti]();return c[l](n,n,i[ee]),c.translate(n,n,i[Mi]),o[de]([t[Y](e),(i.labelOffset||0)+(i.labelDirection||1)*(i.labelMargin||0)],n)},f.buildCartesianSingleLabelElOption=function(t,e,i,n,r,a){var o=d.innerTextLayout(i[ee],0,i.labelDirection);i.labelMargin=r.get("label.margin"),f.buildLabelElOption(e,n,r,a,{position:f.getTransformedPosition(n.axis,t,i),align:o[Ei],verticalAlign:o.textVerticalAlign})},f.makeLineShape=function(t,e,i){return i=i||0,{x1:t[i],y1:t[1-i],x2:e[i],y2:e[1-i]}},f.makeRectShape=function(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}},f.makeSectorShape=function(t,e,i,n,r,a){return{cx:t,cy:e,r0:i,r:n,startAngle:r,endAngle:a,clockwise:!0}},f}),e("echarts/chart/helper/LinePath",[$i,W,gi],function(t){function e(t){return isNaN(+t.cpx1)||isNaN(+t.cpy1)}var i=t(W),n=t(gi),r=i.Line[pi],a=i.BezierCurve[pi];return i.extendShape({type:"ec-line",style:{stroke:"#000",fill:null},shape:{x1:0,y1:0,x2:0,y2:0,percent:1,cpx1:null,cpy1:null},buildPath:function(t,i){(e(i)?r:a).buildPath(t,i)},pointAt:function(t){return e(this.shape)?r.pointAt.call(this,t):a.pointAt.call(this,t)},tangentAt:function(t){var i=this.shape,r=e(i)?[i.x2-i.x1,i.y2-i.y1]:a.tangentAt.call(this,t);return n[ye](r,r)}})}),e("echarts/component/axisPointer/BaseAxisPointer",[$i,Yi,"../../util/clazz",W,O,"./modelHelper","zrender/core/event","../../util/throttle"],function(t){function e(){}function a(t,e,i,n){o(p(i).lastProp,n)||(p(i).lastProp=n,e?f[ne](i,n,t):(i[si](),i.attr(n)))}function o(t,e){if(h[ui](t)&&h[ui](e)){var i=!0;return h.each(e,function(e,n){i&=o(t[n],e)}),!!i}return t===e}function s(t,e){t[e.get("label.show")?"show":"hide"]()}function l(t){return{position:t[Mi].slice(),rotation:t[ee]||0}}function u(t,e){var i=t.get("icon"),n={x:-1,y:-1,width:2,height:2},r=h[We]({style:{strokeNoScale:!0},rectHover:!0,cursor:"move",draggable:!0},e);return 0===i[ni]("image://")?(n.image=i.slice(8),r.style=n,new f.Image(r)):f.makePath(i[Le]("path://",""),r,n,Ti)}function c(t,e,i){var n=e.get("z"),r=e.get(De);t&&t[ze](function(t){"group"!==t.type&&(null!=n&&(t.z=n),null!=r&&(t[De]=r),t[Di]=i)})}var h=t(Yi),d=t("../../util/clazz"),f=t(W),p=t(O).makeGetter(),v=t("./modelHelper"),m=t("zrender/core/event"),g=t("../../util/throttle"),y=h.clone,x=h.bind;return e[pi]={_group:null,_lastGraphicKey:null,_handle:null,_dragging:!1,_lastValue:null,_lastStatus:null,_payloadInfo:null,animationThreshold:15,render:function(t,e,i,n){var r=e.get("value"),o=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=i,n||this._lastValue!==r||this._lastStatus!==o){this._lastValue=r,this._lastStatus=o;var s=this._group,l=this._handle;if(!o||"hide"===o)return s&&s.hide(),void(l&&l.hide());s&&s.show(),l&&l.show();var u={};this.makeElOption(u,r,t,e,i);var d=u.graphicKey;d!==this._lastGraphicKey&&this.clear(i),this._lastGraphicKey=d;var p=this._moveAnimation=this.determineAnimation(t,e);if(s){var v=h.curry(a,e,p);this.updatePointerEl(s,u,v,e),this.updateLabelEl(s,u,v,e)}else s=this._group=new f.Group,this.createPointerEl(s,u,t,e),this.createLabelEl(s,u,t,e),i.getZr().add(s);c(s,e,!0),this._renderHandle(r)}},remove:function(t){this.clear(t)},dispose:function(t){this.clear(t)},determineAnimation:function(t,e){var i=e.get(hi),n=t.axis,r=n.type===te,a=e.get("snap");if(!a&&!r)return!1;if("auto"===i||null==i){var o=this.animationThreshold;if(r&&n.getBandWidth()>o)return!0;if(a){var s=v.getAxisInfo(t).seriesDataCount,l=n[me]();return Math.abs(l[0]-l[1])/s>o}return!1}return i===!0},makeElOption:function(){},createPointerEl:function(t,e){var i=e.pointer;if(i){var n=p(t).pointerEl=new f[i.type](y(e.pointer));t.add(n)}},createLabelEl:function(t,e,i,n){if(e.label){var r=p(t).labelEl=new f.Rect(y(e.label));t.add(r),s(r,n)}},updatePointerEl:function(t,e,i){var n=p(t).pointerEl;n&&(n[wi](e.pointer.style),i(n,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,i,n){var r=p(t).labelEl;r&&(r[wi](e.label.style),i(r,{shape:e.label.shape,position:e.label[Mi]}),s(r,n))},_renderHandle:function(t){if(!this._dragging&&this.updateHandleTransform){var e=this._axisPointerModel,a=this._api.getZr(),o=this._handle,s=e[Ni]("handle"),l=e.get("status");if(!s.get("show")||!l||"hide"===l)return o&&a[Ue](o),void(this._handle=null);var d;this._handle||(d=!0,o=this._handle=u(s,{onmousemove:function(t){m.stop(t.event)},onmousedown:x(this._onHandleDragMove,this,0,0),drift:x(this._onHandleDragMove,this),ondragend:x(this._onHandleDragEnd,this)}),a.add(o)),c(o,e,!1);var f=["color","borderColor","borderWidth",bi,"shadowColor",r,n,i];o[wi](s[Gi](null,f));var p=s.get("size");h[Ce](p)||(p=[p,p]),o.attr("scale",[p[0]/2,p[1]/2]),g.createOrUpdate(this,"_doDispatchAxisPointer",s.get(di)||0,"fixRate"),this._moveHandleToValue(t,d)}},_moveHandleToValue:function(t,e){a(this._axisPointerModel,!e&&this._moveAnimation,this._handle,l(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(t,e){var i=this._handle;if(i){this._dragging=!0;var n=this.updateHandleTransform(l(i),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=n,i[si](),i.attr(l(n)),p(i).lastProp=null,this._doDispatchAxisPointer()}},_doDispatchAxisPointer:function(){var t=this._handle;if(t){var e=this._payloadInfo,i={type:"updateAxisPointer",x:e.cursorPoint[0],y:e.cursorPoint[1],tooltipOption:e.tooltipOption,highDownKey:"axisPointerHandle"},n=this._axisModel.axis;i[n.dim+"AxisId"]=this._axisModel.id,this._api[qe](i)}},_onHandleDragEnd:function(){this._dragging=!1;var t=this._handle;if(t){var e=this._axisPointerModel.get("value");this._moveHandleToValue(e),this._api[qe]({type:"hideTip"})}},getHandleTransform:null,updateHandleTransform:null,clear:function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),i=this._group,n=this._handle;e&&i&&(this._lastGraphicKey=null,i&&e[Ue](i),n&&e[Ue](n),this._group=null,this._handle=null,this._payloadInfo=null)},doClear:function(){},buildLabel:function(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}},e[pi].constructor=e,d.enableClassExtend(e),e}),e("echarts/component/helper/RoamController",[$i,"zrender/mixin/Eventful",Yi,"zrender/core/event","./interactionMutex"],function(t){function e(t){this.pointerChecker,this._zr=t;var e=u.bind,s=e(i,this),c=e(n,this),h=e(r,this),d=e(a,this),f=e(o,this);l.call(this),this.setPointerChecker=function(t){this.pointerChecker=t},this.enable=function(e){this.disable(),null==e&&(e=!0),(e===!0||"move"===e||"pan"===e)&&(t.on("mousedown",s),t.on(Re,c),t.on("mouseup",h)),(e===!0||"scale"===e||"zoom"===e)&&(t.on("mousewheel",d),t.on("pinch",f))},this.disable=function(){t.off("mousedown",s),t.off(Re,c),t.off("mouseup",h),t.off("mousewheel",d),t.off("pinch",f)},this[He]=this.disable,this.isDragging=function(){return this._dragging},this.isPinching=function(){return this._pinching}}function i(t){if(!t[ki]||!t[ki].draggable){var e=t[f],i=t[d];this.pointerChecker&&this.pointerChecker(t,e,i)&&(this._x=e,this._y=i,this._dragging=!0)}}function n(t){if(this._dragging&&(c.stop(t.event),"pinch"!==t.gestureEvent)){if(h.isTaken(this._zr,"globalPan"))return;var e=t[f],i=t[d],n=this._x,r=this._y,a=e-n,o=i-r;this._x=e,this._y=i,c.stop(t.event),this[Ge]("pan",a,o,n,r,e,i)}}function r(){this._dragging=!1}function a(t){if(0!==t.wheelDelta){var e=t.wheelDelta>0?1.1:1/1.1;s.call(this,t,e,t[f],t[d])}}function o(t){if(!h.isTaken(this._zr,"globalPan")){var e=t.pinchScale>1?1.1:1/1.1;s.call(this,t,e,t.pinchX,t.pinchY)}}function s(t,e,i,n){this.pointerChecker&&this.pointerChecker(t,i,n)&&(c.stop(t.event),this[Ge]("zoom",e,i,n))}var l=t("zrender/mixin/Eventful"),u=t(Yi),c=t("zrender/core/event"),h=t("./interactionMutex");return u.mixin(e,l),e}),e("echarts/visual/visualDefault",[$i,Yi],function(t){var e=t(Yi),i={get:function(t,i,r){var a=e.clone((n[t]||{})[i]);return r&&e[Ce](a)?a[a[ri]-1]:a}},n={color:{active:["#006edd","#e0ffff"],inactive:["rgba(0,0,0,0)"]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:["circle","roundRect","diamond"],inactive:["none"]},symbolSize:{active:[10,50],inactive:[0,0]}};return i}),e("echarts/component/helper/interactionMutex",[$i,q],function(t){function e(t){return t[i]||(t[i]={})}var i="\x00_ec_interaction_mutex",n={take:function(t,i,n){var r=e(t);r[i]=n},release:function(t,i,n){var r=e(t),a=r[i];a===n&&(r[i]=null)},isTaken:function(t,i){return!!e(t)[i]}};return t(q)[Pe]({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},function(){}),n}),e("echarts/component/tooltip/TooltipContent",[$i,Yi,xi,"zrender/core/event",p,_i],function(t){function e(t){var e="cubic-bezier(0.23, 1, 0.32, 1)",i="left "+t+"s "+e+",top "+t+"s "+e;return a.map(d,function(t){return t+"transition:"+i}).join(";")}function i(t){var e=[],i=t.get("fontSize"),n=t[Vi]();return n&&e.push("color:"+n),e.push("font:"+t[Ri]()),i&&e.push("line-height:"+Math.round(3*i/2)+"px"),u(["decoration","align"],function(i){var n=t.get(i);n&&e.push("text-"+i+":"+n)}),e.join(";")}function n(t){var n=[],r=t.get("transitionDuration"),a=t.get(Zi),s=t[Ni](Bi),d=t.get(Ai);return r&&n.push(e(r)),a&&(h[li]?n.push("background-Color:"+a):(n.push("background-Color:#"+o.toHex(a)),n.push("filter:alpha(opacity=70)"))),u(["width","color","radius"],function(e){var i="border-"+e,r=c(i),a=t.get(r);null!=a&&n.push(i+":"+a+("color"===e?"":"px"))}),n.push(i(s)),null!=d&&n.push("padding:"+l.normalizeCssArray(d).join("px ")+"px"),n.join(";")+";"}function r(t,e){var i=document.createElement("div"),n=this._zr=e.getZr();this.el=i,this._x=e[Li]()/2,this._y=e[Ci]()/2,t.appendChild(i),this._container=t,this._show=!1,this._hideTimeout;var r=this;i.onmouseenter=function(){r._enterable&&(clearTimeout(r._hideTimeout),r._show=!0),r._inContent=!0},i.onmousemove=function(e){if(e=e||window.event,!r._enterable){var i=n.handler;s.normalizeEvent(t,e,!0),i.dispatch(Re,e)}},i.onmouseleave=function(){r._enterable&&r._show&&r.hideLater(r._hideDelay),r._inContent=!1}}var a=t(Yi),o=t(xi),s=t("zrender/core/event"),l=t(p),u=a.each,c=l.toCamelCase,h=t(_i),d=["","-webkit-","-moz-","-o-"],f="position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;";return r[pi]={constructor:r,_enterable:!0,update:function(){var t=this._container,e=t.currentStyle||document.defaultView.getComputedStyle(t),i=t.style;"absolute"!==i[Mi]&&"absolute"!==e[Mi]&&(i[Mi]="relative")},show:function(t){clearTimeout(this._hideTimeout);var e=this.el;e.style.cssText=f+n(t)+";left:"+this._x+"px;top:"+this._y+"px;"+(t.get("extraCssText")||""),e.style.display=e.innerHTML?"block":"none",this._show=!0},setContent:function(t){this.el.innerHTML=null==t?"":t},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el;return[t.clientWidth,t.clientHeight]},moveTo:function(t,e){var i,n=this._zr;n&&n.painter&&(i=n.painter.getViewportRoot())&&(t+=i.offsetLeft||0,e+=i.offsetTop||0);var r=this.el.style;r.left=t+"px",r.top=e+"px",this._x=t,this._y=e},hide:function(){this.el.style.display="none",this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(a.bind(this.hide,this),t)):this.hide())},isShow:function(){return this._show}},r}),e("echarts/component/visualMap/helper",[$i,Yi,"../../util/layout"],function(t){var e=t(Yi),i=t("../../util/layout"),n={getItemAlign:function(t,e,n){var r=t[k],a=r.align;if(null!=a&&"auto"!==a)return a;for(var o={width:e[Li](),height:e[Ci]()},s=r[c]===_?1:0,l=[["left","right","width"],["top",Si,zi]],u=l[s],h=[0,null,10],d={},f=0;3>f;f++)d[l[1-s][f]]=h[f],d[u[f]]=2===f?n[0]:r[u[f]];var p=[["x","width",3],["y",zi,0]][s],v=i[Ii](d,o,r[Ai]);return u[(v.margin[p[2]]||0)+v[p[0]]+.5*v[p[1]]<.5*o[p[1]]?0:1]},convertDataIndex:function(t){return e.each(t||[],function(){null!=t[ii]&&(t.dataIndexInside=t[ii],t[ii]=null)}),t}};return n}),e("echarts/component/visualMap/VisualMapView",[$i,Yi,W,p,"../../util/layout",q,"../../visual/VisualMapping"],function(t){var e=t(Yi),i=t(W),n=t(p),r=t("../../util/layout"),a=t(q),o=t("../../visual/VisualMapping");return a[ji]({type:"visualMap",autoPositionValues:{left:1,right:1,top:1,bottom:1},init:function(t,e){this[ge]=t,this.api=e,this.visualMapModel},render:function(t){return this.visualMapModel=t,t.get("show")===!1?void this.group[Ui]():void this.doRender.apply(this,arguments)},renderBackground:function(t){var e=this.visualMapModel,r=n.normalizeCssArray(e.get(Ai)||0),a=t[Oi]();t.add(new i.Rect({z2:-1,silent:!0,shape:{x:a.x-r[3],y:a.y-r[0],width:a.width+r[3]+r[1],height:a[zi]+r[0]+r[2]},style:{fill:e.get(Zi),stroke:e.get("borderColor"),lineWidth:e.get("borderWidth")}}))},getControllerVisual:function(t,i,n){function r(t){return u[t]}function a(t,e){u[t]=e}n=n||{};var s=n.forceState,l=this.visualMapModel,u={};if(i===M&&(u[M]=l.get("itemSymbol")),"color"===i){var c=l.get("contentColor");u.color=c}var h=l.controllerVisuals[s||l.getValueState(t)],d=o.prepareVisualTypes(h);return e.each(d,function(e){var s=h[e];n.convertOpacityToAlpha&&e===bi&&(e="colorAlpha",s=h.__alphaForOpacity),o.dependsOn(e,i)&&s&&s.applyVisual(t,r,a)}),u[i]},positionGroup:function(t){var e=this.visualMapModel,i=this.api;r.positionElement(t,e.getBoxLayoutParams(),{width:i[Li](),height:i[Ci]()})},doRender:e.noop})}),e("echarts/component/visualMap/PiecewiseView",[$i,"./VisualMapView",Yi,W,"../../util/symbol","../../util/layout",mi],function(t){var e=t("./VisualMapView"),i=t(Yi),n=t(W),r=t("../../util/symbol"),a=t("../../util/layout"),o=t(mi),s=e[We]({type:"visualMap.piecewise",doRender:function(){function t(t){var a=t.piece,s=new n.Group;s.onclick=i.bind(this._onItemClick,this,a),this._enableHoverLink(s,t.indexInModelPieceList);var c=r.getRepresentValue(a);if(this._createItemSymbol(s,c,[0,0,d[0],d[1]]),v){var f=this.visualMapModel.getValueState(c);s.add(new n.Text({style:{x:"right"===h?-o:d[0]+o,y:d[1]/2,text:a.text,textVerticalAlign:"middle",textAlign:h,textFont:l,fill:u,opacity:"outOfRange"===f?.5:1}}))}e.add(s)}var e=this.group;e[Ui]();var r=this.visualMapModel,o=r.get("textGap"),s=r.textStyleModel,l=s[Ri](),u=s[Vi](),h=this._getItemAlign(),d=r.itemSize,f=this._getViewData(),p=f.endsText,v=i[j](r.get("showLabel",!0),!p);p&&this._renderEndsText(e,p[0],d,v,h),i.each(f.viewPieceList,t,this),p&&this._renderEndsText(e,p[1],d,v,h),a.box(r.get(c),e,r.get("itemGap")),this.renderBackground(e),this.positionGroup(e)},_enableHoverLink:function(t,e){function n(t){var i=this.visualMapModel;i[k].hoverLink&&this.api[qe]({type:t,batch:o.convertDataIndex(i.findTargetDataIndices(e))})}t.on(Be,i.bind(n,this,Ze)).on(Ee,i.bind(n,this,"downplay"))},_getItemAlign:function(){var t=this.visualMapModel,e=t[k];if(e[c]===x)return o.getItemAlign(t,this.api,t.itemSize);var i=e.align;return i&&"auto"!==i||(i="left"),i},_renderEndsText:function(t,e,i,r,a){if(e){var o=new n.Group,s=this.visualMapModel.textStyleModel;o.add(new n.Text({style:{x:r?"right"===a?i[0]:0:i[0]/2,y:i[1]/2,textVerticalAlign:"middle",textAlign:r?a:Ti,text:e,textFont:s[Ri](),fill:s[Vi]()}})),t.add(o)}},_getViewData:function(){var t=this.visualMapModel,e=i.map(t.getPieceList(),function(t,e){return{piece:t,indexInModelPieceList:e}}),n=t.get("text"),r=t.get(c),a=t.get(J);return(r===_?a:!a)?e[A]():n&&(n=n.slice()[A]()),{viewPieceList:e,endsText:n}},_createItemSymbol:function(t,e,i){t.add(r[v](this.getControllerVisual(e,M),i[0],i[1],i[2],i[3],this.getControllerVisual(e,"color")))},_onItemClick:function(t){var e=this.visualMapModel,n=e[k],r=i.clone(n.selected),a=e.getSelectedMapKey(t);"single"===n.selectedMode?(r[a]=!0,i.each(r,function(t,e){r[e]=e===a})):r[a]=!r[a],this.api[qe]({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:r})}});return s}),e("echarts/component/visualMap/PiecewiseModel",[$i,"./VisualMapModel",Yi,"../../visual/VisualMapping","../../visual/visualDefault",L],function(t){function e(t,e){var i=t[J];(t[c]===x?!i:i)&&e[A]()}var i=t("./VisualMapModel"),n=t(Yi),r=t("../../visual/VisualMapping"),a=t("../../visual/visualDefault"),o=t(L).reformIntervals,s=i[We]({type:"visualMap.piecewise",defaultOption:{selected:null,minOpen:!1,maxOpen:!1,align:"auto",itemWidth:20,itemHeight:14,itemSymbol:"roundRect",pieceList:null,categories:null,splitNumber:5,selectedMode:"multiple",itemGap:10,hoverLink:!0,showLabel:null},optionUpdated:function(t,e){s[z](this,"optionUpdated",arguments),this._pieceList=[],this.resetTargetSeries(),this.resetExtent();var i=this._mode=this._determineMode();l[this._mode].call(this),this._resetSelected(t,e);var r=this[k].categories;this.resetVisual(function(t,e){"categories"===i?(t.mappingMethod=te,t.categories=n.clone(r)):(t.dataExtent=this[me](),t.mappingMethod="piecewise",t.pieceList=n.map(this._pieceList,function(t){var t=n.clone(t);return"inRange"!==e&&(t.visual=null),t}))})},completeVisualOption:function(){function t(t,e,i){return t&&t[e]&&(n[ui](t[e])?t[e].hasOwnProperty(i):t[e]===i)}var e=this[k],o={},s=r.listVisualTypes(),l=this.isCategory();n.each(e.pieces,function(t){n.each(s,function(e){t.hasOwnProperty(e)&&(o[e]=1)})}),n.each(o,function(i,r){var o=0;n.each(this.stateList,function(i){o|=t(e,i,r)||t(e[ki],i,r)},this),!o&&n.each(this.stateList,function(t){(e[t]||(e[t]={}))[r]=a.get(r,"inRange"===t?"active":"inactive",l)})},this),i[pi].completeVisualOption.apply(this,arguments)},_resetSelected:function(t,e){var i=this[k],r=this._pieceList,a=(e?i:t).selected||{};if(i.selected=a,n.each(r,function(t){var e=this.getSelectedMapKey(t);a.hasOwnProperty(e)||(a[e]=!0)},this),"single"===i.selectedMode){var o=!1;n.each(r,function(t){var e=this.getSelectedMapKey(t);a[e]&&(o?a[e]=!1:o=!0)},this)}},getSelectedMapKey:function(t){return"categories"===this._mode?t.value+"":t.index+""},getPieceList:function(){return this._pieceList},_determineMode:function(){var t=this[k];return t.pieces&&t.pieces[ri]>0?"pieces":this[k].categories?"categories":"splitNumber"},setSelected:function(t){this[k].selected=n.clone(t)},getValueState:function(t){var e=r.findPieceIndex(t,this._pieceList);return null!=e&&this[k].selected[this.getSelectedMapKey(this._pieceList[e])]?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],a=i[Fi]();a.each(this.getDataDimension(a),function(e,i){var a=r.findPieceIndex(e,this._pieceList);a===t&&n.push(i)},!0,this),e.push({seriesId:i.id,dataIndex:n})},this),e},getRepresentValue:function(t){var e;if(this.isCategory())e=t.value;else if(null!=t.value)e=t.value;else{var i=t[m]||[];e=i[0]===-1/0&&1/0===i[1]?0:(i[0]+i[1])/2}return e},getVisualMeta:function(t){function e(e,n){var o=a.getRepresentValue({interval:e});n||(n=a.getValueState(o));var s=t(o,n);e[0]===-1/0?r[0]=s:1/0===e[1]?r[1]=s:i.push({value:e[0],color:s},{value:e[1],color:s})}if(!this.isCategory()){var i=[],r=[],a=this,o=this._pieceList.slice();if(o[ri]){var s=o[0][m][0];s!==-1/0&&o.unshift({interval:[-1/0,s]}),s=o[o[ri]-1][m][1],1/0!==s&&o.push({interval:[s,1/0]})}else o.push({interval:[-1/0,1/0]});var l=-1/0;return n.each(o,function(t){var i=t[m];i&&(i[0]>l&&e([l,i[0]],"outOfRange"),e(i.slice()),l=i[1])},this),{stops:i,outerColors:r}}}}),l={splitNumber:function(){var t=this[k],e=this._pieceList,i=t.precision,r=this[me](),a=t.splitNumber;a=Math.max(parseInt(a,10),1),t.splitNumber=a;for(var s=(r[1]-r[0])/a;+s[I](i)!==s&&5>i;)i++;t.precision=i,s=+s[I](i);var l=0;t.minOpen&&e.push({index:l++,interval:[-1/0,r[0]],close:[0,0]});for(var u=r[0],c=l+a;c>l;u+=s){var h=l===a-1?r[1]:u+s;e.push({index:l++,interval:[u,h],close:[1,1]})}t.maxOpen&&e.push({index:l++,interval:[r[1],1/0],close:[0,0]}),o(e),n.each(e,function(t){t.text=this.formatValueText(t[m])},this)},categories:function(){var t=this[k];n.each(t.categories,function(t){this._pieceList.push({text:this.formatValueText(t,!0),value:t})},this),e(t,this._pieceList)},pieces:function(){var t=this[k],i=this._pieceList;n.each(t.pieces,function(t,e){n[ui](t)||(t={value:t});var a={text:"",index:e};if(null!=t.label&&(a.text=t.label),t.hasOwnProperty("value")){var o=a.value=t.value;a[m]=[o,o],a.close=[1,1]}else{for(var s=a[m]=[],l=a.close=[0,0],u=[1,0,1],c=[-1/0,1/0],h=[],d=0;2>d;d++){for(var f=[["gte","gt","min"],["lte","lt","max"]][d],p=0;3>p&&null==s[d];p++)s[d]=t[f[p]],l[d]=u[p],h[d]=2===p;null==s[d]&&(s[d]=c[d])}h[0]&&1/0===s[1]&&(l[0]=0),h[1]&&s[0]===-1/0&&(l[1]=0),s[0]===s[1]&&l[0]&&l[1]&&(a.value=s[0])}a.visual=r.retrieveVisuals(t),i.push(a)},this),e(t,i),o(i),n.each(i,function(t){var e=t.close,i=[["<","≤"][e[1]],[">","≥"][e[0]]];t.text=t.text||this.formatValueText(null!=t.value?t.value:t[m],!1,i)},this)}};return s}),e("zrender",["zrender/zrender"],function(t){return t}),e("echarts",["echarts/echarts"],function(t){return t});var Ki=t("echarts");return Ki.graphic=t("echarts/util/graphic"),Ki.number=t("echarts/util/number"),Ki.format=t("echarts/util/format"),t("echarts/chart/bar"),t("echarts/chart/line"),t("echarts/chart/pie"),t("echarts/component/gridSimple"),t("echarts/component/title"),t("echarts/component/legend"),t("echarts/component/tooltip"),t("echarts/component/markPoint"),t("echarts/component/markLine"),t("echarts/component/markArea"),t("echarts/component/timeline"),t("echarts/component/dataZoom"),t("echarts/component/visualMap"),Ki}); \ No newline at end of file diff --git a/app-saas-src/script/feature/alarmDetail.js b/app-saas-src/script/feature/alarmDetail.js new file mode 100644 index 0000000..bee8d72 --- /dev/null +++ b/app-saas-src/script/feature/alarmDetail.js @@ -0,0 +1,186 @@ +apiready = function() { + var ctrl = { + alarmId: null, + websocket: null, + alarm: null, + + init: {}, + bind: {}, + getAlarm: {}, + renderAlarm: {}, + initWebsocket: {}, + + renderFilter: {} //渲染报警列表前的拦截器,用于处理体验账号模式下的数据 + } + + //初始化 + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + this.alarmId = api.pageParam.id; + ctrl.employeeId = $api.getStorage('employeeId'); + this.bind(); + this.getAlarm(); + } + + //事件绑定 + ctrl.bind = function() { + + //点击返回按钮 + $api.addEvt($api.dom("#back"), 'touchend', function() { + + api.closeWin(); + + // if(ctrl.websocket){ + // ctrl.websocket.close(); + // } + + }, false); + + //退出app 关闭socket + api.addEventListener({ + name: 'pause' + }, function(ret, err) { + // ctrl.websocket.close(); + }); + + //应用恢复 打开websocket + api.addEventListener({ + name: 'resume' + }, function(ret, err) { + // ctrl.initWebsocket(ctrl.alarm.serverIp, ctrl.alarm.varType, ctrl.alarm.varIndex); + }); + + // “生成工单” 按钮 点击 + $api.addEvt($api.dom("#create-order-btn"), 'touchend', function() { + api.confirm({ + title: '', + msg: '确定要生成工单吗', + buttons: ['确定', '取消'] + }, function(ret, err) { + var index = ret.buttonIndex; + if (index == 1) { // 确定 + ctrl.createOrder(); + } + }); + }) + } + + ctrl.getAlarm = function() { + var data = { + alarmId: this.alarmId + } + + var url = "/ems/rest/alarm"; + + $api.get(url, data, function(ret, err) { + + if (!err && ret && ret.code === 200) { + $api.css($api.dom("#content"), 'display:block'); + $api.css($api.dom("#empty-tips"), 'display:none'); + ctrl.renderAlarm(ret.body); + if (ret.body.handleStatus == 0) { + $api.css($api.dom("#create-order-btn"), 'display:block'); + } + ctrl.alarm = ret.body; + } else { + $api.css($api.dom("#content"), 'display:none'); + $api.css($api.dom("#empty-tips"), 'display:block'); + } + + }); + } + + //渲染报警列表前的拦截器,用于处理体验账号模式下的数据 + ctrl.renderFilter = function(alarm) { + if ($api.getStorage('cus') && alarm.prName) { + alarm.prName = $api.guestPrName; + } + } + + ctrl.renderAlarm = function(alarm) { + //渲染报警列表前的拦截器,用于处理体验账号模式下的数据 + ctrl.renderFilter(alarm); + + $api.text($api.dom("#pr-name"), alarm.prName); + + var unit = alarm.unit ? alarm.unit : ''; + + var content = '

报警描述:' + alarm.alarmDesc + '
'; + + if (alarm.ddNum) { + content += ("
调度号:" + alarm.ddNum + "
"); + } + + if ($api.getStorage('cus')) { + content = content.replace($api.guestKeysPattern, $api.guestName); + } + + if (alarm.varType == "1") { // AI + var alarmValue = ((alarm.alarmValue || alarm.alarmValue == 0) ? alarm.alarmValue.toFixed(2) : ''); + content += '
报警值:' + alarmValue + unit + '
'; + content += '
报警设定值:' + + ((alarm.lowLimit || alarm.lowLimit == 0) ? "下限 " + alarm.lowLimit + unit : '') + + ((alarm.lowLimit || alarm.lowLimit == 0) && (alarm.topLimit || alarm.topLimit == 0) ? "," : '') + + ((alarm.topLimit || alarm.topLimit == 0) ? "上限 " + alarm.topLimit + unit : '') + + '
'; + } else { + if (alarm.showValue) { + content += ('
报警值:' + alarm.valueDefine + '
') + } + } + + // 处理状态 + content += '
处理状态:' + ['未处理', '处理中', '已处理', '已确认'][alarm.handleStatus] + '
' + + // 如果已确认 显示确认的原因 + if (alarm.handleStatus == 3) { + content += '
确认原因:' + alarm.reason + '
'; + } + + // content += '
历史报警:' + alarm.historyAlarmCount + '次
'; + // content += '
历史抢修:' + alarm.historyQxCount + '次
'; + var alarmTime = (alarm.alarmTime ? moment(alarm.alarmTime).format("YYYY-MM-DD HH:mm:ss") : "") + if (alarm.lastAlarmTime) { + var lastAlarmTime = moment(alarm.lastAlarmTime).format("YYYY-MM-DD HH:mm:ss"); + content += '
本次报警时间:' + alarmTime + '
'; + content += '
上次报警时间:' + lastAlarmTime + '
'; + } else { + content += ('
本次报警时间:' + alarmTime + '
'); + } + + $api.html($api.dom("#content-body"), content); + + + } + + /** + * 弹出提示框 + */ + ctrl.toast = function (msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + }; + + // 生成工单 + ctrl.createOrder = function () { + var url = '/test/gong-dan/alarmTransferToWorkOrder/' + + ctrl.employeeId + '/' + + ctrl.alarmId; + + $api.post(url, function(ret, err) { + if (!err && ret && ret.code == "200") { + ctrl.toast('生成成功') + + api.closeWin(); + } else { + ctrl.toast('生成失败,' + ret.msg) + } + }) + }; + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/alarmQuery.js b/app-saas-src/script/feature/alarmQuery.js new file mode 100644 index 0000000..d40730d --- /dev/null +++ b/app-saas-src/script/feature/alarmQuery.js @@ -0,0 +1,358 @@ +var startDateStr; +var endDateStr; +var ipStartTime; +var ipEndTime; +var lbStartTime; +var lbEndTime; +var alarmList; +var btnLocation; +var btnClassification; +var btnProcess; +var emptyTips; + +var prId = ''; +var prName = "unkown"; +var currentPage = 0; //当前页数 +var totalPages = 1; +var isLoading = false; + +var requestArgs = { + startDate: null, + endDate: null, + alarmStatus: null, //null全部,"1"实时报警,"2"历史报警“ + handleStatus: null, //null全部,0未处理,1处理中,2已完成,3已确认 + location: null, //null全部,1高压侧,2低压侧,3变压器,4直流屏,5信号屏,6其他 + page: 1, + pageSize: 10 +} + +/** + * 显示右侧边栏 + */ +function showRightPanel() { + api.openDrawerPane({ + type: 'right' + }); +} + +/** + * 弹出提示框 + */ +function toast(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); +} + +// /** +// * 将字符型的日期解析为moment.js对象 +// * @param {String} dateStr +// * @return {moment.js} +// */ +// function parseDate(dateStr, format) { +// if (format) { +// return moment(dateStr, format); +// } else { +// return moment(dateStr); +// } +// } + +// /** +// * 将moment对象格式化输出 +// * @param {moment.js} date +// * @param {String} format +// * @return {String} +// */ +// function momentFormat(date, format) { +// if (format) { +// return date.format(format); +// } +// return date.format("YYYY-MM-DD"); +// } + +/** + * 清空报警列表 + */ +function clearAlarmList() { + $("#alarmList").empty(); +} + +/** + * 向界面中添加一条报警项 + * @param {*} record + */ +function addAlarmItem(record) { + var template = "
{prName} 
{alarmDesc}
{time}
{status}
"; + + var alarmDesc = record.alarmDesc ? record.alarmDesc : ""; + + if ($api.getStorage('cus')) { + alarmDesc = alarmDesc.replace($api.guestKeysPattern, $api.guestName); + } + + template = template.replace("{alarmId}", record.alarmId).replace("{orderId}", record.qxOrderId ? record.qxOrderId : ''); + template = template.replace("{prName}", record.prName).replace("{alarmDesc}", record.alarmDesc); + template = template.replace("{time}", moment(record.alarmTime).format('YYYY-MM-DD')); + switch (record.handleStatus) { + case 0: + template = template.replace("{color}", "red"); + template = template.replace("{status}", "未处理"); + break; + case 1: + template = template.replace("{color}", "yellow"); + template = template.replace("{status}", "处理中"); + break; + case 2: + template = template.replace("{color}", "green"); + template = template.replace("{status}", "已完成"); + break; + case 3: + template = template.replace("{color}", "gray"); + template = template.replace("{status}", "已确认"); + break; + default: + break; + } + alarmList.append(template); +} + +/** + * 查询报警 + */ +function queryData() { + var url = ''; + var data = {}; + var isEmployee = $api.getStorage('isEmployee'); + + requestArgs.page = currentPage; + + if (isEmployee) { // 员工登陆 + url = '/ems/rest/alarm/page'; + data = { + page: requestArgs.page, + pageSize: requestArgs.pageSize, + alarmStatus: requestArgs.alarmStatus, + handleStatus: requestArgs.handleStatus, + location: requestArgs.location, + employeeId: $api.getStorage('employeeId'), + roleId: $api.getStorage('roleId') + }; + } else { // 客户登录 + url = '/ems/rest/alarm/edpPage'; + data = { + page: requestArgs.page, + pageSize: requestArgs.pageSize, + alarmStatus: requestArgs.alarmStatus, + handleStatus: requestArgs.handleStatus, + location: requestArgs.location, + prId: powerRoom.prId, + userType: $api.getStorage('userType') + }; + }; + + if (startDateStr) { + data.startDate = (new Date(startDateStr.replace(/-/g, '/'))).getTime(); + } + + if (endDateStr) { + data.endDate = (new Date(endDateStr.replace(/-/g, '/'))).getTime(); + } + + if (prId) { + data.prId = prId; + } + + var isLoading = true; + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + $api.get(url, data, function(data, err) { + isLoading = false; + api.hideProgress(); + if (err) { + toast("网络请求失败"); + } else { + if (!data.code || data.code != "200" || !data.body) { + toast("服务器响应错误" + (data.code ? (",错误码:" + data.code) : "")); + } else { + totalPages = data.body.totalPages; + + if (data.body.records.length && data.body.records.length > 0) { + emptyTips.hide(); + for (var i = 0; i < data.body.records.length; i++) { + var record = data.body.records[i]; + addAlarmItem(record); + } + } else { + //如果没有记录,则显示查询不到数据的提示 + emptyTips.show(); + } + + } + } + }); +} + +/** + * 初始化分页参数,并查询历史报警 + */ +function firstQuery() { + currentPage = 1; + clearAlarmList(); + queryData(); +} + +/** + * 筛选条件发生变化 + */ + function filterSelectionChanged(ret, err) { + var result = ret.value; + requestArgs.alarmStatus = result.alarmClasses; // 全部时效 + requestArgs.handleStatus = result.af; // 全部状态 + requestArgs.location = result.catalogType; // 全部位置 + prId = result.prId; // 配电室 + currentPage = 1; + + btnLocation.attr("value", result.locName); + btnClassification.attr("value", result.alarmClassName); + btnProcess.attr("value", result.afName); + + firstQuery(); +} + +apiready = function() { + var ctrl = { + init: {}, + bind: {} + } + + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + var searcherTop = $('#heightHeader').height(); + $('#searcher').css('top',searcherTop); + //设置分页初始值 + currentPage = 1; + totalPages = 1; + powerRoom = $api.getStorage('powerRoom'); + //获取prId + // prId = powerRoom.prId; + // requestArgs.prId = prId; + //获取prName + prName = powerRoom.prName; + + ipStartTime = $("#ipStartTime"); + lbStartTime = $("#lbStartTime"); + ipEndTime = $("#ipEndTime"); + lbEndTime = $("#lbEndTime"); + alarmList = $("#alarmList"); + btnLocation = $("#btn-location"); + btnClassification = $("#btn-classification"); + btnProcess = $("#btn-process"); + emptyTips = $("#empty-tips"); + + ctrl.bind(); + //筛选条件发生变化 + api.addEventListener({ + name: 'filterSelectionChanged' + }, filterSelectionChanged); + + //用初始分页参数查询报警 + firstQuery(); + } + + ctrl.bind = function() { + var height = $(window).height() - $("header").height() - $(".fix-top").height(); + $(".alarmList-content").css("height", height); + //用户点击了返回按钮 + $(".back").on("touchend", function() { + api.closeWin(); + }); + + //用户点击了位置按钮 + $("#btn-location").on("touchend", showRightPanel); + + //用户点击了报警分类按钮 + $("#btn-classification").on("touchend", showRightPanel); + + //用户点击了处理状态按钮 + $("#btn-process").on("touchend", showRightPanel); + + //用户点击了筛选时效按钮 + $("#btn-filter").on("touchend", showRightPanel); + + //用户点击了查询按钮 + $("#btn-query").on("touchend", firstQuery); + + //监听日期选择器的改变事件 + $("#ipStartTime").on("change", function() { + startDateStr = ipStartTime.val(); + if (startDateStr && startDateStr != "") { + lbStartTime.html(startDateStr); + } else { + lbStartTime.html("开始日期"); + } + }); + + + //监听日期选择器的改变事件 + $("#ipEndTime").on("change", function endDateChanged() { + endDateStr = ipEndTime.val(); + if (endDateStr && endDateStr != "") { + lbEndTime.html(endDateStr); + } else { + lbEndTime.html("结束日期"); + } + }); + + //点击报警 + //如果已经生成抢修单 直接跳转到抢修单页 + //如果没有 跳转到报警详情页 + $("#alarmList").on("touchend", ".alarm", function() { + var alarmId = $(this).data("alarm-id"); + var orderId = $(this).data("order-id"); + if (orderId) { + api.openWin({ + 'name': 'repairDetail', + 'url': 'widget://html/feature/logQuery/repairLogDetail.html', + 'pageParam': { + id: orderId + } + }) + } else { + api.openWin({ + 'name': 'alarmDetail', + 'url': 'widget://html/feature/alarmDetail.html', + 'pageParam': { + id: alarmId + } + }) + } + }) + + + //监听滚动到底部事件 + api.addEventListener({ + name: 'scrolltobottom', + extra: { + threshold: 0 //设置距离底部多少距离时触发,默认值为0,数字类型 + } + }, function(ret, err) { + if (!isLoading) { + if (currentPage >= totalPages) { + toast("没有更多了"); + return; + } else { + currentPage++; + queryData(); + } + } + }); + } + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/alarmQueryRightPanel.js b/app-saas-src/script/feature/alarmQueryRightPanel.js new file mode 100644 index 0000000..b7776af --- /dev/null +++ b/app-saas-src/script/feature/alarmQueryRightPanel.js @@ -0,0 +1,217 @@ +filterResult = { + catalogType: null, + locName: "全部位置", + alarmClassName: "全部时效", + alarmClasses: null, // 时效 + afName: "全部状态", + af: null, + prId: '' +}; + +/** + * 为按钮绑定点击事件 + * @param {zepto object} buttons + */ +function bindSwitchButtonEvent(buttons) { + for (var i = 0; i < buttons.length; i++) { + var btn = $(buttons[i]); + btn.on('touchend', switchButtonClicked); + } +} + +/** + * 单选按钮被点击 + */ +function switchButtonClicked() { + var sender = $(this); + var brothers = sender.parent().children(); + for (var i = 0; i < brothers.length; i++) { + var inputElement = $(brothers[i]); + inputElement.removeClass("btn-highlight"); + } + sender.addClass("btn-highlight"); + + var groupName = sender.attr('group'); + switch (groupName) { + case "loc": + locationButton_clicked(sender); + break; + case "type": + alarmTypeButton_clicked(sender); + break; + case "process": + processButton_clicked(sender); + break; + case "pr": + prButton_clicked(sender); + break; + default: + break; + } +} + +// 配电室选择 +function prButton_clicked(sender) { + var pridvalue = sender.attr("pridvalue"); + if (pridvalue < 0) { + filterResult.prId = ""; + } else { + filterResult.prId = pridvalue; + } +} + +/** + * 用户点击了位置按钮 + * @param {zepto object} sender + */ +function locationButton_clicked(sender) { + var locvalue = sender.attr("locvalue"); + if (locvalue < 0) { + filterResult.locName = "全部位置"; + filterResult.catalogType = null; + } else { + filterResult.locName = sender.attr("value"); + filterResult.catalogType = locvalue; + } +} + +/** + * 用户点击了报警类型按钮 + * @param {zepto object} sender + */ +function alarmTypeButton_clicked(sender) { + var tpvalue = sender.attr("tpvalue"); + if (tpvalue < 0) { + filterResult.alarmClassName = "全部时效"; + filterResult.alarmClasses = null; + } else { + filterResult.alarmClassName = sender.attr("value"); + filterResult.alarmClasses = tpvalue; + } +} + +/** + * 用户点击了处理状态按钮 + * @param {zepto object} sender + */ +function processButton_clicked(sender) { + var psvalue = sender.attr("psvalue"); + if (psvalue < 0) { + filterResult.afName = "全部状态"; + filterResult.af = null; + } else { + filterResult.afName = sender.attr("value"); + filterResult.af = psvalue; + } +} + +/** + * 用户点击了确定按钮 + */ +function btOk_clicked() { + sendResult(); + api.closeDrawerPane(); +} + +/** + * 用户点击了取消按钮 + */ +function btCancel_clicked() { + api.closeDrawerPane(); +} + +/** + * 向主窗体发送筛选条件 + */ +function sendResult() { + api.sendEvent({ + name: 'filterSelectionChanged', + extra: filterResult + }); +} + +apiready = function () { + // 解决iphonex底部标签栏被虚拟home键遮挡 + $api.fixTabBar($api.byId('footer')); + var ctrl = { + init: {}, + bind: {} + } + + ctrl.bind = function () { + //为位置和类型绑定事件 + bindSwitchButtonEvent($("#location-group").children()); + bindSwitchButtonEvent($("#type-group").children()); + bindSwitchButtonEvent($("#process-group").children()); + //为确定和取消绑定事件 + $("#btn-cancel").on("touchend", btCancel_clicked); + $("#btn-ok").on("touchend", btOk_clicked); + } + + ctrl.init = function () { + ctrl.employeeId = $api.getStorage('employeeId'); + ctrl.roleId = $api.getStorage('roleId'); + ctrl.prListDom = $('#pr-group'); + + if (!$api.getStorage('isEmployee')) { + $('.pr').hide(); + }; + + ctrl.bind(); + + ctrl.getPrList(); + } + + // 获取配电室列表 + ctrl.getPrList = function() { + + var url = '/ems/rest/power/room/list'; + var data = { + employeeId: ctrl.employeeId, + roleId: ctrl.roleId + } + + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + $api.get(url, data, function(res, err) { + api.hideProgress(); + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != "200" || !res.body) { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } else { + ctrl.renderPrList(res.body); + } + } + }); + }; + + ctrl.renderPrList = function (prListData) { + var len = prListData.length; + var temp = ''; + + ctrl.prListDom.empty(); + + for (var i = 0; i < len; i++) { + var prItem = prListData[i]; + var domStr = ''; + + domStr += ''; + + domStr = domStr.replace("{prId}", prItem.prId) + .replace("{prName}", prItem.prName); + + temp += domStr; + } + + ctrl.prListDom.append(temp); + + bindSwitchButtonEvent($("#pr-group").children()); + }; + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/camera.js b/app-saas-src/script/feature/camera.js new file mode 100644 index 0000000..027ccba --- /dev/null +++ b/app-saas-src/script/feature/camera.js @@ -0,0 +1,218 @@ +apiready = function() { + var ctrl = { + init: {}, + bind: {}, + // 为了确保视频加载完成 延时显示 + delay: 5000, + definition: 'low', + cameraIndex: 0 + } + + ctrl.init = function() { + CommonModel.fitInStatusBar(); + + ctrl.bind(); + ctrl.getCameraList(); + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + // 清晰度切换 + ctrl.bindDefinitionBtnEvent(); + } + + ctrl.getCameraList = function() { + //显示载入动画 + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + var url = '/ems/rest/camera/h5/page'; + var args = { + page: 1, + pageSize: 9999, + prId: $api.getStorage('powerRoom')['prId'] + } + + $api.get(url, args, function(data, err) { + if (err) { + api.hideProgress(); + toast("网络请求失败"); + } else { + if (!data.code || data.code != "200") { + toast("服务器响应错误" + (data.code ? (",错误码:" + data.code) : "")); + api.hideProgress(); + $api.css($api.dom('#content'), 'display:none'); + $api.css($api.dom('#camera-empty-tips'), "display:block"); + } else { + api.hideProgress(); + ctrl.cameraList = data.body.records[0]['cameras']; + // 判断当前配电室是否有监控视频 + if (ctrl.cameraList.length && ctrl.cameraList.length == 0) { + $api.css($api.dom('#content'), 'display:none'); + $api.css($api.dom('#camera-empty-tips'), "display:block"); + return false; + } + ctrl.renderCameraList(); + // ctrl.initPlayer(); + // ctrl.startPlay(); + ctrl.play(); + } + } + }) + } + + // 渲染 摄像头列表按钮 + ctrl.renderCameraList = function() { + var domStr = ''; + ctrl.cameraList.forEach(function(item, index) { + if (index == 0) { + // domStr += ``; + domStr += ''; + } else { + // domStr += ``; + domStr += ''; + } + }) + $('#video-group').html(domStr); + ctrl.bindCameraBtnEvent(); + } + + // // 初始化视频播放器 + // ctrl.initPlayer = function() { + // ctrl.video = document.getElementById("video"); + // ctrl.player = new Hls(); + // ctrl.player.attachMedia(ctrl.video); + // + // ctrl.player.on(Hls.Events.MANIFEST_PARSED, function() { + // ctrl.video.play(); + // }); + // } + // + // // 开始播放视频 + // ctrl.startPlay = function() { + // ctrl.stopPlay(); + // if (!ctrl.cameraList.length) { + // alert('未发现视频源'); + // return false; + // } + // ctrl.loadSource(ctrl.player); + // } + // + // // 停止播放视频 + // ctrl.stopPlay = function() { + // ctrl.player.stopLoad(); + // } + + // ctrl.loadSource = function(toLoadPlayer) { + // var url = null; + // var source = ctrl.cameraList[ctrl.cameraIndex]; + // + // // 如果清晰度为流畅 优先播放低清晰度视频 + // if (ctrl.definition == 'low') { + // if (source.liveAddress) { + // url = source.liveAddress; + // } else { + // url = source.hdAddress; + // } + // } else { + // // 如果清晰度为高清,优先播放高清视频,没有高清视频源则播放流畅 + // if (source.hdAddress) { + // url = source.hdAddress; + // } else { + // alert('没有高清视频源!') + // url = source.liveAddress; + // } + // } + // toLoadPlayer.loadSource(url); + // } + + // 摄像头列表按钮 添加事件 + ctrl.bindCameraBtnEvent = function() { + var btnList = $('#video-group').children(); + + for (var i = 0; i < btnList.length; i++) { + var btn = $(btnList[i]); + btn.on('touchend', ctrl.switchButtonClicked); + } + } + // 摄像头列表按钮 点击 + ctrl.switchButtonClicked = function() { + var sender = $(this); + var brothers = sender.parent().children(); + for (var i = 0; i < brothers.length; i++) { + var inputElement = $(brothers[i]); + inputElement.removeClass("btn-highlight"); + } + sender.addClass("btn-highlight"); + + ctrl.cameraIndex = sender.attr('ctvalue'); + // ctrl.initPlayer(); + // ctrl.startPlay(); + ctrl.play(); + } + + // 清晰度 按钮 添加事件 + ctrl.bindDefinitionBtnEvent = function() { + var btns = $('#definition').children(); + for (var i = 0; i < btns.length; i++) { + var btn = $(btns[i]); + btn.on('touchend', ctrl.switchDefinition); + } + } + + ctrl.switchDefinition = function() { + var sender = $(this); + var brothers = sender.parent().children(); + for (var i = 0; i < brothers.length; i++) { + var inputElement = $(brothers[i]); + inputElement.removeClass("btn-highlight"); + } + sender.addClass("btn-highlight"); + ctrl.definition = sender.attr('ctvalue'); + // ctrl.initPlayer(); + // ctrl.startPlay(); + ctrl.play(); + } + + // 11111111 + ctrl.play = function () { + ctrl.video = document.getElementById("video"); + var url = null; + var source = ctrl.cameraList[ctrl.cameraIndex]; + + // 如果清晰度为流畅 优先播放低清晰度视频 + if (ctrl.definition == 'low') { + if (source.liveAddress) { + url = source.liveAddress; + } else { + url = source.hdAddress; + } + } else { + // 如果清晰度为高清,优先播放高清视频,没有高清视频源则播放流畅 + if (source.hdAddress) { + url = source.hdAddress; + } else { + alert('没有高清视频源!') + url = source.liveAddress; + } + } + ctrl.video.src = url; + ctrl.video.load(); + ctrl.video.play(); + } + // 11111111 + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/circuit.js b/app-saas-src/script/feature/circuit.js new file mode 100644 index 0000000..688ac15 --- /dev/null +++ b/app-saas-src/script/feature/circuit.js @@ -0,0 +1,121 @@ +apiready = function() { + var ctrl = { + init: {}, + bind: {}, + + prId: $api.getStorage('powerRoom')['prId'], + circuitList: [], + currentCircuitId: null, + } + + ctrl.init = function() { + CommonModel.fitInStatusBar(); + + ctrl.bind(); + ctrl.getCircuitList() + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + + $('#circuit-selector').on('touchend', function () { + $('.btngroup').css('display', 'block') + }); + } + + ctrl.getCircuitList = function() { + //显示载入动画 + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + var url = '/ems/rest/circuit/list'; + var args = { + prId: this.prId + } + + $api.get(url, args, function(data, err) { + if (err) { + api.hideProgress(); + toast("网络请求失败"); + } else { + if (!data.code || data.code != "200") { + toast("服务器响应错误" + (data.code ? (",错误码:" + data.code) : "")); + api.hideProgress(); + $api.css($api.dom('#content'), 'display:none'); + $api.css($api.dom('#circuit-empty-tips'), "display:block"); + } else { + api.hideProgress(); + ctrl.circuitList = data.body; + // 判断当前配电室是否有监控视频 + if (ctrl.circuitList.length && ctrl.circuitList.length == 0) { + $api.css($api.dom('#content'), 'display:none'); + $api.css($api.dom('#circuit-empty-tips'), "display:block"); + return false; + } + + ctrl.currentCircuitId = ctrl.circuitList[0]['circuitId'] + $('#circuit-selector span').text(ctrl.circuitList[0]['circuitName']) + // $('#circuit-frame').attr('src', `https://circuit.saas.dianwutong.com/run.html?circuitId=${ctrl.currentCircuitId}&prId=${ctrl.prId}&flag=2`) + $('#circuit-frame').attr('src', 'https://cdycircuit.saas.dianwutong.com/run.html?circuitId=' + ctrl.currentCircuitId + '&prId=' + ctrl.prId + '&flag=2') + ctrl.renderCircuitBtns() + } + } + }) + } + + ctrl.renderCircuitBtns = function() { + var domStr = ''; + ctrl.circuitList.forEach(function(item, index) { + if (index == 0) { + // domStr += ``; + domStr += ''; + } else { + // domStr += ``; + domStr += ''; + } + }) + $('#circuit-btns-group').html(domStr); + ctrl.bindCircuitBtnsEvent(); + } + + ctrl.bindCircuitBtnsEvent = function() { + var btnList = $('#circuit-btns-group').children(); + + for (var i = 0; i < btnList.length; i++) { + var btn = $(btnList[i]); + btn.on('touchend', ctrl.switchButtonClicked); + } + } + + ctrl.switchButtonClicked = function() { + var sender = $(this); + var brothers = sender.parent().children(); + for (var i = 0; i < brothers.length; i++) { + var inputElement = $(brothers[i]); + inputElement.removeClass("btn-highlight"); + } + sender.addClass("btn-highlight"); + + ctrl.currentCircuitId = sender.attr('ctvalue'); + + $('#circuit-selector span').text(sender.val()) + $('.btngroup').css('display', 'none') + + // $('#circuit-frame').attr('src', `https://circuit.saas.dianwutong.com/run.html?circuitId=${ctrl.currentCircuitId}&prId=${ctrl.prId}&flag=2`) + $('#circuit-frame').attr('src', 'https://cdycircuit.saas.dianwutong.com/run.html?circuitId=' + ctrl.currentCircuitId + '&prId=' + ctrl.prId + '&flag=2') + } + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/energy.js b/app-saas-src/script/feature/energy.js new file mode 100644 index 0000000..5575617 --- /dev/null +++ b/app-saas-src/script/feature/energy.js @@ -0,0 +1,1350 @@ +apiready = function() { + //默认显示对比分页tab-panel 即 ctrl.mode = ctrl.modes.COMPARE; + //默认时间粒度是日数据 即 ctrl.dimension = ctrl.dimensions.DAY; + //默认时间是当前月 + + //当收到侧栏页的 “energySelectedNumber”的消息,也就是侧栏页选中了调度号,同时在消息体里把调度号传回主页 调用获取数据的方法 getData + //getData方法调用各个获取数据的具体方法 + // getTimeData() + // getCompareData() + //获取到数据之后 保存在对用的数据对象里 + // compareAChartData + // compareATableData + // timeAChartData + // timeBChartData + // timeCChartData + // 然后调用分别在各个获取数据的方法里调用对应的render方法来渲染表格或者图表 + + //当切换了“分时分析”和“对比分析”panel 调用对应的render方法,不在调用getData(); + + //当点击“选择回路”按钮 弹出侧栏 选中调度号后 点击确定 主页收到“energySelectedNumber”消息 重新调用getData()方法,重复上述步骤 + + //当选择了“日数据”或“月数据”按钮, 重新调用getData()方法 + + //重新选择了日期之后, 重新调用getData()方法 + var ctrl = { + init: {}, + initChart: {}, + bind: {}, + backCallback: {}, + + modes: { + "COMPARE": 1, + "TIME": 2 + }, + mode: null, + dimensions: { + "HOUR": 1, //时数据 + "DAY": 2, //日数据 + "MONTH": 3, //月数据 + "YEAR": 4 //年数据 + }, + dimension: null, + when: null, + number: null, //调度号 + name: null, //设备名称 + + getCompareData: {}, + + compareAChartData: null, + compareAChart: null, + compareAChartOption: null, + + compareATableData: null, + + getTimeData: {}, + + timeAChart: null, + timeBChart: null, + timeCChart: null, + + timeAChartData: null, + timeBChartData: null, + timeCChartData: null, + + timeAChartOption: null, + timeBChartOption: null, + timeCChartOption: null, + + renderTimeAChart: {}, //渲染AChart + renderTimeBChart: {}, //渲染BChart + renderTimeCChart: {}, //渲染CChart + renderTimePanel: {}, //渲染整个分时分析的panel + + } + + ctrl.init = function() { + if (api.systemType == "android") { + api.setScreenOrientation({ + orientation: 'landscape_left' + }); + } + var _this = this; + + //默认选择日数据模式 + _this.dimension = _this.dimensions.DAY; + + //默认显示对比分析 + _this.mode = _this.modes.COMPARE; + + //获取配电室id + _this.prId = $api.getStorage('powerRoom').prId; + + //初始化时间 + ctrl.initDate(); + + ctrl.bind(); + + //关闭首页正在加载的提示框 + api.execScript({ + name: 'index', + frameName: 'featureFrame', + script: "api.hideProgress();" + }); + + + + } + //初始化时间选择器 默认为日数据的近一个星期 + ctrl.initDate = function() { + var _this = this; + //时数据 + if (_this.dimension == _this.dimensions.HOUR) { + //切换选择器类型 精确到时间 + $('.iptime').attr("type", "datetime-local"); + //默认是今天 + var dateUtils = new DateUtils(); + var endDate = dateUtils.getFormattedDate('yyyy/MM/dd hh'); + $('#lbEndTime').html(endDate); + _this.endLine = dateUtils.getMillisecondOfHourEnd(); + dateUtils.subDays(1); + var startDate = dateUtils.getFormattedDate('yyyy/MM/dd hh'); + $('#lbStartTime').html(startDate); + _this.startLine = dateUtils.getMillisecondOfHour(); + } + //日数据 + if (_this.dimension == _this.dimensions.DAY) { + //切换选择器类型 精确到时间 + $('.iptime').attr("type", "date"); + //默认范围 七天之前 - 今天 + var dateUtils = new DateUtils(); + var endDate = dateUtils.getFormattedDate('yyyy-MM-dd'); + $('#lbEndTime').html(endDate); + _this.endLine = dateUtils.getMillisecondOfDateEnd(); + dateUtils.subDays(7); + var startDate = dateUtils.getFormattedDate('yyyy-MM-dd'); + $('#lbStartTime').html(startDate); + _this.startLine = dateUtils.getMillisecondOfDate(); + + } + //月数据 + if (_this.dimension == _this.dimensions.MONTH) { + //切换选择器类型 精确到时间 + $('.iptime').attr("type", "month"); + //默认范围 31天之前 - 今天 + var dateUtils = new DateUtils(); + var endDate = dateUtils.getFormattedDate('yyyy-MM'); + $('#lbEndTime').html(endDate); + _this.endLine = dateUtils.getMillisecondOfLastDay(); + dateUtils.subDays(31); + var startDate = dateUtils.getFormattedDate('yyyy-MM'); + $('#lbStartTime').html(startDate); + _this.startLine = dateUtils.getMillisecondOfFirstDay(); + + } + //年数据 + if (_this.dimension == _this.dimensions.YEAR) { + //切换选择器类型 精确到时间 + $('.iptime').attr("type", "month"); + //默认范围 1年之前 - 今年 + var dateUtils = new DateUtils(); + var endDate = dateUtils.getFormattedDate('yyyy年'); + $('#lbEndTime').html(endDate); + ctrl.endLine = dateUtils.getMillisecondOfLastMonth(); + dateUtils.subDays(365); + var startDate = dateUtils.getFormattedDate('yyyy年'); + $('#lbStartTime').html(startDate); + ctrl.startLine = dateUtils.getMillisecondOfFirstMonth(); + } + // ctrl.getData(); + + } + + ctrl.bind = function() { + var height = $(window).height() - $("header").height() - $(".tabs").height(); + $(".content-container").css("height", height); + //绑定返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + ctrl.backCallback(); + }) + + //点击系统返回按钮 + api.addEventListener({ + name: 'keyback' + }, function(ret, err) { + ctrl.backCallback(); + }); + + //点击选择回路 + $api.addEvt($api.dom("#btn-pick-number"), "touchend", function() { + api.openDrawerPane({ + type: 'right' + }); + }, false); + + + //页面加载完成 初始化图表 + api.addEventListener({ + name: 'viewappear' + }, function(ret, err) { + api.sendEvent({ + name: 'energyAskNumber' + }); + }) + + //点击对比分析按钮 + $api.addEvt($api.dom("#compare-tab"), "touchend", function() { + $api.addCls(this, "active"); + $api.removeCls($api.dom("#time-tab"), "active"); + $api.css($api.dom("#compare-tab-panel"), 'display:block'); + $api.css($api.dom("#time-tab-panel"), 'display:none'); + ctrl.mode = ctrl.modes.COMPARE; + + //显示时数据 + if ($('.hour')) { + $('#time-selector').find('.hour').remove(); + } + var str = '' + $('#time-selector').append(str); + ctrl.dimension = ctrl.dimensions.DAY; + $('#day').prop("selected", true); + ctrl.initDate(); + ctrl.getData(); + // ctrl.renderComparePanel(); + }, false); + + //点击分时分析按钮 + $api.addEvt($api.dom("#time-tab"), "touchend", function() { + $api.addCls(this, "active"); + $api.removeCls($api.dom("#compare-tab"), "active"); + $api.css($api.dom("#time-tab-panel"), 'display:block'); + $api.css($api.dom("#compare-tab-panel"), 'display:none'); + ctrl.mode = ctrl.modes.TIME; + $('#time-selector').find('.hour').remove(); + //重新 + ctrl.dimension = ctrl.dimensions.DAY; + $('#day').prop("selected", true); + ctrl.initDate(); + ctrl.getData(); + // ctrl.renderTimePanel(); + + }, false); + + + //页面滚动 隐藏掉所有toopTip + $api.addEvt($api.dom("body"), "touchmove", function() { + ctrl.compareAChart && ctrl.compareAChart.dispatchAction({ + type: 'hideTip' + }); + ctrl.timeAChart && ctrl.timeAChart.dispatchAction({ + type: 'hideTip' + }); + if (true) { + + } + ctrl.timeBChart && ctrl.timeBChart.dispatchAction({ + type: 'hideTip' + }); + ctrl.timeCChart && ctrl.timeCChart.dispatchAction({ + type: 'hideTip' + }); + }, false); + + //监听收到选择调度号的事件 + api.addEventListener({ + name: 'energySelectedNumber' + }, function(ret, err) { + var number = ret.value.number; + var name = ret.value.name; + ctrl.number = number; + ctrl.name = name; + ctrl.getData(); + }); + + //监听数据类型的变化 + $('#time-selector').on("change", function() { + ctrl.getDataType(); + }) + + //监听开始时间变化 + $('#startTime-select').on('change', function() { + var startTimeValue = $api.val($api.dom("#startTime-select")); + var dates = new Date(startTimeValue); + var year = dates.getUTCFullYear(); + var month = dates.getUTCMonth() + 1; + var date = dates.getUTCDate(); + var hour = dates.getUTCHours(); + //时数据 + if (ctrl.dimension == ctrl.dimensions.HOUR) { + startTimeValue = year + '/' + month + '/' + date + ' ' + hour; + var startLine = startTimeValue + ":00:00"; + ctrl.startLine = new Date(startLine).getTime(); + + } + //日数据 + if (ctrl.dimension == ctrl.dimensions.DAY) { + startTimeValue = year + '/' + month + '/' + date; + var startLine = startTimeValue + " 00:00:00"; + ctrl.startLine = new Date(startLine).getTime(); + } + + //月数据 + if (ctrl.dimension == ctrl.dimensions.MONTH) { + startTimeValue = year + '/' + month; + var startLine = startTimeValue + "/1 00:00:00"; + ctrl.startLine = new Date(startLine).getTime(); + + } + + //年数据 + if (ctrl.dimension == ctrl.dimensions.YEAR) { + startTimeValue = year; + var startLine = startTimeValue + "/1/1 00:00:00"; + ctrl.startLine = new Date(startLine).getTime(); + } + + + var lbStartTime = $('#lbStartTime'); + if (startTimeValue) { + lbStartTime.html(startTimeValue); + + } else { + lbStartTime.html("开始日期"); + } + }) + + + //监听结束时间变化 + $('#endTime-select').on('change', function() { + var endTimeValue = $api.val($api.dom("#endTime-select")); + var dates = new Date(endTimeValue); + var year = dates.getUTCFullYear(); + var month = dates.getUTCMonth() + 1; + var date = dates.getUTCDate(); + var hour = dates.getUTCHours(); + //时数据 + if (ctrl.dimension == ctrl.dimensions.HOUR) { + endTimeValue = year + '/' + month + '/' + date + ' ' + hour; + var endLine = endTimeValue + ":59:59"; + ctrl.endLine = new Date(endLine).getTime(); + } + + //日数据 + if (ctrl.dimension == ctrl.dimensions.DAY) { + endTimeValue = year + '/' + month + '/' + date; + var endLine = endTimeValue + " 23:59:59"; + ctrl.endLine = new Date(endLine).getTime(); + } + + //月数据 + if (ctrl.dimension == ctrl.dimensions.MONTH) { + var dateUtils = new DateUtils(); + var endMonthDay = dateUtils.getMonthDays(month - 1, year); + endTimeValue = year + '/' + month; + + var endLine = endTimeValue + '/' + endMonthDay + " 23:59:59"; + ctrl.endLine = new Date(endLine).getTime(); + } + + //年数据 + if (ctrl.dimension == ctrl.dimensions.YEAR) { + endTimeValue = year; + var endLine = endTimeValue + "/12/31 23:59:59"; + ctrl.endLine = new Date(endLine).getTime(); + } + + + var lbEndTime = $('#lbEndTime'); + if (endTimeValue) { + lbEndTime.html(endTimeValue); + + } else { + lbEndTime.html("结束日期"); + } + }) + + //选择时间结束后必须点击查询按钮才能请求数据 + $("#query").on("touchend", function() { + if (ctrl.dimension != ctrl.dimensions.YEAR) { + ctrl.verifyDate(); + + } else { + //年数据不需要验证 + ctrl.getData(); + } + + }) + + } + /** + * 弹出提示框 + */ + + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + //验证时间的合法性 + ctrl.verifyDate = function() { + var _this = this; + if (_this.endLine - _this.startLine < 0) { + var tempLine; + tempLine = _this.startLine; + _this.startLine = _this.endLine; + _this.endLine = tempLine; + } + //时数据 时间区间不超过2天 + if (_this.dimension == _this.dimensions.HOUR) { + if (_this.endLine - _this.startLine > (48 * 60 * 60 * 1000)) { + _this.toast("建议时间区间不超过2天,请重新选择"); + return false; + } + _this.getData(); + } + //日数据 时间区间不超过31天 + if (_this.dimension == _this.dimensions.DAY) { + if (_this.endLine - _this.startLine > (31 * 24 * 60 * 60 * 1000)) { + _this.toast("建议时间区间不超过31天,请重新选择"); + return false; + } + + _this.getData(); + } + //月数据 时间区间不超过2年 + if (_this.dimension == _this.dimensions.MONTH) { + if (_this.endLine - _this.startLine > (24 * 30 * 24 * 60 * 60 * 1000)) { + _this.toast("建议时间区间不超过两年,请重新选择"); + return false; + } + _this.getData(); + } + } + + + + + + //选择时间类型 + // 对比分析 时数据 日数据 月数据 年数据 + // 分时分析 日数据 月数据 年数据 + ctrl.getDataType = function() { + this.dimension = $('#time-selector').val(); + this.initDate(); + ctrl.getData(); + } + + ctrl.backCallback = function() { + //关闭首页正在加载的提示框 + api.execScript({ + name: 'index', + frameName: 'featureFrame', + script: "api.hideProgress();" + }); + api.setScreenOrientation({ + orientation: 'auto_portrait' + }); + api.setFullScreen({ + fullScreen: false + }); + api.closeWin({}); + } + + ctrl.getData = function() { + if (!ctrl.number) { + $api.toast({ + 'msg': '请先选择回路' + }); + return false; + } + api.showProgress({ + 'title': '加载中', + 'text': '请稍等' + }) + if (ctrl.mode == ctrl.modes.COMPARE) { + ctrl.getCompareData(); + } else { + ctrl.getTimeData(); + } + } + + ctrl.getCompareData = function() { + var url = "/edp/rest/data/energy/contrast"; + var data = { + prId: ctrl.prId, + ddNum: ctrl.number, + flag: ctrl.dimension, + startTime: ctrl.startLine, + endTime: ctrl.endLine, + } + $api.get(url, data, function(ret, err) { + api.hideProgress(); + if (ret) { + if (ret.code == '200') { + var list = ret.body; + var when = []; + var lastYear = []; + var lastMonth = []; + var current = []; + var yesterday = []; + var An = []; + var Mon = []; + var an, mon; + if (!list) { + return; + } + var length = list.length; + + for (var i = 0; i < length; i++) { + //去年同期 + if (list[i].lastYearValue >= 0 && list[i].lastYearValue != null) { + list[i].lastYearValue = list[i].lastYearValue; + } else { + list[i].lastYearValue = NaN; + } + + //上月同期 + if (list[i].lastMonthValue >= 0 && list[i].lastMonthValue != null) { + list[i].lastMonthValue = list[i].lastMonthValue; + } else { + list[i].lastMonthValue = NaN; + } + + //本期 + if (list[i].currentValue >= 0 && list[i].currentValue != null) { + list[i].currentValue = list[i].currentValue; + } else { + list[i].currentValue = NaN; + } + + //昨日同期 + if (list[i].yesterdayValue >= 0 && list[i].yesterdayValue != null) { + list[i].yesterdayValue = list[i].yesterdayValue; + } else { + list[i].yesterdayValue = NaN; + } + + if (list[i].lastMonthValue && list[i].currentValue) { + mon = ((list[i].currentValue - list[i].lastMonthValue) * 100 / list[i].lastMonthValue).toFixed(2); + } else { + mon = "-" + } + + if (list[i].yesterdayValue && list[i].currentValue) { + an = ((list[i].currentValue - list[i].yesterdayValue) * 100 / list[i].yesterdayValue).toFixed(2); + } else { + an = "-" + } + + An.push(an); + Mon.push(mon); + + when.push(list[i].current); + lastYear.push(list[i].lastYearValue); + lastMonth.push(list[i].lastMonthValue); + current.push(list[i].currentValue); + yesterday.push(list[i].yesterdayValue); + } + + ctrl.compareAChartData = {}; + ctrl.compareAChartData.when = when; + ctrl.compareAChartData.lastYear = lastYear; + ctrl.compareAChartData.lastMonth = lastMonth; + ctrl.compareAChartData.current = current; + ctrl.compareAChartData.yesterday = yesterday; + + ctrl.compareATableData = {}; + ctrl.compareATableData.when = when; + ctrl.compareATableData.lastYear = lastYear; + ctrl.compareATableData.lastMonth = lastMonth; + ctrl.compareATableData.current = current; + ctrl.compareATableData.yesterday = yesterday; + ctrl.compareATableData.Mon = Mon; + ctrl.compareATableData.An = An; + + if (ctrl.mode == ctrl.modes.COMPARE) { + ctrl.renderComparePanel(); + } + + } else { + + $api.toast({ + 'msg': '获取数据错误' + }); + + } + } else { + $api.toast({ + 'msg': '网络故障' + }); + } + }, false); + } + + //获取分时分析数据 + ctrl.getTimeData = function() { + if (!ctrl.number) { + $api.toast({ + 'msg': '请选择回路' + }); + return false; + } + //记录接口调用成功的标识 当标识等于2是 才渲染页面 + var requestSuccessFlag1 = 0; + var requestSuccessFlag2 = 0; + + //获取分时分析的选择时间段内 各个时间的尖峰平谷的数据量 + //统计选中时间段内的尖峰平谷的总和 + var url = "/edp/rest/data/energy/proportion"; + var data = { + prId: ctrl.prId, + ddNum: ctrl.number, + startTime: ctrl.startLine, + endTime: ctrl.endLine, + flag: ctrl.dimension + } + api.showProgress({ + 'title': '加载中', + 'text': '请稍等' + }) + $api.get(url, data, function(ret, err) { + api.hideProgress(); + if (ret) { + if (ret.code == '200') { + var list = ret.body; + var length = list.length; + var JIAN = []; + var FENG = []; + var PING = []; + var GU = []; + var when = []; + + var JIAN_total = 0; + var FENG_total = 0; + var PING_total = 0; + var GU_total = 0; + for (var i = 0; i < length; i++) { + + (list[i].tip < 0 || !list[i].tip || isNaN(list[i].tip)) && (list[i].tip = 0); + (list[i].peak < 0 || !list[i].peak || isNaN(list[i].peak)) && (list[i].peak = 0); + (list[i].flat < 0 || !list[i].flat || isNaN(list[i].flat)) && (list[i].flat = 0); + (list[i].valley < 0 || !list[i].valley || isNaN(list[i].valley)) && (list[i].valley = 0); + (list[i].currentDate < 0 || !list[i].currentDate) && (list[i].currentDate = 0); + + JIAN.push(list[i].tip); + FENG.push(list[i].peak); + PING.push(list[i].flat); + GU.push(list[i].valley); + when.push(list[i].currentDate); + + JIAN_total += list[i].tip; + FENG_total += list[i].peak; + PING_total += list[i].flat; + GU_total += list[i].valley; + + } + + //分时用电量 + ctrl.timeAChartData = { + JIAN: JIAN, + FENG: FENG, + PING: PING, + GU: GU, + when: when + } + + //用电结构 + ctrl.timeCChartData = { + JIAN_total: JIAN_total, + FENG_total: FENG_total, + PING_total: PING_total, + GU_total: GU_total + } + + // requestSuccessFlag++; + requestSuccessFlag1 = 1; + if (ctrl.mode == ctrl.modes.TIME && requestSuccessFlag1 == 1 && requestSuccessFlag2 == 1) { + ctrl.renderTimePanel(); + } + + } else { + + $api.toast({ + 'msg': '获取数据错误' + }); + + } + } else { + $api.toast({ + 'msg': '网络故障' + }); + } + }, false); + //TimeAChart TimeCChart 结束 + + //获取本期 上月同期 去年同期的尖峰平谷的总和 在TimeBChart里显示 + var url = "/edp/rest/data/energy/proportion/contrast"; + var data = { + prId: ctrl.prId, + ddNum: ctrl.number, + startTime: ctrl.startLine, + endTime: ctrl.endLine, + flag: ctrl.dimension + } + + $api.get(url, data, function(ret, err) { + if (ret) { + if (ret.code == '200') { + //list 如果是日数据 + //第一个对象是本期数据 第二个对象是上月数据 第三个对象是去年数据 + //如果是月数据 + //第一个对象是本期数据 第二个对象是去年数据 + var list = ret.body; + var current = []; + var lastMonth = []; + var lastYear = []; + if (list.current) { + current = [ + (list.current.tip < 0 || !list.current.tip || isNaN(list.current.tip)) ? 0 : list.current.tip, + (list.current.peak < 0 || !list.current.peak || isNaN(list.current.peak)) ? 0 : list.current.peak, + (list.current.flat < 0 || !list.current.flat || isNaN(list.current.flat)) ? 0 : list.current.flat, + (list.current.valley < 0 || !list.current.valley || isNaN(list.current.valley)) ? 0 : list.current.valley + ]; + } + if (list.lastMonth) { + lastMonth = [ + (list.lastMonth.tip < 0 || !list.lastMonth.tip || isNaN(list.lastMonth.tip)) ? 0 : list.lastMonth.tip, + (list.lastMonth.peak < 0 || !list.lastMonth.peak || isNaN(list.lastMonth.peak)) ? 0 : list.lastMonth.peak, + (list.lastMonth.flat < 0 || !list.lastMonth.flat || isNaN(list.lastMonth.flat)) ? 0 : list.lastMonth.flat, + (list.lastMonth.valley < 0 || !list.lastMonth.valley || isNaN(list.lastMonth.valley)) ? 0 : list.lastMonth.valley + ]; + } + if (list.lastYear) { + lastYear = [ + (list.lastYear.tip < 0 || !list.lastYear.tip || isNaN(list.lastYear.tip)) ? 0 : list.lastYear.tip, + (list.lastYear.peak < 0 || !list.lastYear.peak || isNaN(list.lastYear.peak)) ? 0 : list.lastYear.peak, + (list.lastYear.flat < 0 || !list.lastYear.flat || isNaN(list.lastYear.flat)) ? 0 : list.lastYear.flat, + (list.lastYear.valley < 0 || !list.lastYear.valley || isNaN(list.lastYear.valley)) ? 0 : list.lastYear.valley + ]; + } + + ctrl.timeBChartData = { + current: current.length ? current : [0, 0, 0, 0], + lastMonth: lastMonth.length ? lastMonth : [0, 0, 0, 0], + lastYear: lastYear.length ? lastYear : [0, 0, 0, 0] + } + requestSuccessFlag2 = 1; + if (ctrl.mode == ctrl.modes.TIME && requestSuccessFlag1 == 1 && requestSuccessFlag2 == 1) { + ctrl.renderTimePanel(); + } + + } else { + + $api.toast({ + 'msg': '获取数据错误' + }); + + } + } else { + $api.toast({ + 'msg': '网络故障' + }); + } + }, false); + + } + + //渲染对比分析panel + ctrl.renderComparePanel = function() { + //判断数据是否为空 + //如果为空 隐藏掉图表 + //显示空数据提示 + if (ctrl.compareAChartData.when.length == 0) { + $api.css($api.dom("#compare-AChart"), "display:none"); + $api.css($api.dom("#compare-ATable-con"), "display:none"); + $api.css($api.dom("#compare-panel-empty-tips"), "display:block"); + return false; + } else { + $api.css($api.dom("#compare-AChart"), "display:block"); + $api.css($api.dom("#compare-ATable-con"), "display:table"); + $api.css($api.dom("#compare-panel-empty-tips"), "display:none"); + } + + ctrl.renderCompareAChart(); + ctrl.renderCompareATable(); + } + + //渲染分时分析panel + ctrl.renderTimePanel = function() { + ctrl.renderTimeAChart(); + ctrl.renderTimeBChart(); + ctrl.renderTimeCChart(); + } + + ctrl.renderCompareAChart = function() { + ctrl.compareAChart = echarts.init($api.dom('#compare-AChart')); + + var legendData = []; + var series = []; + + //时数据 + if (ctrl.dimension == ctrl.dimensions.HOUR) { + legendData = [{ + name: "本期", + icon: 'circle' + }, + + { + name: "昨日同期", + icon: 'circle' + }, { + name: "上月同期", + icon: 'circle' + } + ]; + series.push({ + name: '本期', + type: 'bar', + data: ctrl.compareAChartData.current, + }, { + name: '昨日同期', + type: 'bar', + data: ctrl.compareAChartData.yesterday, + }, { + name: '上月同期', + type: 'bar', + data: ctrl.compareAChartData.lastMonth, + }) + + } + //日数据 + if (ctrl.dimension == ctrl.dimensions.DAY) { + legendData = [{ + name: "本期", + icon: 'circle' + }, + + { + name: "上月同期", + icon: 'circle' + }, { + name: "去年同期", + icon: 'circle' + } + ]; + series.push({ + name: '本期', + type: 'bar', + data: ctrl.compareAChartData.current, + }, { + name: '上月同期', + type: 'bar', + data: ctrl.compareAChartData.lastMonth, + }, { + name: '去年同期', + type: 'bar', + data: ctrl.compareAChartData.lastYear, + }) + + } + + + //月数据 + if (ctrl.dimension == ctrl.dimensions.MONTH) { + legendData = [{ + name: "本期", + icon: 'circle' + }, + + { + name: "去年同期", + icon: 'circle' + } + ]; + series.push({ + name: '本期', + type: 'bar', + data: ctrl.compareAChartData.current, + }, { + name: '去年同期', + type: 'bar', + data: ctrl.compareAChartData.lastYear, + }) + + } + + //年数据 + if (ctrl.dimension == ctrl.dimensions.YEAR) { + legendData = [{ + name: "本期", + icon: 'circle' + }, + + ]; + series.push({ + name: '本期', + type: 'bar', + data: ctrl.compareAChartData.current, + }) + + } + + ctrl.compareAChartOption = { + title: { + show: true, + text: ctrl.name + '(' + ctrl.number + ")用电量(kWh)", + left: "center", + top: "3%", + textStyle: { + fontWeight: 'normal', + fontSize: 14 + } + }, + tooltip: { + trigger: 'axis', + axisPointer: { // 坐标轴指示器,坐标轴触发有效 + type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' + }, + position: function(pos, params, el, elRect, size) { + var obj = { + top: 10 + }; + obj[['left', 'right'][+(pos[0] < size.viewSize[0] / 2)]] = 30; + return obj; + } + }, + legend: { + show: true, + itemWidth: 14, + data: legendData, + bottom: "3%" + }, + color: ["#dfdfdf", "#ffd35e", "#00ccff"], + grid: { + top: '15%', + left: '3%', + right: '4%', + bottom: '15%', + containLabel: true + }, + xAxis: [{ + type: 'category', + data: ctrl.compareAChartData.when, + axisLine: { + lineStyle: { + color: "#03b679", + width: 2 + } + }, + axisTick: { + show: false + }, + splitLine: { + show: false + } + }], + yAxis: [{ + type: 'value', + axisLine: { + lineStyle: { + color: "#03b679", + width: 2 + } + }, + axisTick: { + show: false + } + }], + barGap: '-40%', + barCategoryGap: '10%', + barMaxWidth: '35', + series: series + } + ctrl.compareAChart.setOption(ctrl.compareAChartOption); + } + + ctrl.renderCompareATable = function() { + + var tbody = ''; + var data = ctrl.compareATableData; + var length = data.when.length; + tbody += '日期本期电量(kWh)'; + //时数据 + if (ctrl.dimension == ctrl.dimensions.HOUR) { + tbody += '昨日同期电量(kWh)上月同期电量(kWh)环比(%)' + } + //日数据 + if (ctrl.dimension == ctrl.dimensions.DAY) { + tbody += '上月同期电量(kWh)去年同期电量(kWh)环比(%)同比(%)' + } + //月数据 + if (ctrl.dimension == ctrl.dimensions.MONTH) { + tbody += '去年同期电量(kWh)同比(%)' + } + //年数据 + if (ctrl.dimension == ctrl.dimensions.YEAR) { + tbody += ''; + } + + for (var i = 0; i < length; i++) { + + tbody += ''; + tbody += '' + data.when[i] + ''; + tbody += '' + (isNaN(data.current[i]) ? "-" : data.current[i]) + ''; + if (ctrl.dimension == ctrl.dimensions.HOUR) { + tbody += '' + (isNaN(data.yesterday[i]) ? "-" : data.yesterday[i]) + ''; + tbody += '' + (isNaN(data.lastMonth[i]) ? "-" : data.lastMonth[i]) + ''; + tbody += '' + (isNaN(data.Mon[i]) ? "-" : data.Mon[i]) + ''; + } + if (ctrl.dimension == ctrl.dimensions.DAY) { + tbody += '' + (isNaN(data.lastMonth[i]) ? "-" : data.lastMonth[i]) + ''; + tbody += '' + (isNaN(data.lastYear[i]) ? "-" : data.lastYear[i]) + ''; + tbody += '' + (isNaN(data.Mon[i]) ? "-" : data.Mon[i]) + ''; + tbody += '' + (isNaN(data.An[i]) ? "-" : data.An[i]) + ''; + } + if (ctrl.dimension == ctrl.dimensions.MONTH) { + tbody += '' + (isNaN(data.lastYear[i]) ? "-" : data.lastYear[i]) + ''; + tbody += '' + (isNaN(data.An[i]) ? "-" : data.An[i]) + ''; + } + if (ctrl.dimension == ctrl.dimensions.YEAR) { + + } + tbody += ''; + + } + + $api.html($api.dom("#compareATable"), tbody); + } + + //渲染TimeAChart + ctrl.renderTimeAChart = function() { + + if (!ctrl.timeAChart) { + + ctrl.timeAChart = echarts.init($api.dom('#time-AChart')); + + } + + ctrl.timeAChartOption = { + title: { + show: true, + text: ctrl.name + '(' + ctrl.number + ")用电量(kWh)", + left: "center", + top: "3%", + textStyle: { + fontWeight: 'normal', + fontSize: 14 + } + }, + tooltip: { + trigger: 'axis', + axisPointer: { // 坐标轴指示器,坐标轴触发有效 + type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' + }, + position: function(pos, params, el, elRect, size) { + var obj = { + top: 10 + }; + obj[['left', 'right'][+(pos[0] < size.viewSize[0] / 2)]] = 30; + return obj; + } + }, + + legend: { + show: true, + itemWidth: 14, + data: [{ + 'name': '尖电量', + icon: 'circle' + }, { + 'name': '峰电量', + icon: 'circle' + }, { + 'name': '平电量', + icon: 'circle' + }, { + 'name': '谷电量', + icon: 'circle' + }], + bottom: "3%" + }, + color: ["#f44336", "#ffc107", "#2196f3", "#4caf50"], + grid: { + top: '15%', + left: '3%', + right: '4%', + bottom: '15%', + containLabel: true + }, + xAxis: [{ + type: 'category', + data: ctrl.timeAChartData.when, + axisLine: { + lineStyle: { + color: "#03b679", + width: 2 + } + }, + axisTick: { + show: false + }, + splitLine: { + show: false + } + }], + yAxis: [{ + type: 'value', + axisLine: { + lineStyle: { + color: "#03b679", + width: 2 + } + }, + axisTick: { + show: false + } + }], + barGap: '-40%', + barCategoryGap: '10%', + barMaxWidth: '35', + series: [{ + name: '尖电量', + type: 'bar', + data: ctrl.timeAChartData.JIAN + }, { + name: '峰电量', + type: 'bar', + data: ctrl.timeAChartData.FENG + }, { + name: '平电量', + type: 'bar', + data: ctrl.timeAChartData.PING + }, { + name: '谷电量', + type: 'bar', + data: ctrl.timeAChartData.GU + }, ] + } + + ctrl.timeAChart.setOption(ctrl.timeAChartOption); + } + + //渲染TimeBChart + ctrl.renderTimeBChart = function() { + ctrl.timeBChart = echarts.init($api.dom('#time-BChart')); + //如果是日数据显示上月同期 + var legendData = []; + var series = []; + var colors = []; + if (ctrl.dimension == ctrl.dimensions.DAY) { + legendData = ['去年同期', '上月同期', '本期']; + colors = ["#dfdfdf", "#ffd35e", "#00ccff"]; + series.push({ + name: '去年同期', + type: 'bar', + data: ctrl.timeBChartData.lastYear + }, { + name: '上月同期', + type: 'bar', + data: ctrl.timeBChartData.lastMonth + }, { + name: '本期', + type: 'bar', + data: ctrl.timeBChartData.current + }) + } + if (ctrl.dimension == ctrl.dimensions.YEAR) { + legendData = ['本期']; + colors = ["#00ccff"] + series.push({ + name: '本期', + type: 'bar', + data: ctrl.timeBChartData.current + }) + } + + if (ctrl.dimension == ctrl.dimensions.MONTH) { + legendData = ['去年同期', '本期']; + colors = ["#dfdfdf", "#00ccff"] + series.push({ + name: '去年同期', + type: 'bar', + data: ctrl.timeBChartData.lastYear + }, { + name: '本期', + type: 'bar', + data: ctrl.timeBChartData.current + }) + } + + ctrl.timeBChartOption = { + title: { + show: true, + text: ctrl.name + "对比分析(kWh)", + top: "3%", + left: "3%", + textStyle: { + fontSize: 14, + fontWeight: 'normal' + } + }, + tooltip: { + trigger: 'axis', + axisPointer: { // 坐标轴指示器,坐标轴触发有效 + type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' + }, + show: true, + position: function(pos, params, el, elRect, size) { + var obj = { + top: 10 + }; + obj[['left', 'right'][+(pos[0] < size.viewSize[0] / 2)]] = 30; + return obj; + } + }, + legend: { + show: true, + data: legendData, + bottom: "5%" + }, + color: ["#dfdfdf", "#ffd35e", "#00ccff"], + grid: { + left: '3%', + right: '4%', + bottom: '15%', + top: "15%", + containLabel: true + }, + xAxis: [{ + type: 'category', + data: ['尖占比', '峰占比', '平占比', '谷占比'], + axisLine: { + lineStyle: { + color: "#03b679", + width: 2 + } + }, + axisTick: { + show: false + }, + splitLine: { + show: true + } + }], + yAxis: [{ + type: 'value', + axisLine: { + lineStyle: { + color: "#03b679", + width: 2 + } + }, + axisTick: { + show: false + } + }], + barGap: '-35%', + barCategoryGap: '10%', + barMaxWidth: '35', + series: series + }; + ctrl.timeBChart.setOption(ctrl.timeBChartOption); + } + + //渲染TimeCChart + ctrl.renderTimeCChart = function() { + if (!ctrl.timeCChart) { + ctrl.timeCChart = echarts.init($api.dom('#time-CChart')); + } + ctrl.timeCChartOption = { + title: { + show: true, + text: ctrl.name + "用电结构", + top: "3%", + left: "3%", + textStyle: { + fontSize: 14, + fontWeight: 'normal' + } + }, + color: ["#f44336", "#ffc107", "#2196f3", "#4caf50"], + tooltip: { + trigger: 'item', + formatter: "{a}
{b}: {c} ({d}%)" + }, + legend: { + orient: 'vertical', + data: [{ + 'name': '尖电量', + icon: 'circle' + }, { + 'name': '峰电量', + icon: 'circle' + }, { + 'name': '平电量', + icon: 'circle' + }, { + 'name': '谷电量', + icon: 'circle' + }], + bottom: "3%", + right: "3%" + }, + series: [{ + name: '用电结构', + type: 'pie', + radius: ['40%', '70%'], + center: ['45%', '50%'], + avoidLabelOverlap: false, + label: { + normal: { + show: false, + position: 'center' + }, + emphasis: { + show: true, + textStyle: { + fontSize: '10', + fontWeight: 'bold' + } + } + }, + labelLine: { + normal: { + show: false + } + }, + + data: [{ + value: ctrl.timeCChartData.JIAN_total, + name: '尖电量' + }, { + value: ctrl.timeCChartData.FENG_total, + name: '峰电量' + }, { + value: ctrl.timeCChartData.PING_total, + name: '平电量' + }, { + value: ctrl.timeCChartData.GU_total, + name: '谷电量' + }, ] + }] + }; + ctrl.timeCChart.setOption(ctrl.timeCChartOption); + } + + ctrl.init(); + +} diff --git a/app-saas-src/script/feature/energyRightPanel.js b/app-saas-src/script/feature/energyRightPanel.js new file mode 100644 index 0000000..f5dcd3d --- /dev/null +++ b/app-saas-src/script/feature/energyRightPanel.js @@ -0,0 +1,169 @@ +apiready = function(){ + var ctrl = { + init : {}, + bind : {}, + selected : null, + + GYNumbers : [], + DYNumbers : [], + BYQNumbers : [], + ZLPNumbers : [], + anothersNumbers : [], + + getNumbers : {}, + renderNumbers : {}, + sendNumber : {} + } + + ctrl.init = function(){ + ctrl.bind(); + ctrl.getNumbers(); + } + + ctrl.bind = function(){ + //切换调度号 + $("#list").on("touchend", ".number", function(){ + var number = $(this).data("number"); + var name = $(this).data("name"); + + ctrl.selected = { number : number, name:name}; + + $(".number").removeClass("active"); + $(this).addClass("active"); + }) + + //确定 + $("#ok").on("touchend", function(){ + ctrl.sendNumber(ctrl.selected); + api.closeDrawerPane(); + }) + + //取消 + $("#cancel").on("touchend", function(){ + api.closeDrawerPane(); + }) + + //监听主页请求调度号的消息 + api.addEventListener({ + name:'energyAskNumber' + },function(ret,err){ + ctrl.init(); + }); + + //如果没有初始化 初始化 + api.addEventListener({ + name:'viewappear' + },function(ret,err){ + if(!ctrl.selected){ + ctrl.init(); + } + }); + } + + //获取调度号 + ctrl.getNumbers = function(){ + var url = "/ems/rest/ddnum/list"; + + var param = { + prId : $api.getStorage('powerRoom').prId, + flag : 1, // 吃查询能耗点的调度号 + } + + $api.get(url,param, callback); + + function callback(ret, err){ + ctrl.GYNumbers = []; + ctrl.DYNumbers = []; + ctrl.BYQNumbers = []; + ctrl.ZLPNumbers = []; + ctrl.anothersNumbers = []; + if(!err){ + if(ret.code == "200"){ + + var list = ret.body; + var length = list.length; + + for(var i=0; i 0){ + + if(!ctrl.selected){ + + ctrl.selected = { number : classes[i].numbers[0].ddNum, name:classes[i].numbers[0].deivceName} + + } + + //分类名称 + content += '
'+ classes[i].name +'
' + for(var j=0; j'+'('+numbers[j].ddNum+')  '+ numbers[j].deivceName +'' + + } + + } + } + + if(!ctrl.selected){ + + ctrl.sendNumber(null); + + }else{ + + $("#list").html(content); + ctrl.sendNumber(ctrl.selected); + $(".number").eq(0).addClass("active"); + + } + + } + + //发送调度号选中的事件 + ctrl.sendNumber = function(selected){ + api.sendEvent({ + name : 'energySelectedNumber', + extra : selected, + }); + } + + ctrl.bind(); + +} diff --git a/app-saas-src/script/feature/historyData.js b/app-saas-src/script/feature/historyData.js new file mode 100644 index 0000000..f787fb5 --- /dev/null +++ b/app-saas-src/script/feature/historyData.js @@ -0,0 +1,632 @@ +(function () { + var prId; + var startTime; + var endTime; + var typeIds = []; + var typeNames = []; + var ddNumber; + var interval; + var intervalDesc; + var locName; + // Add start 2018/8/23 14:00 kangzhi + // 将筛选页面传递的选中的‘选择查看类型曲线’的数据保存在 typeChartName 中 + var typeChartName; + // Add end 2018/8/23 14:00 kangzhi + + /** + * 根据id清空所有子元素 + */ + function clearAllChildren(id) { + var tobeRemoved = $("#" + id); + tobeRemoved.empty(); + } + + /** + * 显示右侧边栏 + */ + function showRightPanel() { + api.openDrawerPane({ + type: 'right' + }); + } + + /** + * 弹出提示框 + */ + function toast(msg) { + api.toast({ + msg: msg, + duration: 5000, + locaiton: 'top' + }); + } + + /** + * 格式化moment对象 + */ + function momentFormat(date, format) { + if (format) { + return date.format(format); + } + return date.format("YYYY-MM-DD"); + } + + /** + * 设置默认起止时间 + * 默认开始时间为前两天零时 + * 默认结束时间为前一天23:59:59 + */ + function resetDefaultDateTime() { + startTime = moment().subtract(2, 'days').startOf('day'); + endTime = moment().subtract(1, 'days').endOf('day'); + } + + /** + * 更新界面上的起止时间 + */ + function updateDateTimeView() { + $("#lbStartTime").html(momentFormat(startTime)); + $("#lbEndTime").html(momentFormat(endTime)); + } + + /** + * 界面显示完成,通知侧栏开始加载数据 + */ + function viewAppear(ret, err) { + api.sendEvent({ name: "historyLoadData" }); + } + + /** + * 向表格中插入一行时间 + */ + function addTime(time) { + time = time.slice(5); + + var template = '{time}'; + template = template.replace("{time}", time); + + $("#timeColumn").append(template); + } + + /** + * 向表格插入一类表头 + */ + function addHeaderItem(headerItem) { + var templateHead = '{name}'; + templateHead = templateHead.replace("{col}", headerItem.vars.length); + templateHead = templateHead.replace("{name}", headerItem.categotyName); + + $("#table-header-list").append(templateHead); + + var templateTitle = '{title}'; + var titleList = $("#table-title-list"); + for (var i = 0; i < headerItem.vars.length; i++) { + var item = headerItem.vars[i]; + var title = item.tagKey + (item.unit ? '(' + item.unit + ')' : '' ); + titleList.append(templateTitle.replace("{title}", title )); + } + } + + /** + * 检查日期是否合法 + */ + function checkDate() { + //起止日期不能是未来时间 + var endOfToday = moment().endOf("day"); + var tmpEndTime = endTime.clone().startOf("day"); + if (endOfToday.isBefore(tmpEndTime) || endOfToday.isBefore(startTime)) { + toast("起止日期不能是未来时间"); + return false; + } + //结束日期不能比起始日期早 + if (!endTime.isAfter(startTime)) { + toast("结束日期不能比起始日期早"); + return false; + } + //天 366天 小时 30分 7天 15分钟5分钟30秒1天 + //按天查询,最多查询366天 + if (interval >= 86400) { + //按天查询时,时间跨度不能超过一年 + if (endTime.diff(startTime, 'days') > 366) { + toast("按天查询时,时间跨度不能超过一年"); + return false; + } + } else if (interval >= 1800) { + //按小时及30分钟查询查询,时间跨度不能超过7天 + if (endTime.diff(startTime, 'days') > 7) { + toast("按小时及30分钟查询时,时间跨度不能超过7天"); + return false; + } + } else { + //按分钟及秒查询时,时间跨度不能超过1天 + if (endTime.diff(startTime, 'seconds') > 86400) { + toast("按分钟及秒查询时,时间跨度不能超过1天"); + return false; + } + } + + return true; + } + + /** + * 检查类型选择是否正确 + * 类型至少选择一项 + */ + function checkType() { + if (typeIds && typeIds.length > 0) { + return true; + } + toast("筛选类型必须至少选择一项"); + return false; + } + + /** + * 请求历史数据 + */ + function queryData() { + //检查日期是否合法 + if (!checkDate()) { + return; + } + //检查类型选择是否正确 + if (!checkType()) { + return; + } + + //显示载入动画 + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + + //当结束时间在未来时,将结束时间替换为当前时间 + var endTimeValue = endTime.valueOf(); + var nowTimeValue = moment().valueOf(); + + var url = '/edp/rest/data/ai/history'; + var args = { + prId: prId, + categoryKeys: typeIds, + ddNum: ddNumber, + startTime: startTime.valueOf(), + endTime: endTimeValue > nowTimeValue ? nowTimeValue : endTimeValue, + interval: interval, + flag: 1 // 1.查询历史 + }; + + $api.get(url, args, function (data, err) { + //隐藏载入动画 + api.hideProgress(); + if (err) { + toast("网络请求失败"); + } else { + if (!data.code || data.code != "200") { + toast("服务器响应错误" + (data.code ? (",错误码:" + data.code) : "")); + } else { + if (data.body && data.body.timeList && data.body.categories) { + data = data.body; + + // Add start 2018/8/23 14:01 kangzhi + // 初始化 echarts 表 + initechart(data); + // Add end 2018/8/23 14:01 kangzhi + + //清空界面上的时间列表 + clearAllChildren("timeColumn"); + for (var i = 0; i < data.timeList.length; i++) { + var time = moment(data.timeList[i]).format('YYYY-MM-DD hh:mm:ss'); + addTime(time); + } + //清空表头 + clearAllChildren("table-header-list"); + clearAllChildren("table-title-list"); + + $("#header-table").width(0); + + for (var i = 0; i < data.categories.length; i++) { + var head = data.categories[i]; + addHeaderItem(head); + } + //清空表格中的值 + clearAllChildren("tbHistroyValue"); + var historyValueTable = $("#tbHistroyValue"); + historyValueTable.width(0); + var rowCount = data.timeList.length; + for (var i = 0; i < rowCount; i++) { + //生成第一行的数据 + var row = ''; + for (var j = 0; j < data.categories.length; j++) { + var type = data.categories[j]; + for (var k = 0; k < type.vars.length; k++) { + var values = type.vars[k].values; + values[i] = parseFloat(values[i]); + if(isNaN(values[i])){ + values[i] = '-' + }else{ + values[i] = parseFloat(values[i]).toFixed(2) + } + row += ""; + row += values[i]; + row += ""; + } + } + row += ""; + historyValueTable.append(row); + } + setTimeout(function () { + //计算列宽 + var tableTitleTds = $('#table-title-list>td'); + var tableValuesTds = $('#tbHistroyValue>tr').eq(0).find('td'); + var columnCounts = tableTitleTds.length; + var widthSum = 0; + for (var i = 0; i < columnCounts; i++) { + var title = $(tableTitleTds[i]); + var value = $(tableValuesTds[i]); + var titleWidth = title.width(); + var valueWidth = value.width(); + var width = titleWidth > valueWidth ? titleWidth : valueWidth; + + width += 10; + widthSum += width; + title.width(width); + value.width(width); + } + $("#header-table").width(widthSum); + $("#tbHistroyValue").width(widthSum); + }, 100); + + $('#empty-tips').hide(); + $('#table-panel').show(); + $('#echarts-container').show(); + }else { + $('#table-panel').hide(); + $('#echarts-container').hide(); + $('#empty-tips').show(); + } + } + } + }); + } + + /** + * 筛选条件发生变化 + */ + function filterSelectionChanged(ret, err) { + var result = ret.value; + + typeIds = result.typeIds; + interval = result.interval; + intervalDesc = result.intervalDesc; + ddNumber = result.ddNumber; + locName = result.locName; + typeNames = result.typeNames; + + // Add start 2018/8/23 14:00 kangzhi + // 存储‘选择查看类型曲线’的数据 + typeChartName = result.typeChartName; + // Add end 2018/8/23 14:00 kangzhi + + $("#btn-location").attr("value", locName); + $("#btn-ddnumber").attr("value", (ddNumber ? ddNumber : "-")); + $("#btn-time").attr("value", intervalDesc); + //开始请求历史数据 + queryData(); + } + + // Add start 2018/8/23 14:00 kangzhi + /** + * 初始化 echarts 表 + */ + function initechart(data) { + var chart = echarts.init($('#echarts-container')[0]); + var option = { + title: { + text: '', + textStyle: { + color: '#000', + fontSize: 20, + fontWeight: '100' + }, + top: '0%', + left: 'center', + bottom: '30%' + }, + tooltip: { + show: true, + trigger: 'axis', + axisPointer: { + type: 'line', + axis: 'auto', + snap: true + } + }, + legend: { + data:[], + left: 'center', + top: '10%' + }, + xAxis: { + type: 'category', + data: [] + }, + yAxis: { + name: '', + type: 'value', + min: 'dataMin', + nameTextStyle: { + color: '#5a5a5a', + fontSize: 18 + }, + }, + grid: { + left: '3%', + bottom: '0%', + height: '50%', + top: '32%', + // Add start 2018/9/29 16:31 kangzhi + containLabel: true + // Add end 2018/9/29 16:31 kangzhi + }, + series: [{ + data: [], + type: 'line', + smooth: true, + itemStyle: { + color: 'red' + }, + lineStyle: { + color: 'red' + } + }] + }; + + // 先筛选出'查看类型曲线'中选中的项 + var aimCategory = data.categories.filter(function (item) { + return item.categotyName === typeChartName; + }); + + // 修改echarts的 option中的legend选项 + for (var i = 0; i < aimCategory[0].vars.length; i++) { + var legendDataStr = aimCategory[0].vars[i].tagKey; + option.legend.data.push(legendDataStr); + } + + // 修改 echarts 的 option 中 title.fontSize 和 yAxis.nameTextStyle.fontSize + var fontSize = parseInt($('html').css('font-size')); + + option.title.textStyle.fontSize = Math.floor(fontSize * 16 / 12); + option.yAxis.nameTextStyle.fontSize = Math.floor(fontSize * 12 / 12); + + // 修改echarts的 option中的xAxis选项 + var myTimeList = []; + // 格式化日期 + for (var j = 0; j < data.timeList.length; j++) { + var date = new Date(data.timeList[j]); + var timeStr = ''; + var month = (date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1); + var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate(); + var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours(); + var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes(); + var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds(); + timeStr = month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds; + myTimeList.push(timeStr); + } + + option.xAxis.data = myTimeList; + + // 修改echarts的 option中的yAxis选项 + if (aimCategory[0].vars[0].unit) { + option.yAxis.name = '单位:' + aimCategory[0].vars[0].unit; + } else { + option.yAxis.name = '单位:无'; + } + + // 修改 echarts 的 options 中的 title 选项 + option.title.text = typeChartName; + + // 修改echarts的 option中的series选项 + var seriesData = []; + + // 将折现显示的颜色存储到一个数组中 + var colorArr = ['#ff1918', '#fab409', '#07f5fa']; + + // 循环生成series选项 + for (var k = 0; k < aimCategory[0].vars.length; k++){ + // 首先初始化一个series中元素的对象 + var seriesNum = { + itemStyle: { + normal: { + color: '', + lineStyle: { + color: '' + } + } + }, + }; + + // 纵坐标数据值如果是NaN,将此处的数据显示成0 + var arr = aimCategory[0].vars[k].values.map(function (value) { + if (value === 'NaN') { + return 0; + } else { + return value; + } + }); + seriesNum.data = arr; + seriesNum.type = 'line'; + seriesNum.itemStyle.normal.color = colorArr[k]; + seriesNum.itemStyle.normal.lineStyle.color = colorArr[k]; + seriesNum.smooth = true; + seriesNum.name = aimCategory[0].vars[k].tagKey; + seriesData.push(seriesNum); + } + + option.series = seriesData; + + + // 使用刚指定的配置项和数据显示echarts图表 + chart.setOption(option); + + } + // Add end 2018/8/23 14:00 kangzhi + + /** + * 侧边栏通过主界面toast提示的事件 + * @param {*} ret + * @param {*} err + */ + function historyDtRemoteToast(ret, err) { + var result = ret.value; + toast(result.msg); + $('#table-panel').hide(); + $('#echarts-container').hide(); + $('#empty-tips').show(); + } + + apiready = function () { + var ctrl = { + init: {}, + bind: {} + } + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + var searcherTop = $('#heightHeader').height(); + $('#searcher').css('top',searcherTop); + ctrl.init = function () { + prId = $api.getStorage('powerRoom').prId; + ctrl.bind(); + //设置默认开始时间和结束时间 + resetDefaultDateTime(); + updateDateTimeView(); + //初始化与边栏的通信事件机制 + //筛选条件发生变化 + api.addEventListener({ name: 'filterSelectionChanged' }, filterSelectionChanged); + api.addEventListener({ name: 'viewappear' }, viewAppear); + api.addEventListener({ name: 'historyDtRemoteToast' }, historyDtRemoteToast); + + //初始化表格容器的高度 + var winHeight = api.winHeight; + var winWidth = api.winWidth; + var headerHeight = $("#header").height(); + var searcherHeight = $("#searcher").height(); + var tableHeight = winHeight - (headerHeight + searcherHeight); + + $("#table-panel").height(tableHeight); + $("#table-panel").css("top", (headerHeight + searcherHeight) + "px"); + + //计算table-head-right的宽度和位置 + var tableHeadLeftWidth = $("#table-head-left").width() - 1;//由于四舍五入 可能多出1像素 -1 保证没有缝隙 + $("#table-head-right").width(winWidth - tableHeadLeftWidth); + $("#table-head-right").css("left", tableHeadLeftWidth + "px"); + + + + //算出table-body的高度和位置 + var tableHeadHeight = $("#table-head").height(); + var tableBodyHeight = tableHeight - tableHeadHeight; + + $("#table-body").height(tableBodyHeight); + $("#table-body").css("top", (tableHeadHeight + 3) + "px"); //3像素的border + $("#table-body-left").height(tableBodyHeight); + $("#table-body-right").css("left", tableHeadLeftWidth + "px"); + $("#table-body-right").height(tableBodyHeight); + $("#table-body-right").width(winWidth - tableHeadLeftWidth); + + } + + ctrl.bind = function () { + //用户点击了返回按钮 + $(".back").on("touchend", function () { + api.closeWin(); + }); + + //用户点击了位置按钮 + $("#btn-location").on("touchend", function () { + showRightPanel(); + }); + + //用户点击了调度号按钮 + $("#btn-ddnumber").on("touchend", function () { + showRightPanel(); + }); + + //用户点击了时间间隔按钮 + $("#btn-time").on("touchend", function () { + showRightPanel(); + }); + + //用户点击了筛选按钮 + $("#btn-filter").on("touchend", function () { + showRightPanel(); + }); + + //用户点击了查询按钮 + $("#btn-quary").on("touchend", function () { + queryData(); + }); + + //用户点击了开始时间 + $("#divStartTime").on("touchend", function () { + api.openPicker({ + type: 'date', + date: momentFormat(startTime), + title: '选择时间' + }, function (ret, err) { + if (ret) { + startTime.date(ret.day); + startTime.month(ret.month - 1); + startTime.year(ret.year); + startTime = startTime.startOf('day'); + // alert(momentFormat(startTime, "YYYY-MM-DD HH:mm:ss")); + updateDateTimeView() + } else { + alert(JSON.stringify(err)); + } + }); + }); + + //用户点击了结束时间 + $("#divEndTime").on("touchend", function () { + api.openPicker({ + type: 'date', + date: momentFormat(endTime), + title: '选择时间' + }, function (ret, err) { + if (ret) { + endTime.date(ret.day); + endTime.month(ret.month - 1); + endTime.year(ret.year); + endTime.endOf('day'); + // alert(momentFormat(endTime, "YYYY-MM-DD HH:mm:ss")); + updateDateTimeView() + } else { + alert(JSON.stringify(err)); + } + }); + }); + + //监听表的滚动事件 同步各区域滚动 + $("#table-body-right").on("scroll", function () { + var top = $(this).scrollTop(); + var left = $(this).scrollLeft(); + $("#table-body-left").scrollTop(top); + $("#table-head-right").scrollLeft(left); + }) + + $("#table-body-left").on("scroll", function () { + var top = $(this).scrollTop(); + $("#table-body-right").scrollTop(top); + + }) + + $("#table-head-right").on("scroll", function () { + var left = $(this).scrollLeft(); + $("#table-body-right").scrollLeft(left); + + }) + } + + ctrl.init(); + } +})() diff --git a/app-saas-src/script/feature/historyDataRightPanel.js b/app-saas-src/script/feature/historyDataRightPanel.js new file mode 100644 index 0000000..a403d9f --- /dev/null +++ b/app-saas-src/script/feature/historyDataRightPanel.js @@ -0,0 +1,603 @@ +var hasLoaded = false; +var prId = -1; +var ctValueAndDdNumbersMap = {}; +var initDdNumberCallbackCount = 0; +var varTypesIdAndNameList = [];//变量类型及id的数组,例如[id:1010, typeName:"电流"] +var hasSent = false;//标记是否向主窗体发送过过滤条件 +var isLoadingVarType = false; +// Add start 2018/8/23 16:00 kangzhi +var isLoadingChart = false;//加载'查看类型曲线' +// Add end 2018/8/23 16:00 kangzhi + +var filterResult = { + locName: "高压侧", + ctValue: "1", + ddNumber: "201", + // Add start 2018/8/23 16:00 kangzhi + typeChartId: 'f',// 存储查看类型曲线 id + typeChartName: '频率',// 存储查看类型曲线 name + // Add end 2018/8/23 16:00 kangzhi + typeIds: [], + typeNames: [], + interval: 3600, + intervalDesc: "1小时" +}; + + +/** + * 弹出提示框 + */ +function toast(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); +} + +/** + * 通过主界面 + * @param {*} msg + */ +function remoteToast(msg) { + api.sendEvent({ + name: 'historyDtRemoteToast', + extra: { + msg: msg + } + }); +} + +/** + * 根据id清空所有子元素 + */ +function clearAllChildren(id) { + var tobeRemoved = $("#" + id); + tobeRemoved.empty(); +} + +/** + * 界面显示完成后的回调 + */ +function viewAppear(ret, err) { + if (!hasLoaded) { + //如果用户滑动打开了侧栏,但是还没加载过数据,则开始加载 + toast("加载中..."); + historyLoadData(); + } +} + +/** + * 主窗体通知侧栏加载数据 + */ +function historyLoadData() { + //标记为已经加载数据 + hasLoaded = true; + //获取prId + prId = $api.getStorage('powerRoom').prId; + if (prId > 0) { + //获取各个位置下的调度号 + initDdNumber(function () { + var defaultDdNumbers = ctValueAndDdNumbersMap[filterResult.ctValue]; + if (!(defaultDdNumbers && defaultDdNumbers.length > 0)) { + //提示用户手动选择分类 + remoteToast("请选择查询条件"); + } + //更新界面上的调度号显示 + updateDdNumberView(); + }); + } +} + +/** + * 调接口获取各个分类下的调度号 + */ +function initDdNumber(callback) { + ctValueAndDdNumbersMap["1"] = [];//高压侧调度号假数据 + ctValueAndDdNumbersMap["2"] = [];//低压侧假数据 + ctValueAndDdNumbersMap["3"] = [];//变压器假数据 + ctValueAndDdNumbersMap["4"] = [];//直流屏假数据 + ctValueAndDdNumbersMap["5"] = [];//信号屏假数据 + ctValueAndDdNumbersMap["6"] = [];//其他假数据 + initDdNumberCallbackCount = 0;//回调计数清零 + + var url = '/ems/rest/ddnum/list'; + var args = { prId: prId, ct: 1 }; + for (var i = 1; i <= 6; i++) { + args.location = i; + args.varType = '1'; // 只能查看AI点的历史数据 + $api.get(url, args, function (data, err) { + initDdNumberCallbackCount++; + if (err) { + toast("网络请求失败"); + } else { + if (!data.code || data.code != "200") { + toast("服务器响应错误" + (data.code ? (",错误码:" + data.code) : "")); + } else { + if (data.body) { + for (var i = 0; i < data.body.length; i++) { + var element = data.body[i]; + ctValueAndDdNumbersMap[element.location + ""].push(element.ddNum); + } + } + } + } + if (initDdNumberCallbackCount == 4 && callback) { + callback(); + } + }); + } +} + +/** + * 向调度号列表中添加一个调度号 + */ +function addDdnumber(ddnumber) { + var template = ''; + template = template.replace("{dd}", ddnumber); + + $("#ddnumber-group").append(template); +} + +/** + * 清空界面上的所有调度号 + */ +function clearDdnumberGroup() { + clearAllChildren("ddnumber-group"); +} + +/** + * 调接口获取变量类型 + */ +function initVarType() { + var url = '/ems/rest/var/category'; + var args = { prId: prId, location: filterResult.ctValue, ddNum: filterResult.ddNumber, varType: "1" }; + varTypesIdAndNameList = [];//先清空变量类型id和名称的数组 + showVarTypeLoading();//显示载入中 + // Add start 2018/8/23 16:00 kangzhi + showChartLoading();// 显示'查看类型曲线'加载中 + // Add end 2018/8/23 16:00 kangzhi + + $api.get(url, args, function (data, err) { + if (err) { + toast("网络请求失败"); + } else { + if (!data.code || data.code != "200") { + toast("服务器响应错误" + (data.code ? (",错误码:" + data.code) : "")); + } else { + for (var i = 0; i < data.body.length; i++) { + var v = data.body[i]; + varTypesIdAndNameList.push({ id: v.categoryKey, typeName: v.categoryName }); + } + //更新界面上显示的变量类型 + updateVarTypesView(); + //如果从未向主窗体发送过过滤条件,则发送一次 + if (!hasSent) { + sendResult(); + } + } + } + }); +} + +/** + * 清空界面上显示的变量类型 + */ +function clearVarTypesGroup() { + clearAllChildren("vartype-group"); +} + +/** + * 向界面中的变量类型按钮组中添加一个变量类型按钮 + */ +function addVarType(v) { + var template = ''; + template = template.replace(/{value}/g, v.typeName); + template = template.replace("{typeId}", v.id); + + $("#vartype-group").append(template); +} + +/** + * 更新界面上显示的变量类型 + */ +function updateVarTypesView() { + //先清空界面上显示的变量类型 + clearVarTypesGroup(); + if (varTypesIdAndNameList) { + for (var i = 0; i < varTypesIdAndNameList.length; i++) { + var v = varTypesIdAndNameList[i]; + addVarType(v); + } + } + //隐藏载入中的提示 + hideVarTypeLoading(); + //默认选中第前两个变量类型 + var childrens = $("#vartype-group").children(); + if (childrens.length >= 2) { + var first = $(childrens[0]); + var second = $(childrens[1]); + first.addClass("btn-highlight"); + second.addClass("btn-highlight"); + } else if (childrens.length >= 1) { + //如果只有一个就默认选中一个 + var first = $(childrens[0]); + first.addClass("btn-highlight"); + } + + // Add start 2018/8/23 16:00 kangzhi + // 获取‘类型’中的所有按钮 + var typeBtnList = $("#vartype-group").children(); + // 更新查看曲线类型 + updateChartBtn(typeBtnList); + // Add end 2018/8/23 16:00 kangzhi + + //为所有的变量类型绑定事件 + bindCheckButtonEvent($("#vartype-group").children()); +} + +// Add start 2018/8/23 14:00 kangzhi +/** +* 清除'查看曲线类型'中的所有按钮 +*/ +function clearChartGroup() { + clearAllChildren('chart-group'); +} + +/** +* 更新'查看类型曲线'(参数是'类型'中的所有按钮jQuery对象组成的数组) +*/ +function updateChartBtn(typeBtnList) { + // 隐藏'查看类型曲线'加载中的提示 + hideChartLoading(); + // 先循环遍历 typeBtnList 当没有选中类型按钮时,查看类型曲线中显示'无'按钮, + // 当有选中类型按钮时,隐藏'无'按钮,正常显示选中的类型按钮 + var flag = true; + for (var j = 0; j < typeBtnList.length; j++) { + if ($(typeBtnList[j]).hasClass('btn-highlight')) { + flag = false; + } + } + if (flag) { + showChartNoneBtn(); + } else { + hideChartNoneBtn(); + } + + // 清空查看曲线类型 + clearAllChildren('chart-group'); + + for (var i = 0; i < typeBtnList.length; i++) { + // 将 typeBtnList 中所有含有 btn-highlight 类名的按钮更新到 chart-group 中 + if ($(typeBtnList[i]).hasClass('btn-highlight')) { + // 将含有 btn-highlight 类名的按钮 clone + var chartBtn = $(typeBtnList[i]).clone() + .removeClass('btn-highlight') + .attr('group', 'chart'); + // 将克隆的按钮更新到 chart-group 中 + $('#chart-group').append(chartBtn); + } + } + + // 默认给'查看类型曲线'中第一个按钮添加 btn-highlight 类名 + var chartBtnList = $('#chart-group').children(); + $(chartBtnList[0]).addClass('btn-highlight'); + // 将默认选中的第一个按钮的数据存储到 filterResult.typeChartId 和 filterResult.typeChartName 中 + checkedChartButton_clicked($(chartBtnList[0])); + // 给'查看类型曲线'单选按钮添加点击事件 + bindSwitchButtonEvent(chartBtnList); +} + +/** +* 显示'查看曲线类型'中的'无'按钮 +*/ +function showChartNoneBtn() { + $('#chart-group').css('display', 'none'); + $('#chart-group-none').css('display', 'block'); +} + +/** +* 隐藏'查看曲线类型'中的'无'按钮 +*/ +function hideChartNoneBtn() { + $('#chart-group').css('display', 'block'); + $('#chart-group-none').css('display', 'none'); +} +// Add end 2018/8/23 14:00 kangzhi + +/** + * 显示变量类型载入中 + */ +function showVarTypeLoading() { + isLoadingVarType = true; + $("#vartype-group-loading").css("display", "block"); + $("#vartype-group").css("display", "none"); +} + +/** + * 隐藏变量类型载入中 + */ +function hideVarTypeLoading() { + isLoadingVarType = false; + $("#vartype-group-loading").css("display", "none"); + $("#vartype-group").css("display", "block"); +} + +// Add start 2018/8/23 14:00 kangzhi +/** +* 显示'查看类型曲线'载入中 +*/ +function showChartLoading() { + isLoadingChart = true; + $("#chart-group-loading").css("display", "block"); + $("#chart-group").css("display", "none"); +} + +/** +* 隐藏'查看类型曲线'载入中 +*/ +function hideChartLoading() { + isLoadingChart = false; + $("#chart-group-loading").css("display", "none"); + $("#chart-group").css("display", "block"); +} +// Add end 2018/8/23 14:00 kangzhi + +/** + * 显示调度号不存在和类型不存在的占位符 + */ +function showEmptyDataPlaceHolder() { + //隐藏调度号 + $("#ddnumber-group").css("display", "none"); + $("#ddnumber-group-none").css("display", "flex"); + //隐藏类型 + $("#vartype-group").css("display", "none"); + $("#vartype-group-none").css("display", "flex"); + + // Add start 2018/8/23 14:00 kangzhi + // 隐藏‘选择查看类型曲线’ + $("#chart-group").css("display", "none"); + $("#chart-group-none").css("display", "flex"); + // Add end 2018/8/23 14:00 kangzhi +} + +/** + * 隐藏调度号不存在和类型不存在的占位符 + */ +function hideEmptyDataPlaceHolder() { + //隐藏调度号 + $("#ddnumber-group").css("display", "flex"); + $("#ddnumber-group-none").css("display", "none"); + //隐藏类型 + $("#vartype-group").css("display", "flex"); + $("#vartype-group-none").css("display", "none"); +} + +/** + * 更新界面显示的调度号 + */ +function updateDdNumberView() { + //先清空界面上显示的调度号 + clearDdnumberGroup(); + var ddNumbers = ctValueAndDdNumbersMap[filterResult.ctValue]; + if (ddNumbers.length > 0) { + //隐藏占位符 + hideEmptyDataPlaceHolder(); + for (var i = 0; i < ddNumbers.length; i++) { + var dd = ddNumbers[i]; + addDdnumber(dd); + } + //默认选中第一个调度号 + var childrens = $("#ddnumber-group").children(); + if (childrens.length > 0) { + var first = $(childrens[0]); + first.attr("class", "btn btn-highlight"); + ddNumberButton_clicked(first); + } + //为所有的调度号绑定事件 + bindSwitchButtonEvent($("#ddnumber-group").children()); + } else { + //显示占位符 + showEmptyDataPlaceHolder(); + //设置调度号为空 + filterResult.ddNumber = null; + //设置变量类型为空 + filterResult.typeIds = []; + filterResult.typeNames = []; + } +} + +/** + * 用户点击了确定按钮 + */ +function btOk_clicked() { + if (isLoadingVarType) { + toast("载入中,请稍后再试"); + } else { + if (filterResult.ddNumber) { + sendResult(); + api.closeDrawerPane(); + } else { + toast("当前分类下暂无数据"); + } + } +} + +/** + * 用户点击了取消按钮 + */ +function btCancel_clicked() { + api.closeDrawerPane(); +} + +/** + * 向主窗体发送筛选条件 + */ +function sendResult() { + //获取多选的变量类型 + filterResult.typeIds = []; + filterResult.typeNames = []; + var checkButtons = $('#vartype-group').children(); + for (var i = 0; i < checkButtons.length; i++) { + var cb = $(checkButtons[i]); + + if (cb.hasClass('btn-highlight')) { + filterResult.typeIds.push(cb.attr('typeId')); + filterResult.typeNames.push(cb.attr('value')); + } + } + hasSent = true; + api.sendEvent({ + name: 'filterSelectionChanged', + extra: filterResult + }); +} + +/** + * 为单选按钮绑定事件 + */ +function bindSwitchButtonEvent(buttons) { + for (var i = 0; i < buttons.length; i++) { + var btn = $(buttons[i]); + btn.on('touchend', switchButtonClicked); + } +} + +/** + * 单选按钮被点击 + */ +function switchButtonClicked() { + var sender = $(this); + var brothers = sender.parent().children(); + for (var i = 0; i < brothers.length; i++) { + var inputElement = $(brothers[i]); + // inputElement.attr('class', 'btn'); + inputElement.removeClass("btn-highlight"); + } + // sender.attr('class', 'btn btn-highlight'); + sender.addClass("btn-highlight"); + + var groupName = sender.attr('group'); + switch (groupName) { + case "loc": + locationButton_clicked(sender); + break; + case "ddNumber": + ddNumberButton_clicked(sender); + break; + case "time": + timeIntervalButton_clicked(sender); + break; + // Add start 2018/8/23 14:00 kangzhi + // 当点击的是查看曲线按钮时 + case "chart": + checkedChartButton_clicked(sender); + break; + // Add end 2018/8/23 14:00 kangzhi + default: + break; + } +} + +/** + * 为多选按钮绑定事件 + * @param {*} buttons + */ +function bindCheckButtonEvent(buttons) { + for (var i = 0; i < buttons.length; i++) { + var btn = $(buttons[i]); + btn.on('touchend', checkButtonClicked); + } +} + +/** + * 多选按钮被点击 + */ +function checkButtonClicked(event) { + var sender = $(this); + + if (sender.hasClass('btn-highlight')) { + sender.removeClass('btn-highlight'); + } else { + sender.addClass('btn-highlight'); + } + + // Add start 2018/8/23 14:00 kangzhi + // 获取到当前'类型'中所有的多选按钮 + var checkedTypeBtnList = $(event.target).parent().children(); + // 调用更新类型曲线函数 + updateChartBtn(checkedTypeBtnList); + // Add end 2018/8/23 14:00 kangzhi + + // var groupName = sender.attr('group'); + // switch (groupName) { + // case "vartype": + // break; + // default: + // break; + // } +} + +/** + * 用户点击了位置按钮中的一个 + */ +function locationButton_clicked(locButton) { + filterResult.locName = locButton.attr("value"); + filterResult.ctValue = locButton.attr("ctvalue"); + updateDdNumberView(); +} + +/** + * 用户点击了调度号中的一个 + */ +function ddNumberButton_clicked(ddButton) { + filterResult.ddNumber = ddButton.attr("value"); + //获取该调度号下的变量类型 + initVarType(); +} + +/** + * 用户点击了时间粒度中的一个 + */ +function timeIntervalButton_clicked(timeIntervalButton) { + filterResult.interval = timeIntervalButton.attr("interval"); + filterResult.intervalDesc = timeIntervalButton.attr("value"); +} + +// Add start 2018/8/23 14:00 kangzhi +/** +* 用户点击了'查看类型曲线'中的一个 +*/ +function checkedChartButton_clicked(checkedChartButton) { + filterResult.typeChartId = checkedChartButton.attr('typeId'); + filterResult.typeChartName = checkedChartButton.attr('value'); +} +// Add end 2018/8/23 14:00 kangzhi + +apiready = function () { + // 解决iphonex底部标签栏被虚拟home键遮挡 + $api.fixTabBar($api.byId('footer')); + var ctrl = { + init: {}, + bind: {} + } + + ctrl.bind = function () { + //主窗体通知侧栏加载数据 + api.addEventListener({ name: 'historyLoadData' }, historyLoadData); + //界面显示完成后的回调 + api.addEventListener({ name: 'viewappear' }, viewAppear); + //为位置和类型绑定事件 + bindSwitchButtonEvent($("#location-group").children()); + bindSwitchButtonEvent($("#time-group").children()); + //为确定和取消绑定事件 + $("#btn-cancel").on("touchend", btCancel_clicked); + $("#btn-ok").on("touchend", btOk_clicked); + } + + ctrl.init = function () { + ctrl.bind(); + } + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/inspectionArrange.js b/app-saas-src/script/feature/inspectionArrange.js new file mode 100644 index 0000000..3cfdad7 --- /dev/null +++ b/app-saas-src/script/feature/inspectionArrange.js @@ -0,0 +1,355 @@ +var startDateStr; +var endDateStr; +var ipStartTime; +var ipEndTime; +var lbStartTime; +var lbEndTime; +var inspectionList; +var btnLocation; +var btnClassification; +var btnProcess; +var emptyTips; + +var current = 1; +var size = 99999; +var totalPages = 1; +var startDate = 1; +var endDate = 1; +var roleId = $api.getStorage("roleId"); +var employeeId = $api.getStorage("employeeId"); +var isFinish = -1; // 默认选择未接单,3已完成,2巡检中,1未开始,0未接单 -1全部 + +var isLoading = false; + +/** + * 弹出提示框 + */ + function toast(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); +} + +/** + * 清空巡检安排列表 + */ + function clearInspectionList() { + $("#inspectionList").empty(); +} + +/** + * 向界面中添加一条巡检安排 + * @param {*} record + */ + function addInspectionItem(record) { + // var template = "
{prName} 
{alarmDesc}
{time}
{status}
"; + // var template = '
{prName}等共{prCount}个 
共{inspectProblemCount}个设备缺陷
{xjDate}
{inspector}
' + var prName = record.prName + var prCount = record.prShuLiang + var problemCount = record.xunJianWenTi + var template = '' + template +='
' + template += '
' + template += '
' + template += '
' + template += '
{prName}等共{prCount}个配电室 ' + template += '
' + template += '
共{inspectProblemCount}个设备缺陷
' + template += '
' + template += '
' + template += '
' + template += '
{xjDate}
' + template += '
' + template += '
{inspector}
' + template += '
' + template +='
' + + template = template.replace("{inspectionId}", record.id) + .replace("{prName}", prName) + .replace("{prCount}", prCount) + .replace("{inspectProblemCount}", problemCount) + .replace("{xjDate}", record.xunJianShiJian || '') + .replace("{inspector}", record.jieDanRen || '') + + inspectionList.append(template); +} + +/** + * 查询巡检单列表 + */ +function queryData() { + api.showProgress(); + + if (startDateStr) { + startDate = CommonModel.getFomattedDate((new Date(startDateStr.replace(/-/g, '/'))).getTime(), 'yyyy-MM-dd'); + } else { + // 默认开始日期为当天 + startDate = CommonModel.getFomattedDate(new Date().getTime(), 'yyyy-MM-dd'); + } + + if (endDateStr) { + endDate = CommonModel.getFomattedDate((new Date(endDateStr.replace(/-/g, '/'))).getTime(), 'yyyy-MM-dd'); + } else { + // 默认开始日期为当天 + endDate = CommonModel.getFomattedDate(new Date().getTime(), 'yyyy-MM-dd'); + } + + var url = '/test/xun-jian-dan/queryByListWithDate/' + + current + '/' + + size + '/' + + startDate + 'T' + endDate + '/' + + roleId + '/' + + employeeId + '/' + + isFinish; + isLoading = true; + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + $api.get(url, function(res, err) { + isLoading = false; + api.hideProgress(); + if (err) { + toast("网络请求失败"); + } else { + if (!res.code || res.code != "200" || !res.data) { + toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } else { + var records = res.data.records + totalPages = res.total; + if (records.length && records.length > 0) { + emptyTips.hide(); + for (var i = 0; i < records.length; i++) { + var record = records[i]; + addInspectionItem(record); + } + } else { + //如果没有记录,则显示查询不到数据的提示 + emptyTips.show(); + } + + } + } + }); +} + +/** + * 初查询巡检单列表 + */ + function getInspectionList() { + clearInspectionList(); + queryData(); +} + +// 巡检单创建完成 触发的事件处理 +function inspectionCreateChanged(ret, err) { + getInspectionList(); +}; + +apiready = function() { + var ctrl = { + init: {}, + bind: {}, + } + + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + var searcherTop = $('#heightHeader').height(); + $('#searcher').css('top',searcherTop); + //设置分页初始值 + currentPage = 1; + totalPages = 1; + //获取employeeId + employeeId = $api.getStorage('employeeId'); + + ipStartTime = $("#ipStartTime"); + lbStartTime = $("#lbStartTime"); + ipEndTime = $("#ipEndTime"); + lbEndTime = $("#lbEndTime"); + inspectionList = $("#inspectionList"); + emptyTips = $("#empty-tips"); + + // 判断当前角色是否是组团长、客户站长、客户值长,控制新增按钮 + var isZTZ = $api.getStorage("isZTZ"); + var isKHZZ = $api.getStorage("isKHZZ"); + var isKHZBZ = $api.getStorage("isKHZBZ"); + if (isZTZ || isKHZZ || isKHZBZ) { + $("#create-inspection-btn").show() + } else { + $("#create-inspection-btn").hide() + } + + //巡检任务信息发生变化 + api.addEventListener({ + name: 'inspectionCreateChanged' + }, inspectionCreateChanged); + + ctrl.bind(); + + getInspectionList(); + } + ctrl.bind = function() { + var height = $(window).height() - $("header").height() - $(".fix-top").height(); + $(".inspectionList-content").css("height", height); + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + + // 点击“全部” + $("#all").on("touchend", function() { + isFinish = -1 + $(this).siblings('.bg-touch').removeClass('bg-yellow') + $(this).addClass('bg-yellow') + getInspectionList(); + }); + + // 点击“未接单” + $("#btn-accept").on("touchend", function() { + isFinish = 0 + $(this).siblings('.bg-touch').removeClass('bg-yellow') + $(this).addClass('bg-yellow') + getInspectionList(); + }); + + // 点击“已完成” + $("#btn-finished").on("touchend", function() { + isFinish = 3 + $(this).siblings('.bg-touch').removeClass('bg-yellow') + $(this).addClass('bg-yellow') + getInspectionList(); + }); + + // 点击“巡检中” + $("#btn-inspecting").on("touchend", function() { + isFinish = 2 + $(this).siblings('.bg-touch').removeClass('bg-yellow') + $(this).addClass('bg-yellow') + getInspectionList(); + }); + + // 点击“未开始” + $("#btn-nostart").on("touchend", function() { + isFinish = 1 + $(this).siblings('.bg-touch').removeClass('bg-yellow') + $(this).addClass('bg-yellow') + getInspectionList(); + }); + + // 点击“查询” + $("#btn-query").on("touchend", function() { + getInspectionList(); + }); + + // 点击“新增巡检任务” + $("#create-inspection-btn").on("touchend", function() { + //侧边栏的宽度为250 + var edge = api.winWidth * 0.2; + (edge < 0) && (edge = 60); + api.openDrawerLayout({ + 'name': 'inspectionArrangeCreate', + 'url': 'widget://html/feature/inspectionArrangeCreate.html', + 'pageParam': { + inspectionId: '' + }, + 'rightPane': { + edge: edge, + name: 'inspectionArrangeCreateRightPanel', + url: 'widget://html/feature/inspectionArrangeCreateRightPanel.html', + }, + }) + }); + + //监听滚动到底部事件 + // api.addEventListener({ + // name: 'scrolltobottom', + // extra: { + // threshold: 0 //设置距离底部多少距离时触发,默认值为0,数字类型 + // } + // }, function(ret, err) { + // if (!isLoading) { + // if (currentPage >= totalPages) { + // toast("没有更多了"); + // return; + // } else { + // current++; + // getInspectionList(); + // } + // } + // }); + + //监听日期选择器的改变事件 + $("#ipStartTime").on("change", function() { + startDateStr = ipStartTime.val(); + if (startDateStr && startDateStr != "") { + lbStartTime.html(startDateStr); + } else { + lbStartTime.html("开始日期"); + } + }); + + //监听日期选择器的改变事件 + $("#ipEndTime").on("change", function endDateChanged() { + endDateStr = ipEndTime.val(); + if (endDateStr && endDateStr != "") { + lbEndTime.html(endDateStr); + } else { + lbEndTime.html("结束日期"); + } + }); + + //点击巡检单 跳转到详情页 + $("#inspectionList").on("touchend", ".inspection", function() { + var inspectionId = $(this).data("inspection-id"); + // 根据当前点击的巡检单状态,跳转到不同页。未接单、未开始状态跳转到编辑页,其他跳转到详情页 + if (isFinish == 0 || isFinish == 1) { // 未接单、未开始 + //侧边栏的宽度为250 + var edge = api.winWidth * 0.2; + (edge < 0) && (edge = 60); + api.openDrawerLayout({ + 'name': 'inspectionArrangeCreate', + 'url': 'widget://html/feature/inspectionArrangeCreate.html', + 'pageParam': { + id: inspectionId + }, + 'rightPane': { + edge: edge, + name: 'inspectionArrangeCreateRightPanel', + url: 'widget://html/feature/inspectionArrangeCreateRightPanel.html', + 'pageParam': { + id: inspectionId + }, + }, + }) + } else { + api.openWin({ + 'name': 'inspectionArrangeDetail', + 'url': 'widget://html/feature/inspectionArrangeDetail.html', + 'pageParam': { + id: inspectionId + } + }) + } + }); + + //下拉刷新 + // api.setRefreshHeaderInfo({ + // loadingImg: 'widget://image/refresh.png', + // bgColor: '#ccc', + // textColor: '#fff', + // textDown: '下拉刷新...', + // textUp: '松开刷新...' + // }, function(ret, err) { + // current = 1; + // getInspectionList(); + // api.refreshHeaderLoadDone(); + // }); + + } + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/inspectionArrangeCreate.js b/app-saas-src/script/feature/inspectionArrangeCreate.js new file mode 100644 index 0000000..44856d4 --- /dev/null +++ b/app-saas-src/script/feature/inspectionArrangeCreate.js @@ -0,0 +1,473 @@ +apiready = function() { + var ctrl = { + init: {}, + bind: {}, + employeeId: null, + roleId: null, + prList: null, + inspectionId: null, + xjDate: null, + jieDanRenId: null, + // inspectionMsg: { + // xjDate: '2023-11-21', + // inspector: '张三', + // workTime: '08:00', + // prCount: '10', + // prList: [{ + // prName: '敦豪配电室', + // prId: 1, + // count: 1 + // }, { + // prName: '敦豪配电室1', + // prId: 2, + // count: 2 + // }, { + // prName: '敦豪配电室2', + // prId: 3, + // count: 3 + // }] + // } + } + /** + * 弹出提示框 + */ + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + + /** + * 显示右侧边栏 + */ + ctrl.showRightPanel = function() { + api.openDrawerPane({ + type: 'right', + pageParam: { + id: 123 + }, + }); + } + + /** + * 新建 保存巡检配电室 + */ + ctrl.saveCreateInspectPrList = function(inspectionId) { + api.showProgress(); + var url = '/test/xun-jian-pr/inserts'; + var data = []; + var PrDomList = $('#prList .pr'); + var len = PrDomList.length; + + if (len) { + for (var i = 0; i < len; i++) { + var prDom = PrDomList[i]; + var prId = $(prDom).data('prid'); + var prName = $(prDom).data('prname'); + var inspectType = $(prDom).data('inspecttype'); + var dataItem = { + xunJianDanId: inspectionId, + prId: prId, + prName: prName, + employeeId: ctrl.employeeId, + xunJianLeiXing: inspectType + } + + data.push(dataItem) + } + } + + $api.post(url, data, function(res, err) { + api.hideProgress(); + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + } else { + // 返回巡检安排列表页 并触发巡检安排页面定义的 inspectionCreateChanged 事件 + api.sendEvent({ + name: 'inspectionCreateChanged' + }); + toast("保存成功"); + // 关闭当前页,返回到巡检任务列表页 + api.closeWin(); + } + } + }); + } + + /** + * 编辑 保存巡检配电室 + */ + ctrl.saveEditInspectPrList = function() { + api.showProgress(); + var url = '/test/xun-jian-pr/inserts'; + var data = []; + var PrDomList = $('#prList .pr'); + var len = PrDomList.length; + + if (len) { + for (var i = 0; i < len; i++) { + var prDom = PrDomList[i]; + // var id = $(prDom).data('id'); + var prId = $(prDom).data('prid'); + var prName = $(prDom).data('prname'); + var inspectType = $(prDom).data('inspecttype'); + var dataItem = { + // id: id, + xunJianDanId: ctrl.inspectionId, + prId: prId, + prName: prName, + employeeId: ctrl.employeeId, + xunJianLeiXing: inspectType + } + + data.push(dataItem) + } + } + + $api.post(url, data, function(res, err) { + api.hideProgress(); + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + } else { + ctrl.toast("修改成功"); + + // 返回巡检安排列表页 并触发巡检安排页面定义的 inspectionCreateChanged 事件 + api.sendEvent({ + name: 'inspectionCreateChanged' + }); + // 关闭当前页,返回到巡检任务列表页 + api.closeWin(); + } + } + }); + } + + /** + * 新建 保存巡检单 + */ + ctrl.saveCreateInspect = function() { + api.showProgress(); + var url = '/test/xun-jian-dan/insert'; + var data = { + xunJianShiJian: ctrl.xjDate, + employeeId: ctrl.employeeId, + roleId: ctrl.roleId + }; + + (ctrl.jieDanRenId != '') && (data.jieDanRenId = ctrl.jieDanRenId) + + $api.post(url, data, function(res, err) { + + if (err) { + ctrl.toast("网络请求失败"); + api.hideProgress(); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + api.hideProgress(); + } else { + ctrl.saveCreateInspectPrList(res.data); + } + } + }); + } + + /** + * 编辑 保存巡检单 + */ + ctrl.saveEditInspect = function() { + api.showProgress(); + var url = '/test/xun-jian-dan/insert'; + var data = { + id: ctrl.inspectionId, + xunJianShiJian: ctrl.xjDate, + employeeId: ctrl.employeeId, + roleId: ctrl.roleId + }; + + (ctrl.jieDanRenId != '') && (data.jieDanRenId = ctrl.jieDanRenId) + + $api.post(url, data, function(res, err) { + + if (err) { + ctrl.toast("网络请求失败"); + api.hideProgress(); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + api.hideProgress(); + } else { + ctrl.saveEditInspectPrList(); + } + } + }); + } + + /** + * 保存 + */ + ctrl.save = function() { + + api.showProgress({ + title: '保存中...', + text: '请稍后', + modal: false + }); + + // 需要区分“新建”和“修改” + if (ctrl.inspectionId != null) { // 修改 + ctrl.saveEditInspect() + } else { // 新建 + ctrl.saveCreateInspect() + } + + } + + /** + * 清空配电室列表 + */ + ctrl.clearPrList = function() { + $("#prList").empty(); + } + + /** + * 创建一个配电室DOM + */ + ctrl.createPrDom = function(prName, prId, inspectType, id) { + var type = '例行巡检'; + switch (inspectType) { + case 1: + type = '例行巡检'; + break; + case 2: + type = '特殊巡检'; + break; + case 3: + type = '会诊巡检'; + break; + case 4: + type = '熄灯巡检'; + break; + }; + + var template = '' + + template +='
' + template += '
' + template += '
' + template += '
' + template += '
{prName} ' + template += '
' + template += '
< {type} >
' + template += '
' + template += '
' + template += '
' + template += '
删除
' + template += '
' + template +='
' + + template = template.replace("{prname}", prName) + .replace("{prName}", prName) + .replace("{inspectType}", inspectType) + .replace("{type}", type) + .replace("{prId}", prId) + .replace("{id}", id || ''); + + ctrl.prList.append(template); + } + + /** + * 更新巡检信息 + */ + ctrl.renderInspectionMsg = function(inspectionMsg) { + ctrl.xjDate = inspectionMsg.xjDate; + $('#xjDate').text(inspectionMsg.xjDate); + ctrl.jieDanRenId = inspectionMsg.employeeId || ''; + $('#inspector').text(inspectionMsg.employeeName || '无'); + // $('#workTime').text(inspectionMsg.workTime); + $('#prCount').text(inspectionMsg.totalCount); + + var prList = inspectionMsg.prList; + var length = prList.length; + + ctrl.clearPrList(); + + if (length <= 0) { + ctrl.emptyTips.show(); + } else { + ctrl.emptyTips.hide(); + } + + for (var i = 0; i < length; i++) { + var prItem = prList[i]; + var count = prItem.count; + var prName = prItem.prName; + var prId = prItem.prId; + var inspectType = prItem.type; + + for (var j = 0; j < count; j++) { + ctrl.createPrDom(prName, prId, inspectType); + } + } + } + + /** + * 巡检信息发生变化(从右侧滑栏传递的数据) + */ + ctrl.inspectionMsgChanged = function(ret, err) { + ctrl.renderInspectionMsg(ret.value) + } + + /** + * 获取巡检单详情 + */ + ctrl.getInspectDetail = function() { + api.showProgress(); + + var url = '/test/xun-jian-dan/queryById/' + ctrl.inspectionId; + + $api.get(url, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + api.hideProgress(); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + api.hideProgress(); + } else { + ctrl.renderInspectDetail(res.data); + // 获取当前巡检单对应的巡检配电室列表 + ctrl.getInspectPrList(); + } + } + }); + } + + ctrl.renderInspectDetail = function(data) { + // 更新巡检日期 + ctrl.xjDate = data.xunJianShiJian; + $('#xjDate').text(data.xunJianShiJian); + // 更新巡检人员 + ctrl.jieDanRenId = data.jieDanRenId || null; + $('#inspector').text(data.jieDanRen || '无'); + } + + /** + * 获取巡检配电室列表 + */ + ctrl.getInspectPrList = function() { + api.showProgress(); + + var url = '/test/xun-jian-pr/queryByList/1/9999/' + ctrl.inspectionId; + + $api.get(url, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + api.hideProgress(); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + api.hideProgress(); + } else { + api.hideProgress(); + ctrl.renderInspectPrList(res.data); + } + } + }); + } + + // 渲染巡检配电室列表 + ctrl.renderInspectPrList = function(data) { + // 判断配电室数量 + if (data.total <= 0) { + ctrl.prCountDom.text('0') + ctrl.emptyTips.show(); + + return; + } else { + // 更新配电室数量 + ctrl.prCountDom.text(data.total) + ctrl.emptyTips.hide(); + + // 渲染配电室列表 + ctrl.clearPrList(); + var records = data.records; + var len = data.records.length; + for (var i = 0; i < len; i++) { + var prItem = records[i]; + ctrl.createPrDom(prItem.prName, prItem.prId, prItem.xunJianLeiXing, prItem.id); + } + } + + } + + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + var searcherTop = $('#heightHeader').height(); + $('#searcher').css('top',searcherTop); + + ctrl.inspectionId = api.pageParam.id || null; + ctrl.employeeId = $api.getStorage('employeeId'); + ctrl.roleId = $api.getStorage('roleId'); + ctrl.prList = $("#prList"); + ctrl.emptyTips = $("#empty-tips"); + ctrl.title = $('#title'); + ctrl.xjDateDom = $('#xjDate'); + ctrl.prCountDom = $('#prCount'); + + // 判断新增、编辑 + if (ctrl.inspectionId) {// 编辑 + ctrl.title.text('编辑巡检单'); + // 获取巡检单详情 + ctrl.getInspectDetail(); + + ctrl.emptyTips.hide(); + } else { // 新增 + ctrl.title.text('新增巡检单'); + ctrl.xjDate = $api.getFormattedDate('yyyy-MM-dd'); + ctrl.xjDateDom.text(ctrl.xjDate); + ctrl.emptyTips.show(); + } + + ctrl.bind(); + + //巡检任务信息发生变化 + api.addEventListener({ + name: 'inspectionMsgChanged' + }, ctrl.inspectionMsgChanged); + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + + //用户点击了"日期选择、人员选择、上班时间、选择配电室、删除"按钮 + $("#container").on("touchend", ".show-right-panel", ctrl.showRightPanel); + + // 点击“保存” + $("#save-btn").on("touchend", function () { + api.confirm({ + title: '', + msg: '确定要保存吗', + buttons: ['确定', '取消'] + }, function(ret, err) { + var index = ret.buttonIndex; + if (index == 1) { // 确定 + ctrl.save(); + } + }); + }); + } + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/inspectionArrangeCreateRightPanel.js b/app-saas-src/script/feature/inspectionArrangeCreateRightPanel.js new file mode 100644 index 0000000..c035efa --- /dev/null +++ b/app-saas-src/script/feature/inspectionArrangeCreateRightPanel.js @@ -0,0 +1,503 @@ +apiready = function () { + // 解决iphonex底部标签栏被虚拟home键遮挡 + $api.fixTabBar($api.byId('footer')); + var ctrl = { + init: {}, + bind: {}, + InspectorGroup: null, + workTimeGroup: null, + xjDate: null, + xjDateStr: null, + dateStr: null, + employeeId: null, + roleId: null, + date: null, + resultData: { + xjDate: '', + employeeId: '', + employeeName: '', + // workTime: '08:00', + prList: [{ + prId: '', + prName: '', + count: 0, + // type: 100, // 巡检类型:100日检; 110日检+周检; 101日检+月检; 111日检+周检+月检 + }], + totalCount: 0, // 配电室总数量 + }, + } + + ctrl.init = function () { + ctrl.employeeId = $api.getStorage('employeeId'); + ctrl.roleId = $api.getStorage('roleId'); + + ctrl.xjDate = $("#xjDate"); + ctrl.xjDateStr = $("#xjDateStr"); + ctrl.inspectorGroup = $("#inspector-group"); + // ctrl.workTimeGroup = $("#work-time-group"); + ctrl.prList = $('#pr-list'); + + ctrl.inspectionId = api.pageParam.id || null; + + ctrl.getInspectorList(); + ctrl.getPrList(); + + // ctrl.bindSwitchButtonEvent(ctrl.workTimeGroup.children()); + + ctrl.bind(); + } + + ctrl.bind = function () { + //监听日期选择器的改变事件 + $("#xjDate").on("change", function() { + ctrl.dateStr = ctrl.xjDate.val(); + if (ctrl.dateStr && ctrl.dateStr != "") { + ctrl.xjDateStr.html(ctrl.dateStr); + } else { + ctrl.xjDateStr.html("巡检日期"); + } + + ctrl.resultData.xjDate = ctrl.dateStr; + }); + + //为确定和取消绑定事件 + $("#btn-cancel").on("touchend", ctrl.btCancel_clicked); + $("#btn-ok").on("touchend", ctrl.btOk_clicked); + } + + /** + * 获取巡检单详情 + */ + ctrl.getInspectDetail = function() { + api.showProgress(); + + var url = '/test/xun-jian-dan/queryById/' + ctrl.inspectionId; + + $api.get(url, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + api.hideProgress(); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + api.hideProgress(); + } else { + var data = res.data; + // 更新巡检日期 + ctrl.xjDate.val(data.xunJianShiJian); + ctrl.xjDateStr.html(data.xunJianShiJian); + ctrl.resultData.xjDate = data.xunJianShiJian; + // 更新巡检人员 + if (data.jieDanRenId != -1) { + ctrl.employeeId = data.jieDanRenId; + ctrl.resultData.employeeId = data.jieDanRenId; + ctrl.resultData.employeeName = data.jieDanRen; + ctrl.inspectorGroup.find('input').removeClass('btn-highlight'); + ctrl.inspectorGroup.find("input[data-inspectorid='" + data.jieDanRenId + "']").addClass('btn-highlight'); + } + + // 获取当前巡检单对应的巡检配电室列表 + ctrl.getInspectPrList(); + } + } + }); + } + + /** + * 获取巡检单中巡检配电室列表 + */ + ctrl.getInspectPrList = function() { + api.showProgress(); + + var url = '/test/xun-jian-pr/queryByList/1/9999/' + ctrl.inspectionId; + + $api.get(url, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + api.hideProgress(); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + api.hideProgress(); + } else { + // 更新配电室数量 和 巡检类型 + ctrl.updatePrMsg(res.data.records); + } + } + }); + }; + + // 更新显示配电室数量 和 巡检类型 + ctrl.updatePrMsg = function(prList) { + var length = prList.length; + var map = {}; + if (length > 0) { + for (var i = 0; i < length; i++) { + var prItem = prList[i]; + var prId = prItem['prId']; + var count; + if (map.hasOwnProperty(prId)) { + count = ++map[prId]; + map[prId] = count; + } else { + count = 1; + map[prId] = 1; + } + $("#pr-list .pr-item[data-prid='" + prId + "']").data('count', count).find('.count').text(count); + + // 更新 每个配电室 巡检类型选中状态 + var xunJianLeiXing = prItem.xunJianLeiXing - 0; + var type = 'routine'; + switch (xunJianLeiXing) { + case 1: + type = 'routine'; + break; + case 2: + type = 'special'; + break; + case 3: + type = 'huizhen'; + break; + case 4: + type = 'xideng'; + break; + }; + $("#pr-list .pr-item[data-prid='" + prId + "'] input[data-type='" + type + "']").attr('checked', 'checked'); + } + } + api.hideProgress(); + } + + /** + * 弹出提示框 + */ + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + + // 巡检员选择 + ctrl.inspectorButton_clicked = function(dom) { + var employeeId = dom.data('inspectorid'); + var employeeName = dom.val(); + + ctrl.resultData.employeeId = employeeId; + ctrl.resultData.employeeName = employeeName; + } + + // 工作时间选择 + ctrl.worktimeButton_clicked = function(dom) { + var workTime = dom.val(); + + ctrl.resultData.workTime = workTime; + } + + /** + * 巡检员 按钮点击事件处理函数 + */ + ctrl.switchButtonClicked = function() { + var sender = $(this); + var brothers = sender.parent().children(); + for (var i = 0; i < brothers.length; i++) { + var inputElement = $(brothers[i]); + inputElement.removeClass("btn-highlight"); + } + sender.addClass("btn-highlight"); + + var groupName = sender.attr('group'); + switch (groupName) { + case "inspector": + ctrl.inspectorButton_clicked(sender); + break; + case "worktime": + ctrl.worktimeButton_clicked(sender); + break; + } + } + + /** + * 巡检员 选择 + * @param {zepto object} buttons + */ + ctrl.bindSwitchButtonEvent = function(buttons) { + for (var i = 0; i < buttons.length; i++) { + var btn = $(buttons[i]); + btn.on('touchend', ctrl.switchButtonClicked); + } + } + + // 数据整理 + ctrl.formatResultData = function() { + ctrl.resultData.prList = []; + + var prDomList = $('#pr-list .pr-item'); + var length = prDomList.length; + var totalCount = 0; + for (var i = 0; i < length; i++) { + var prDom = $(prDomList[i]); + var count = $(prDom.find('.count')[0]).text() - 0; + if (count == 0) { + continue; + } + var prId = prDom.data('prid'); + var prName = $(prDom.find('.pr-name')[0]).text(); + var routine = prDom.find('input[data-type="routine"]')[0].checked; + var special = prDom.find('input[data-type="special"]')[0].checked; + var huizhen = prDom.find('input[data-type="huizhen"]')[0].checked; + var xideng = prDom.find('input[data-type="xideng"]')[0].checked; + var type = 1; // 巡检类型:1例行,2特殊,3会诊,4熄灯,默认1 + + totalCount += count; + + if (routine) { + type = 1; + }; + + if (special) { + type = 2; + }; + + if (huizhen) { + type = 3; + }; + + if (xideng) { + type = 4; + }; + + var prData = { + prId: prId, + prName: prName, + count: count, + type: type + } + + ctrl.resultData.prList.push(prData); + } + + ctrl.resultData.totalCount = totalCount + } + + // 数据验证 + ctrl.checkResultData = function() { + ctrl.formatResultData(); + + var flag = true; + + if (ctrl.resultData.xjDate == '') { + flag = false; + + ctrl.toast('请选择巡检日期'); + }; + + return flag; + } + + /** + * 向主窗体发送巡检信息选择结果 + */ + ctrl.sendInspectionResult = function() { + var flag = ctrl.checkResultData(); + + if (!flag) { + return; + } + + api.sendEvent({ + name: 'inspectionMsgChanged', + extra: ctrl.resultData + }); + + api.closeDrawerPane(); + } + + /** + * 确定 + */ + ctrl.btOk_clicked = function() { + ctrl.sendInspectionResult(); + } + + /** + * 取消 + */ + ctrl.btCancel_clicked = function() { + api.closeDrawerPane(); + } + + /** + * 渲染巡检员列表 + */ + ctrl.renderInspectorList = function(inspectorlist) { + var len = inspectorlist.length; + var temp = ''; + + ctrl.inspectorGroup.empty(); + + ctrl.inspectorGroup.append(''); + + for (var i = 0; i < len; i++) { + var inspectorItem = inspectorlist[i] + var domStr = '' + + domStr = '' + + domStr = domStr.replace("{inspector}", inspectorItem.employeeName) + .replace("{inspectorId}", inspectorItem.employeeId); + + temp += domStr; + } + + ctrl.inspectorGroup.append(temp); + + //为巡检人员绑定事件 + ctrl.bindSwitchButtonEvent(ctrl.inspectorGroup.children()); + } + + /** + * 获取巡检人员列表 + */ + ctrl.getInspectorList = function() { + // 判断当前登陆的账号是否是ZTZ + var flag = $api.getStorage('isZTZ') || false; + var url; + var data; + if (flag) { // ZTZ + url = '/ems/rest/xj/schedule/task/employee'; + } else { // KHZZ || KHZBZ 客户员工 站长 、值长 + url = '/ems/rest/employee/getEmployeeByEmployeeId'; + } + data = { + employeeId: $api.getStorage('employeeId') + }; + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + $api.get(url, data, function(res, err) { + api.hideProgress(); + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != "200" || !res.body) { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } else { + if (flag) { + ctrl.renderInspectorList(res.body) + } else { + ctrl.renderInspectorList(res.body.records) + } + } + } + }); + + } + + // 配电室列表绑定计数点击事件 + ctrl.bindPrItemEvent = function() { + // 减 + $('#pr-list .sub').on('touchend', function () { + var prItemDom = $(this).parent('.pr-item'); + var countDom = $(this).siblings('.count') + var count = countDom.text() - 1; + if (count < 0) { + count = 0 + } + countDom.text(count); + }) + + // 加 + $('#pr-list .sum').on('touchend', function () { + var prItemDom = $(this).parent('.pr-item'); + var countDom = $(this).siblings('.count') + var count = (countDom.text() - 0) + 1; + + countDom.text(count); + }) + } + + // 渲染配电室列表 + ctrl.renderPrList = function(prListData) { + var len = prListData.length; + + var temp = ''; + + ctrl.prList.empty(); + + for (var i = 0; i < len; i++) { + var prItem = prListData[i]; + var domStr = ''; + + domStr += '
'; + domStr += '
{prName}
'; + domStr += '
'; + domStr += '-'; + domStr += '0'; + domStr += '+'; + domStr += '
'; + domStr += '
' + domStr += '' + domStr += '' + domStr += '' + domStr += '' + domStr += '
' + domStr += '
'; + + domStr = domStr.replace("{prId}", prItem.prId) + .replace("{prId}", prItem.prId) + .replace("{prId}", prItem.prId) + .replace("{prId}", prItem.prId) + .replace("{prId}", prItem.prId) + .replace("{count}", prItem.count) + .replace("{prName}", prItem.prName); + + temp += domStr; + } + + ctrl.prList.append(temp); + + //为配电室列表绑定事件 + ctrl.bindPrItemEvent(); + } + + // 获取配电室列表 + ctrl.getPrList = function() { + + var url = '/ems/rest/power/room/list'; + var data = { + employeeId: ctrl.employeeId, + roleId: ctrl.roleId + } + + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + $api.get(url, data, function(res, err) { + api.hideProgress(); + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != "200" || !res.body) { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } else { + ctrl.renderPrList(res.body); + // 新增和修改都需要获取配电室列表,修改时需要将巡检安排中的配电室数量同步到计数器中 + // 根据inspectionId判断,当前是编辑还是新建 + if (ctrl.inspectionId) {// 编辑 + // 1、获取巡检单详情,更新巡检日期、巡检人员 + // 2、获取巡检单对应的巡检配电室列表,更新配电室列表 + ctrl.getInspectDetail(); + } + } + } + }); + } + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/inspectionArrangeDetail.js b/app-saas-src/script/feature/inspectionArrangeDetail.js new file mode 100644 index 0000000..2394599 --- /dev/null +++ b/app-saas-src/script/feature/inspectionArrangeDetail.js @@ -0,0 +1,193 @@ +apiready = function() { + var ctrl = { + init: {}, + bind: {}, + } + + ctrl.init = function() { + CommonModel.fitInStatusBar(); + var searcherTop = $('#heightHeader').height(); + $('#searcher').css('top',searcherTop); + + ctrl.inspectionId = api.pageParam.id; + + ctrl.prList = $("#prList"); + ctrl.emptyTips = $("#empty-tips"); + ctrl.xjDateDom = $('#inspect-date'); + ctrl.prCountDom = $('#prCount'); + ctrl.person = $('#inspect-person'); + + ctrl.bind(); + + ctrl.initInspectDetail(); + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }); + + // 点查看日志 跳转到巡检日志 + $("#prList").on("touchend", ".log-detail", function () { + var id = $(this).data('logid'); + var prName = $(this).data('prname'); + + api.openWin({ + name: 'inspectLogDetailNew', + url: 'widget://html/feature/logQuery/inspectLogDetailNew.html', + pageParam: { + id: id, + prname: prName + } + }); + }) + }; + + // 初始化巡检单详情 + ctrl.initInspectDetail = function() { + ctrl.getInspectDetail(); + }; + + /** + * 获取巡检单详情 + */ + ctrl.getInspectDetail = function() { + api.showProgress(); + + var url = '/test/xun-jian-dan/queryById/' + ctrl.inspectionId; + + $api.get(url, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + api.hideProgress(); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + api.hideProgress(); + } else { + ctrl.renderInspectDetail(res.data); + // 获取当前巡检单对应的巡检配电室列表 + ctrl.getInspectPrList(); + } + } + }); + } + + // 渲染详情 + ctrl.renderInspectDetail = function(data) { + // 更新巡检日期 + ctrl.xjDateDom.text(data.xunJianShiJian); + // 更新巡检人员 + ctrl.person.text(data.jieDanRen || '无'); + }; + + /** + * 获取巡检配电室列表 + */ + ctrl.getInspectPrList = function() { + api.showProgress(); + + var url = '/test/xun-jian-pr/queryByList/1/9999/' + ctrl.inspectionId; + + $api.get(url, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + api.hideProgress(); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + api.hideProgress(); + } else { + api.hideProgress(); + ctrl.renderInspectPrList(res.data); + } + } + }); + } + + // 渲染巡检配电室列表 + ctrl.renderInspectPrList = function(data) { + // 判断配电室数量 + if (data.total <= 0) { + ctrl.prCountDom.text('0') + ctrl.emptyTips.show(); + + return; + } else { + // 更新配电室数量 + ctrl.prCountDom.text(data.total); + ctrl.emptyTips.hide(); + + // 渲染配电室列表 + ctrl.clearPrList(); + var records = data.records; + var len = data.records.length; + for (var i = 0; i < len; i++) { + var prItem = records[i]; + ctrl.createPrDom(prItem); + } + } + + }; + + // 清空配电室列表 + ctrl.clearPrList = function() { + $("#prList").empty(); + } + + // 创建一个配电室DOM + ctrl.createPrDom = function(prItem) { + var statusDesc = prItem.shiFouWanCheng? '已完成' : '未完成'; + var colorClass = prItem.shiFouWanCheng? 'color-green' : 'color-red'; + var prName = prItem.prName; + var logId = prItem.id; + + var type = '例行巡检'; + switch (prItem.xunJianLeiXing - 0) { + case 1: + type = '例行巡检'; + break; + case 2: + type = '特殊巡检'; + break; + case 3: + type = '会诊巡检'; + break; + case 4: + type = '熄灯巡检'; + break; + }; + + var template = '' + + template +='
' + template += '
' + template += '
' + template += '
' + template += '
{prName} ' + template += '
' + template += '
< {type} >
' + template += '
' + template += '
' + template += '
' + template += '
' + template += '{statusDesc}' + if (prItem.shiFouWanCheng) { + template += '
查看日志
' + } + template += '
' + template += '
' + template +='
' + + template = template.replace("{prName}", prName) + .replace("{type}", type) + .replace("{colorClass}", colorClass) + .replace("{statusDesc}", statusDesc) + .replace("{logid}", logId) + .replace("{prName}", prName); + + ctrl.prList.append(template); + }; + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/logQuery/inspectArrangement.js b/app-saas-src/script/feature/logQuery/inspectArrangement.js new file mode 100644 index 0000000..a79ea61 --- /dev/null +++ b/app-saas-src/script/feature/logQuery/inspectArrangement.js @@ -0,0 +1,88 @@ +var inspectList; + +/** + * 弹出提示框 + */ +function toast(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); +} + +/** + * 获取巡检安排,并显示在屏幕上 + * @param {*} callback + */ +function getInspectArrangement(callback) { + var id = api.pageParam.id; + var messageId = api.pageParam.messageId; + var args = { + msgId: messageId + }; + var url = '/ems/rest/xj/task'; + $api.get(url, args, function(data, err) { + if (err) { + toast("网络请求失败"); + } else { + if (data.code == 200) { + if (data.body && data.body.length > 0) { + + for (var i = 0; i < data.body.length; i++) { + var item = data.body[i]; + var xjCount = item.xjCount?item.xjCount: 0; + var inspectItem = ''; + inspectItem += '
'; + inspectItem += ''; + inspectItem += '
'; + inspectItem += '
巡检次数:' + xjCount+ '次
'; + for (var j = 0; j < item.xjPeoples.length; j++) { + var person = item.xjPeoples[j]; + inspectItem += '
' + (j + 1) + '.巡检组长:' + person.xjPeople + '
'; + } + inspectItem += '
'; + inspectItem += '
'; + + inspectList.append(inspectItem); + } + } + } else if (data.code == 404) { + var msg = "消息不存在"; + toast(msg); + api.sendEvent({ + name: 'removeMessage', + extra: { + messageId: messageId + } + }); + + window.setTimeout(function() { + api.closeWin(); + }, 2000); + + } else { + toast("服务器响应错误" + (data.code ? (",错误码:" + data.code) : "")); + } + } + + if (callback) { + callback(); + } + }); +} + +apiready = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + inspectList = $("#inspectList"); + //用户点击了返回按钮 + $(".back").on("touchend", function() { + api.closeWin(); + }); + + getInspectArrangement(); +} diff --git a/app-saas-src/script/feature/logQuery/inspectBug.js b/app-saas-src/script/feature/logQuery/inspectBug.js new file mode 100644 index 0000000..eeb4d11 --- /dev/null +++ b/app-saas-src/script/feature/logQuery/inspectBug.js @@ -0,0 +1,219 @@ +apiready = function() { + var ctrl = { + logId: null, + type: null, + itemId: null, + employeeId: '', + problemId: '', + + init: {}, + bind: {}, + getBug: {}, + msgFilter: {} //拦截接口返回数据,对体验模式下的数据进行过滤 + } + + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + + ctrl.employeeId = $api.getStorage('employeeId'); + ctrl.problemId = api.pageParam.id; + + ctrl.bind(); + ctrl.getBug(); + } + + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + + //点击查看抢修单 + // $('.content').on('touchend', '#toRepairDetail', function() { + // api.openWin({ + // name: 'repairLogDetail', + // url: 'widget://html/feature/logQuery/repairLogDetail.html', + // pageParam: { + // id: ctrl.id + // } + // }); + + // }) + + // “生成工单” 按钮 点击 + $('#create-order-btn').on('touchend', function() { + api.confirm({ + title: '', + msg: '确定要生成工单吗', + buttons: ['确定', '取消'] + }, function(ret, err) { + var index = ret.buttonIndex; + if (index == 1) { // 确定 + ctrl.createOrder(); + } + }); + }) + } + + /** + * 弹出提示框 + */ + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + + //对接口返回的数据进行过滤,针对体验模式修改部分数据 + ctrl.msgFilter = function(response) { + if ($api.getStorage('cus') && response.body.prName) { + response.body.prName = $api.guestPrName; + response.body.problemDesc = response.body.problemDesc.replace($api.guestKeysPattern, $api.guestName); + } + }; + + ctrl.getBug = function() { + if(api.pageParam.id) { + // 根据id获取设备缺陷 + var data = { + problemId: api.pageParam.id + } + $api.get('/ems/rest/xj/problem', data,function(ret, err) { + if (!err && ret && ret.code == "200") { + // 未处理,显示 生成工单 按钮 + if (ret.body.status == 0) { + $('#create-order-btn').show(); + } + ctrl.render(ret); + } else { + + } + }) + }else { + // 根据条件查询(从巡检日志异常项跳转)一个设备缺陷 + ctrl.logId = api.pageParam.logId; + ctrl.type = api.pageParam.type; + ctrl.itemId = api.pageParam.itemId; + var data = { + "taskId": this.logId, + "itemId": this.itemId, + "source": this.type + } + + $api.get('/ems/rest/xj/problem/one', data, function(ret, err) { + if (!err && ret && ret.code == "200") { + ctrl.render(ret); + } else { + + } + }); + } + + + } + ctrl.render = function(ret) { + + //针对体验模式过滤某些数据 + ctrl.msgFilter(ret); + var item = ret.body; + ctrl.prefix = ret.prefix; + if (item.qxOrderId) { + ctrl.id = item.qxOrderId; + $('#toRepairDetail').removeClass('hide'); + } else { + $('#toRepairDetail').addClass('hide'); + } + $("#pr-name").text(item.prName); + $("#inspector").text(item.employeeName); + var dateUtils = new DateUtils(); + dateUtils.setDate(item.commitTime) + var xjTime = dateUtils.getFormattedDate('yyyy-MM-dd hh:mm:ss'); + $("#time").text(xjTime ? xjTime : '不详'); + $("#desc").text(item.problemDesc); + + + var photoBrowser = api.require('photoBrowser'); + var imageList = []; + var picContainer = document.getElementById("pic-con"); + //点击图片 使用图片查看器查看 + picContainer.addEventListener("touchend", function() { + //初始化图片查看器 + photoBrowser.open({ + images: imageList, + bgColor: '#000' + }, function(ret, err) { + if (ret && ret.eventType == "click") { + photoBrowser.close(); + } + }); + }) + + //图片 + var pics = item.picture ? item.picture.split(",") : []; + var length = pics.length; + + for (var i = 0; i < length; i++) { + (function() { + var image = new Image(); + image.src = "../../../image/pre-pic.png"; + image.onload = function() { + picContainer.appendChild(image); + } + + api.imageCache({ + url: ctrl.prefix + pics[i], + policy: "cache_else_network", + thumbnail: false + }, function(ret, err) { + if (ret.status) { + + + image.src = ret.url; + image.onload = function() { + picContainer.appendChild(image); + photoBrowser.appendImage({ + images: [ret.url] + }); + + imageList.push(ret.url); + } + } else { + image.src = "../../../image/img-error.png"; + image.onload = function() { + picContainer.appendChild(image); + photoBrowser.appendImage({ + images: [image.src] + }); + + imageList.push(image.src); + } + } + + }) + })() + + + } + } + + // 生成工单 + ctrl.createOrder = function () { + var url = '/test/gong-dan/xjProblemTransferToWorkOrder/' + + ctrl.employeeId + '/' + + ctrl.problemId; + + $api.post(url, function(ret, err) { + if (!err && ret && ret.code == "200") { + ctrl.toast('生成成功') + + api.closeWin(); + } else { + ctrl.toast('生成失败,' + ret.msg) + } + }) + }; + ctrl.init(); +} diff --git a/app-saas-src/script/feature/logQuery/inspectBugList.js b/app-saas-src/script/feature/logQuery/inspectBugList.js new file mode 100644 index 0000000..3855c9b --- /dev/null +++ b/app-saas-src/script/feature/logQuery/inspectBugList.js @@ -0,0 +1,281 @@ +apiready = function () { + var ctrl = { + currentPage: 1, + pageSize: 20, + status: null, // null 全部 0 未处理 1 处理中 2 处理完成 + init: {}, + bind: {}, + toast: {}, + getBugList: {}, + startDateStr: '', + endDateStr: '', + prId: '' + } + ctrl.init = function () { + var height = $('.select-panel').height(); + $('.select-placeholder').css('height', height); + + ctrl.isEmployee = $api.getStorage('isEmployee'); + + ctrl.ipStartTime = $("#ipStartTime"); + ctrl.lbStartTime = $("#lbStartTime"); + ctrl.ipEndTime = $("#ipEndTime"); + ctrl.lbEndTime = $("#lbEndTime"); + + ctrl.bind(); + + ctrl.getBugList(); + }; + + //判断是不是在体验模式 + ctrl.isCus = function () { + if ($api.getStorage('cus')) { + return true; + } else { + return false; + } + }; + + // 弹出提示框 + ctrl.toast = function (msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + }; + + ctrl.bind = function () { + // 选择条件 + $('#select-btns .btn').on('touchend', function () { + $('#select-btns .btn').removeClass('btn-active'); + $(this).addClass('btn-active'); + var status = $(this).attr('status'); + if (status == -1) { + ctrl.status = null; + } else { + ctrl.status = status; + } + + ctrl.currentPage = 1; + ctrl.getBugList(); + }) + + // 查看详情 + $("#inspect-bugs").on('touchend', '.bug-item', function () { + var id = $(this).data('id'); + api.openWin({ + name: 'inspectBug', + url: './inspectBug.html', + pageParam: { + id: id + } + }); + }); + + // 开始日期 监听日期选择器的改变事件 + $("#ipStartTime").on("change", function () { + ctrl.startDateStr = ctrl.ipStartTime.val(); + if (ctrl.startDateStr && ctrl.startDateStr != "") { + ctrl.lbStartTime.html(ctrl.startDateStr); + } else { + ctrl.lbStartTime.html("开始日期"); + } + }); + + // 结束日期 监听日期选择器的改变事件 + $("#ipEndTime").on("change", function endDateChanged() { + ctrl.endDateStr = ctrl.ipEndTime.val(); + if (ctrl.endDateStr && ctrl.endDateStr != "") { + ctrl.lbEndTime.html(ctrl.endDateStr); + } else { + ctrl.lbEndTime.html("结束日期"); + } + }); + + // 点击 查询 + $("#btn-query").on("touchend", ctrl.getBugList); + + // 点击 选择配电室 按钮 + $("#pr-select-btn").on("touchend", function () { + ctrl.showRightPanel(); + }); + + //筛选条件发生变化 + api.addEventListener({ + name: 'filterSelectionChanged' + }, ctrl.filterSelectionChanged); + + //下拉刷新 + api.setRefreshHeaderInfo({ + loadingImg: 'widget://image/refresh.png', + bgColor: '#ccc', + textColor: '#fff', + textDown: '下拉刷新...', + textUp: '松开刷新...' + }, function (ret, err) { + ctrl.currentPage = 1; + ctrl.getBugList(); + api.refreshHeaderLoadDone(); + }); + + // 上拉加载更多 + api.addEventListener({ + name: 'scrolltobottom' + }, function (ret, err) { + ctrl.currentPage++; + if (ctrl.currentPage > ctrl.totalPages) { + ctrl.toast("没有更多了"); + return; + } + ctrl.getBugList(); + + }); + }; + + // 显示右侧栏 + ctrl.showRightPanel = function () { + api.openDrawerPane({ + type: 'right' + }); + }; + + // 配电室选择改变 触发事件 + ctrl.filterSelectionChanged = function (ret, err) { + ctrl.prId = ret.value.prId; // 配电室Id + ctrl.prName = ret.value.prName; // 配电室Id + ctrl.currentPage = 1; + + $('#prName').text(ctrl.prName); + + ctrl.getBugList(); + }; + + // 获取问题列表 + ctrl.getBugList = function () { + //显示载入动画 + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + var url = '/ems/rest/xj/problem/page'; + var data = null; + + if (isEmployee) { // 员工登陆 + data = { + page: ctrl.currentPage, + pageSize: ctrl.pageSize, + employeeId: $api.getStorage('employeeId'), + roleId: $api.getStorage('roleId'), + status: ctrl.status + }; + } else { // 客户登陆 + data = { + page: ctrl.currentPage, + pageSize: ctrl.pageSize, + cusId: $api.getStorage('cusId'), + status: ctrl.status + }; + }; + + if (ctrl.prId) { + data.prId = ctrl.prId; + }; + + var isEmployee = $api.getStorage('isEmployee'); + if (isEmployee) { + data = { + page: ctrl.currentPage, + pageSize: ctrl.pageSize, + prId: ctrl.prId, + employeeId: $api.getStorage('employeeId'), + roleId: $api.getStorage('roleId'), + status: ctrl.status + } + } + + if (ctrl.startDateStr) { + data.startDate = (new Date(ctrl.startDateStr.replace(/-/g, '/'))).getTime(); + }; + + if (ctrl.endDateStr) { + data.endDate = (new Date(ctrl.endDateStr.replace(/-/g, '/'))).getTime(); + }; + + if (ctrl.status == null) { + delete data['status']; + }; + + $api.get(url, data, function (res, err) { + if (err) { + //隐藏载入动画 + api.hideProgress(); + ctrl.toast("网络请求失败"); + } else { + if (res.code === 200 || res.code === 404) { + ctrl.renderInspectBugList(res); + } else { + //隐藏载入动画 + api.hideProgress(); + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + }) + } + ctrl.renderInspectBugList = function (res) { + ctrl.bugList = res.body.records; + ctrl.totalPages = res.body.totalPages; + $('#total-count').text(res.body.totalCount); + if (ctrl.currentPage == 1) { + $api.html($api.dom('#inspect-bugs'), ''); + } + if (res.code == 404) { + //隐藏载入动画 + api.hideProgress(); + api.refreshHeaderLoadDone(); + $api.css($api.dom('#inspect-bugs'), 'display:none'); + $api.css($api.dom('#inspect-bug-empty-tips'), "display:block"); + } else { + var bugList = ctrl.bugList; + var length = bugList.length; + for (var i = 0; i < length; i++) { + $("#inspect-bugs").append(ctrl.getBugDom(bugList[i])); + } + //隐藏载入动画 + api.hideProgress(); + $api.css($api.dom('#inspect-bugs'), "display:block"); + $api.css($api.dom('#inspect-bug-empty-tips'), "display:none"); + } + } + ctrl.getBugDom = function (item) { + if (ctrl.isCus()) { + //如果是体验账号,拦截替换配电室名称 + item.prName = $api.guestPrName; + item.problemDesc = item.problemDesc.replace($api.guestKeysPattern, $api.guestName); + } + var bugGrade = ['一般', '严重', '危急']; + var statusColor = ['text-red', 'text-yellow', 'text-green']; // 未处理,处理中,已处理 + var statusContent = ['未处理', '处理中', '已处理']; + var dateUtil = new DateUtils(); + dateUtil.setDate(item.createTime); + var time = item.createTime && dateUtil.getFormattedDate('yyyy-MM-dd hh:mm'); + var tpl = '
'; + tpl += '
'; + tpl += '
'; + tpl += '
'; + tpl += '
' + item.prName + ' 
' + tpl += '
'; + tpl += '
' + item.problemDesc + '
'; + tpl += '
'; + tpl += '
'; + tpl += '
' + time + '
'; + tpl += '
'; + tpl += '
' + statusContent[item.status] + '
'; + tpl += '
'; + // tpl += '
' + bugGrade[item.quesGrade] + '
'; + tpl += '
'; + return tpl; + } + ctrl.init(); +} diff --git a/app-saas-src/script/feature/logQuery/inspectBugListRightPanel.js b/app-saas-src/script/feature/logQuery/inspectBugListRightPanel.js new file mode 100644 index 0000000..c233b54 --- /dev/null +++ b/app-saas-src/script/feature/logQuery/inspectBugListRightPanel.js @@ -0,0 +1,108 @@ +apiready = function () { + // 解决iphonex底部标签栏被虚拟home键遮挡 + $api.fixTabBar($api.byId('footer')); + var ctrl = { + prId: '', + init: {}, + bind: {} + } + + ctrl.bind = function () { + //为确定和取消绑定事件 + $("#btn-cancel").on("touchend", ctrl.btCancel_clicked); + $("#btn-ok").on("touchend", ctrl.btOk_clicked); + } + + ctrl.init = function () { + ctrl.employeeId = $api.getStorage('employeeId'); + ctrl.roleId = $api.getStorage('roleId'); + ctrl.prListDom = $('#pr-group'); + + ctrl.bind(); + + ctrl.getPrList(); + } + + // 向主窗体发送筛选条件 + ctrl.sendResult = function () { + api.sendEvent({ + name: 'filterSelectionChanged', + extra: { + prId: ctrl.prId, + prName: ctrl.prName + } + }); + }; + + // 点击 确认 + ctrl.btOk_clicked = function () { + ctrl.sendResult(); + api.closeDrawerPane(); + } + + // 点击 取消 + ctrl.btCancel_clicked = function () { + api.closeDrawerPane(); + } + + // 获取配电室列表 + ctrl.getPrList = function () { + var prList = $api.getStorage('prList'); + ctrl.renderPrList(prList); + }; + + // 渲染配电室列表 + ctrl.renderPrList = function (prListData) { + var len = prListData.length; + var temp = ''; + + ctrl.prListDom.empty(); + + for (var i = 0; i < len; i++) { + var prItem = prListData[i]; + var domStr = ''; + + domStr += ''; + + domStr = domStr.replace("{prId}", prItem.prId) + .replace("{prName}", prItem.prName); + + temp += domStr; + } + + ctrl.prListDom.append(temp); + + ctrl.bindSwitchButtonEvent($("#pr-group").children()); + }; + + // 配电室 绑定事件 + ctrl.bindSwitchButtonEvent = function (buttons) { + for (var i = 0; i < buttons.length; i++) { + var btn = $(buttons[i]); + btn.on('touchend', ctrl.prButton_clicked); + } + }; + + // 选择配电室 + ctrl.prButton_clicked = function () { + var sender = $(this); + var brothers = sender.parent().children(); + for (var i = 0; i < brothers.length; i++) { + var inputElement = $(brothers[i]); + inputElement.removeClass("btn-highlight"); + } + sender.addClass("btn-highlight"); + + var pridvalue = sender.attr("pridvalue"); + + if (pridvalue < 0) { + ctrl.prId = ""; + ctrl.prName = "全部配电室"; + } else { + ctrl.prId = pridvalue; + ctrl.prName = sender.attr("value"); + } + }; + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/logQuery/inspectLogDetail.js b/app-saas-src/script/feature/logQuery/inspectLogDetail.js new file mode 100644 index 0000000..622106a --- /dev/null +++ b/app-saas-src/script/feature/logQuery/inspectLogDetail.js @@ -0,0 +1,205 @@ +apiready = function() { + var ctrl = { + logId: null, + init: {}, //初始化 + bind: {}, //事件绑定 + toast: {}, //弹出提示框 + getInspectLogDetail: {}, //获取巡检日志详情 + renderInspectLogDetail: {}, //渲染巡检日志详情 + type: { + common: 1, // 一般 + recheck: 3, // 复检 + burst: 2 // 突发 + } + } + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + this.logId = api.pageParam.id; + this.cus = $api.getStorage('cus'); + ctrl.bind(); + ctrl.getInspectLogDetail(); + var pr = $api.getStorage('powerRoom'); + $("#pr-name").text(pr.prName); + $("#power-name").text(pr.prName); + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + + $("#inspect-con").on("touchend", ".more", function() { + $(this).parent().parent().parent().parent().find("tbody").toggle(); + $(this).toggleClass("close") + }) + //点击有问题的巡检项 + $("#inspect-con").on("touchend", "tr", function(e) { + e.stopPropagation(); + var status = $(this).data("status"); + if (status != 2) { + return false; + } + + var logId = ctrl.logId; + var type = $(this).data("type"); + var itemId = $(this).data("id"); + api.openWin({ + name: 'inspectBug', + url: 'widget://html/feature/logQuery/inspectBug.html', + pageParam: { + logId: logId, + type: type, + itemId: itemId, + } + }); + + }) + } + /** + * 弹出提示框 + */ + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + + ctrl.getInspectLogDetail = function() { + var url = '/ems/rest/common/xj/log/detail'; + var data = { + "taskId": this.logId + }; + $api.get(url, data, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (res.code === 200) { + ctrl.renderInspectLogDetail(res); + } else if (res.code == 404) { + var messageId = api.pageParam.messageId; + var msg = ""; + if (messageId) { + msg = "日志不存在"; + ctrl.toast(msg); + api.sendEvent({ + name: 'removeMessage', + extra: { + messageId: messageId + } + }); + + window.setTimeout(function() { + api.closeWin(); + }, 2000); + }else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + + } + + } + }); + + } + // 处理数据 + ctrl.handleData = function() { + ctrl.dailyLogs = []; + ctrl.weekLogs = []; + ctrl.monthLogs = []; + ctrl.ycLogs = []; + if (!ctrl.log.routineLogs) { + return; + } + var logs = ctrl.log.routineLogs.concat(ctrl.log.tfLogs, ctrl.log.fjLogs); + for (var i = 0; i < logs.length; i++) { + var item = logs[i]; + if (item.checkType === 1) { + ctrl.dailyLogs.push(item); + } + if (item.checkType === 2) { + ctrl.weekLogs.push(item); + } + if (item.checkType === 3) { + ctrl.monthLogs.push(item); + } + if (item.status === 2) { + ctrl.ycLogs.push(item); + } + } + ctrl.log.dailyCount = ctrl.dailyLogs.length; + ctrl.log.weekCount = ctrl.weekLogs.length; + ctrl.log.monthCount = ctrl.monthLogs.length; + ctrl.log.reviewCount = ctrl.log.fjLogs.length; + ctrl.log.burstCount = ctrl.log.tfLogs.length; + ctrl.log.bugCount = ctrl.ycLogs.length; + + } + ctrl.getItem = function(title, logs, type) { + //巡检详情 + var statusContent = ['
正常
', + '
异常已解决
', + '
异常已汇报
' + ]; + var length = logs.length; + var str = ''; + if (length > 0) { + str += ''; + str += ''; + str += ""; + for (var i = 0; i < length; i++) { + if (ctrl.cus) { + logs[i].checkItem = logs[i].checkItem.replace($api.guestKeysPattern, $api.guestName); + } + str += ''; + } + str += ""; + str += "
' + title + '
' + (i + 1) + '' + logs[i].checkItem + '' + statusContent[logs[i].status] + '
"; + } + return str; + } + ctrl.renderInspectLogDetail = function(res) { + var dateUtil = new DateUtils(); + ctrl.log = res.body; + ctrl.handleData(); + var log = ctrl.log; + $api.text($api.dom('#xjDate'), log.xjDate); + + dateUtil.setDate(log.startTime); + $api.text($api.dom('#start-time'), dateUtil.getFormattedDate('yyyy-MM-dd hh:mm')); + + dateUtil.setDate(log.endTime); + $api.text($api.dom('#complete-time'), dateUtil.getFormattedDate('yyyy-MM-dd hh:mm')); + + $api.text($api.dom('#inspector'), log.employeeName); + $api.text($api.dom('#dailyCount'), log.dailyCount); + $api.text($api.dom('#weekCount'), log.weekCount); + $api.text($api.dom('#monthCount'), log.monthCount); + $api.text($api.dom('#ycCount'), log.bugCount); + + $api.text($api.dom('#reviewCount'), log.reviewCount); + $api.text($api.dom('#burstCount'), log.burstCount); + + var dailyLogs = ctrl.dailyLogs; //日常巡检 + var weekLogs = ctrl.weekLogs; //周检 + var monthLogs = ctrl.monthLogs; //月检 + + + var reviewLogs = log.fjLogs; //复检 + var burstLogs = log.tfLogs; //突发 + var con = ""; + con += ctrl.getItem('日常巡检', dailyLogs, ctrl.type.common); + con += ctrl.getItem('周检', weekLogs, ctrl.type.common); + con += ctrl.getItem('月检', monthLogs, ctrl.type.common); + con += ctrl.getItem('复检项目', reviewLogs, ctrl.type.recheck); + con += ctrl.getItem('突发项目', burstLogs, ctrl.type.burst); + $api.html($api.dom('#inspect-con'), con); + + + } + ctrl.init(); +} diff --git a/app-saas-src/script/feature/logQuery/inspectLogDetailNew.js b/app-saas-src/script/feature/logQuery/inspectLogDetailNew.js new file mode 100644 index 0000000..6fc471b --- /dev/null +++ b/app-saas-src/script/feature/logQuery/inspectLogDetailNew.js @@ -0,0 +1,223 @@ +apiready = function() { + var ctrl = { + logId: null, + init: {}, //初始化 + bind: {}, //事件绑定 + toast: {}, //弹出提示框 + getInspectLogDetail: {}, //获取巡检日志详情 + renderInspectLogDetail: {}, //渲染巡检日志详情 + type: { + common: 1, // 一般 + recheck: 3, // 复检 + burst: 2 // 突发 + } + } + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + this.logId = api.pageParam.id; + this.prName = api.pageParam.prname || ''; // 此配电室名是从“巡检安排”“已完成”查看详情跳转时传递的参数 + + ctrl.bind(); + ctrl.getInspectLogDetail(); + var pr = $api.getStorage('powerRoom'); + $("#pr-name").text(this.prName || pr.prName); + $("#power-name").text(this.prName || pr.prName); + + ctrl.initGuideTab(); + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + + // 跳转到工单详情 + $("#problem-list").on("touchend", ".detail-btn", function () { + var id = $(this).data('id'); + + api.openWin({ + 'name': 'systemOrderDetail', + 'url': 'widget://html/feature/logQuery/inspectBug.html', + 'pageParam': { + id: id + } + }) + }) + + // 点击设备分类,自动折叠当前分类的巡检项 + $(".container").on("touchend", ".category-name", function () { + + // 隐藏 当前分类的巡检项 + $api.toggleCls($(this).next()[0], 'hide'); + // 分类名前的箭头旋转90度 + $api.toggleCls($api.dom(this, 'img'), 'transform'); + + }); + } + /** + * 弹出提示框 + */ + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + + // 获取日志详情 + ctrl.getInspectLogDetail = function() { + var url = '/test/xun-jian-pr/queryById/' + + this.logId; + + $api.get(url, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (res.code == 200 && res.data) { + ctrl.renderDetail(res.data); + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + }); + + } + + // 渲染日志详情 + ctrl.renderDetail = function (data) { + $('#complete-time').text(data.wanChengShiJian); + $('#weather').text(data.tianQi); + $('#person').text(data.xunJianRen); + $('#remark').text(data.beiZhu); + + // 渲染设备缺陷列表 + ctrl.renderProblemList(data.xjProblems); + } + + // 渲染问题列表 + ctrl.renderProblemList = function (list) { + var length = list.length; + var listContenDom = $('#problem-list'); + listContenDom.empty(); + + if (length) { + var dom = ctrl.creatProblemListDom(list); + + listContenDom.html(dom); + } else { + listContenDom.html('
  • ') + } + + } + + // 创建设备缺陷列表 DOM + ctrl.creatProblemListDom = function (listData) { + var length = listData.length; + var listDomStr = ''; + for (var i = 0; i < length; i++) { + var item = listData[i]; + var temp = ''; + temp += '
  • '; + temp += '
    {{index}}
    '; + temp += '
    {{desc}}
    '; + temp += '
    详情
    '; + temp += '
  • '; + + temp = temp.replace('{{index}}', i + 1) + .replace('{{desc}}', item.problemDesc) + .replace('{{id}}', item.problemId); + + listDomStr += temp; + } + + return listDomStr; + } + + // 初始化 “巡检指导书” tab + ctrl.initGuideTab = function () { + ctrl.getInspectItem(); + }; + + // 获取 “巡检指导书” 内容 + ctrl.getInspectItem = function() { + api.showProgress(); + + var url = '/test/xun-jian-ri-zhi/queryXunJianXiang/111'; + + $api.get(url, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + api.hideProgress(); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + api.hideProgress(); + } else { + ctrl.renderInspectItem(res.data); + } + } + }); + }; + + // 渲染巡检项 + ctrl.renderInspectItem = function (data) { + $('#guide-panel-ul>ul').empty(); + + var tpl = ''; + var len = data.length; + + for (var i = 0; i < len; i++) { + var categoryItem = data[i]; + var itemList = categoryItem.xjTplContents; + var categoryDom = ''; + + categoryDom += '
  • ' + categoryDom += '
    ' + categoryDom += '' + categoryDom += '{{categoryName}}' + categoryDom += '
    ' + categoryDom += '
      ' + + categoryDom += getItemDom(itemList) + + categoryDom += '
    ' + categoryDom += '
  • ' + + var dom = categoryDom.replace('{{categoryName}}', categoryItem.tplName); + + tpl += dom; + } + + $api.html($api.dom('#guide-panel-ul .inspect-item-box'), tpl); + + api.hideProgress(); + + // 获取 巡检项 dom + function getItemDom(itemList) { + var tpl = '' + var len = itemList.length + + for (var i = 0; i < len; i++) { + var item = itemList[i] + + var itemDom = '' + itemDom += '
  • ' + itemDom += '
    ' + itemDom += '{{taskItemDesc}}' + itemDom += '
    ' + itemDom += '
  • ' + + var dom = itemDom.replace('{{taskItemDesc}}', item.checkItem); + + tpl += dom + + } + + return tpl; + } + }; + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/logQuery/inspectLogList.js b/app-saas-src/script/feature/logQuery/inspectLogList.js new file mode 100644 index 0000000..8dbabf3 --- /dev/null +++ b/app-saas-src/script/feature/logQuery/inspectLogList.js @@ -0,0 +1,231 @@ +apiready = function () { + var ctrl = { + currentPage: 1, + pageSize: 20, + init: {}, //初始化 + bind: {}, //绑定事件 + toast: {}, //弹出提示框 + getInspectLog: {}, //获取巡检日志 + renderInspectLog: {}, //渲染巡检日志 + getLogDom: {}, + + } + ctrl.init = function () { + this.bind(); + this.getPrStorage(); + this.getInspectLog(); + + } + + // 获取存放在localstrorage的配电室信息 + ctrl.getPrStorage = function () { + var powerRoom = $api.getStorage('powerRoom'); + if (powerRoom) { + this.prId = powerRoom.prId; + } else { + return; + } + } + //判断是不是在体验模式 + ctrl.isCus = function () { + if ($api.getStorage('cus')) { + return true; + } else { + return false; + } + } + // 弹出提示框 + ctrl.toast = function (msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + + ctrl.bind = function () { + var $startTime = $('#startTime-select'); + var $endTime = $('#endTime-select'); + var $lbStartTime = $('#lbStartTime'); + var $lbEndTime = $('#lbEndTime'); + var _this = this; + $startTime.on('change', function () { + var startTimeValue = $startTime.val(); + var endTimeValue = $endTime.val(); + if (startTimeValue) { + $lbStartTime.html(startTimeValue); + } else { + $lbStartTime.html("开始日期"); + } + }) + + $endTime.on('change', function () { + var startTimeValue = $startTime.val(); + var endTimeValue = $endTime.val(); + if (endTimeValue) { + $lbEndTime.html(endTimeValue); + } else { + $lbEndTime.html("结束日期"); + } + }) + // 点击跳转到详情页 + $("#inspect-logs").on("touchend", ".item", function () { + var id = $(this).data('id'); + api.openWin({ + name: 'inspectLogDetail', + url: './inspectLogDetail.html', + pageParam: { + id: id + } + }); + }) + //点击查询巡检日志 + $api.addEvt($api.dom("#query"), "touchend", function () { + $api.html($api.dom('#inspect-logs'), ''); + _this.currentPage = 1; + _this.getInspectLog(); + }); + //下拉刷新 + api.setRefreshHeaderInfo({ + loadingImg: 'widget://image/refresh.png', + bgColor: '#ccc', + textColor: '#fff', + textDown: '下拉刷新...', + textUp: '松开刷新...' + }, function (ret, err) { + $startTime.val(''); + $endTime.val(''); + $lbStartTime.html("开始日期"); + $lbEndTime.html("结束日期"); + _this.currentPage = 1; + _this.getInspectLog(); + api.refreshHeaderLoadDone(); + }); + } + //上拉加载 + api.addEventListener({ + name: 'scrolltobottom' + }, function (ret, err) { + ctrl.currentPage++; + if (ctrl.currentPage > ctrl.totalPages) { + ctrl.toast("没有更多了"); + return; + } + ctrl.getInspectLog(); + + }); + //获取巡检日志 + ctrl.getInspectLog = function () { + //显示载入动画 + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + var dateUtil = new DateUtils(); + var startDate = $('#startTime-select').val(); + if (startDate) { + dateUtil.setDate(startDate); + startDate = dateUtil.getMillisecond(); + } + var endDate = $('#endTime-select').val(); + if (endDate) { + dateUtil.setDate(endDate); + endDate = dateUtil.getMillisecond(); + } + // 如果开始时间大于结束时间 交换 + startDate && endDate && (startDate > endDate) && (startDate = [endDate, endDate = startDate][0]); + var url = '/ems/rest/common/xj/log/page'; + var data = { + "page": ctrl.currentPage, + "pageSize": ctrl.pageSize, + "prId": ctrl.prId, + "startDate": startDate, + "endDate": endDate, + "cusId": $api.getStorage('cusId'), + }; + + $api.get(url, data, function (res, err) { + if (err) { + //隐藏载入动画 + api.hideProgress(); + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != 200) { + //隐藏载入动画 + api.hideProgress(); + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } else { + ctrl.renderInspectLog(res); + } + + } + }); + + } + ctrl.renderInspectLog = function (res) { + + ctrl.logList = res.body.records; + ctrl.totalPages = res.body.totalPages; + if (ctrl.currentPage == 1) { + $api.html($api.dom('#inspect-logs'), ''); + } + + if (ctrl.totalPages == 0) { + //隐藏载入动画 + api.hideProgress(); + api.refreshHeaderLoadDone(); + $api.css($api.dom('#inspect-logs'), "display:none"); + $api.css($api.dom('#inspect-log-empty-tips'), "display:block"); + } else { + var logList = ctrl.logList; + var length = logList.length; + for (var i = 0; i < length; i++) { + $("#inspect-logs").append(ctrl.getLogDom(logList[i])); + } + //隐藏载入动画 + api.hideProgress(); + $api.css($api.dom('#inspect-logs'), "display:block"); + $api.css($api.dom('#inspect-log-empty-tips'), "display:none"); + + } + } + ctrl.getLogDom = function (item) { + + var tpl = '
    '; + tpl += ''; + tpl += '
    '; + tpl += '
    日检:{{dailyCount}}项
    '; + tpl += '
    周检:{{weekCount}}项
    ' + tpl += '
    月检:{{monthCount}}项
    ' + + tpl += '
    复检:{{reviewCount}}项
    '; + tpl += '
    突发:{{burstCount}}项
    '; + tpl += '
    异常:{{abnormalCount}}项
    '; + + + tpl += '
    巡检组长:{{by}}
    '; + //tpl += '
    巡检人电话{{tel}}
    '; + tpl += ''; + if (ctrl.isCus()) { + //如果是体验账号,拦截替换配电室名称 + item.prName = $api.guestPrName; + } + return tpl.replace('{{title}}', item.prName) + .replace('{{date}}', item.xjDate) + .replace('{{dailyCount}}', item.dayInspectCount) + .replace('{{weekCount}}', item.weekInspectCount) + .replace('{{monthCount}}', item.monthInspectCount) + .replace('{{abnormalCount}}', item.exceptionCount) + + .replace('{{reviewCount}}', item.fjCount) + .replace('{{burstCount}}', item.tfCount) + .replace('{{by}}', item.employeeName) + // .replace('{{tel}}', item.xjzz.lxMobile) + .replace('{{id}}', item.taskId) + } + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/logQuery/inspectLogListNew.js b/app-saas-src/script/feature/logQuery/inspectLogListNew.js new file mode 100644 index 0000000..fad5857 --- /dev/null +++ b/app-saas-src/script/feature/logQuery/inspectLogListNew.js @@ -0,0 +1,208 @@ +apiready = function () { + var ctrl = { + currentPage: 1, + pageSize: 20, + init: {}, //初始化 + bind: {}, //绑定事件 + toast: {}, //弹出提示框 + getInspectLog: {}, //获取巡检日志 + renderInspectLog: {}, //渲染巡检日志 + getLogDom: {}, + + } + ctrl.init = function () { + this.bind(); + this.getPrStorage(); + this.getInspectLog(); + + } + + // 获取存放在localstrorage的配电室信息 + ctrl.getPrStorage = function () { + var powerRoom = $api.getStorage('powerRoom'); + if (powerRoom) { + this.prId = powerRoom.prId; + } else { + return; + } + } + //判断是不是在体验模式 + ctrl.isCus = function () { + if ($api.getStorage('cus')) { + return true; + } else { + return false; + } + } + // 弹出提示框 + ctrl.toast = function (msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + + ctrl.bind = function () { + var $startTime = $('#startTime-select'); + var $endTime = $('#endTime-select'); + var $lbStartTime = $('#lbStartTime'); + var $lbEndTime = $('#lbEndTime'); + var _this = this; + $startTime.on('change', function () { + var startTimeValue = $startTime.val(); + if (startTimeValue) { + $lbStartTime.html(startTimeValue); + } else { + $lbStartTime.html("开始日期"); + } + }) + + $endTime.on('change', function () { + var endTimeValue = $endTime.val(); + if (endTimeValue) { + $lbEndTime.html(endTimeValue); + } else { + $lbEndTime.html("结束日期"); + } + }) + // 点击跳转到详情页 + $("#inspect-logs").on("touchend", ".item", function () { + var id = $(this).data('id'); + api.openWin({ + name: 'inspectLogDetailNew', + url: './inspectLogDetailNew.html', + pageParam: { + id: id + } + }); + }) + //点击查询巡检日志 + $api.addEvt($api.dom("#query"), "touchend", function () { + $api.html($api.dom('#inspect-logs'), ''); + _this.currentPage = 1; + _this.getInspectLog(); + }); + //下拉刷新 + api.setRefreshHeaderInfo({ + loadingImg: 'widget://image/refresh.png', + bgColor: '#ccc', + textColor: '#fff', + textDown: '下拉刷新...', + textUp: '松开刷新...' + }, function (ret, err) { + $startTime.val(''); + $endTime.val(''); + $lbStartTime.html("开始日期"); + $lbEndTime.html("结束日期"); + _this.currentPage = 1; + _this.getInspectLog(); + api.refreshHeaderLoadDone(); + }); + } + //上拉加载 + api.addEventListener({ + name: 'scrolltobottom' + }, function (ret, err) { + ctrl.currentPage++; + if (ctrl.currentPage > ctrl.totalPages) { + ctrl.toast("没有更多了"); + return; + } + ctrl.getInspectLog(); + + }); + //获取巡检日志 + ctrl.getInspectLog = function () { + //显示载入动画 + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + // var dateUtil = new DateUtils(); + var startDate = $('#startTime-select').val(); + var endDate = $('#endTime-select').val(); + // 如果开始时间大于结束时间 交换 + startDate && endDate && (startDate > endDate) && (startDate = [endDate, endDate = startDate][0]); + var url = '/test/xun-jian-pr/query/' + + ctrl.currentPage + '/' + + ctrl.pageSize + '/' + + ctrl.prId; + var data = { + "start": startDate, + "end": endDate + }; + + $api.get(url, data, function (res, err) { + if (err) { + //隐藏载入动画 + api.hideProgress(); + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != 200) { + //隐藏载入动画 + api.hideProgress(); + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } else { + ctrl.renderInspectLog(res); + } + + } + }); + + } + + // 渲染巡检日志列表 + ctrl.renderInspectLog = function (res) { + + ctrl.logList = res.data.records; + ctrl.totalPages = res.data.total; + if (ctrl.currentPage == 1) { + $api.html($api.dom('#inspect-logs'), ''); + } + + if (ctrl.totalPages == 0) { + //隐藏载入动画 + api.hideProgress(); + api.refreshHeaderLoadDone(); + $api.css($api.dom('#inspect-logs'), "display:none"); + $api.css($api.dom('#inspect-log-empty-tips'), "display:block"); + } else { + var logList = ctrl.logList; + var length = logList.length; + for (var i = 0; i < length; i++) { + $("#inspect-logs").append(ctrl.getLogDom(logList[i])); + } + //隐藏载入动画 + api.hideProgress(); + $api.css($api.dom('#inspect-logs'), "display:block"); + $api.css($api.dom('#inspect-log-empty-tips'), "display:none"); + + } + } + ctrl.getLogDom = function (item) { + + var tpl = '
    '; + tpl += ''; + tpl += '
    '; + tpl += '
    天气:{{weather}}
    '; + tpl += '
    问题:{{yichang}} 个
    '; + tpl += '
    巡检人:{{person}}
    '; + tpl += '
    '; + if (ctrl.isCus()) { + //如果是体验账号,拦截替换配电室名称 + item.prName = $api.guestPrName; + } + return tpl.replace('{{id}}', item.id) + .replace('{{prName}}', item.prName) + .replace('{{date}}', item.wanChengShiJian) + .replace('{{weather}}', item.tianQi) + .replace('{{yichang}}', item.yiChang) + .replace('{{person}}', item.xunJianRen); + } + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/logQuery/log-query-main.js b/app-saas-src/script/feature/logQuery/log-query-main.js new file mode 100644 index 0000000..1fd6fc8 --- /dev/null +++ b/app-saas-src/script/feature/logQuery/log-query-main.js @@ -0,0 +1,84 @@ +apiready = function() { + var ctrl = { + init : {}, + frames : [], + bind : {}, + switchFrame : {}, + frameX : 0, + frameY : 0, + frameWidth : 0, + frameHeight : 0 + }; + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + //初始化frame信息 + ctrl.frames["inspect-new"] = { // 新版巡检日志 + "title" : "巡检日志", + "url" : "widget://html/feature/logQuery/inspectLogListNew.html", + }; + + ctrl.frames["inspect"] = { // 旧版巡检日志 + "title" : "巡检日志(旧版)", + "url" : "widget://html/feature/logQuery/inspectLogList.html", + }; + + ctrl.frames["repair"] = { + "title" : "抢修日志", + "url" : "widget://html/feature/logQuery/repairLogList.html", + }; + ctrl.frames["operate"] = { + "title" : "操作票", + "url" : "widget://html/feature/logQuery/operateTicketList.html", + }; + ctrl.frames["work"] = { + "title" : "工作票", + "url" : "widget://html/feature/logQuery/workTicketList.html", + }; + ctrl.frames["inspectBug"] = { + "title" : "设备缺陷", + "url" : "widget://html/feature/logQuery/inspectBugList.html", + }; + //计算frame显示的位置和尺寸 + var windowWidth = parseInt($api.cssVal($api.dom("body"), "width")); + var windowHeight = parseInt($api.cssVal($api.dom("body"), "height")); + var headerHeight = parseInt($api.cssVal($api.dom("#header"), "height")); + ctrl.frameX = 0; + ctrl.frameY = headerHeight; + ctrl.frameWidth = windowWidth; + ctrl.frameHeight = windowHeight - headerHeight; + ctrl.page = api.pageParam.page ; + ctrl.bind(); + ctrl.switchFrame(ctrl.page); + + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + + } + + //切换frame + ctrl.switchFrame = function(frameName){ + var _this = ctrl; + var frame = _this.frames[frameName]; + //显示对应的标题 + $api.text($api.dom("#title"), frame.title); + //切换frame + api.openFrame({ + name: "indexFrame", + url: frame.url, + rect: { + x:_this.frameX, + y:_this.frameY, + w:_this.frameWidth, + h:_this.frameHeight + } + }); + + } + ctrl.init(); + +} diff --git a/app-saas-src/script/feature/logQuery/logQuery.js b/app-saas-src/script/feature/logQuery/logQuery.js new file mode 100644 index 0000000..b00e795 --- /dev/null +++ b/app-saas-src/script/feature/logQuery/logQuery.js @@ -0,0 +1,94 @@ +apiready = function() { + var ctrl = { + init : {}, + bind : {} + } + + ctrl.init = function() { + CommonModel.fitInStatusBar(); + // 控制菜单权限 + privilegeModule.getMenuList(function() { + ctrl.initMenu(); + }); + ctrl.bind(); + } + ctrl.initMenu = function() { + if(!privilegeModule.hasMenu('巡检日志')){ + $('#inspect-log').css('display','none'); + } + if(!privilegeModule.hasMenu('抢修日志')){ + $('#repair-log').css('display','none'); + } + if(!privilegeModule.hasMenu('操作票')){ + $('#operate-ticket').css('display','none'); + } + if(!privilegeModule.hasMenu('工作票')){ + $('#work-ticket').css('display','none'); + } + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + //用户点击了巡检日志(新版)按钮 + $api.addEvt($api.dom("#inspect-log-new"), "touchend", function() { + + api.openWin({ + name : 'inspect-log-new', + url : './logQuery-main.html', + pageParam : { + page : 'inspect-new' + } + }); + }); + + //用户点击了巡检日志(旧版)按钮 + $api.addEvt($api.dom("#inspect-log"), "touchend", function() { + + api.openWin({ + name : 'inspect-log', + url : './logQuery-main.html', + pageParam : { + page : 'inspect' + } + }); + }); + + //用户点击了抢修日志按钮 + $api.addEvt($api.dom("#repair-log"), "touchend", function() { + api.openWin({ + name : 'repair-log', + url : './logQuery-main.html', + pageParam : { + page : 'repair' + } + }); + }); + + //用户点击了操作票按钮 + $api.addEvt($api.dom("#operate-ticket"), "touchend", function() { + api.openWin({ + name : 'operate-ticket', + url : './logQuery-main.html', + pageParam : { + page : 'operate' + } + }); + }); + + //用户点击了工作票按钮 + $api.addEvt($api.dom("#work-ticket"), "touchend", function() { + api.openWin({ + name : 'work-ticket', + url : './logQuery-main.html', + pageParam : { + page : 'work' + } + }); + }); + + } + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/logQuery/operateTicketDetail.js b/app-saas-src/script/feature/logQuery/operateTicketDetail.js new file mode 100644 index 0000000..122ce57 --- /dev/null +++ b/app-saas-src/script/feature/logQuery/operateTicketDetail.js @@ -0,0 +1,45 @@ +apiready = function(){ + var ctrl = { + init : {}, //初始化 + bind : {}, //事件绑定 + toast : {}, //弹出提示框 + }; + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + ctrl.bind(); + } + ctrl.bind = function(){ + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + + //打开frame + var id = api.pageParam.id; + + //计算frame显示的位置和尺寸 + var windowWidth = parseInt($api.cssVal($api.dom("body"), "width")); + var windowHeight = parseInt($api.cssVal($api.dom("body"), "height")); + var headerHeight = parseInt($api.cssVal($api.dom("#header"), "height")); + var frameX = 0; + var frameY = headerHeight; + var frameWidth = windowWidth; + var frameHeight = windowHeight - headerHeight; + api.openFrame({ + name: 'operateTicketDetailFrame', + url: './operateTicketDetailFrame.html', + rect: { + x: frameX, + y: frameY, + w: frameWidth, + h: frameHeight + }, + scaleEnabled:true, + pageParam: { + id: id + } + }); + } + ctrl.init(); +} diff --git a/app-saas-src/script/feature/logQuery/operateTicketDetailFrame.js b/app-saas-src/script/feature/logQuery/operateTicketDetailFrame.js new file mode 100644 index 0000000..e6044ba --- /dev/null +++ b/app-saas-src/script/feature/logQuery/operateTicketDetailFrame.js @@ -0,0 +1,122 @@ +apiready = function() { + var ctrl = { + init: {}, + toast: {}, + getContent: {} + }; + ctrl.init = function() { + ctrl.getContent(); + } + /** + * 弹出提示框 + */ + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + ctrl.getContent = function() { + var url = '/ems/rest/ticket/czp'; + var id = api.pageParam.id; + var messageId = api.pageParam.messageId; + var data = { + "czpId": id + }; + + $api.get(url, data, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (res.code == 200) { + ctrl.render(res); + } else if (res.code == 468) { // todo + var msg = ""; + if (messageId) { + msg = "消息不存在"; + ctrl.toast(msg); + api.sendEvent({ + name: 'removeMessage', + extra: { + messageId: messageId + } + }); + + window.setTimeout(function() { + api.closeWin(); + }, 2000); + + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + + + + + + + + } + }); + } + ctrl.render = function(res) { + var ticket = res.body; + var content = ticket.content.replace(/\\\"/g, "\""); + + if ($api.getStorage('cus')) { + + content = content.replace($api.guestKeysPattern, $api.guestName); + + } + + //如果有快照 + if (ticket.snapshot && !$api.getStorage('cus')) { + + var img = new Image(); + img.src = res.prefix + ticket.snapshot; + img.onload = function() { + document.getElementById("snapshot").appendChild(img); + document.body.style.width = img.clientWidth + "px"; + initLayout(); + } + + img.onerror = function() { + var contentDiv = document.getElementById("content"); + contentDiv.innerHTML = content; + document.body.style.width = (contentDiv.clientWidth + 100) + "px"; //加边距 + initLayout(); + } + + } else { + var contentDiv = document.getElementById("content"); + contentDiv.innerHTML = content; + document.body.style.width = (contentDiv.clientWidth + 100) + "px"; //加边距 + initLayout(); + } + + function initLayout() { + // 初始化页面宽度 + var container = document.getElementById('container'); + var viewPort = document.querySelector('meta[name="viewport"]'); + var containerWidth = container.clientWidth; + var screenWidth = window.screen.width; + + var scale = screenWidth / containerWidth; + + if (api.systemType == 'android') { + document.body.scrollLeft = containerWidth / 2 - (containerWidth * scale / 2); + document.body.style.zoom = scale; + viewPort.setAttribute("content", "maximum-scale=3.0,minimum-scale=1,user-scalable=yes,width=device-width") + } else { + viewPort.setAttribute("content", "maximum-scale=3.0,minimum-scale=" + scale + ",user-scalable=yes,width=device-width,initial-scale=" + scale) + } + } + } + ctrl.init(); + +} diff --git a/app-saas-src/script/feature/logQuery/operateTicketList.js b/app-saas-src/script/feature/logQuery/operateTicketList.js new file mode 100644 index 0000000..d611769 --- /dev/null +++ b/app-saas-src/script/feature/logQuery/operateTicketList.js @@ -0,0 +1,206 @@ +apiready = function() { + var ctrl = { + init : {}, //初始化 + bind : {}, //绑定事件 + toast : {}, //弹出提示框 + getOperateTicket : {}, //获取巡检日志 + renderOperateTicket : {}, //渲染巡检日志 + getLogDom : {}, + currentPage: 1 + } + + ctrl.init = function() { + ctrl.bind(); + ctrl.getOperateTicket(); + } + + //判断是不是在体验模式 + ctrl.isCus = function(){ + if($api.getStorage('cus')){ + return true; + }else{ + return false; + } + } + + /** + * 弹出提示框 + */ + ctrl.toast = function(msg) { + api.toast({ + msg : msg, + duration : 3000, + locaiton : 'top' + }); + } + ctrl.bind = function() { + var $startTime = $('#startTime-select'); + var $endTime = $('#endTime-select'); + var $lbStartTime = $('#lbStartTime'); + var $lbEndTime = $('#lbEndTime'); + $startTime.on('change', function() { + var startTimeValue = $startTime.val();; + var endTimeValue = $endTime.val(); + if (startTimeValue) { + $lbStartTime.html(startTimeValue); + } else { + $lbStartTime.html("开始日期"); + } + }) + + $endTime.on('change', function() { + var startTimeValue = $startTime.val(); + var endTimeValue = $endTime.val(); + if (endTimeValue) { + $lbEndTime.html(endTimeValue); + } else { + $lbEndTime.html("结束日期"); + } + }) + + $("#operate-logs").on("touchend", ".item", function() { + var id = $(this).data('id'); + api.openWin({ + name : 'operateTicketDetail', + url : './operateTicketDetail.html', + pageParam : { + id : id + } + }); + }) + + $api.addEvt($api.dom("#query"), "touchend", function() { + $("#operate-logs").empty(); + ctrl.currentPage = 1; + ctrl.getOperateTicket(); + }); + //下拉刷新 + api.setRefreshHeaderInfo({ + loadingImg : 'widget://image/refresh.png', + bgColor : '#ccc', + textColor : '#fff', + textDown : '下拉刷新...', + textUp : '松开刷新...' + }, function(ret, err) { + $startTime.val(''); + $endTime.val(''); + $lbStartTime.html("开始日期"); + $lbEndTime.html("结束日期"); + ctrl.currentPage = 1; + ctrl.getOperateTicket(); + api.refreshHeaderLoadDone(); + }); + //上拉加载 + api.addEventListener({ + name : 'scrolltobottom' + }, function(ret, err) { + ctrl.currentPage++; + if (ctrl.currentPage > ctrl.totalPages) { + ctrl.toast("没有更多了"); + return; + } + ctrl.getOperateTicket(); + + }); + } +//获取操作票信息 + ctrl.getOperateTicket = function() { + var $startTime = $('#startTime-select'); + var $endTime = $('#endTime-select'); + //显示载入动画 + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + var powerRoom = $api.getStorage('powerRoom'); + if (powerRoom) { + var prId = powerRoom.prId; + } else { + return; + } + var dateUtil = new DateUtils(); + var pageSize = 20; + var startDate = $startTime.val(); + if (startDate) { + dateUtil.setDate(startDate); + startDate = dateUtil.getMillisecond(); + } + var endDate = $endTime.val(); + if (endDate) { + dateUtil.setDate(endDate); + endDate = dateUtil.getMillisecond(); + } + // 如果开始时间大于结束时间 交换 + startDate && endDate && (startDate > endDate) && (startDate = [endDate,endDate = startDate][0]); + var url = '/ems/rest/ticket/czp/page'; + + var data = { + "page" : ctrl.currentPage, + "pageSize" : pageSize, + "prId" : prId, + "startDate" : startDate || null, + "endDate" : endDate || null, + "cusId" : $api.getStorage('cusId') + }; + $api.get(url, data, function(res, err) { + if (err) { + //隐藏载入动画 + api.hideProgress(); + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != 200) { + //隐藏载入动画 + api.hideProgress(); + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } else { + ctrl.renderOperateTicket(res); + } + + } + }); + + } + ctrl.renderOperateTicket = function(res) { + if(ctrl.currentPage == 1){ + $("#operate-logs").empty(); + } + + ctrl.totalPages = res.body.totalPages; + if (ctrl.totalPages == 0) { + //隐藏载入动画 + api.hideProgress(); + api.refreshHeaderLoadDone(); + $api.css($api.dom('#operate-logs'), "display:none"); + $api.css($api.dom('#operate-log-empty-tips'), "display:block"); + } else { + var ticketList = res.body.records; + var length = ticketList.length; + for (var i = 0; i < length; i++) { + $("#operate-logs").append(ctrl.getLogDom(ticketList[i])); + } + //隐藏载入动画 + api.hideProgress(); + $api.css($api.dom('#operate-logs'), "display:block"); + $api.css($api.dom('#operate-log-empty-tips'), "display:none"); + } + } + ctrl.getLogDom = function(item) { + var tpl = ''; + tpl += '
    '; + tpl += ''; + tpl += '
    '; + tpl += '
    '; + tpl += '{{number}}
    '; + + var prName = $api.getStorage('cus') ? $api.guestPrName : item.prName; + var dateUtil = new DateUtils(); + dateUtil.setDate(item.createTime); + var createTime = dateUtil.getFormattedDate('yyyy-MM-dd hh:mm:ss'); + return tpl.replace('{{date}}', createTime).replace('{{number}}', item.ticketNum).replace('{{id}}', item.czpId).replace('{{prName}}', prName); + + } + ctrl.init(); +} diff --git a/app-saas-src/script/feature/logQuery/repairLogDetail.js b/app-saas-src/script/feature/logQuery/repairLogDetail.js new file mode 100644 index 0000000..3beed5e --- /dev/null +++ b/app-saas-src/script/feature/logQuery/repairLogDetail.js @@ -0,0 +1,426 @@ +apiready = function() { + var ctrl = { + init: {}, + bind: {}, + getLog: {}, //获取抢修日志详情 + renderLog: {}, //渲染抢修日志详情 + toast: {}, //弹出提示框 + handleData: {}, //处理数据 + renderFilter: {}, //拦截接口返回数据,对体验模式下的数据进行过滤 + filter: {}, //数组筛选 + } + + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + ctrl.cus = $api.getStorage('cus'); + ctrl.bind(); + ctrl.getPr(); + ctrl.getLog(); + } + // 弹出提示框 + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + + $('.bt-detail').on('touchend', function() { + $(this).parent().parent().find('.item').toggle(); + $(this).find('img').toggleClass("close") + }) + } + //数组筛选 obj {type:2} + ctrl.filter = function(ary, obj) { + var result = []; + for (var i = 0; i < ary.length; i++) { + var currentObj = ary[i]; + for (var attr in obj) { + if (currentObj.hasOwnProperty(attr) && currentObj[attr] == obj[attr]) { + result.push(currentObj); + } + } + + } + return result; + + } + // 获取抢修日志详情 + ctrl.getLog = function() { + var url = '/ems/rest/qx/order'; + var id = api.pageParam.id; + var messageId = api.pageParam.messageId; + var data = { + qxOrderId: id + }; + $api.get(url, data, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (res.code == 200) { + ctrl.renderLog(res); + } else if (res.code == 404) { + var msg = ""; + if (messageId) { + msg = "日志不存在"; + ctrl.toast(msg); + api.sendEvent({ + name: 'removeMessage', + extra: { + messageId: messageId + } + }); + + window.setTimeout(function() { + api.closeWin(); + }, 2000); + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + + + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + + } + }); + } + + // 获取配电室详情 + ctrl.getPr = function() { + var powerRoom = $api.getStorage('powerRoom'); + if (powerRoom) { + ctrl.prName = powerRoom.prName; + } else { + return; + } + } + ctrl.handleData = function() { + var dateUtil = new DateUtils(); + if (!ctrl.log) { + return; + } + if (ctrl.log.qxTasks) { + // 查勘任务 + ctrl.surveyTasks = ctrl.filter(ctrl.log.qxTasks, { + "taskType": 1 + }); + // 抢修任务 + var repairTask = ctrl.filter(ctrl.log.qxTasks, { + "taskType": 2 + }); + ctrl.repairTask = (repairTask && repairTask.length > 0) ? repairTask[0] : null; + } + + //查询报警时间 + if (ctrl.log.alarmTime) { + dateUtil.setDate(ctrl.log.alarmTime); + ctrl.alarmTime = dateUtil.getFormattedDate('yyyy-MM-dd hh:mm:ss'); + } + //查询开始查勘时间 + if (ctrl.surveyTasks && ctrl.surveyTasks.length > 0) { + var tasks = ctrl.surveyTasks.sort(function(a, b) { + return a.createTime - b.createTime; + }); + dateUtil.setDate(tasks[0].createTime); + ctrl.startSurveyTime = dateUtil.getFormattedDate('yyyy-MM-dd hh:mm:ss'); + } else { + ctrl.startSurveyTime = "没有安排查勘"; + } + + //获取抢修时间和抢修结束时间 + if (ctrl.repairTask) { + if (ctrl.repairTask.deleteFlag) { + ctrl.startRepairTime = "没有安排抢修"; + ctrl.completeRepairTime = "没有安排抢修"; + } else { + dateUtil.setDate(ctrl.repairTask.createTime); + ctrl.startRepairTime = dateUtil.getFormattedDate('yyyy-MM-dd hh:mm:ss'); + if (ctrl.repairTask.isComplete) { + dateUtil.setDate(ctrl.repairTask.completeTime); + ctrl.completeRepairTime = dateUtil.getFormattedDate('yyyy-MM-dd hh:mm:ss'); + } else { + ctrl.completeRepairTime = ''; + } + + } + + } else { + ctrl.startRepairTime = "没有安排抢修"; + ctrl.completeRepairTime = "没有安排抢修"; + } + + } + //查看图片 + //@param picContainner 图片放置的容器的id + //@param tasks 后台获取到的任务列表 + ctrl.showPic = function(picContainner, tasks) { + if (!tasks.picture) { + return; + } + var pics = tasks.picture.length > 0 ? tasks.picture.split(",") : []; + if (pics.length > 0) { + $api.html($api.dom('#' + picContainner), ''); + var photoBrowser = api.require('photoBrowser'); + var imageList = []; + var container = document.getElementById(picContainner); + //点击图片 使用图片查看器查看 + container.addEventListener("touchend", function() { + //初始化图片查看器 + photoBrowser.open({ + images: imageList, + bgColor: '#000' + }, function(ret, err) { + if (ret && ret.eventType == "click") { + photoBrowser.close(); + } + }); + }) + for (var i = 0; i < pics.length; i++) { + (function() { + var container = document.getElementById(picContainner); + var image = new Image(); + image.src = "../../../image/pre-pic.png"; + container.appendChild(image); + api.imageCache({ + url: ctrl.prefix+pics[i], + policy: "cache_else_network", + thumbnail: false + }, function(ret, err) { + if (ret.status) { + var container = document.getElementById(picContainner); + // var image = new Image(); + image.src = ret.url; + image.onload = function() { + container.appendChild(image); + photoBrowser.appendImage({ + images: [ret.url] + }); + imageList.push(ret.url); + } + } else { + // var image = new Image(); + var container = document.getElementById(picContainner); + image.src = "../../../image/img-error.png"; + image.onload = function() { + container.appendChild(image); + photoBrowser.appendImage({ + images: [image.src] + }); + + imageList.push(image.src); + } + } + + }) + + })() + + } + + } else { + var dom = "没有图片"; + $('#' + picContainner).html(dom); + } + } + + ctrl.renderLog = function(res) { + ctrl.log = res.body; + ctrl.prefix = res.prefix; + ctrl.handleData(); + var log = ctrl.log; + if (!log) { + return; + } + var isComplete = log.deleteFlag; + $api.text($api.dom('#pr-name'), ctrl.prName); + $api.text($api.dom('#malfunction-item'), log.orderDesc); + if (ctrl.completeRepairTime == "没有安排抢修") { + if (isComplete) { + $api.text($api.dom('#complete-time'), ctrl.completeRepairTime); + } + } else { + $api.text($api.dom('#complete-time'), ctrl.completeRepairTime.slice(10)); + $api.text($api.dom('#complete-date'), ctrl.completeRepairTime.slice(0, 10)); + } + if (ctrl.startRepairTime == "没有安排抢修") { + if (isComplete) { + $api.text($api.dom('#repair-time'), ctrl.startRepairTime); + } + } else { + $api.text($api.dom('#repair-time'), ctrl.startRepairTime.slice(10)); + $api.text($api.dom('#repair-date'), ctrl.startRepairTime.slice(0, 10)); + } + if (ctrl.startSurveyTime == "没有安排查勘") { + if (isComplete) { + $api.text($api.dom('#survey-time'), ctrl.startSurveyTime); + } + } else { + $api.text($api.dom('#survey-time'), ctrl.startSurveyTime.slice(10)); + $api.text($api.dom('#survey-date'), ctrl.startSurveyTime.slice(0, 10)); + } + + $api.text($api.dom('#alram-time'), ctrl.alarmTime.slice(10)); + $api.text($api.dom('#alram-date'), ctrl.alarmTime.slice(0, 10)); + if (ctrl.completeRepairTime != "没有安排抢修" && ctrl.completeRepairTime) { + $api.addCls($api.dom('#complete-circle'), 'circle-green'); + $api.addCls($api.dom('#repair-circle'), 'circle'); + $api.addCls($api.dom('#survey-circle'), 'circle'); + $api.addCls($api.dom('#alram-circle'), 'circle'); + } else if (ctrl.startRepairTime != "没有安排抢修") { + $api.addCls($api.dom('#complete-circle'), 'circle'); + $api.addCls($api.dom('#repair-circle'), 'circle-green'); + $api.addCls($api.dom('#survey-circle'), 'circle'); + $api.addCls($api.dom('#alram-circle'), 'circle'); + } else if (ctrl.startSurveyTime != "没有安排查勘") { + $api.addCls($api.dom('#complete-circle'), 'circle'); + $api.addCls($api.dom('#repair-circle'), 'circle'); + $api.addCls($api.dom('#survey-circle'), 'circle-green'); + $api.addCls($api.dom('#alram-circle'), 'circle'); + } else { + $api.addCls($api.dom('#complete-circle'), 'circle'); + $api.addCls($api.dom('#repair-circle'), 'circle'); + $api.addCls($api.dom('#survey-circle'), 'circle'); + $api.addCls($api.dom('#alram-circle'), 'circle-green'); + } + + //抢修方案 + if (ctrl.cus) { + log.qxProgramme = log.qxProgramme?log.qxProgramme.replace($api.guestKeysPattern, $api.guestName): ''; + } + $("#repair-programme").text(log.qxProgramme ? log.qxProgramme : "没有制定抢修方案"); + + //查勘结果 + var surveyTasks = ctrl.surveyTasks; + if (surveyTasks && surveyTasks.length) { + var str = '
    '; + for (var i = 0; i < surveyTasks.length; i++) { + str += '
    查勘记录' + (i + 1) + '
    '; + if (surveyTasks[i].taskDesc) { + if (ctrl.cus) { + surveyTasks[i].taskDesc = surveyTasks[i].taskDesc.replace($api.guestKeysPattern, $api.guestName); + } + str += '
    查勘描述:' + surveyTasks[i].taskDesc + '
    '; + } else if (!surveyTasks[i].picture) { + str += '
    该条查勘记录没有相关信息
    '; + } else { + str += '
    没有查勘描述
    '; + } + str += '
    '; + if (surveyTasks[i].picture && surveyTasks[i].picture.length) { + var id = surveyTasks[i].taskId; + str += '
    '; + str += '
    '; + $('#survey-list-con').html(str); + //查勘图片处理 + var tasks = surveyTasks[i]; + var pics = tasks.picture.length > 0 ? tasks.picture.split(",") : []; + + if (pics.length > 0) { + var photoBrowser = api.require('photoBrowser'); + ctrl.imageList = []; + + var container = document.getElementById(id); + + $('#survey-list-con').on('touchend', '.survey-pic', function() { + //初始化图片查看器 + photoBrowser.open({ + images: ctrl.imageList, + bgColor: '#000' + }, function(ret, err) { + if (ret && ret.eventType == "click") { + photoBrowser.close(); + } + }); + }) + + function addPic(index) { + for (var j = 0; j < pics.length; j++) { + (function() { + var container = document.getElementById(index); + var image = new Image(); + image.src = "../../../image/pre-pic.png"; + container.appendChild(image); + api.imageCache({ + url: ctrl.prefix+pics[j], + policy: "cache_else_network", + thumbnail: false + }, function(ret, err) { + if (ret.status) { + var container = document.getElementById(index); + image.src = ret.url; + image.onload = function() { + container.appendChild(image); + photoBrowser.appendImage({ + images: [ret.url] + }); + ctrl.imageList.push(ret.url); + } + } else { + var container = document.getElementById(index); + image.src = "../../../image/img-error.png"; + image.onload = function() { + container.appendChild(image); + photoBrowser.appendImage({ + images: [image.src] + }); + + ctrl.imageList.push(image.src); + } + } + + }) + })() + + + } + } + addPic(id); + } + } else if (surveyTasks[i].taskDesc) { + //没有查勘图片 + str += '
    没有查勘图片
    ' + str += ''; + $('#survey-list-con').html(str); + } else { + str += ''; + $('#survey-list-con').html(str); + } + + + + } + } else { + //没有查勘结果 + $('#survey-list-con').html('没有查勘结果'); + }; + //抢修结果 + var repairTask = ctrl.repairTask; + + if (repairTask) { + if (ctrl.cus) { + repairTask.result = log.qxProgramme.replace($api.guestKeysPattern, $api.guestName); + } + $api.text($api.dom("#taskDesc"), repairTask.result); + if (repairTask.picture && repairTask.picture.length) { + + ctrl.showPic('repair-pic', repairTask); + } + + } else { + var dom = "无抢修记录"; + $('#repair-result').html(dom); + + } + } + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/logQuery/repairLogList.js b/app-saas-src/script/feature/logQuery/repairLogList.js new file mode 100644 index 0000000..9c73ff7 --- /dev/null +++ b/app-saas-src/script/feature/logQuery/repairLogList.js @@ -0,0 +1,219 @@ +apiready = function() { + var ctrl = { + currentPage: 1, + flag: 2, // 处理完(日志) + init: {}, //初始化 + bind: {}, //事件绑定 + toast: {}, //弹出提示框 + getRepairLogs: {}, //获取抢修日志 + renderRepairLogs: {}, //渲染抢修日志 + getLogDom: {} + } + ctrl.init = function() { + ctrl.bind(); + ctrl.getRepairLogs(); + } + + //判断是不是在体验模式 + ctrl.isCus = function() { + if ($api.getStorage('cus')) { + return true; + } else { + return false; + } + } + // 弹出提示框 + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + ctrl.bind = function() { + var $startTime = $('#startTime-select'); + var $endTime = $('#endTime-select'); + var $lbStartTime = $('#lbStartTime'); + var $lbEndTime = $('#lbEndTime'); + $startTime.on('change', function() { + var startTimeValue = $startTime.val(); + var endTimeValue = $endTime.val(); + if (startTimeValue) { + $lbStartTime.html(startTimeValue); + } else { + $lbStartTime.html("开始日期"); + } + }) + + $endTime.on('change', function() { + var startTimeValue = $startTime.val(); + var endTimeValue = $endTime.val(); + if (endTimeValue) { + $lbEndTime.html(endTimeValue); + } else { + $lbEndTime.html("结束日期"); + } + + }) + + $api.addEvt($api.dom("#query"), "touchend", function() { + $api.html($api.dom('#repair-logs'), ''); + ctrl.currentPage = 1; + ctrl.getRepairLogs(); + }); + //下拉刷新 + api.setRefreshHeaderInfo({ + loadingImg: 'widget://image/refresh.png', + bgColor: '#ccc', + textColor: '#fff', + textDown: '下拉刷新...', + textUp: '松开刷新...' + }, function(ret, err) { + $startTime.val(''); + $endTime.val(''); + $lbStartTime.html("开始日期"); + $lbEndTime.html("结束日期"); + ctrl.currentPage = 1; + ctrl.getRepairLogs(); + api.refreshHeaderLoadDone(); + }); + //上拉加载 + api.addEventListener({ + name: 'scrolltobottom' + }, function(ret, err) { + ctrl.currentPage++; + if (ctrl.currentPage > ctrl.totalPages) { + ctrl.toast("没有更多了"); + return; + } + ctrl.getRepairLogs(); + + }); + //跳转到详情页 + $("#repair-logs").on("touchend", ".item", function() { + var id = $(this).data('id'); + api.openWin({ + name: 'repairDetail', + url: './repairLogDetail.html', + pageParam: { + id: id + } + }); + }) + } + ctrl.getRepairLogs = function() { + var $startTime = $('#startTime-select'); + var $endTime = $('#endTime-select'); + //显示载入动画 + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + var powerRoom = $api.getStorage('powerRoom'); + if (powerRoom) { + var prId = powerRoom.prId; + } else { + return; + } + var dateUtil = new DateUtils(); + var pageSize = 20; + var startDate = $startTime.val(); + if (startDate) { + dateUtil.setDate(startDate); + startDate = dateUtil.getMillisecond(); + } + var endDate = $endTime.val(); + if (endDate) { + dateUtil.setDate(endDate); + endDate = dateUtil.getMillisecond(); + } + // 如果开始时间大于结束时间 交换 + startDate && endDate && (startDate > endDate) && (startDate = [endDate,endDate = startDate][0]); + var url = '/ems/rest/qx/order/page'; + var data = { + "page": ctrl.currentPage, + "pageSize": pageSize, + "prId": prId, + "startDate": startDate || null, + "endDate": endDate || null, + "cusId": $api.getStorage('cusId'), + "flag": ctrl.flag // 处理完(日志) + }; + $api.get(url, data, function(res, err) { + if (err) { + //隐藏载入动画 + api.hideProgress(); + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != 200) { + //隐藏载入动画 + api.hideProgress(); + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } else { + ctrl.renderRepairLogs(res); + } + + } + }); + } + + ctrl.renderRepairLogs = function(res) { + var logList = res.body.records; + if (ctrl.currentPage == 1) { + $api.html($api.dom('#repair-logs'), ''); + } + + ctrl.totalPages = res.body.totalPages; + if (ctrl.totalPages == 0) { + // 隐藏载入动画 + api.hideProgress(); + api.refreshHeaderLoadDone(); + $api.css($api.dom('#repair-logs'), "display:none"); + $api.css($api.dom('#repair-log-empty-tips'), "display:block"); + + } else { + var length = logList.length; + for (var i = 0; i < length; i++) { + $api.append($api.dom('#repair-logs'), ctrl.getLogDom(logList[i])); + } + //隐藏载入动画 + api.hideProgress(); + $api.css($api.dom('#repair-logs'), "display:block"); + $api.css($api.dom('#repair-log-empty-tips'), "display:none"); + + } + + } + + ctrl.getLogDom = function(item) { + + var tpl = ''; + tpl += '
    '; + tpl += ''; + tpl += '
    '; + tpl += '
    '; + tpl += '{{problem}}'; + tpl += '
    '; + if (!item.orderDesc) { + item.orderDesc = ''; + } + if (ctrl.isCus()) { + //如果是在体验模式下,拦截替换配电室名称 + item.prName = $api.guestPrName; + item.orderDesc = item.orderDesc.replace($api.guestKeysPattern, $api.guestName); + + } + var dateUtil = new DateUtils(); + dateUtil.setDate(item.createTime); + var createTime = dateUtil.getFormattedDate('yyyy-MM-dd hh:mm:ss'); + return tpl.replace('{{title}}', item.prName).replace('{{problem}}', item.orderDesc) + .replace('{{date}}', createTime) + .replace('{{id}}', item.qxOrderId); + } + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/logQuery/workTicketDetail.js b/app-saas-src/script/feature/logQuery/workTicketDetail.js new file mode 100644 index 0000000..81b0d02 --- /dev/null +++ b/app-saas-src/script/feature/logQuery/workTicketDetail.js @@ -0,0 +1,45 @@ +apiready = function() { + var ctrl = { + init : {}, + bind : {}, + }; + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + ctrl.bind(); + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + //打开frame + var id = api.pageParam.ticketId; + + //计算frame显示的位置和尺寸 + var windowWidth = parseInt($api.cssVal($api.dom("body"), "width")); + var windowHeight = parseInt($api.cssVal($api.dom("body"), "height")); + var headerHeight = parseInt($api.cssVal($api.dom("#header"), "height")); + var frameX = 0; + var frameY = headerHeight; + var frameWidth = windowWidth; + var frameHeight = windowHeight - headerHeight; + api.openFrame({ + name: 'workTicketDetailFrame', + url: './workTicketDetailFrame.html', + rect: { + x: frameX, + y: frameY, + w: frameWidth, + h: frameHeight + }, + scaleEnabled:true, + pageParam: { + id: id + } + }); + + } + ctrl.init(); + +} diff --git a/app-saas-src/script/feature/logQuery/workTicketDetailFrame.js b/app-saas-src/script/feature/logQuery/workTicketDetailFrame.js new file mode 100644 index 0000000..5e57441 --- /dev/null +++ b/app-saas-src/script/feature/logQuery/workTicketDetailFrame.js @@ -0,0 +1,112 @@ +apiready = function() { + var ctrl = { + init: {}, + toast: {}, + getContent: {} + }; + ctrl.init = function() { + ctrl.getContent(); + } + /** + * 弹出提示框 + */ + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + ctrl.getContent = function() { + var url = '/ems/rest/ticket/gzp'; + var id = api.pageParam.id; + var data = { + "gzpId": id + }; + + $api.get(url, data, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (res.code == 200) { + ctrl.render(res); + } else if (res.code == 404) { + var msg = ""; + var messageId = api.pageParam.messageId; + if (messageId) { + msg = "消息不存在"; + ctrl.toast(msg); + api.sendEvent({ + name: 'removeMessage', + extra: { + messageId: messageId + } + }); + window.setTimeout(function() { + api.closeWin(); + }, 2000); + }else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + + } + }); + } + ctrl.render = function(res) { + var ticket = res.body; + var content = ticket.content.replace(/\\\"/g, "\""); + + if ($api.getStorage('cus')) { + + content = content.replace($api.guestKeysPattern, $api.guestName); + + } + //如果有快照 + if (ticket.snapshot && !$api.getStorage('cus')) { + + var img = new Image(); + img.src = res.prefix + ticket.snapshot; + img.onload = function() { + document.getElementById("snapshot").appendChild(img); + document.body.style.width = img.clientWidth + "px"; + initLayout(); + } + + img.onerror = function() { + var contentDiv = document.getElementById("content"); + contentDiv.innerHTML = content; + document.body.style.width = (contentDiv.clientWidth + 100) + "px"; //加边距 + initLayout(); + } + + } else { + var contentDiv = document.getElementById("content"); + contentDiv.innerHTML = content; + document.body.style.width = (contentDiv.clientWidth + 100) + "px"; //加边距 + initLayout(); + } + + function initLayout() { + // 初始化页面宽度 + var container = document.getElementById('container'); + var viewPort = document.querySelector('meta[name="viewport"]'); + var containerWidth = container.clientWidth; + var screenWidth = window.screen.width; + + var scale = screenWidth / containerWidth; + + if (api.systemType == 'android') { + document.body.scrollLeft = containerWidth / 2 - (containerWidth * scale / 2); + document.body.style.zoom = scale; + viewPort.setAttribute("content", "maximum-scale=3.0,minimum-scale=1,user-scalable=yes,width=device-width") + } else { + viewPort.setAttribute("content", "maximum-scale=3.0,minimum-scale=" + scale + ",user-scalable=yes,width=device-width,initial-scale=" + scale) + } + } + } + ctrl.init(); + +} diff --git a/app-saas-src/script/feature/logQuery/workTicketList.js b/app-saas-src/script/feature/logQuery/workTicketList.js new file mode 100644 index 0000000..51f6a4f --- /dev/null +++ b/app-saas-src/script/feature/logQuery/workTicketList.js @@ -0,0 +1,199 @@ +apiready = function() { + var ctrl = { + init: {}, + bind: {}, + getWorkTickets: {}, + renderWorkTickets: {}, + toast: {}, + currentPage: 1, + } + ctrl.init = function() { + ctrl.bind(); + ctrl.getWorkTickets(); + } + /** + * 弹出提示框 + */ + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + ctrl.bind = function() { + var $startTime = $('#startTime-select'); + var $endTime = $('#endTime-select'); + var $lbStartTime = $('#lbStartTime'); + var $lbEndTime = $('#lbEndTime'); + $startTime.on('change', function() { + var startTimeValue = $startTime.val(); + var endTimeValue = $endTime.val(); + var lbStartTime = $('#lbStartTime'); + if (startTimeValue) { + $lbStartTime.html(startTimeValue); + } else { + $lbStartTime.html("开始日期"); + } + }) + + $endTime.on('change', function() { + var startTimeValue = $startTime.val(); + var endTimeValue = $endTime.val(); + if (endTimeValue) { + $lbEndTime.html(endTimeValue); + } else { + $lbEndTime.html("结束日期"); + } + }) + + $api.addEvt($api.dom("#query"), "touchend", function() { + $api.html($api.dom('#ticket-list'), ''); + ctrl.currentPage = 1; + ctrl.getWorkTickets(); + }); + //下拉刷新 + api.setRefreshHeaderInfo({ + loadingImg: 'widget://image/refresh.png', + bgColor: '#ccc', + textColor: '#fff', + textDown: '下拉刷新...', + textUp: '松开刷新...' + }, function(ret, err) { + $startTime.val(''); + $endTime.val(''); + $lbStartTime.html("开始日期"); + $lbEndTime.html("结束日期"); + ctrl.currentPage = 1; + ctrl.getWorkTickets(); + api.refreshHeaderLoadDone(); + }); + //上拉加载 + api.addEventListener({ + name: 'scrolltobottom' + }, function(ret, err) { + ctrl.currentPage++; + if (ctrl.currentPage > ctrl.totalPage) { + ctrl.toast("没有更多了"); + return; + } + ctrl.getWorkTickets(); + + }); + + $("#ticket-list").on("touchend", ".ticket-item", function() { + var id = $(this).data('id'); + api.openWin({ + name: 'workTicket', + url: './workTicketDetail.html', + scaleEnabled: true, + pageParam: { + ticketId: id + } + }); + }) + } + ctrl.getWorkTickets = function() { + //显示载入动画 + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + var dateUtil = new DateUtils(); + var powerRoom = $api.getStorage('powerRoom'); + if (powerRoom) { + var prId = powerRoom.prId; + var prName = powerRoom.prName; + } else { + return; + } + var pageSize = 10; + var startDate = $('#startTime-select').val(); + if (startDate) { + dateUtil.setDate(startDate); + startDate = dateUtil.getMillisecond(); + } + var endDate = $('#endTime-select').val(); + if (endDate) { + dateUtil.setDate(endDate); + endDate = dateUtil.getMillisecond(); + } + // 如果开始时间大于结束时间 交换 + startDate && endDate && (startDate > endDate) && (startDate = [endDate, endDate = startDate][0]); + var url = '/ems/rest/ticket/gzp/page'; + var data = { + "page": ctrl.currentPage, + "pageSize": pageSize, + "prId": prId, + "startDate": startDate || null, + "endDate": endDate || null, + "cusId": $api.getStorage('cusId'), + }; + $api.get(url, data, function(res, err) { + if (err) { + //隐藏载入动画 + api.hideProgress(); + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != 200) { + //隐藏载入动画 + api.hideProgress(); + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } else { + + ctrl.renderWorkTickets(res); + } + + } + }); + + } + ctrl.renderWorkTickets = function(res) { + ctrl.ticketList = res.body.records; + ctrl.totalPage = res.body.totalPages; + if (ctrl.currentPage == 1) { + $api.html($api.dom('#ticket-list'), ''); + } + if (ctrl.totalPage == 0) { + //隐藏载入动画 + api.hideProgress(); + api.refreshHeaderLoadDone(); + $api.css($api.dom('#ticket-list'), "display:none"); + $api.css($api.dom('#work-ticket-empty-tips'), "display:block"); + } else { + var ticketList = ctrl.ticketList.reverse(); + var length = ticketList.length; + for (var i = 0; i < length; i++) { + $api.append($api.dom('#ticket-list'), ctrl.getLogDom(ticketList[i])); + } + //隐藏载入动画 + api.hideProgress(); + $api.css($api.dom('#ticket-list'), "display:block"); + $api.css($api.dom('#work-ticket-empty-tips'), "display:none"); + + } + } + ctrl.getLogDom = function(item) { + var tpl = ''; + tpl += '
    '; + tpl += '{{prName}}'; + tpl += '
    {{time}}
    '; + tpl += '
    {{number}}
    '; + if (item.isComplete == "1") { + tpl += '{{isComplete}}
    '; + } else { + tpl += '{{isComplete}}'; + } + + var prName = $api.getStorage('cus') ? $api.guestPrName : item.prName; + var dateUtil = new DateUtils(); + dateUtil.setDate(item.createTime); + var createTime = dateUtil.getFormattedDate('yyyy-MM-dd hh:mm:ss'); + return tpl.replace('{{time}}', createTime).replace('{{number}}', item.ticketNum).replace('{{id}}', item.gzpId).replace('{{isComplete}}', (item.complete? "已完成" : "未完成")).replace('{{prName}}', prName); + + } + + ctrl.init(); + +} diff --git a/app-saas-src/script/feature/rtData.js b/app-saas-src/script/feature/rtData.js new file mode 100644 index 0000000..db53387 --- /dev/null +++ b/app-saas-src/script/feature/rtData.js @@ -0,0 +1,645 @@ +var prId = -1; +var serverId = -1; +var serverIp; //实时数据服务器的ip +var rtDataServerAddr; +var rtDataServerAddrTemplate = "ws://{ip}:{port}/GetFrameViewRTDataRapidly"; +var websocket; +var varList; // 保留原始的点信息 +var varInfoList; //实时值的索引 +var varValueList; //实时值的dom元素 + +var locName; //高压侧 +var ctValue; //1:高压侧、2:低压侧、3:变压器、4:直流屏 +var ddNumber; //201 +var varType; //AI DI +var varTypeName; //遥测 遥信 +var isDi = false; +var currentType = { // 当前点击查看曲线的数据类型 + index: 1, // 索引 + type: null, // 类型 eg频率 + unit: '', // 单位i +}; +var cusId = $api.getStorage('cusId'); +var prIdList = []; +times: []; // 存放图表时间轴的值 +values: []; // 存放图表每个时刻的历史值 +realChart: {}; // 实时数据的图表 +realChartOption: {}; // 实时数据图表配置项 +/** + * 显示右侧边栏 + */ +function showRightPanel() { + api.openDrawerPane({ + type: 'right' + }); +} +/** + * 界面显示完成后的回调 + */ +function viewAppear(ret, err) { + //获取prId + var powerRoom = $api.getStorage('powerRoom'); + if (powerRoom) { + // 获取服务器配置 + prId = powerRoom.prId; + var configId = powerRoom.configId; + + if (!configId || configId < 0) { + toast("获取配电室信息失败"); + return false; + } + //获取serverId + var url = "/admin/rest/api/config/server/" + configId; + $api.get(url, {}, function(data, err) { + if (err) { + toast("网络请求失败"); + } else { + if (!data.code || data.code != 200) { + toast("服务器响应错误" + (data.code ? (",错误码:" + data.code) : "")); + } else { + // edit start 2019/12/16 kangzhi + // serverIp = data.body.dataServiceIp; + // serverPort = data.body.rtPort; + serverIp = data.body.realTimeIp; + serverPort = data.body.realTimePort; + // edit end 2019/12/16 kangzhi + rtDataServerAddr = rtDataServerAddrTemplate.replace("{ip}", serverIp).replace("{port}", serverPort); + //通知侧栏开始加载数据 + api.sendEvent({ + name: "rtDataLoadData" + }); + // 初始化图表 + initChart(); + } + } + }); + + } else { + toast("无法获取配电室相关信息"); + } +} + +/** + * 右侧边栏的筛选条件发生变化 + */ +function filterSelectionChanged(ret, err) { + var result = ret.value; + locName = result.locName; + ctValue = result.ctValue; + ddNumber = result.ddNumber; + varType = result.varType; + varTypeName = result.varTypeName; + + $("#btn-location").attr("value", locName); + $("#btn-ddnumber").attr("value", (ddNumber ? ddNumber : "-")); + + if (varType == "1") { + isDi = false; + $('.chart-content').show(); + } else { + isDi = true; + $('.chart-content').hide(); + } + + $("#btn-type").attr("value", varTypeName); + + if (ddNumber) { + //加载实时值的列表 + initVarList(); + } else { + //该分类下唔调度号 + toast("请选择查询条件"); + } + + +} + +/** + * 弹出提示框 + */ +function toast(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); +} + +/** + * 根据id清空所有子元素 + */ +function clearAllChildren(id) { + var tobeRemoved = $("#" + id); + tobeRemoved.empty(); +} + +/** + * 初始化变量列表 + */ +function initVarList() { + var tmpVarInfoList = []; + var tmpVarValueList = []; + //清空界面上的变量列表 + clearAllChildren("rtlist"); + + if (prId < 0) { + return; + } + var url = '/ems/rest/var/page'; + var args; + if (varType == "1") { //AI + $("#data-table").removeClass("di-table").addClass("ai-table"); + $("#table-header").removeClass("di-table").addClass("ai-table"); + args = { + prId: prId, + ddNum: ddNumber, + location: ctValue, + varType: varType, + page: 1, + pageSize: 999999 + }; + + } else { + $("#data-table").removeClass("ai-table").addClass("di-table"); + $("#table-header").removeClass("ai-table").addClass("di-table"); + args = { + prId: prId, + ddNum: ddNumber, + location: ctValue, + varType: varType, + page: 1, + pageSize: 999999, + filterDI: true // 筛选DI点 + }; + } + api.showProgress({ + title: '数据加载中', + text: '请稍等', + modal: true + }); + + $api.get(url, args, function(data, err) { + api.hideProgress(); + if (err) { + toast("网络请求失败"); + } else { + if (!data.code || data.code != "200") { + toast("服务器响应错误" + (data.code ? (",错误码:" + data.code) : "")); + } else { + var tbody = $("#rtlist"); //表格主体 + if (data.body && data.body.records.length) { + $('#empty-tips').hide(); + varList = data.body.records; + var purpose = null; + for (var i = 0; i < varList.length; i++) { + var element = varList[i]; + var trDom = '' + var tr = $(trDom); + var tdValue = $(""); + var tagName; + + var cname = element.varCnName; + try { + + var lastSpaceIndex = cname.lastIndexOf(' '); + tagName = cname.slice(lastSpaceIndex + 1); + + if (!purpose) { + + purpose = cname.slice(0, lastSpaceIndex); + //修改用途的名称 + $("#purpose").text(purpose); + } + + } catch (e) { + tagName = ''; + } + + tr.append("" + tagName + ""); + tr.append(tdValue); + tr.append("" + (element.unit ? element.unit : "") + ""); + tr.append("点击查看"); + tbody.append(tr); + + //保留变量的索引及类型 + // tmpVarInfoList.push({ + // index: element.varIndex, + // type: element.varType + // }); + // add s 2023/8/25 + var flag = prIdList.indexOf(prId + '') == -1? false : true; + if (flag) { + tmpVarInfoList.push({ + index: element.varName, + type: element.varType + }); + } else { + tmpVarInfoList.push({ + index: element.varIndex, + type: element.varType + }); + } + // add e 2023/8/25 + //保留这个dom元素,当接收实时值的时候使用 + tmpVarValueList.push(tdValue); + + + } + varInfoList = tmpVarInfoList; + varValueList = tmpVarValueList; + // 默认选中表格中的第一行(AI点) + if (varType == 1) { + var currentTd = tbody.find('.enableClick').eq(0); + currentTd.addClass('disableClick'); + getCurrentTrData(currentTd); + } + + //初始化WebSocket + if (websocket) { + //初始化webSocket的索引 + sendVarInfoList(); + } else { + connectAndInitParams(); + } + + }else{ + + $('#empty-tips').show(); + } + } + } + }); +} + +/** + * 建立WebSocket连接并初始化索引参数 + */ +function connectAndInitParams() { + shutdownWebSocket(); + // add start 2023/8/25 + var flag = prIdList.indexOf(prId + '') == -1? false : true; + if (flag) { // MQTT 客户使用新实时数据 + rtDataServerAddr = 'wss://cdyapi.saas.dianwutong.com/mqtt/websocket' + } + // add end 2023/8/25 + setTimeout(function() { + websocket = new WebSocket(rtDataServerAddr); + websocket.binaryType = 'arraybuffer'; + websocket.onopen = onOpen; + websocket.onerror = onError; + websocket.onmessage = onMessage; + websocket.onclose = onClose; + }.bind(this), 0); +} + +/** + * 断开WebSocket连接 + */ +function shutdownWebSocket() { + try { + if (websocket) { + websocket.close(); + } + } catch (error) { + + } +} + +/** + * 发送初始化webSocket的索引的请求 + */ +function sendVarInfoList() { + try { + websocket.send(JSON.stringify({ + code: 0, + Indexs: varInfoList + })); + } catch (error) { + toast(JSON.stringify(error)); + } +} + +/** + * 发送获取变量值的请求 + */ +function sendGetVarValueRequset() { + try { + websocket.send(JSON.stringify({ + code: 1 + })); + } catch (error) { + toast(JSON.stringify(error)); + } +} + +/** + * WebSocket连接建立成功,初始化索引 + * @param {*} evt + */ +function onOpen(evt) { + times = []; + values = []; + sendVarInfoList(); +} + +/** + * 对实时数据服务器返回的数据进行解析 + * @param {*} evt + */ +function onMessage(evt) { + var response = JSON.parse(evt.data); + if (response.code == 0) { + for (var i = 0; i < varValueList.length && i < response.Values.length; i++) { + var domVarValue = varValueList[i]; + if (response.Values[i] != null) { + if (isDi) { + //0是分,1是合 + + domVarValue.html(response.Values[i] < 0.5 ? varList.zeroDefine || '分' : varList.oneDefine || '合'); + } else { + domVarValue.html(response.Values[i].toFixed(2)); + } + } else { + domVarValue.html("-"); + } + + } + if(!isDi) { + // 此时选中类型的value值 + var value = response.Values[currentType.index]; + // 获取图表需要的数据 + getChartData(value); + } + setTimeout(sendGetVarValueRequset, 5000); //5秒后再次请求数据 + } else { + toast("实时数据服务器报告了一个错误,错误码:" + response.code + ",原因:" + response.result); + } +} + +/** + * 连接断开,5秒后重试连接 + * @param {*} evt + */ +function onError(evt) { + toast("实时数据连接意外断开,正在重新连接..."); + setTimeout(function() { + connectAndInitParams(); + }, 5000); +} + +function onClose(evt) { + +} + +/** + * 应用程序进入后台 + * 断开WebSocket连接 + */ +function onPause(ret, err) { + shutdownWebSocket(); +} + +/** + * 应用程序恢复前台 + * 重新连接WebSocket + */ +function onResume(ret, err) { + connectAndInitParams(); +} +// 初始化图表 +function initChart() { + realChartOption = { + title: { + show: true, + text: '', + left: 'center', + top: 'top', + textStyle: { + fontSize: 14, + fontWeight: 'normal' + } + }, + grid: { + left: '3%', + right: '9%', + bottom: '10%', + top: "15%", + containLabel: true + }, + tooltip: { + trigger: 'axis', + axisPointer: { + animation: false + }, + position: function(pos, params, el, elRect, size) { + var obj = { + top: 10 + }; + obj[['left', 'right'][+(pos[0] < size.viewSize[0] / 2)]] = 30; + return obj; + } + }, + xAxis: { + type: 'category', + splitLine: { + show: true + }, + axisTick: { + inside: true + }, + boundaryGap: ['0%', '100%'], + axisLabel: { + margin:12 + }, + data: [] + }, + yAxis: { + name: '', + nameTextStyle: { + color: '#5a5a5a' + }, + type: 'value', + splitLine: { + show: true + }, + axisTick: false, + min: 'dataMin' + }, + series: [] + } + realChart = echarts.init(document.getElementById('chart')); + realChart.setOption(realChartOption); +} + +// 根据点击查看曲线按钮 获取相应的索引,类型,单位 +function getCurrentTrData(td) { + values = []; + times = []; + var currentTr = td.parent(); + var index = $(currentTr).data('index'); + var tds = $(currentTr).children(); + if (currentType[index] == index) { + return; + } + currentType = { + index: index, + type: tds.eq(0).text(), + unit: tds.eq(2).text() + } +} + +function getChartData(currentValue) { + if (isNaN(currentValue)) { + currentValue = 0; + } + var time = new Date().getTime(); + var dateUtil = new DateUtils(); + var now = dateUtil.getFormattedDate('MM-dd hh:mm:ss', time); + now = now.toString(); + var nowArr = now.split(' '); + now = nowArr[1] +'\n' + nowArr[0]; + // y轴的值 + var data = { + name: now.toString(), + value: currentValue + } + // 设置title + realChartOption.title.text = currentType.type; + // 设置单位 + realChartOption.yAxis.name = '单位: ' + (currentType.unit ? currentType.unit : '无'); + // 设置y轴 + values.push(data); + realChartOption.series = [{ + name: currentType.type, + type: 'line', + showSymbol: false, + hoverAnimation: false, + data: values, + lineStyle: { + width:1 + } + }] + + // 设置x轴 + times.push(now); + realChartOption.xAxis.data = times; + api.hideProgress(); + realChart.setOption(realChartOption); +} + +apiready = function() { + var ctrl = { + init: {}, + bind: {} + } + + ctrl.init = function() { + this.initLayout(); + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + ctrl.bind(); + + // 获取 MQTT 上线配电室列表 + var url = '/mqtt/tb-mqtt-client/getMqttPr'; + + $api.get(url, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + api.hideProgress(); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + api.hideProgress(); + } else { + prIdList = res.data.split(','); + + //初始化与边栏的通信事件机制 + //筛选条件发生变化 + api.addEventListener({ + name: 'filterSelectionChanged' + }, filterSelectionChanged); + //界面显示完成后的回调 + api.addEventListener({ + name: 'viewappear' + }, viewAppear); + api.addEventListener({ + name: 'pause' + }, onPause); + api.addEventListener({ + name: 'resume' + }, onResume); + } + } + }); + + //初始化与边栏的通信事件机制 + //筛选条件发生变化 + // api.addEventListener({ + // name: 'filterSelectionChanged' + // }, filterSelectionChanged); + // //界面显示完成后的回调 + // api.addEventListener({ + // name: 'viewappear' + // }, viewAppear); + // api.addEventListener({ + // name: 'pause' + // }, onPause); + // api.addEventListener({ + // name: 'resume' + // }, onResume); + } + ctrl.initLayout = function() { + var panelHeight = $('#heightHeader').height(); + $('.panel-height').css('height', panelHeight); + var headerHeight = $('#table-header').height(); + $('.header-height').css('height', headerHeight); + } + ctrl.bind = function() { + //用户点击了返回按钮 + $(".back").on("touchend", function() { + shutdownWebSocket(); + api.closeWin(); + }); + + //用户点击了手机的返回按键 + api.addEventListener({ + name: 'keyback' + }, function(ret, err) { + shutdownWebSocket(); + api.closeWin(); + }); + + //用户点击了位置按钮 + $("#btn-location").on("touchend", function() { + showRightPanel(); + }); + + //用户点击了调度号按钮 + $("#btn-ddnumber").on("touchend", function() { + showRightPanel(); + }); + + //用户点击了类型按钮 + $("#btn-type").on("touchend", function() { + showRightPanel(); + }); + + //用户点击了筛选按钮 + $("#btn-filter").on("touchend", function() { + showRightPanel(); + }); + $('#rtlist').on('touchend', '.enableClick', function() { + $('.view-chart').removeClass('disableClick'); + $(this).addClass('disableClick'); + api.showProgress({ + title: '数据加载中', + text: '请稍等', + modal: true + }); + + getCurrentTrData($(this)); + }) + } + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/rtDataRightPanel.js b/app-saas-src/script/feature/rtDataRightPanel.js new file mode 100644 index 0000000..bdd5cf8 --- /dev/null +++ b/app-saas-src/script/feature/rtDataRightPanel.js @@ -0,0 +1,318 @@ +var prId = -1; +var initDdNumberCallbackCount = 0; +var hasLoaded = false;//标记是否已经加载过调度号 + +var varTypes = { + "AI" : 1, + "DI" : 2 +}; + +var varTypesName = { + 1 : "AI", + 2 : "DI" +}; + +var filterResult = { + locName: "高压侧", + ctValue: "1", + ddNumber: "201", + varType: varTypes.AI, + varTypeName: "遥测" +}; + + +var ctValueAndDdNumbersMap = { AI: {}, DI: {} }; + +/** + * 根据id清空所有子元素 + */ +function clearAllChildren(id) { + var tobeRemoved = $("#" + id); + tobeRemoved.empty(); +} + +/** + * 为单选按钮绑定事件 + */ +function bindSwitchButtonEvent(buttons) { + for (var i = 0; i < buttons.length; i++) { + var btn = $(buttons[i]); + btn.on('touchend', switchButtonClicked); + } +} + +/** + * 单选按钮被点击 + */ +function switchButtonClicked() { + var sender = $(this); + var brothers = sender.parent().children(); + for (var i = 0; i < brothers.length; i++) { + var inputElement = $(brothers[i]); + inputElement.attr('class', 'btn'); + } + sender.attr('class', 'btn btn-highlight'); + + var groupName = sender.attr('group'); + switch (groupName) { + case "loc": + locationButton_clicked(sender); + break; + case "ddNumber": + ddNumberButton_clicked(sender); + break; + case "type": + typeButton_clicked(sender); + break; + default: + break; + } +} + +/** + * 用户点击了位置按钮中的一个 + */ +function locationButton_clicked(locButton) { + filterResult.locName = locButton.attr("value"); + filterResult.ctValue = locButton.attr("ctvalue"); + updateDdNumberView(); +} + +/** + * 用户点击了调度号中的一个 + */ +function ddNumberButton_clicked(ddButton) { + filterResult.ddNumber = ddButton.attr("value"); +} + +/** + * 用户点击了类型按钮中的一个 + */ +function typeButton_clicked(typeButton) { + filterResult.varType = typeButton.attr("tpvalue"); + filterResult.varTypeName = typeButton.attr("value"); + updateDdNumberView(); +} + +/** + * 清空界面上的所有调度号 + */ +function clearDdnumberGroup() { + clearAllChildren("ddnumber-group"); +} + +/** + * 弹出提示框 + */ +function toast(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); +} + +/** + * 调接口获取各个分类下的调度号 + */ +function initDdNumber(callback) { + ctValueAndDdNumbersMap.AI["1"] = [];//AI高压侧调度号数据 + ctValueAndDdNumbersMap.AI["2"] = [];//AI低压侧数据 + ctValueAndDdNumbersMap.AI["3"] = [];//AI变压器数据 + ctValueAndDdNumbersMap.AI["4"] = [];//AI直流屏数据 + ctValueAndDdNumbersMap.AI["5"] = [];//AI信号屏数据 + ctValueAndDdNumbersMap.AI["6"] = [];//AI其他数据 + + ctValueAndDdNumbersMap.DI["1"] = [];//DI高压侧调度号数据 + ctValueAndDdNumbersMap.DI["2"] = [];//DI低压侧数据 + ctValueAndDdNumbersMap.DI["3"] = [];//DI变压器数据 + ctValueAndDdNumbersMap.DI["4"] = [];//DI直流屏数据 + ctValueAndDdNumbersMap.DI["5"] = [];//DI信号屏数据 + ctValueAndDdNumbersMap.DI["6"] = [];//DI其他数据 + initDdNumberCallbackCount = 0;//回调计数清零 + + var tempVarTypeEnmu = [varTypes.AI, varTypes.DI]; + + var url = '/ems/rest/ddnum/list'; + for (var i = 1; i <= 6; i++) { + for (var j = 0; j < tempVarTypeEnmu.length; j++) { + + (function (position, varType) { + var args = { prId: prId, location: position, varType: varType }; + //本次循环的类型:AI、DI + var tmpType = varTypesName[tempVarTypeEnmu[j]]; + + $api.get(url, args, function (data, err) { + initDdNumberCallbackCount++; + if (err) { + toast("网络请求失败"); + } else { + if (!data.code || data.code != 200) { + toast("服务器响应错误" + (data.code ? (",错误码:" + data.code) : "")); + } else { + + if (data.body) { + + for (var i = 0; i < data.body.length; i++) { + var element = data.body[i]; + ctValueAndDdNumbersMap[tmpType][element.location + ""].push(element.ddNum); + } + + } + } + } + + if (initDdNumberCallbackCount == 8) { + callback(); + } + }); + })(i, tempVarTypeEnmu[j]); + } + } +} + +/** + * 显示调度号不存在和类型不存在的占位符 + */ +function showEmptyDataPlaceHolder() { + //隐藏调度号 + $("#ddnumber-group").css("display", "none"); + $("#ddnumber-group-none").css("display", "flex"); +} + +/** + * 隐藏调度号不存在和类型不存在的占位符 + */ +function hideEmptyDataPlaceHolder() { + //隐藏调度号 + $("#ddnumber-group").css("display", "flex"); + $("#ddnumber-group-none").css("display", "none"); +} + +/** + * 更新界面显示的调度号 + */ +function updateDdNumberView() { + //先清空界面上显示的调度号 + clearDdnumberGroup(); + var ddNumbers = ctValueAndDdNumbersMap[varTypesName[filterResult.varType]][filterResult.ctValue]; + + if (ddNumbers.length > 0) { + //隐藏占位符 + hideEmptyDataPlaceHolder(); + for (var i = 0; i < ddNumbers.length; i++) { + var dd = ddNumbers[i]; + addDdnumber(dd); + } + //默认选中第一个调度号 + var childrens = $("#ddnumber-group").children(); + if (childrens.length > 0) { + var first = $(childrens[0]); + first.attr("class", "btn btn-highlight"); + ddNumberButton_clicked(first); + } + //为所有的调度号绑定事件 + bindSwitchButtonEvent($("#ddnumber-group").children()); + } else { + //显示占位符 + showEmptyDataPlaceHolder(); + //设置调度号为空 + filterResult.ddNumber = null; + } +} + +/** + * 向调度号列表中添加一个调度号 + */ +function addDdnumber(ddnumber) { + var template = ''; + template = template.replace("{dd}", ddnumber); + + $("#ddnumber-group").append(template); +} + +/** + * 用户点击了取消按钮 + */ +function btCancel_clicked() { + api.closeDrawerPane(); +} + +/** + * 向主窗体发送筛选条件 + */ +function sendResult() { + api.sendEvent({ + name: 'filterSelectionChanged', + extra: filterResult + }); +} + +/** + * 用户点击了确定按钮 + */ +function btOk_clicked() { + if (filterResult.ddNumber) { + sendResult(); + api.closeDrawerPane(); + } else { + toast("当前分类下暂无数据"); + } +} + +/** + * 主窗体通知侧栏加载数据 + */ +function rtDataLoadData() { + //标记为已经加载数据 + hasLoaded = true; + //获取prId + prId = $api.getStorage('powerRoom').prId; + if (prId > 0) { + //获取各个位置下的调度号 + initDdNumber(function () { + updateDdNumberView(); + //默认查询高压侧第一个调度号的遥测数据 + sendResult(); + }); + } +} + +/** + * 界面显示完成后的回调 + */ +function viewAppear(ret, err) { + if (!hasLoaded) { + //如果用户滑动打开了侧栏,但是还没加载过数据,则开始加载 + toast("加载中..."); + rtDataLoadData(); + } +} + +apiready = function () { + // 解决iphonex底部标签栏被虚拟home键遮挡 + $api.fixTabBar($api.byId('footer')); + var ctrl = { + init: {}, + bind: {} + } + + ctrl.bind = function () { + //主窗体通知侧栏加载数据 + api.addEventListener({ name: 'rtDataLoadData' }, rtDataLoadData); + //界面显示完成后的回调 + api.addEventListener({ name: 'viewappear' }, viewAppear); + //为位置和类型绑定事件 + bindSwitchButtonEvent($("#location-group").children()); + bindSwitchButtonEvent($("#type-group").children()); + //为确定和取消绑定事件 + $("#btn-cancel").on("touchend", btCancel_clicked); + $("#btn-ok").on("touchend", btOk_clicked); + } + + ctrl.init = function () { + ctrl.bind(); + } + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/statistic.js b/app-saas-src/script/feature/statistic.js new file mode 100644 index 0000000..e69de29 diff --git a/app-saas-src/script/feature/systemOrder.js b/app-saas-src/script/feature/systemOrder.js new file mode 100644 index 0000000..9eb59b3 --- /dev/null +++ b/app-saas-src/script/feature/systemOrder.js @@ -0,0 +1,332 @@ +apiready = function() { + var ctrl = { + init: {}, + bind: {}, + employeeId: null, + roleId: null, + orderContent: null, + emptyTips: null, + orderType: -1, // 状态 -1:全部 0:未接单 1:未处理 2:处理中 3:已处理 + currentPage: 1, + pageSize: 10, + isLoading: false, + startDateStr: '', + endDateStr: '', + } + + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + var searcherTop = $('#heightHeader').height(); + $('#searcher').css('top',searcherTop); + + ctrl.employeeId = $api.getStorage('employeeId'); + ctrl.roleId = $api.getStorage('roleId'); + ctrl.emptyTips = $("#empty-tips"); + ctrl.orderContent = $('#systemOrderList'); + ctrl.ipStartTime = $("#ipStartTime"); + ctrl.lbStartTime = $("#lbStartTime"); + ctrl.ipEndTime = $("#ipEndTime"); + ctrl.lbEndTime = $("#lbEndTime"); + + //工单 状态发生变化 + api.addEventListener({ + name: 'orderListChanged' + }, ctrl.orderListChanged); + + ctrl.bind(); + + ctrl.initOrderList(); + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }); + + // 开始日期 监听日期选择器的改变事件 + $("#ipStartTime").on("change", function () { + ctrl.startDateStr = ctrl.ipStartTime.val(); + if (ctrl.startDateStr && ctrl.startDateStr != "") { + ctrl.lbStartTime.html(ctrl.startDateStr); + } else { + ctrl.lbStartTime.html("开始日期"); + } + }); + + // 结束日期 监听日期选择器的改变事件 + $("#ipEndTime").on("change", function endDateChanged() { + ctrl.endDateStr = ctrl.ipEndTime.val(); + if (ctrl.endDateStr && ctrl.endDateStr != "") { + ctrl.lbEndTime.html(ctrl.endDateStr); + } else { + ctrl.lbEndTime.html("结束日期"); + } + }); + + // 点击 查询 + $("#btn-query").on("touchend", ctrl.initOrderList); + + // 点击“全部” btn + $("#all").on("touchend", function() { + ctrl.orderType = -1; + ctrl.currentPage = 1; + $(this).siblings('.bg-touch').removeClass('bg-yellow'); + $(this).addClass('bg-yellow'); + ctrl.initOrderList(); + }); + + // 点击“未接单” btn + $("#btn-unaccpted").on("touchend", function() { + ctrl.orderType = 0; + ctrl.currentPage = 1; + $(this).siblings('.bg-touch').removeClass('bg-yellow'); + $(this).addClass('bg-yellow'); + ctrl.initOrderList(); + }); + + // 点击“未处理” btn + $("#btn-unhandled").on("touchend", function() { + ctrl.orderType = 1; + ctrl.currentPage = 1; + $(this).siblings('.bg-touch').removeClass('bg-yellow'); + $(this).addClass('bg-yellow'); + ctrl.initOrderList(); + }); + + // 点击“处理中” btn + $("#btn-handling").on("touchend", function() { + ctrl.orderType = 2; + ctrl.currentPage = 1; + $(this).siblings('.bg-touch').removeClass('bg-yellow'); + $(this).addClass('bg-yellow'); + ctrl.initOrderList(); + }); + + // 点击“已完成” btn + $("#btn-finished").on("touchend", function() { + ctrl.orderType = 3; + ctrl.currentPage = 1; + $(this).siblings('.bg-touch').removeClass('bg-yellow'); + $(this).addClass('bg-yellow'); + ctrl.initOrderList(); + }); + + // 点击 “创建工单” + $("#create-systemOrder-btn").on("touchend", function() { + api.openWin({ + 'name': 'systemOrderCreate', + 'url': 'widget://html/feature/systemOrderCreate.html' + }); + }); + + // 点击系统工单 ,跳转到详情页 + $("#systemOrderList").on("touchend", ".left", function() { + var orderId = $(this).data("systemorderid"); + var type = $(this).data("type"); + + api.openWin({ + 'name': 'systemOrderDetail', + 'url': 'widget://html/feature/systemOrderDetail.html', + 'pageParam': { + id: orderId, + type: type + } + }) + }); + + // 点击 派单 + $("#systemOrderList").on("touchend", ".delivery-btn", function(e) { + e.stopPropagation(); + + var orderId = $(this).data("orderid"); + + api.openWin({ + 'name': 'systemOrderEdit', + 'url': 'widget://html/feature/systemOrderEdit.html', + 'pageParam': { + id: orderId + } + }) + }); + + // 下拉刷新 + // api.setRefreshHeaderInfo({ + // bgColor: "#CCCCCC", + // textColor: "#FFFFFF" + // }, function(ret, err) { + // // 根据当前选择的tab 刷新对应的内容 + // ctrl.currentPage = 1; + // ctrl.getOrderList(); + // }); + + //监听滚动到底部事件 + api.addEventListener({ + name: 'scrolltobottom', + extra: { + threshold: 0 //设置距离底部多少距离时触发,默认值为0,数字类型 + } + }, function(ret, err) { + if (!ctrl.isLoading) { + if (ctrl.currentPage >= ctrl.totalPages) { + toast("没有更多了"); + return; + } else { + ctrl.currentPage++; + ctrl.getOrderList(); + } + } + }); + } + + // 弹出提示框 + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + + // 创建工单完成 触发的事件处理 + ctrl.orderListChanged = function(ret, err) { + ctrl.initOrderList(); + }; + + // 初始化系统工单列表 + ctrl.initOrderList = function () { + ctrl.clearOrderList(); + + ctrl.getOrderList(); + }; + + // 清空工单列表 + ctrl.clearOrderList = function () { + this.orderContent.empty(); + }; + + // 获取工单列表 + ctrl.getOrderList = function () { + api.showProgress(); + + var url = '/test/gong-dan/queryByList/' + + this.currentPage + '/' + + this.pageSize + '/' + + this.orderType + '/' + + this.employeeId + '/' + + this.roleId; + + var data = {}; + + if (ctrl.startDateStr) { + data.start = CommonModel.getFomattedDate((new Date(ctrl.startDateStr.replace(/-/g, '/'))).getTime(), 'yyyy-MM-dd') + ' 00:00:00'; + }; + + if (ctrl.endDateStr) { + data.end = CommonModel.getFomattedDate((new Date(ctrl.endDateStr.replace(/-/g, '/'))).getTime(), 'yyyy-MM-dd') + ' 23:59:59'; + }; + + $api.post(url, data, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + api.hideProgress(); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + api.hideProgress(); + } else { + ctrl.totalPages = res.data.pages; + ctrl.renderOrderList(res.data.records); + } + } + }); + }; + + // 渲染 工单列表 + ctrl.renderOrderList = function (records) { + var length = records.length; + if (length > 0) { + this.orderContent.show(); + this.emptyTips.hide(); + + for (var i = 0; i < length; i++) { + var item = records[i]; + ctrl.createOrderDom(item); + } + } else { + this.orderContent.hide(); + this.emptyTips.show(); + }; + + api.hideProgress(); + }; + + // 创建 工单 DOM + ctrl.createOrderDom = function (item) { + var id = item.id; + var prName = item.prName; + var miaoShu = item.miaoShu; + var tiJiaoShiJian = item.tiJiaoShiJian.split(' ')[0]; + var tiJiaoRenName = item.tiJiaoRenName; + var type = item.zhuangTai; + var textColor = ''; + var status = ''; + + // -1:全部 0:未接单 1:未处理 2:处理中 3:已处理 + switch (type) { + case 0: + textColor = 'text-red'; + status = '未接单'; + break; + case 1: + textColor = 'text-gray'; + status = '未处理'; + break; + case 2: + textColor = 'text-yellow'; + status = '处理中'; + break; + case 3: + textColor = 'text-green'; + status = '已完成'; + break; + }; + + var template = '' + template += '
    ' + template += '
    ' + template += '
    ' + template += '
    ' + template += '
    {prName} ' + template += '
    ' + template += '
    {miaoShu}
    ' + template += '
    ' + template += '
    ' + template += '
    ' + template += '
    {time}' + template += '{status}' + template += '
    ' + template += '
    ' + template += '
    创建人: {person}' + if (type == 0) { + template += '
    ' + } + template += '
    ' + template += '
    ' + template += '' + + template = template.replace("{id}", id) + .replace("{type}", type) + .replace("{prName}", prName) + .replace("{miaoShu}", miaoShu) + .replace("{time}", tiJiaoShiJian) + .replace("{textColor}", textColor) + .replace("{status}", status) + .replace("{person}", tiJiaoRenName) + .replace("{orderid}", id); + + ctrl.orderContent.append(template); + }; + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/systemOrderCreate.js b/app-saas-src/script/feature/systemOrderCreate.js new file mode 100644 index 0000000..53c3ff5 --- /dev/null +++ b/app-saas-src/script/feature/systemOrderCreate.js @@ -0,0 +1,456 @@ + + +apiready = function() { + var ctrl = { + init: {}, + bind: {}, + orderData: { + pics: [], + serverPicUrls: [], + uploadPicNum: 0, + desc: '', + prId: null, + }, + }; + + ctrl.init = function() { + CommonModel.fitInStatusBar(); + + ctrl.employeeId = $api.getStorage('employeeId'); + ctrl.roleId = $api.getStorage('roleId'); + ctrl.prListDom = $('#pr-list'); + ctrl.inspectorGroup = $("#inspector-group"); + + ctrl.bind(); + + ctrl.initPrList(); + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }); + + // 点击 配电室下拉选择框 + $api.addEvt($api.dom("#pr-selected"), "touchend", function() { + $('.pr-picker-modal').toggleClass('show'); + }); + + // 选择配电室 + $("#pr-list").on("touchend", ".pr", function () { + ctrl.orderData.prId = $(this).data('prid'); + + var prName = $(this).data('prname'); + $('#pr-name').text(prName); + + $('.pr-picker-modal').removeClass('show'); + }); + + // 点击 相册选择 添加 设备缺陷图片 + $("#pic-add-btn").on("touchend", function () { + var picContentDom = $('#pic-content'); + var params = { + sourceType: 'library', + // sourceType: 'camera', + // sourceType: 'album', + destinationType: 'base64' + } + api.getPicture(params, function(ret, err){ + if (ret && ret.data) { + // 创建图片预览dom + var picItemDom = '' + var dom = picItemDom.replace('{{url}}', ret.data) + picContentDom.prepend(dom) + + // 保存 图片 base64 和 url + ctrl.orderData.pics.push({ + url: ret.data + }); + } + }) + }); + + // 点击 照相机 拍照添加 设备缺陷图片 + $("#camera-btn").on("touchend", function () { + var picContentDom = $('#pic-content'); + var params = { + // sourceType: 'library', + sourceType: 'camera', + // sourceType: 'album', + destinationType: 'base64' + } + api.getPicture(params, function(ret, err){ + if (ret && ret.data) { + // 创建图片预览dom + var picItemDom = '' + var dom = picItemDom.replace('{{url}}', ret.data) + picContentDom.prepend(dom) + + // 保存 图片 base64 和 url + ctrl.orderData.pics.push({ + url: ret.data + }); + } + }) + }); + + // 点击图片预览 + $("#pic-content").on("touchend", ".problem-pic-item", function (e) { + e.stopPropagation(); + var src = $(this).attr('src'); + + $('#pic-review img').attr('src', src); + $('#pic-review').css('display', 'block'); + }); + + // 关闭 照片预览 + $('#pic-review').on("touchend", function () { + $(this).css('display', 'none'); + }); + + // 图片 删除按钮 + $("#pic-content").on("touchend", "i", function (e) { + e.stopPropagation(); + + var _this = this; + + api.confirm({ + title: '', + msg: '确定要删除吗', + buttons: ['确定', '取消'] + }, function(ret, err) { + var index = ret.buttonIndex; + if (index == 1) { // 确定 + var url = $($(_this).siblings('img')[0]).attr('src'); + + $(_this).parent('.pic-item').remove(); + + // 从 ctrl.orderData.pics 中删除对应url + ctrl.orderData.pics = ctrl.orderData.pics.filter(function (item) { + return item.url != url; + }); + } + }); + + }); + + // 点击“保存” + $("#save-btn").on("touchend", function () { + api.confirm({ + title: '', + msg: '确定要保存吗', + buttons: ['确定', '取消'] + }, function(ret, err) { + var index = ret.buttonIndex; + if (index == 1) { // 确定 + ctrl.save(); + } + }); + }); + }; + + // 初始化 prList 下拉框 + ctrl.initPrList = function () { + ctrl.getPrList(); + ctrl.getInspectorList(); + }; + + /** + * 获取人员列表 + */ + ctrl.getInspectorList = function() { + // 判断当前登陆的账号是否是自己员工 + var isZTZ = $api.getStorage('isZTZ'); + var isXJZZ = $api.getStorage('isXJZZ'); + var url; + var data; + var flag; + if (isZTZ || isXJZZ) { // ZTZ || XJZZ + url = '/ems/rest/xj/schedule/task/employee'; + flag = true; + } else { // KHZZ || KHZBZ 客户员工 站长 || 值长 + url = '/ems/rest/employee/getEmployeeByEmployeeId'; + flag = false; + } + data = { + employeeId: $api.getStorage('employeeId') + }; + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + $api.get(url, data, function(res, err) { + api.hideProgress(); + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != "200" || !res.body) { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } else { + if (flag) { + ctrl.renderInspectorList(res.body) + } else { + ctrl.renderInspectorList(res.body.records) + } + } + } + }); + }; + + /** + * 渲染人员列表 + */ + ctrl.renderInspectorList = function(inspectorlist) { + var len = inspectorlist.length; + var temp = ''; + + ctrl.inspectorGroup.empty(); + + ctrl.inspectorGroup.append(''); + + for (var i = 0; i < len; i++) { + var inspectorItem = inspectorlist[i] + var domStr = '' + + domStr = '' + + domStr = domStr.replace("{inspector}", inspectorItem.employeeName) + .replace("{inspectorId}", inspectorItem.employeeId); + + temp += domStr; + } + + ctrl.inspectorGroup.append(temp); + + //为巡检人员绑定事件 + ctrl.bindSwitchButtonEvent(ctrl.inspectorGroup.children()); + } + + /** + * 人员 选择按钮 点击事件绑定 + * @param {zepto object} buttons + */ + ctrl.bindSwitchButtonEvent = function(buttons) { + for (var i = 0; i < buttons.length; i++) { + var btn = $(buttons[i]); + btn.on('touchend', ctrl.switchButtonClicked); + } + } + + /** + * 人员 按钮点击 事件处理函数 + */ + ctrl.switchButtonClicked = function() { + var sender = $(this); + var brothers = sender.parent().children(); + for (var i = 0; i < brothers.length; i++) { + var inputElement = $(brothers[i]); + inputElement.removeClass("btn-highlight"); + } + sender.addClass("btn-highlight"); + + ctrl.inspectorButton_clicked(sender); + } + + // 人员选择 + ctrl.inspectorButton_clicked = function(dom) { + var employeeId = dom.data('inspectorid'); + var employeeName = dom.val(); + + ctrl.handleEmployeeId = employeeId; + ctrl.handleEmployeeName = employeeName; + } + + // 获取配电室列表 + ctrl.getPrList = function () { + var url = '/ems/rest/power/room/list'; + var data = { + employeeId: ctrl.employeeId, + roleId: ctrl.roleId + } + + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + $api.get(url, data, function(res, err) { + api.hideProgress(); + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != "200" || !res.body) { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } else { + ctrl.renderPrList(res.body); + } + } + }); + }; + + // 渲染配电室下拉框 + ctrl.renderPrList = function (data) { + var len = data.length; + + var temp = ''; + + ctrl.prListDom.empty(); + + for (var i = 0; i < len; i++) { + var prItem = data[i]; + var domStr = ''; + + domStr += '
    ' + domStr += '
    ' + domStr += '' + domStr += '
    ' + domStr += '
    {prName}
    ' + domStr += '
    ' + + domStr = domStr.replace("{prId}", prItem.prId) + .replace("{prName}", prItem.prName) + .replace("{prName}", prItem.prName); + + temp += domStr; + } + + ctrl.prListDom.append(temp); + }; + + /** + * 弹出提示框 + */ + ctrl.toast = function (msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + + /** + * 保存 + */ + ctrl.save = function () { + // 数据校验 + var flag = ctrl.checkData(); + + if (flag == 1) { + ctrl.toast("请选择配电室"); + return; + } else if (flag == 2) { + ctrl.toast("请填写工单描述"); + return; + }; + + api.showProgress(); + + var pics = ctrl.orderData.pics; + var length = pics.length; + if (length > 0) { // 有图片 + // 上传 图片 + for (var i = 0; i < length; i++) { + var url = pics[i]['url']; + ctrl.uploadPic(url); + } + } else { // 没图片 + ctrl.submitOrder(); + }; + }; + + // 数据校验 + ctrl.checkData = function () { + ctrl.orderData.desc = $('#problem-text').val().trim(); + + if (!ctrl.orderData.prId) { // 验证配电室选择 + return 1; + } else if (!ctrl.orderData.desc) { // 验证工单描述 + return 2; + }; + }; + + // 上传图片 + ctrl.uploadPic = function (file) { + + var url = "/ems/rest/common/file/pad_upload"; + var data = file; + + $api.uploadFile(url, data, function (res, err) { + + if (err) { + api.hideProgress(); + ctrl.toast("网络请求失败,请稍后再试"); + } else { + if (res.code == 200) { + // 将返回的图片路径保存 + if (res.body && res.body.fileUrl) { + ctrl.orderData.serverPicUrls.push(res.body.fileUrl) + ctrl.orderData.uploadPicNum++; + + if (ctrl.orderData.uploadPicNum == ctrl.orderData.pics.length) {// 代表全部图片上传完成 + // 2、调用接口 + ctrl.submitOrder(); + } + } else { + api.hideProgress(); + ctrl.toast("服务器错误,未返回数据"); + } + } else { + api.hideProgress(); + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + + }) + }; + + // 提交工单 + ctrl.submitOrder = function () { + api.showProgress(); + + var zhaoPian = ctrl.orderData.serverPicUrls.join(','); + var url = '/test/gong-dan/insert'; + var data = { + tiJiaoRenId: ctrl.employeeId, + prId: ctrl.orderData.prId, + miaoShu: ctrl.orderData.desc + }; + + if (ctrl.handleEmployeeId) { + data.chuLiRenId = ctrl.handleEmployeeId; + data.chuLiRenName = ctrl.handleEmployeeName; + data.chuLiShiJian = CommonModel.getFomattedDate(); + data.zhuangTai = 1; + } + + if (zhaoPian) { + data.zhaoPian = zhaoPian; + }; + + $api.post(url, data, function (res, err) { + + if (err) { + api.hideProgress(); + ctrl.toast("创建工单失败,请稍后再试"); + } else { + if (res.code == 200) { + // 返回工单列表页 + api.sendEvent({ + name: 'orderListChanged' + }); + + api.hideProgress(); + ctrl.toast("提交成功"); + api.closeWin(); + } else { + api.hideProgress(); + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + }; + + }); + }; + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/systemOrderDetail.js b/app-saas-src/script/feature/systemOrderDetail.js new file mode 100644 index 0000000..71e832f --- /dev/null +++ b/app-saas-src/script/feature/systemOrderDetail.js @@ -0,0 +1,181 @@ + + +apiready = function() { + var ctrl = { + init: {}, + bind: {}, + prefix: 'https://cdyfile.saas.dianwutong.com/', + orderData: { + pics: [], + serverPicUrls: [], + uploadPicNum: 0, + desc: '', + prId: null, + }, + }; + + ctrl.init = function() { + CommonModel.fitInStatusBar(); + + ctrl.orderId = api.pageParam.id; + ctrl.orderType = api.pageParam.type; + + // "未接单" 工单 显示删除工单按钮 + if (ctrl.orderType == 0) { + $('#delete-btn').show() + } + + ctrl.bind(); + + ctrl.initOrderDetail(); + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }); + + // 点击图片预览 + $("#content").on("touchend", ".problem-pic-item", function (e) { + e.stopPropagation(); + var src = $(this).attr('src'); + + $('#pic-review img').attr('src', src); + $('#pic-review').css('display', 'block'); + }); + + // 点击预览图片 关闭预览 + $('#pic-review').on("touchend", function () { + $(this).css('display', 'none'); + }); + // 点击 删除工单 + $('#delete-btn').on("touchend", function () { + api.confirm({ + title: '', + msg: '确定要删除工单吗', + buttons: ['确定', '取消'] + }, function(ret, err) { + var index = ret.buttonIndex; + if (index == 1) { // 确定 + ctrl.deleteSystemOrder(); + } + }); + }); + }; + + /** + * 弹出提示框 + */ + ctrl.toast = function (msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + }; + + // 初始化 工单详情 + ctrl.initOrderDetail = function () { + ctrl.getOrderDetail(); + }; + + // 获取工单详情 + ctrl.getOrderDetail = function () { + var url = '/test/gong-dan/queryById/' + ctrl.orderId; + + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + $api.get(url, function(res, err) { + api.hideProgress(); + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != "200" || !res.data) { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } else { + ctrl.renderOrderDetail(res.data); + } + } + }); + }; + + // 渲染工单详情 + ctrl.renderOrderDetail = function (data) { + $('#pr-name').text(data.prName); + $('#person').text(data.tiJiaoRenName); + $('#create-time').text(data.tiJiaoShiJian); + $('#desc').text(data.miaoShu); + $('#result-desc').text(data.chuLiMiaoShu || '无'); + $('#result-person').text(data.chuLiRenName || '无'); + $('#handle-time').text(data.chuLiShiJian || '无'); + $('#complete-time').text(data.wanChengShiJian || '无'); + + // 渲染问题照片 + var picContentDom = $('#pic-content'); + if (data.zhaoPian) { + ctrl.renderPics(picContentDom, data.zhaoPian); + } else { + picContentDom.html('无'); + }; + + // 渲染处理照片 + var resultPicContentDom = $('#result-pic-content'); + if (data.chuLiZhaoPian) { + ctrl.renderPics(resultPicContentDom, data.chuLiZhaoPian); + } else { + resultPicContentDom.html('无'); + }; + }; + + // 渲染 图片 + ctrl.renderPics = function(dom, pics) { + dom.empty(); + + var picsArr = pics.split(','); + var length = picsArr.length; + + for (var i = 0; i < length; i++) { + var picUrl = ctrl.prefix + picsArr[i]; + var picDom = ''; + + dom.append(picDom); + } + }; + + // 删除工单 + ctrl.deleteSystemOrder = function () { + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + var url = '/test/gong-dan/deleteById'; + var data = { + id: ctrl.orderId + }; + + $api.post(url, data, function(res, err) { + api.hideProgress(); + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != "200") { + ctrl.toast(res.msg); + } else { + // 返回工单列表页 + api.sendEvent({ + name: 'orderListChanged' + }); + + ctrl.toast("删除成功"); + api.closeWin(); + } + } + }); + }; + + ctrl.init(); +} diff --git a/app-saas-src/script/feature/systemOrderEdit.js b/app-saas-src/script/feature/systemOrderEdit.js new file mode 100644 index 0000000..f25e25e --- /dev/null +++ b/app-saas-src/script/feature/systemOrderEdit.js @@ -0,0 +1,293 @@ + + +apiready = function() { + var ctrl = { + init: {}, + bind: {}, + prefix: 'https://cdyfile.saas.dianwutong.com/', + orderData: { + pics: [], + serverPicUrls: [], + uploadPicNum: 0, + desc: '', + prId: null, + }, + handleEmployeeId: '', + handleEmployeeName: '' + }; + + ctrl.init = function() { + CommonModel.fitInStatusBar(); + + ctrl.orderId = api.pageParam.id; + + ctrl.inspectorGroup = $("#inspector-group"); + + ctrl.bind(); + + ctrl.initOrderDetail(); + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }); + + // 点击图片预览 + $("#content").on("touchend", ".problem-pic-item", function (e) { + e.stopPropagation(); + var src = $(this).attr('src'); + + $('#pic-review img').attr('src', src); + $('#pic-review').css('display', 'block'); + }); + + // 点击预览图片 关闭预览 + $('#pic-review').on("touchend", function () { + $(this).css('display', 'none'); + }); + + // 点击“派单保存” + $("#save-btn").on("touchend", function () { + api.confirm({ + title: '', + msg: '确定要保存吗', + buttons: ['确定', '取消'] + }, function(ret, err) { + var index = ret.buttonIndex; + if (index == 1) { // 确定 + if (ctrl.handleEmployeeId !== '') { + ctrl.saveSystemOrder(); + } else { + ctrl.toast('未选择派单人,请选择后保存'); + } + } + }); + }); + }; + + /** + * 弹出提示框 + */ + ctrl.toast = function (msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + }; + + // 初始化 工单详情 + ctrl.initOrderDetail = function () { + ctrl.getOrderDetail(); + ctrl.getInspectorList(); + }; + + // 获取工单详情 + ctrl.getOrderDetail = function () { + var url = '/test/gong-dan/queryById/' + ctrl.orderId; + + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + $api.get(url, function(res, err) { + api.hideProgress(); + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != "200" || !res.data) { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } else { + ctrl.renderOrderDetail(res.data); + } + } + }); + }; + + // 渲染工单详情 + ctrl.renderOrderDetail = function (data) { + $('#pr-name').text(data.prName); + $('#person').text(data.tiJiaoRenName); + $('#create-time').text(data.tiJiaoShiJian); + $('#desc').text(data.miaoShu); + $('#result-desc').text(data.chuLiMiaoShu || '无'); + $('#result-person').text(data.chuLiRenName || '无'); + + // 渲染问题照片 + var picContentDom = $('#pic-content'); + if (data.zhaoPian) { + ctrl.renderPics(picContentDom, data.zhaoPian); + } else { + picContentDom.html('无'); + }; + + // 渲染处理照片 + var resultPicContentDom = $('#result-pic-content'); + if (data.chuLiZhaoPian) { + ctrl.renderPics(resultPicContentDom, data.chuLiZhaoPian); + } else { + resultPicContentDom.html('无'); + }; + }; + + // 渲染 图片 + ctrl.renderPics = function(dom, pics) { + dom.empty(); + + var picsArr = pics.split(','); + var length = picsArr.length; + + for (var i = 0; i < length; i++) { + var picUrl = ctrl.prefix + picsArr[i]; + var picDom = ''; + + dom.append(picDom); + } + }; + + /** + * 获取人员列表 + */ + ctrl.getInspectorList = function() { + // 判断当前登陆的账号是否是自己员工 + var flag = true; + var isZTZ = $api.getStorage('isZTZ'); + var isXJZZ = $api.getStorage('isXJZZ'); + var url; + var data; + if (isZTZ || isXJZZ) { // ZTZ 组团长 + flag = true; + url = '/ems/rest/xj/schedule/task/employee'; + } else { // KHZZ || KHZBZ 客户员工 站长 || 值长 + flag = false; + url = '/ems/rest/employee/getEmployeeByEmployeeId'; + } + data = { + employeeId: $api.getStorage('employeeId') + }; + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + $api.get(url, data, function(res, err) { + api.hideProgress(); + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != "200" || !res.body) { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } else { + if (flag) { + ctrl.renderInspectorList(res.body) + } else { + ctrl.renderInspectorList(res.body.records) + } + } + } + }); + }; + + /** + * 渲染人员列表 + */ + ctrl.renderInspectorList = function(inspectorlist) { + var len = inspectorlist.length; + var temp = ''; + + ctrl.inspectorGroup.empty(); + + ctrl.inspectorGroup.append(''); + + for (var i = 0; i < len; i++) { + var inspectorItem = inspectorlist[i] + var domStr = '' + + domStr = '' + + domStr = domStr.replace("{inspector}", inspectorItem.employeeName) + .replace("{inspectorId}", inspectorItem.employeeId); + + temp += domStr; + } + + ctrl.inspectorGroup.append(temp); + + //为巡检人员绑定事件 + ctrl.bindSwitchButtonEvent(ctrl.inspectorGroup.children()); + } + + /** + * 人员 选择按钮 点击事件绑定 + * @param {zepto object} buttons + */ + ctrl.bindSwitchButtonEvent = function(buttons) { + for (var i = 0; i < buttons.length; i++) { + var btn = $(buttons[i]); + btn.on('touchend', ctrl.switchButtonClicked); + } + } + + /** + * 人员 按钮点击 事件处理函数 + */ + ctrl.switchButtonClicked = function() { + var sender = $(this); + var brothers = sender.parent().children(); + for (var i = 0; i < brothers.length; i++) { + var inputElement = $(brothers[i]); + inputElement.removeClass("btn-highlight"); + } + sender.addClass("btn-highlight"); + + ctrl.inspectorButton_clicked(sender); + } + + // 人员选择 + ctrl.inspectorButton_clicked = function(dom) { + var employeeId = dom.data('inspectorid'); + var employeeName = dom.val(); + + ctrl.handleEmployeeId = employeeId; + ctrl.handleEmployeeName = employeeName; + } + + // 派单保存 + ctrl.saveSystemOrder = function () { + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + var url = '/test/gong-dan/updateById'; + var data = { + id: ctrl.orderId, + chuLiRenId: ctrl.handleEmployeeId, + chuLiRenName: ctrl.handleEmployeeName, + zhuangTai: 1 + }; + + $api.post(url, data, function(res, err) { + api.hideProgress(); + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } else { + // 返回工单列表页 + api.sendEvent({ + name: 'orderListChanged' + }); + + ctrl.toast("删除成功"); + api.closeWin(); + } + } + }); + }; + + ctrl.init(); +} diff --git a/app-saas-src/script/guide.js b/app-saas-src/script/guide.js new file mode 100644 index 0000000..e69de29 diff --git a/app-saas-src/script/index.js b/app-saas-src/script/index.js new file mode 100644 index 0000000..3b2bc0c --- /dev/null +++ b/app-saas-src/script/index.js @@ -0,0 +1,419 @@ +apiready = function () { + + app = { + init: {}, + bind: {}, + initUser: {}, + initDB: {}, + jump: {}, // 跳转 + getMessages: {}, + listenMessage: {}, + unListenMessage: {}, + getPowerRooms: {}, + getPowerRoomsByEmployee: {},// 员工登陆,获取配电室列表 + getAlarmList: {} + } + + app.init = function () { + this.bind(); + // 初始化数据库 + this.initDB(this.jump); + } + + // 事件绑定 + app.bind = function () { + //应用回到前台之后 获取消息 + api.addEventListener({ + name: 'resume' + }, function (ret, err) { + if ($api.getStorage("userId")) { + app.getMessages(); + } + }); + // 收到登录成功的消息 初始化客户 + api.addEventListener({ + name: 'logined' + }, function (ret, err) { + $api.disabledRequest = false; // 取消禁止调用接口标志 + // edit start 2023/2/27 + if ($api.getStorage("userType") == 2) { + app.getPowerRoomsByEmployee(); + app.getAlarmList(); + + return + } + // edit end 2023/2/27 + app.initUser(); + }); + + // 收到登录失败的消息 1、清空客户消息 2、取消监听推送 3、重置badge(ios有效) + api.addEventListener({ + name: 'loginout' + }, function (ret, err) { + if (rtAlarmTimer) { + clearInterval(rtAlarmTimer); + } + + // add start 2019/4/29 kangzhi + // 在清除所有的storage信息时,若选择了记住密码,则重新存储账号密码 + var remember = $api.getStorage('remember'); + var account = $api.getStorage('account'); + var password = $api.getStorage('password'); + // add end 2019/4/29 kangzhi + + $api.clearStorage(); + + // add start 2019/4/29 kangzhi + if (remember) { + $api.setStorage('remember', remember); + $api.setStorage("account", account); + $api.setStorage("password", password); + } + // add end 2019/4/29 kangzhi + + app.unListenMessage(); + api.setAppIconBadge({ + badge: 0 + }); + }); + + api.addEventListener({ + name: 'removeMessage', + }, function (ret, err) { + if (ret) { + var messageId = ret.value.messageId; + + if (messageId) { + messageDao.deleteOne(messageId); + } + } + }); + + // add by guoyuanyuan 2018/9/25 + // 监听客户改变的消息(项目改变) + api.addEventListener({ + name: 'projectChanged' + }, function (ret, err) { + app.getPowerRooms(); + app.getAlarmList(); + }); + + // add s 2023/7/20 + // 员工登陆时,角色切换 + // api.addEventListener({ + // name: 'roleChanged' + // }, function (ret, err) { + // app.getPowerRooms(); + // app.getAlarmList(); + // }); + } + + //初始化用户 + app.initUser = function () { + messageDao.initTable(app.getMessages); + app.listenMessage(); + app.getPowerRooms(); + app.getAlarmList(); + } + + //初始化数据库 + app.initDB = function (callback) { + messageDao.initTable(function (ret, err) { + + if (!err) { + + // 创建message表 + userMaxMessageIdDao.initTable(function (ret, err) { + messageDao.getMaxIds(function (list) { + for (var i = 0; i < list.length; i++) { + userMaxMessageIdDao.updateUserMessageId(list[i].user_id, list[i].msg_id, function (ret, err) { + + }); + } + setTimeout(function () { + if (callback) { + callback(); + } + }, 100); + + }) + }); + } + }); + + } + + // 初始化完成之后 跳转 + app.jump = function () { + //标识已经登陆过,直接跳转到登陆后的首页 + var useId = $api.getStorage('userId'); + + if ($api.getStorage("token") && !$api.disabledRequest && useId) { + app.getAlarmList(); + var edge = api.winWidth * 0.2; + (edge < 0) && (edge = 60); + api.openDrawerLayout({ + name: 'index', + url: 'widget://html/index/index.html', + leftPane: { + edge: edge, + name: 'index.leftPanel', + url: 'widget://html/index/leftPanel.html' + }, + reload: true, + slidBackEnabled: false, + animation: { + type: "fade", + duration: 300 + } + }); + } else { + //没有登陆的话,跳转到登陆页面 + api.openWin({ + name: 'login', + url: 'widget://html/user/login.html', + animation: { + type: 'fade' + } + }); + } + } + + //从数据库上获取消息并保存到本地 + app.getMessages = function () { + messageDao.updateData(); + } + + //监听消息推送 + app.listenMessage = function () { + + var ajpush = api.require('ajpush'); + + //如果是android 初始化jpush + if (api.systemType == "android") { + ajpush.setAuth({ + auth:true + },function(ret) { + if (ret && ret.status){ + //success + console.log(ret.status, 'status') + ajpush.init(function (ret) { + if (ret && ret.status) { + console.log(ret.status, 'ret.status') + ajpush.getRegistrationId(function (ret) { + var registrationId = ret.id; + }); + listen(); + } + }); + } + }); + } else { + listen(); + } + + function listen() { + var userId = $api.getStorage("userId"); + var alias = 'CUSTOMER_' + userId; + var tags = ['CUSTOMER', alias]; + var param = { + alias: alias, + // tags: tags + }; + + ajpush.resumePush(function (ret) { + if (ret && ret.status) { + var count = 0 + var bindInterval = setInterval(function () { + ajpush.bindAliasAndTags(param, function (ret, err) { + count++; + ajpush.setListener(function (ret) { + messageDao.updateData(); + }); + if (ret && ret.statusCode != 6002) { + clearInterval(bindInterval) + } + if (count > 3) { + clearInterval(bindInterval) + } + }); + }, 5000) + } + }); + + // ajpush.resumePush(function (ret) { + // if (ret && ret.status) { + // ajpush.bindAliasAndTags(param, function (ret, err) { + // ajpush.setListener(function (ret) { + // messageDao.updateData(); + // }); + // }); + // } + // }); + } + } + + //取消监听消息推送 + app.unListenMessage = function () { + var ajpush = api.require('ajpush'); + ajpush.removeListener(); + ajpush.stopPush(function (ret) { + if (ret && ret.status) { + //success + // console.log('out123') + } + }); + } + + //获取配电室列表 + app.getPowerRooms = function () { + + var url = "/ems/rest/power/room/list"; + var data = { + "cusId": $api.getStorage("cusId") + } + + $api.get(url, data, callback); + + function callback(ret, err) { + if (!err) { + // 先更新体验客户名 + var guestPrName = $api.guestPrName; + //判断是否是体验账号,如果是体验账号,则对云端返回的数据进行拦截 + var cus = $api.getStorage('cus'); + var powerRooms = []; + + var list = ret.body; + var length = list.length; + for (var i = 0; i < length; i++) { + if (cus) { + list[i].prName = guestPrName; + } + powerRooms.push({ + "prId": list[i].prId, + "prName": list[i].prName, + "configId": list[i].configId, + }) + } + if (length > 0) { + $api.setStorage("prList", powerRooms); + $api.setStorage("powerRoom", powerRooms[0]); + } + + } + + } + + } + + // 员工登陆 获取配电室列表 + //获取配电室列表 + app.getPowerRoomsByEmployee = function () { + + var url = "/ems/rest/power/room/page"; + var data = { + "employeeId": $api.getStorage("employeeId"), + "roleId": $api.getStorage("roleId"), + "page": 1, + "pageSize": 9999 + } + + $api.get(url, data, callback); + + function callback(ret, err) { + if (!err) { + // 先更新体验客户名 + var guestPrName = $api.guestPrName; + //判断是否是体验账号,如果是体验账号,则对云端返回的数据进行拦截 + var cus = $api.getStorage('cus'); + var powerRooms = []; + + var list = ret.body.records; + var length = list.length; + for (var i = 0; i < length; i++) { + if (cus) { + list[i].prName = guestPrName; + } + powerRooms.push({ + "prId": list[i].prId, + "prName": list[i].prName, + "configId": list[i].configId, + }) + } + if (length > 0) { + $api.setStorage("prList", powerRooms); + $api.setStorage("powerRoom", powerRooms[0]); + } + + } + + } + + } + + //获取实时报警列表 + var rtAlarmTimer; + app.getAlarmList = function () { + get(); + if (rtAlarmTimer) { + + clearInterval(rtAlarmTimer); + + } + + rtAlarmTimer = window.setInterval(function () { + + get(); + + }, 10000); + + //避免重复监听 + api.removeEventListener({ + name: 'requestRtAlarm' + }); + + api.addEventListener({ + name: 'requestRtAlarm' + }, function (ret, err) { + get(); + }); + + function get() { + var url = '/ems/rest/alarm/page'; + + var data = { + "page": 1, + "pageSize": 999999, + "cusId": $api.getStorage('cusId'), + "alarmStatus": 1 // 实时报警 + }; + + // add s 2023/7/10 + if ($api.getStorage("userType") == 2) { // 员工 + data = { + "employeeId": $api.getStorage("employeeId"), + "roleId": $api.getStorage("roleId"), + "page": 1, + "pageSize": 999999, + "alarmStatus": 1 // 实时报警 + } + } + // add e 2023/7/10 + + $api.get(url, data, function (res, err) { + if (res && res.code == 200) { + + $api.setStorage('rtAlarmList', res.body.records); + + //发出登录成功的消息 + api.sendEvent({ + name: 'rtAlarmListUpdated' + }); + } + + }); + + } + } + app.init(); +} diff --git a/app-saas-src/script/index/contactFrame.js b/app-saas-src/script/index/contactFrame.js new file mode 100644 index 0000000..dd27f35 --- /dev/null +++ b/app-saas-src/script/index/contactFrame.js @@ -0,0 +1,82 @@ +var app = { + init: {}, + bind: {}, + getOcMsg: {} +} + +app.init = function() { + app.bind(); + app.getOcMsg(); +} +app.bind = function() { + $("#phoneGroup").on("touchend", function() { + if (!app.lbPhone) { + return; + } + var lbPhone = $api.trim(app.lbPhone.toString()); + + api.call({ + type: 'tel_prompt', + number: lbPhone + + }); + }); + + //下拉刷新 + api.setRefreshHeaderInfo({ + bgColor: "#CCCCCC", + textColor: "#FFFFFF" + }, function(ret, err) { + + app.getOcMsg(function() { + api.refreshHeaderLoadDone(); + }); + }); + + } + /** + * 弹出提示框 + */ +app.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); +} + +app.getOcMsg = function(callback) { + var ocId = $api.getStorage("ocId"); + var url = "/admin/rest/oc"; + var args = { + ocId: ocId + }; + + $api.get(url, args, function(data, err) { + if (err) { + app.toast("网络请求失败"); + } else { + if (!data.code || data.code != 200) { + toast("服务器响应错误" + (data.code ? (",错误码:" + data.code) : "")); + } else { + if (data.body) { + var lbPhone = $("#lbPhone"); + var cusManagerName = $("#cusManagerName"); + lbPhone.html(data.body.telephone); + cusManagerName.html((data.body.ocName ?data.body.ocName: '')); + app.lbPhone = data.body.telephone; + + } + } + } + + if (callback) { + callback(); + } + }); + +} + +apiready = function() { + app.init(); +} diff --git a/app-saas-src/script/index/featureFrame.js b/app-saas-src/script/index/featureFrame.js new file mode 100644 index 0000000..ab90d53 --- /dev/null +++ b/app-saas-src/script/index/featureFrame.js @@ -0,0 +1,330 @@ + +apiready = function () { + var ctrl = { + init: {}, + bind: {}, + initPrPicker: {}, + prList: [], // 配电室列表 + employeeId: null, // 员工登陆时的员工id + } + + ctrl.init = function () { + // 判断是否是员工登陆 + var isEmployee = $api.getStorage("isEmployee"); + var isKHZBY = $api.getStorage("isKHZBY"); + ctrl.prList = $api.getStorage("prList"); + + if (isEmployee) { // 员工登录(自己员工、客户员工) + // 客户值班员,隐藏巡检安排、系统工单 + if (isKHZBY) { + $('#inspection-arrange').hide(); + $('#work-order').hide(); + } + + ctrl.bind(); + ctrl.initPrPicker(); + + } else { // 客户登陆 + // 隐藏巡检安排、系统工单 + $('#inspection-arrange').hide(); + $('#work-order').hide(); + + // 控制菜单权限 + privilegeModule.getMenuList(function () { + ctrl.initMenu(); + }); + ctrl.bind(); + + ctrl.initPrPicker(); + } + } + + ctrl.initMenu = function () { + if (!privilegeModule.hasMenu('实时数据')) { + $('#bt-rtdata').css('display', 'none'); + } + if (!privilegeModule.hasMenu('历史数据')) { + $('#bt-hisdata').css('display', 'none'); + } + if (!privilegeModule.hasMenu('报警查询')) { + $('#bt-alarm').css('display', 'none'); + } + if (!privilegeModule.hasMenu('能耗分析')) { + $('#bt-energy').css('display', 'none'); + } + if (!privilegeModule.hasMenu('日志查询') || + (!privilegeModule.hasMenu('巡检日志(新版)') + && !privilegeModule.hasMenu('抢修日志(旧版)') + && !privilegeModule.hasMenu('抢修日志') + && !privilegeModule.hasMenu('操作票') + && !privilegeModule.hasMenu('工作票'))) { + $('#bt-log').css('display', 'none'); + } + if (!privilegeModule.hasMenu('巡检问题')) { + $('#inspect-bug').css('display', 'none'); + } + if (!privilegeModule.hasMenu('视频监控')) { + $('#camera').css('display','none'); + } + $('#inspection-arrange').css('display','none'); + $('#work-order').css('display','none'); + } + ctrl.bind = function () { + //用户点击了实时数据按钮 + $api.addEvt($api.dom("#bt-rtdata"), "touchend", function () { + + //侧边栏的宽度为250 + + var edge = api.winWidth * 0.2; + (edge < 0) && (edge = 60); + api.openDrawerLayout({ + name: 'rtdata-page', + url: '../feature/rtData.html', + rightPane: { + edge: edge, + name: 'rtDataRightPanel', + url: 'widget://html/feature/rtDataRightPanel.html', + } + }); + }); + api.addEventListener({ + name: 'userTouched' + }, function (ret, err) { + if (ret) { + $api.css($api.dom("#pr-picker-modal"), "display:none"); + } else { + + } + }); + + //用户点击了历史数据按钮 + $api.addEvt($api.dom("#bt-hisdata"), "touchend", function () { + //侧边栏的宽度为250 + var edge = api.winWidth * 0.2; + (edge < 0) && (edge = 60); + api.openDrawerLayout({ + name: 'history-data-pag', + url: '../feature/historyData.html', + rightPane: { + edge: edge, + name: 'historyDataRightPanel', + url: 'widget://html/feature/historyDataRightPanel.html', + }, + slidBackEnabled: true, + slidBackType: "edge", + vScrollBarEnabled: false, + hScrollBarEnabled: false + }); + }); + + //用户点击了报警查询按钮 + $api.addEvt($api.dom("#bt-alarm"), "touchend", function () { + //侧边栏的宽度为250 + var edge = api.winWidth * 0.2; + (edge < 0) && (edge = 60); + api.openDrawerLayout({ + name: 'alarm-query-page', + url: '../feature/alarmQuery.html', + rightPane: { + edge: edge, + name: 'alarmQueryRightPanel', + url: 'widget://html/feature/alarmQueryRightPanel.html', + }, + }); + }); + + //用户点击了能耗分析按钮 + $api.addEvt($api.dom("#bt-energy"), "touchend", function () { + //默认横屏 + api.showProgress({ + title: '加载中', + text: '请稍等...', + modal: false + }); + + if (api.systemType == "ios") { + api.setScreenOrientation({ + orientation: 'landscape_left' + }); + } + + var edge = 400; + + api.openDrawerLayout({ + name: 'rtdata-page', + url: 'widget://html/feature/energy.html', + rightPane: { + edge: edge, + name: 'rtDataRightPanel', + url: 'widget://html/feature/energyRightPanel.html', + }, + slidBackEnabled: false, + animation: { + type: "none", + } + }); + }); + + //用户点击了日志查询按钮 + $api.addEvt($api.dom("#bt-log"), "touchend", function () { + api.openWin({ + name: 'statistic-page', + url: '../feature/logQuery/logQuery.html' + }); + }); + + //用户点击了设备缺陷按钮 + // 跳转到logQuery-main页面在logQuery-main中加载设备缺陷列表页(便于实现设备缺陷列表页刷新) + $api.addEvt($api.dom("#inspect-bug"), "touchend", function () { + // api.openWin({ + // name: 'inspect-log', + // url: '../feature/logQuery/logQuery-main.html', + // pageParam: { + // page: 'inspectBug' + // } + // }); + //侧边栏的宽度为250 + var edge = api.winWidth * 0.2; + (edge < 0) && (edge = 60); + api.openDrawerLayout({ + name: 'inspect-log', + url: '../feature/logQuery/logQuery-main.html', + pageParam: { + page: 'inspectBug' + }, + rightPane: { + edge: edge, + name: 'inspectBugListRightPanel', + url: 'widget://html/feature/logQuery/inspectBugListRightPanel.html', + }, + }); + }); + // 用户点击了视频监控按钮 + $api.addEvt($api.dom("#camera"), "touchend", function () { + api.openWin({ + name: 'camera-page', + url: '../feature/camera.html' + }); + }); + // 用户点击了 “一次图” 按钮 + $api.addEvt($api.dom("#circuit"), "touchend", function () { + api.openWin({ + name: 'circuit-page', + url: '../feature/circuit.html' + }); + }); + // 用户点击了 “巡检安排” 按钮 + $api.addEvt($api.dom("#inspection-arrange"), "touchend", function () { + api.openWin({ + name: 'inspection-arrange-page', + url: '../feature/inspectionArrange.html' + }); + }); + // 用户点击了 “系统工单” 按钮 + $api.addEvt($api.dom("#work-order"), "touchend", function () { + api.openWin({ + name: 'system-order-page', + url: '../feature/systemOrder.html' + }); + }); + //收到首页传来的requestChangePr事件 呼出选择配电室面板 + api.addEventListener({ + name: 'requestChangePr' + }, function (ret, err) { + if ($api.getStorage('cus')) { + return; + } + ctrl.initPrPicker(); + if ($('#pr-picker-modal').css('display') == 'block') { + $api.css($api.dom("#pr-picker-modal"), "display:none"); + } else { + $api.css($api.dom("#pr-picker-modal"), "display:block"); + } + + }); + api.addEventListener({ + name: 'requestCloseModal' + }, function (ret, err) { + $api.css($api.dom("#pr-picker-modal"), "display:none"); + }); + //如果body收到touchend事件 隐藏掉modal + $api.addEvt($api.dom("body"), "touchend", function () { + $api.css($api.dom("#pr-picker-modal"), "display:none"); + }, false); + + //点击配电室选择器中的配电室 + $("#pr-list").on("touchend", ".pr", function () { + var index = $(this).data("index"); + // var list = $api.getStorage("prList"); + var list = ctrl.prList; + + var selected = list[index]; + var powerRoom = { + prId: selected.prId, + prName: selected.prName, + configId: selected.configId, + } + + $api.setStorage("powerRoom", powerRoom); + api.sendEvent({ + name: 'prChanged', + extra: powerRoom + }); + }) + + //组织页面弹通 + // $("body").on("touchmove", function (e) { + // e.stopPropagation(); + // return false; + // }) + + // add s + // $("#pr-list").on("touchmove", function (e) { + // e.stopPropagation(); + // return false; + // }) + // add e + } + + //初始化配电室选择器 + ctrl.initPrPicker = function () { + + var list = ctrl.prList + list = list ? list : []; + var tpl = '
    {prName}
    '; + var length = list.length; + var html = ''; + + for (var i = 0; i < length; i++) { + + html += tpl.replace('{index}', i).replace('{prName}', list[i].prName); + + } + + $("#pr-list").html(html); + } + + // add 员工获取配电室列表 + ctrl.getPrList = function () { + var data = { + employeeId: ctrl.employeeId, + roleId: ctrl.roleId + } + + /** + * 注意在客户体验模式下要拦截此接口的数据,另外在最外层的index.html中也有此接口的调用,如果需要修改,则两处都要该,别忘了 + */ + $api.get("/ems/rest/power/room/list", data, function(ret, err) { + + if (ret && ret.code == 200) { + + ctrl.prList = ret.body; + + ctrl.initPrPicker(); + + } + }); + } + + ctrl.init(); +} diff --git a/app-saas-src/script/index/index.js b/app-saas-src/script/index/index.js new file mode 100644 index 0000000..0dc1386 --- /dev/null +++ b/app-saas-src/script/index/index.js @@ -0,0 +1,1007 @@ +apiready = function () { + var ctrl = { + frames: [], + userId: null, + messageSocket: null, //用来获取产生新消息的消息 + newsSocket: null, // 用来获取产生新闻 + messageTimer: null, //messageSocket 与服务端发送心跳 + newsTimer: null, + init: {}, + initWebsocket: {}, //初始化websocket + closeWebsocket: {}, //关闭websocket + bind: {}, + initBadge: {}, + switchFrame: {}, + frameX: 0, + frameY: 0, + frameWidth: 0, + frameHeight: 0, + + defaultNavItemCallback: {}, + featureFrameCallBack: {}, + + checkToUpdate: {}, //查询已跟新 + + checkHasUpdated: {}, //查出是否已经跟新 + // address: 'api.dianwutong.com' + address: 'wss://cdyapi.saas.dianwutong.com' + } + + //初始化页面 + ctrl.init = function () { + // 解决iphonex底部标签栏被虚拟home键遮挡 + $api.fixTabBar($api.byId('footer')); + + // 适配状态栏 + var statusBarHeightDom = document.getElementById('statusBarHeight'); + if (api.systemType == "android") { + // var statusBar = api.require('statusBar'); + // var statusBarHeight = statusBar.getStatusBarHeight(); + // statusBarHeightDom.style.height = statusBarHeight + 'px'; + statusBarHeightDom.style.height = api.safeArea.top + 'px'; + } else { + statusBarHeightDom.style.height = '1.67rem'; + } + + ctrl.initPorjectPicker(); + ctrl.checkToUpdate(); + ctrl.checkHasUpdated(); + + //获取token; 如果token不存存在跳转登录页 + var token = $api.getStorage("token"); + + if (!token) { + api.openWin({ + name: 'login', + url: 'widget://html/user/login.html' + }); + + api.closeWin({}); + + return false; + } + ctrl.dialogBox = api.require('dialogBox'); + //初始化底部badge + ctrl.initBadge(); + + // privilegeModule.getMenuList(function() { + // ctrl.initFrame(); + // }); + ctrl.frames["messageFrame"] = { + "title": "消息", + "url": "widget://html/index/messageFrame.html", + "normalIcon": "../../image/message-normal.svg", + "activeIcon": "../../image/message-active.svg", + "navItem": $api.dom(".nav-item[frame='messageFrame']"), + "callback": ctrl.messageNavItemCallback + }; + ctrl.frames["rtAlarmFrame"] = { + "title": "实时报警", + "url": "widget://html/index/rtAlarmFrame.html", + "normalIcon": "../../image/rtAlarm-normal.svg", + "activeIcon": "../../image/rtAlarm-active.svg", + "navItem": $api.dom(".nav-item[frame='rtAlarmFrame']"), + "callback": ctrl.defaultNavItemCallback + } + ctrl.frames["featureFrame"] = { + "title": "功能", + "url": "widget://html/index/featureFrame.html", + "normalIcon": "../../image/feature-normal.svg", + "activeIcon": "../../image/feature-active.svg", + "navItem": $api.dom(".nav-item[frame='featureFrame']"), + "callback": ctrl.featureFrameCallBack + }; + ctrl.frames["contactFrame"] = { + "title": "一键直通", + "url": "widget://html/index/contactFrame.html", + "normalIcon": "../../image/contact-normal.svg", + "activeIcon": "../../image/contact-active.svg", + "navItem": $api.dom(".nav-item[frame='contactFrame']"), + "callback": ctrl.defaultNavItemCallback + }; + ctrl.frames["inspectionFrame"] = { + "title": "巡检", + "url": "widget://html/index/inspectionFrame.html", + "normalIcon": "../../image/inspection-normal.svg", + "activeIcon": "../../image/inspection-active.svg", + "navItem": $api.dom(".nav-item[frame='inspectionFrame']"), + "callback": ctrl.defaultNavItemCallback + }; + ctrl.frames["systemOrderFrame"] = { + "title": "工单", + "url": "widget://html/index/systemOrderFrame.html", + "normalIcon": "../../image/repair-normal.svg", + "activeIcon": "../../image/repair-active.svg", + "navItem": $api.dom(".nav-item[frame='systemOrderFrame']"), + "callback": ctrl.defaultNavItemCallback + }; + ctrl.bind(); + // //计算frame显示的位置和尺寸 + var windowWidth = parseInt($api.cssVal($api.dom("body"), "width")); + var windowHeight = parseInt($api.cssVal($api.dom("body"), "height")); + var headerHeight = parseInt($api.cssVal($api.dom(".index-header"), "height")); + var footerHeight = parseInt($api.cssVal($api.dom("footer"), "height")); + var footerPaddingBottom = parseInt($api.cssVal($api.dom("footer"), "padding-bottom")); + this.frameX = 0; + this.frameY = headerHeight; + this.frameWidth = windowWidth; + this.frameHeight = windowHeight - headerHeight - footerHeight - footerPaddingBottom; + + // add start + // 员工账号登录,所有底部Tab菜单全部可见,客户登陆时,隐藏底部巡检、工单Tab + var isEmployee = $api.getStorage("isEmployee") + + if (isEmployee) { + // 隐藏底部全部tab + // $api.css($api.domAll('.nav-item'), 'display:none'); + // $api.domAll('.nav-item').forEach(function (el, index) { + // $api.css(el, 'display:none'); + // }) + + var tabArr = [] + + $api.css($api.dom('#inspectionFrame'), 'display:block') + tabArr.push('inspectionFrame') + $api.css($api.dom('#systemOrderFrame'), 'display:block') + tabArr.push('systemOrderFrame') + + // 隐藏“消息”和“一键直通”tab + // $api.css($api.dom('#messageFrame'), 'display:none') + // $api.css($api.dom('#contactFrame'), 'display:none') + + ctrl.switchFrame('rtAlarmFrame'); + + return + } + + privilegeModule.getMenuList(function () { + ctrl.initFrame(); + }); + ctrl.switchFrame("messageFrame"); + ctrl.initWebsocket(); + + } + + // 初始化frame + ctrl.initFrame = function () { + if (!privilegeModule.hasMenu('实时报警')) { + $api.css($api.dom('#rtAlarmFrame'), 'display:none'); + } + if (!privilegeModule.hasMenu('功能')) { + $api.css($api.dom('#featureFrame'), 'display:none'); + } + if (!privilegeModule.hasMenu('一键直通')) { + $api.css($api.dom('#contactFrame'), 'display:none'); + } + $api.css($api.dom('#inspectionFrame'), 'display:none'); + $api.css($api.dom('#systemOrderFrame'), 'display:none'); + } + + // 判断是否为园区客户(显示客户即项目下拉选项) + ctrl.initPorjectPicker = function () { + var customers = $api.getStorage('customers'); + var projectPicker = $api.dom('#project-picker'); + if (!customers || customers.length <= 1) { + $api.text(projectPicker, ''); + } else { + $api.text(projectPicker, '项目'); + }; + } + //弹出框设置 + ctrl.initAlertContent = function (options) { + var options = options || {}; + var content = { + + texts: { + title: options.title || '提示', + content: options.content || '您将退出此次登陆,是否确定?', + leftBtnTitle: '确认', + rightBtnTitle: '取消', + }, + styles: { + bg: '#fff', + corner: 6, + w: 300, + title: { + marginT: 20, + titleSize: 18, + titleColor: '#000' + }, + content: { + marginT: 10, + color: '#000', + size: 14 + }, + left: { + marginB: 7, + marginL: 20, + w: 130, + h: 35, + corner: 2, + bg: 'white', + size: 18, + }, + right: { + marginB: 7, + marginL: 10, + w: 130, + h: 35, + corner: 2, + bg: 'white', + size: 18 + } + } + + } + return content; + } + + //初始化websocket + + ctrl.initWebsocket = function () { + + if (this.messageSocket) { + + return false; + + } + if (this.newsSocket) { + + return false; + + } + + // var roleId = $api.getStorage('roleId'); + var userId = $api.getStorage('userId'); + + var url = ctrl.address + '/ems/app/msg_socket/' + userId; + var newsUrl = ctrl.address + '/admin/app/msg_socket/' + userId; + this.messageSocket = new WebSocket(url); + this.newsSocket = new WebSocket(newsUrl); + + this.messageSocket.onmessage = function (data) { + messageDao.updateData(); + + } + this.messageSocket.onclose = function () { + ctrl.closeWebsocket(); + // api.toast({ + // msg: "消息socket连接失败" + // }); + } + this.newsSocket.onclose = function () { + ctrl.closeWebsocket(); + } + this.newsSocket.onmessage = function (data) { + messageDao.updateData(); + } + this.messageTimer = setInterval(function () { + + if (ctrl.messageSocket) { + + //发送心跳 避免socket长时间没有消息传递而断开 + ctrl.messageSocket.send('beat'); + + } + + }, 30000); + + this.newsTimer = setInterval(function () { + + if (ctrl.newsSocket) { + + //发送心跳 避免socket长时间没有消息传递而断开 + ctrl.newsSocket.send('beat'); + + } + + }, 30000); + + } + + //关闭websocket + + ctrl.closeWebsocket = function () { + + if (this.messageTimer) { + + clearInterval(this.messageTimer); + + } + + if (this.newsTimer) { + window.clearInterval(this.newsTimer); + } + + if (this.messageSocket) { + + this.messageSocket.close(); + this.messageSocket = null; + + } + if (this.newsSocket) { + + this.newsSocket.close(); + this.newsSocket = null; + } + + } + + //退出登录 + ctrl.logout = function () { + // 在清除所有的storage信息时,若选择了记住密码,则重新存储账号密码 + var remember = $api.getStorage('remember'); + var account = $api.getStorage('account'); + var password = $api.getStorage('password'); + + $api.clearStorage(); + + if (remember) { + $api.setStorage('remember', remember); + $api.setStorage("account", account); + $api.setStorage("password", password); + } + + api.sendEvent({ + name: 'loginout' + }); + api.removeEventListener({ + name: 'leftPanelClicklogout' + }); + + api.removeEventListener({ + name: 'changePwdTip' + }); + api.removeEventListener({ + name: 'leftPanelClickClear' + }); + + api.closeWin({ + animation: { + type: "fade" + } + }); + api.openWin({ + name: 'login', + url: 'widget://html/user/login.html', + + }); + + + } + + + //事件绑定 + ctrl.bind = function () { + + //修改密码提示 + var timer; + api.addEventListener({ + name: 'changePwdTip' + }, function () { + if (timer) { + window.clearTimeout(timer); + } + var timer = window.setTimeout(function () { + ctrl.dialogBox.alert({ + texts: { + content: '体验账号没有修改密码的权限', + leftBtnTitle: '确定', + }, + styles: { + bg: '#fff', + w: 300, + corner: 6, + content: { + color: '#000', + size: 14 + }, + left: { + marginB: 7, + marginL: 0, + w: 300, + h: 30, + corner: 2, + bg: '#fff', + size: 18 + }, + + } + }, function (ret) { + if (ret.eventType == 'left') { + ctrl.dialogBox.close({ + dialogName: 'alert' + }); + } + }); + }, 100) + + }) + //避免重复监听 + api.removeEventListener({ + name: 'leftPanelClicklogout' + }); + //退出登录 + var alertContent = ctrl.initAlertContent(); + api.addEventListener({ + name: 'leftPanelClicklogout' + }, function (ret, err) { + if (timer) { + window.clearTimeout(timer); + } + var timer = window.setTimeout(function () { + ctrl.dialogBox.alert(alertContent, function (ret) { + if (ret.eventType == 'right') { + ctrl.dialogBox.close({ + dialogName: 'alert' + }); + } else if (ret.eventType == 'left') { + + ctrl.dialogBox.close({ + dialogName: 'alert' + }); + ctrl.logout(); + } + }); + }, 100) + + + + }) + + //清除缓存 + api.addEventListener({ + name: 'leftPanelClickClear' + }, function (ret, err) { + if (timer) { + window.clearTimeout(timer); + } + window.setTimeout(function () { + var options = {}; + options.title = "清空缓存"; + options.content = "该操作将清空图片缓存,消息等数据,是否清空?" + var alertContent = ctrl.initAlertContent(options); + ctrl.dialogBox.alert(alertContent, function (ret) { + if (ret.eventType == 'right') { + ctrl.dialogBox.close({ + dialogName: 'alert' + }); + } else if (ret.eventType == 'left') { + api.clearCache(function () { + messageDao.clearAll(function () { + api.execScript({ + name: 'index', + script: 'api.toast({msg:"成功清空缓存"});' + }); + var dialogBox = api.require('dialogBox'); + ctrl.dialogBox.close({ + dialogName: 'alert' + }); + }) + }); + } + }); + }, 100) + + + }) + + // 应用从后台回到前台 + api.addEventListener({ + name: 'resume' + }, function (ret, err) { + ctrl.initWebsocket(); + if (!/has_remind_update/.test(document.cookie)) { + + ctrl.checkToUpdate(); + + } + + }); + + //应用到后台 + + api.addEventListener({ + name: 'pause' + }, function (ret, err) { + ctrl.closeWebsocket(); + }); + + //绑定底部导航 + + var navItems = $api.domAll(".nav-item"); + var length = navItems.length; + for (var i = 0; i < length; i++) { + (function (index) { + + $api.addEvt(navItems[index], "touchend", function () { + // 切换底部nav时,隐藏掉modal(项目选择modal和配电室选择modal) + api.sendEvent({ + name: 'requestCloseModal' + }); + var frameName = $api.attr(this, "frame"); + var frame = ctrl.frames[frameName]; + + if (typeof (frame.callback) == "function") { + frame.callback(this); + } + + }, false); + })(i); + } + + //绑定用户按钮 点击弹出左侧的抽屉页 + + $api.addEvt($api.dom("#user"), "touchend", function () { + + //发送点击的事件提醒隐藏配电室;列表 + + api.sendEvent({ + name: 'userTouched', + }); + + // $api.css($api.dom("#pr-picker-modal"), "display:none"); + api.openDrawerPane({ + type: 'left' + }); + }, false); + + //阻止android的返回事件 + + api.addEventListener({ + name: 'keyback' + }, function (ret, err) { + api.closeWidget({}); + return false; + }); + + //阻止ios的返回事件 + + api.addEventListener({ + name: 'swiperight' + }, function (ret, err) { + return false; + }); + + //如果二级页面设置了横屏显示 返回时变成横屏 + + api.addEventListener({ + name: 'viewappear' + }, function (ret, err) { + + }); + + //切换配电室 + + $api.addEvt($api.dom("#pr-name"), "touchend", function () { + api.sendEvent({ + name: 'requestChangePr' + }); + }, false); + + //收到配电室改变的消息 + + api.addEventListener({ + name: 'prChanged' + }, function (ret, err) { + if (!err) { + var prName = ret.value.prName; + var length = prName.length; + if (length > 10) { + prName = prName.slice(0, 10) + "..."; + } + $api.text($api.dom("#pr-name"), prName); + } + }); + + //收到消息改变的事件 + + api.addEventListener({ + name: 'messageUpdated' + }, function (ret, err) { + ctrl.initBadge(); + }); + + //收到报警改变的事件 + + api.addEventListener({ + name: 'rtAlarmListUpdated' + }, function (ret, err) { + ctrl.initBadge(); + }); + + // add by guoyuanyuan 2018/9/25 + // 对于园区客户的董事长,项目经理角色,增加项目切换 + $api.addEvt($api.dom("#project-picker"), "touchend", function () { + api.sendEvent({ + name: 'requestChangeProject' + }); + }, false); + } + + //初始化导航栏底部badge + //如果是ios 初始化桌面的badge + + ctrl.initBadge = function () { + + //消息badge + var ajpush = api.require('ajpush'); + messageDao.getAllUnReadCount(function (sum) { + if (sum == 0) { + $api.css($api.dom("#message-badge"), "display:none"); + + ajpush.setBadge({ + badge: 0 + }); + return false; + } + + if (sum > 99) { + sum = "99+"; + } + $api.css($api.dom("#message-badge"), "display:block"); + + $api.text($api.dom("#message-badge"), sum); + + ajpush.setBadge({ + badge: sum + }); + + }) + + // //实时报警数量 + var rtAlarmList = $api.getStorage('rtAlarmList'); + rtAlarmList = (rtAlarmList ? rtAlarmList : []); + var alarmCount = rtAlarmList.length; + + if (alarmCount == 0) { + $api.css($api.dom("#rtAlarm-badge"), "display:none"); + } else { + + $api.css($api.dom("#rtAlarm-badge"), "display:block"); + + } + } + // add by guoyuanyuan 2018/9/25 + // 点击消息nav + ctrl.messageNavItemCallback = function (obj) { + ctrl.defaultNavItemCallback(obj); + // 在消息页显示项目选择提示 + ctrl.initPorjectPicker(); + } + //点击底部导航的默认回调函数 + + ctrl.defaultNavItemCallback = function (obj) { + //隐藏掉pr-name + //显示title; + $api.css($api.dom("#title"), "display:block"); + $api.css($api.dom("#pr-name"), "display:none"); + + // add by guoyuanyuan 2018/9/25 + // 在其他页面不显示项目提示 + var projectPicker = $api.dom('#project-picker'); + $api.text(projectPicker, ''); + //切换frame + var frameName = $api.attr(obj, "frame"); + ctrl.switchFrame(frameName); + + } + + //点击底部导航的功能按钮的回调函数 + + ctrl.featureFrameCallBack = function (obj) { + // add by guoyuanyuan 2018/9/25 + // 在其他页面不显示项目提示 + var projectPicker = $api.dom('#project-picker'); + $api.text(projectPicker, ''); + //显示pr-name + //隐藏title + $api.css($api.dom("#title"), "display:none"); + $api.css($api.dom("#pr-name"), "display:flex"); + + var powerRoom = $api.getStorage("powerRoom"); + _log(powerRoom); + + //如果没用选中配电室 + if (!powerRoom) { + api.sendEvent({ + name: 'requestChangePr' + }); + } else { + var prName = powerRoom.prName; + var length = prName.length; + if (length > 10) { + prName = prName.slice(0, 10) + "..."; + } + + $api.text($api.dom("#pr-name"), prName); + } + + //切换frame; + var frameName = $api.attr(obj, "frame"); + ctrl.switchFrame(frameName); + } + + //切换frame + + ctrl.switchFrame = function (frameName) { + $api.setStorage('activeNav', frameName) + + var _this = ctrl; + var frame = _this.frames[frameName]; + //显示对应的标题 + $api.text($api.dom("#title"), frame.title); + + //重置底部导航的选中状态 + var frames = _this.frames; + var length = frames.length; + var navItems = $api.domAll(".nav-item"); + + var showFrame = "$api.css($api.dom('body'), 'display:block');"; + var hideFrame = "$api.css($api.dom('body'), 'display:none');"; + for (var name in frames) { + if (frame == frames[name]) { + $api.addCls(frames[name].navItem, "active"); + $api.attr($api.dom(frames[name].navItem, "img"), "src", frames[name].activeIcon); + api.execScript({ + frameName: name, + script: showFrame + }); + } else { + $api.removeCls(frames[name].navItem, "active"); + $api.attr($api.dom(frames[name].navItem, "img"), "src", frames[name].normalIcon); + api.execScript({ + frameName: name, + script: hideFrame + }); + } + } + //切换frame + api.openFrame({ + name: frameName, + url: frame.url, + rect: { + x: _this.frameX, + y: _this.frameY, + w: _this.frameWidth, + h: _this.frameHeight + } + }); + + } + + //比较版本号 + + ctrl.cmpVersion = function (thisVersion, otherVersion) { + var _this = thisVersion.split('.'); + var _other = otherVersion.split('.'); + + for (var i = 0; i < 3; i++) { + var _t = parseInt(_this[i]); + var _o = parseInt(_other[i]); + + if (_t > _o) { + return 1; + } else if (_t < _o) { + return -1; + } + } + return 0; + } + + //版本更新 + + ctrl.checkToUpdate = function () { + var thisVersion = api.readFile({ + sync: true, + path: 'widget://resource/version.txt' + }); + $api.getVersion(function (ret) { + if (ret) { + //如果当前版本低于服务器的最低版本 强制更新 + if (ctrl.cmpVersion(thisVersion, ret.minSupport) < 0) { + api.alert({ + title: '版本更新', + msg: '版本太低,强烈建议更新', + buttons: ['确定'] + }, function (ret, err) { + update(function () { + //关闭当前页 退出登录 跳转到登录页 + api.openWin({ + name: 'login', + url: 'widget://html/user/login.html', + reload: true, + animation: { + type: "fade" + } + }); + + api.sendEvent({ + name: 'loginout' + }); + + api.closeWin({ + animation: { + type: "fade" + } + }); + }); + + }); + } else if (ctrl.cmpVersion(thisVersion, ret.latestVersion) < 0) { + //如果当前版本低于服务器的最新版本 建议更新 + if (dialogBox) { + return; + } + var dialogBox = api.require('dialogBox'); + dialogBox.alert({ + texts: { + title: '版本更新', + content: '发现新的版本,请更新', + leftBtnTitle: '确定', + rightBtnTitle: '取消', + }, + styles: { + bg: '#fff', + w: 300, + corner: 6, + title: { + marginT: 20, + titleSize: 18, + titleColor: '#000' + }, + content: { + marginT: 10, + color: '#000', + size: 14 + }, + left: { + marginB: 7, + marginL: 20, + w: 130, + h: 35, + corner: 2, + bg: '#fff', + size: 18 + }, + right: { + marginB: 7, + marginL: 10, + w: 130, + h: 35, + corner: 2, + bg: 'white', + size: 18 + } + + } + }, function (ret) { + if (ret.eventType == 'right') { + var dialogBox = api.require('dialogBox'); + dialogBox.close({ + dialogName: 'alert' + }); + } else if (ret.eventType == 'left') { + update(); + var dialogBox = api.require('dialogBox'); + dialogBox.close({ + dialogName: 'alert' + }); + } + }); + } + + //如果版本号不一样 标记已经提示过 + //一天之内不在提示 + if (ctrl.cmpVersion(thisVersion, ret.latestVersion) != 0) { + + var exdate = new Date() + exdate.setHours(exdate.getHours() + 24) + document.cookie = "has_remind_update=1;expires=" + exdate.toGMTString(); + + } + + + } + }, 'json'); + + function update(callback) { + + var platform = api.systemType; + if (platform == "ios") { + api.openApp({ + iosUrl: 'https://itunes.apple.com/us/app/%E7%94%B5%E5%8A%A1%E9%80%9Asaas/id1398709195?l=zh&ls=1&mt=8' + }, function (ret, err) { + //coding... + }); + callback && callback(); + } else if (platform == "android") { + api.showProgress({ + title: '下载中', + text: '请稍等...', + modal: false + }); + + api.download({ + url: "https://cdn.dianwutong.com/app/dianwutong_saas/app.apk", + cache: false, + allowResume: true + }, function (ret, err) { + api.hideProgress(); + if (ret.state == 1) { + //下载成功 + api.installApp({ + appUri: ret.savePath + }); + callback && callback(); + } else { + api.alert({ + title: '版本更新', + msg: '下载失败,请到电务通官网扫码下载最新app', + buttons: ['确定'] + }, function (ret, err) { + //coding... + callback && callback(); + }); + + } + }); + + } + + } + } + + //检查是否更新 + + ctrl.checkHasUpdated = function () { + + var lastVersion = $api.getStorage('lastVersion'); + + var currentVersion = api.readFile({ + sync: true, + path: 'widget://resource/version.txt' + }); + + if (lastVersion && ctrl.cmpVersion(lastVersion, currentVersion) < 0) { + + api.alert({ + title: '提示', + msg: '版本更新成功,请重新登陆', + buttons: ['确定'] + }, function (ret, err) { + + api.sendEvent({ + name: 'loginout' + }); + + setTimeout(function () { + api.closeWin({ + animation: { + type: 'fade' + } + }); + }, 500) + + api.openWin({ + name: 'login', + url: 'widget://html/user/login.html', + animation: { + type: 'fade' + } + }); + + }) + + } else { + + $api.setStorage('lastVersion', currentVersion); + + } + + + } + + ctrl.init(); + +} diff --git a/app-saas-src/script/index/inspectionFrame.js b/app-saas-src/script/index/inspectionFrame.js new file mode 100644 index 0000000..55df4ca --- /dev/null +++ b/app-saas-src/script/index/inspectionFrame.js @@ -0,0 +1,373 @@ +apiready = function() { + var ctrl = { + roleId: $api.getStorage('roleId'), + employeeId: $api.getStorage('employeeId'), + tabType: 'inspection-list', + isFinish: 1, + + init: {}, + bind: {}, + } + + ctrl.init = function() { + moment.locale("zh-CN"); + + //巡检单 状态发生变化 + api.addEventListener({ + name: 'inspectionTaskChanged' + }, ctrl.inspectionTaskChanged); + + ctrl.bind(); + + ctrl.initInspectionListTab(); + } + ctrl.bind = function() { + + //点击 “巡检单” tab按钮 + $api.addEvt($api.dom("#inspection-list-tab"), "touchend", function () { + if (ctrl.tabType == 'inspection-list') { + return + } + + $api.addCls(this, "active"); + $api.removeCls($api.dom("#inspection-task-tab"), "active"); + $api.css($api.dom("#inspection-list-panel"), 'display:block'); + $api.css($api.dom("#inspection-task-panel"), 'display:none'); + $api.css($api.dom('#inspection-empty-tips'), "display:none"); + + ctrl.tabType = 'inspection-list' + + // 初始化 巡检单 tab + ctrl.initInspectionListTab(); + + }, false); + + //点击 “巡检任务” tab按钮 + $api.addEvt($api.dom("#inspection-task-tab"), "touchend", function () { + if (ctrl.tabType == 'inspection-task') { + return + } + + $api.addCls(this, "active"); + $api.removeCls($api.dom("#inspection-list-tab"), "active"); + $api.css($api.dom("#inspection-task-panel"), 'display:block'); + $api.css($api.dom("#inspection-list-panel"), 'display:none'); + $api.css($api.dom('#inspection-empty-tips'), "display:none"); + + ctrl.tabType = 'inspection-task'; + + // 初始化 巡检任务 tab + ctrl.initInspectionTaskTab(); + + }, false); + + //跳转到 巡检单 详情页 + $("#inspection-list-panel").on("touchend", ".left", function() { + var inspectionid = $(this).data("inspectionid"); + + api.openWin({ + name: 'inspectionListDetail', + url: '../inspection/inspectionListDetail.html', + pageParam: { + inspectionid: inspectionid + } + }); + }); + + // 点击 “接单” + $('#inspection-list-panel').on("touchend", ".accept-btn", function(e) { + e.stopPropagation(); + + var inspectId = $(this).data("id"); + api.confirm({ + title: '', + msg: '确定要接单吗', + buttons: ['确定', '取消'] + }, function(ret, err) { + var index = ret.buttonIndex; + if (index == 1) { // 确定 + ctrl.acceptInspection(inspectId); + } + }); + }); + + // 点击“未开始” btn + $("#btn-nostart").on("touchend", function() { + ctrl.isFinish = 1; + $(this).siblings('.bg-touch').removeClass('bg-yellow'); + $(this).addClass('bg-yellow'); + ctrl.initInspectionTaskTab(); + }); + + // 点击“巡检中” btn + $("#btn-inspecting").on("touchend", function() { + ctrl.isFinish = 2; + $(this).siblings('.bg-touch').removeClass('bg-yellow'); + $(this).addClass('bg-yellow'); + ctrl.initInspectionTaskTab(); + }); + + // 点击“已完成” btn + $("#btn-finished").on("touchend", function() { + ctrl.isFinish = 3; + $(this).siblings('.bg-touch').removeClass('bg-yellow'); + $(this).addClass('bg-yellow'); + ctrl.initInspectionTaskTab(); + }); + + // 跳转到 巡检任务 详情页 + $("#inspection-content").on("touchend", ".inspection", function() { + var inspectionid = $(this).data("inspectionid"); + // status:0 未接单,1 未开始,2 巡检中,3 已完成 + var status = $(this).data("status"); + + api.openWin({ + name: 'inspectionTaskDetail', + url: '../inspection/inspectionTaskDetail.html', + pageParam: { + inspectionid: inspectionid, + status: status + } + }); + }); + + // 防止退出后继续轮询 + api.addEventListener({ + name: 'loginout' + }, function(ret, err) { + + }); + + //下拉刷新 + api.setRefreshHeaderInfo({ + bgColor: "#CCCCCC", + textColor: "#FFFFFF" + }, function(ret, err) { + // 根据当前选择的tab 刷新对应的内容 + if (ctrl.tabType == 'inspection-list') { // 巡检单 + ctrl.initInspectionListTab(); + } else if (ctrl.tabType == 'inspection-task') { // 巡检任务 + ctrl.initInspectionTaskTab() + } + }) + }; + + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + }; + + // 巡检任务中的巡检单状态改变 触发的事件处理 + ctrl.inspectionTaskChanged = function(ret, err) { + ctrl.initInspectionTaskTab(); + }; + + // 初始化 巡检单 tab + ctrl.initInspectionListTab = function () { + ctrl.getInspectionList(); + }; + + // 获取 巡检单 列表 + ctrl.getInspectionList = function() { + //显示载入动画 + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + + var startDate = $api.getFormattedDate('yyyy-MM-dd', new Date()); + var endDate = '2100-01-01'; + var url = '/test/xun-jian-dan/queryByListWithDate/1/9999/' + + startDate + 'T' + endDate + '/' + + this.roleId + '/' + + this.employeeId + '/0'; + + $api.get(url, function(res, err) { + //隐藏载入动画 + api.hideProgress(); + // 隐藏下拉刷新提示 + api.refreshHeaderLoadDone(); + + if (res && res.code == 200 && res.data) { + + var list = res.data.records || []; + var length = list.length; + + if (length > 0) { + $api.css($api.dom('#inspection-list-panel'), "display:block"); + $api.css($api.dom('#inspection-empty-tips'), "display:none"); + $('#inspection-list-panel').empty(); + + for (var i = 0; i < length; i++) { + ctrl.renderInspectionList(list[i]); + } + } else { + $api.css($api.dom('#inspection-list-panel'), "display:none"); + $api.css($api.dom('#inspection-empty-tips'), "display:block"); + } + + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + }); + }; + + // 渲染 巡检单 列表 + ctrl.renderInspectionList = function(record) { + var prName = record.prName; + var prCount = record.prShuLiang; + var problemCount = record.xunJianWenTi; + var id = record.id; + var xunJianShiJian = record.xunJianShiJian; + var template = '' + template +='
    ' + template += '
    ' + template += '
    ' + template += '
    ' + template += '
    {prName}共{prCount}个配电室 ' + template += '
    ' + template += '
    共{inspectProblemCount}个设备缺陷
    ' + template += '
    ' + template += '
    ' + template += '
    ' + template += '
    {xjDate}
    ' + template += '
    ' + template += '
    ' + template += '' + template += '
    ' + template += '
    ' + template +='
    ' + + template = template.replace("{inspectionId}", id) + .replace("{prName}", prName + '等' || '') + .replace("{prCount}", prCount) + .replace("{inspectProblemCount}", problemCount) + .replace("{xjDate}", xunJianShiJian || '') + .replace("{id}", id); + + $('#inspection-list-panel').append(template); + }; + + // 接单 + ctrl.acceptInspection = function(inspectId) { + //显示载入动画 + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + + var url = '/test/xun-jian-dan/insert'; + var data = { + id: inspectId, + employeeId: this.employeeId, + roleId: this.roleId, + jieDanRenId: this.employeeId + }; + + $api.post(url, data, function(res, err) { + //隐藏载入动画 + api.hideProgress(); + + if (res && res.code == 200) { + + ctrl.toast("接单成功"); + + ctrl.initInspectionListTab(); + + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + }); + }; + + // 初始化 巡检任务 panel + ctrl.initInspectionTaskTab = function() { + ctrl.getInspectionTask(); + }; + + // 获取 巡检任务 列表 + ctrl.getInspectionTask = function() { + //显示载入动画 + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + + var url = '/test/xun-jian-dan/queryByListByEmployeeId/1/9999/' + + this.employeeId + '/' + + this.isFinish; + + $api.get(url, function(res, err) { + //隐藏载入动画 + api.hideProgress(); + // 隐藏下拉刷新提示 + api.refreshHeaderLoadDone(); + + if (res && res.code == 200 && res.data) { + + var list = res.data.records || []; + var length = list.length; + + if (length > 0) { + $api.css($api.dom('#inspection-content'), "display:block"); + $api.css($api.dom('#inspection-empty-tips'), "display:none"); + $('#inspection-content').empty(); + + for (var i = 0; i < length; i++) { + ctrl.renderInspectionTask(list[i]); + } + } else { + $api.css($api.dom('#inspection-content'), "display:none"); + $api.css($api.dom('#inspection-empty-tips'), "display:block"); + } + + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + }); + }; + + // 渲染巡检任务列表 + ctrl.renderInspectionTask = function(record) { + var prName = record.prName; + var prCount = record.prShuLiang; + var problemCount = record.xunJianWenTi; + var id = record.id; + var xunJianShiJian = record.xunJianShiJian; + var status = record.shiFouWanCheng; + var template = '' + template +='
    ' + template += '
    ' + template += '
    ' + template += '
    ' + template += '
    {prName}共{prCount}个配电室 ' + template += '
    ' + template += '
    共{inspectProblemCount}个设备缺陷
    ' + template += '
    ' + template += '
    ' + template += '
    ' + template += '
    {xjDate}
    ' + template += '
    ' + template += '
    {jiedanren}
    ' + template += '
    ' + template +='
    ' + + template = template.replace("{inspectionId}", id) + .replace("{status}", status) + .replace("{prName}", (prName || '') + ' ') + .replace("{prCount}", prCount || '0') + .replace("{inspectProblemCount}", problemCount || '0') + .replace("{xjDate}", xunJianShiJian || '') + .replace("{jiedanren}", record.jieDanRen || ''); + + $('#inspection-content').append(template); + }; + + ctrl.init(); +} diff --git a/app-saas-src/script/index/leftPanel.js b/app-saas-src/script/index/leftPanel.js new file mode 100644 index 0000000..2752ab4 --- /dev/null +++ b/app-saas-src/script/index/leftPanel.js @@ -0,0 +1,168 @@ +apiready = function() { + + var ctrl = { + init: {}, + bind: {}, + logout: {}, + // roleList: [], + } + + //初始化 + ctrl.init = function() { + $api.attr($api.dom("#user-head"), "src", $api.getStorage("userHead")); + $api.text($api.dom("#real-name"), $api.getStorage("realName")); + + // add s 2023/7/10 + // if ($api.getStorage("userType") == 2) { // 员工 + // ctrl.roleList = $api.getStorage("roleList") + + // // 显示角色列表 + // $('#role-list').css('display', 'block') + // // 渲染角色列表 + // ctrl.renderRoleList() + // } + // add e 2023/7/10 + + this.bind(); + } + + //事件绑定 + ctrl.bind = function() { + // add by guoyuanyuan 2018/9/25 + // 监听客户改变的消息(项目改变) + api.addEventListener({ + name: 'projectChanged' + }, function(ret, err) { + $api.attr($api.dom("#user-head"), "src", $api.getStorage("userHead")); + $api.text($api.dom("#real-name"), $api.getStorage("realName")); + }); + //点击退出登录 + + $api.addEvt($api.dom("#logout"), "touchend", function(e) { + api.closeDrawerPane(); + api.sendEvent({ + name: 'leftPanelClicklogout', + }); + + }, false); + + //图像加载失败 + $api.addEvt($api.dom('#user-head'), "error", function() { + $api.attr(this, "src", "../../image/left-panel-logo.png") + }) + + //点击修改密码 + + $api.addEvt($api.dom('#chang-pwd'), "touchend", function() { + api.closeDrawerPane(); + var cus = $api.getStorage('cus'); + if (cus == 1) { + api.sendEvent({ + name: 'changePwdTip' + }); + + return false; + } + + + api.openWin({ + name: 'chang-pwd', + url: '../../html/user/updatePassword.html' + }); + + }, false); + + //点击清空缓存 + $api.addEvt($api.dom('#clear'), "touchend", function() { + api.closeDrawerPane(); + api.sendEvent({ + name: 'leftPanelClickClear' + }); + + }, false); + + //点击了关于我们 + $api.addEvt($api.dom('#about'), "touchend", function() { + api.openWin({ + name: 'about', + url: '../../html/about.html' + }); + + api.closeDrawerPane(); + }, false); + + // add s + // 角色切换 + // 1、需要重新获取当前角色下所包含的配电室列表 + // 2、需要重新获取当前角色下的报警列表 + // 添加事件 + $("#role-list").on("touchend", ".role-item", function () { + // 取消选中 + $("#role-list .role-item").forEach(function (item, index) { + $api.removeCls(item, "role-item-active"); + }) + + // 选中当前 + $api.addCls(this, "role-item-active"); + + // 更新 localStorage 种保存的 roleId + $api.setStorage("roleId", $(this).data('id')) + + // 重新获取配电室列表,重新获取报警列表 + api.sendEvent({ + name: 'roleChanged' + }); + + }) + // add e + } + + ctrl.renderRoleList = function () { + $('#role-list').empty(); + + var len = ctrl.roleList.length; + var dom = '' + + for (var i = 0; i < len; i++) { + var roleItem = ctrl.roleList[i]; + var tpl = ''; + + tpl += '
  • ' + tpl += '' + tpl += '{{roleName}}' + tpl += '
  • ' + + // 默认选中第一个角色 + if (i == 0) { + tpl = tpl.replace('{{active}}', 'role-item-active') + } else { + tpl = tpl.replace('{{active}}', '') + } + + dom += tpl.replace('{{roleId}}', roleItem.roleId) + .replace('{{roleName}}', roleItem.roleName) + + } + + $api.html($api.dom('#role-list'), dom); + + // // 添加事件 + // $("#role-list").on("touchend", ".role-item", function () { + // // 取消选中 + // $("#role-list .role-item").forEach(function (item, index) { + // $api.removeCls(item, "role-item-active"); + // }) + + // // 选中当前 + // $api.addCls(this, "role-item-active"); + + // // 更新 localStorage 种保存的 roleId + // $api.setStorage("roleId", $(this).data('id')) + + // // TODO 重新获取配电室列表 + + // }) + } + + ctrl.init(); +} diff --git a/app-saas-src/script/index/messageFrame.js b/app-saas-src/script/index/messageFrame.js new file mode 100644 index 0000000..470a852 --- /dev/null +++ b/app-saas-src/script/index/messageFrame.js @@ -0,0 +1,382 @@ +apiready = function () { + var ctrl = { + updateCycle: 30000, + uiList: null, + init: {}, + bind: {}, + initBadge: {}, + initUiList: {}, + getPr: {}, + } + + ctrl.init = function () { + moment.locale("zh-CN") + + ctrl.bind(); + ctrl.initProject(); // 初始化项目 + ctrl.getPr(); + privilegeModule.getMenuList(function () { + ctrl.initMessagerMenu(); // 初始化消息菜单 + }); + ctrl.initBadge(); + ctrl.initLatestTime(); + if (ctrl.timer) { + window.clearInterval(ctrl.timer); + } + ctrl.timer = setInterval(function () { + ctrl.getPr(); + }, ctrl.updateCycle); + + //获取消息 + messageDao.updateData(); + } + // 初始化项目信息 + ctrl.initProject = function () { + // 如果是普通客户登录 不显示项目名和 下拉项目选择 + var customers = $api.getStorage('customers'); + // add s 2023/7/5 + if (!customers) { + return + } + // add e + ctrl.customers = customers; + if (customers.length <= 1) { + $('#projectName').css('display', 'none'); + } else { + $('#projectName').css('display', 'block'); + // 初始化当前客户名(项目名) + var cusName = $api.getStorage('realName'); + $('#projectName').text(cusName); + // 初始化项目列表 + for (var i = 0; i < customers.length; i++) { + var str = '
  • {{projectName}}
  • '; + str = str.replace('{{cusId}}', customers[i].cusId) + .replace('{{projectName}}', customers[i].cusName); + $('#project-panel').append(str); + } + } + } + // 初始化消息菜单如抢修管家,巡检管家权限 + ctrl.initMessagerMenu = function () { + if (!privilegeModule.hasMenu('抢修管家')) { + $('.repair-keeper').css('display', 'none'); + } + if (!privilegeModule.hasMenu('巡检管家')) { + $('.inspect-keeper').css('display', 'none'); + } + if (!privilegeModule.hasMenu('报表管家')) { + $('.report-keeper').css('display', 'none'); + } + if (!privilegeModule.hasMenu('报警管家')) { + $('.alarm-keeper').css('display', 'none'); + } + if (!privilegeModule.hasMenu('操作票助手')) { + $('.oper-ticket-assistantor').css('display', 'none'); + } + if (!privilegeModule.hasMenu('工作票助手')) { + $('.work-ticket-assistantor').css('display', 'none'); + } + if (!privilegeModule.hasMenu('电务小蜜蜂')) { + $('.bee').css('display', 'none'); + } + } + ctrl.bind = function () { + // 防止退出后继续轮询 + api.addEventListener({ + name: 'loginout' + }, function (ret, err) { + window.clearInterval(ctrl.timer); + }); + + // 切换客户(项目) + $('#project-panel').on('touchend', 'li', function () { + var cusId = $(this).data('id'); + var customers = ctrl.customers; + for (var i = 0; i < customers.length; i++) { + if (customers[i].cusId === cusId) { + $api.setStorageOfCus(customers[i]); + var cusName = customers[i].cusName; + $('#projectName').text(cusName); // 选择之后更新客户名 + // 发送客户发生改变的消息 + api.sendEvent({ + name: 'projectChanged' + }); + ctrl.getPr(); + return; + } + } + }) + + //跳转到消息列表页 + $(".messager").on("touchend", function () { + var type = $(this).data("type"); + api.openWin({ + name: 'messageList', + url: 'widget://html/message/messageList.html', + pageParam: { + type: type + } + }); + }) + + //监听消息改变事件 初始化badge + api.addEventListener({ + name: 'messageUpdated' + }, function (ret, err) { + ctrl.initBadge(); + ctrl.initLatestTime(); + }); + + // add by guoyuanyuan 2018/9/25 + // 监听项目改变的消息 更新当前显示的项目 + api.addEventListener({ + name: 'requestChangeProject' + }, function (ret, err) { + $('#project-panel').css('display', 'block'); + }); + //如果body收到touchend事件 隐藏掉modal + $api.addEvt($api.dom("body"), "touchend", function () { + $api.css($api.dom("#project-panel"), "display:none"); + }, false); + + api.addEventListener({ + name: 'requestCloseModal' + }, function (ret, err) { + $('#project-panel').css('display', 'none'); + }); + + + //下拉刷新 + api.setRefreshHeaderInfo({ + bgColor: "#CCCCCC", + textColor: "#FFFFFF" + }, function (ret, err) { + // 下拉刷新 隐藏掉项目下拉panel + $api.css($api.dom("#project-panel"), "display:none"); + ctrl.initBadge(); + ctrl.initLatestTime(); + messageDao.updateData(function () { + api.refreshHeaderLoadDone(); + }) + }) + } + + //初始化页面的badge + ctrl.initBadge = function () { + + //显示未读信息的条数 + messageDao.getTypeUnReadCount(function (list) { + //先隐藏掉所有badge + $("#bee-badge").css("display", "none"); + $("#repair-keeper-badge").css("display", "none"); + // 报表管家 + $("#report-keeper-badge").css("display", "none"); + $("#alarm-keeper-badge").css("display", "none"); + $("#inspect-keeper-badge").css("display", "none"); + $("#oper-ticket-assistantor-badge").css("display", "none"); + $("#work-ticket-assistantor-badge").css("display", "none"); + + var length = list.length; + + for (var i = 0; i < length; i++) { + + switch (parseInt(list[i].type)) { + case 10: + showBadge("bee-badge", list[i].sum); + break; //自定义消息 + case 20: + showBadge("repair-keeper-badge", list[i].sum); + break; //抢修管家消息 + case 30: + showBadge("inspect-keeper-badge", list[i].sum); + break; //巡检管家消息 + case 40: + showBadge("oper-ticket-assistantor-badge", list[i].sum); + break; //操作票助手 + case 50: + showBadge("work-ticket-assistantor-badge", list[i].sum); + break; //工作票助手 + case 60: + showBadge("alarm-keeper-badge", list[i].sum); + break; //工作票助手 + + //报表管家 + case 70: + showBadge("report-keeper-badge", list[i].sum); + break; //报表管家消息 + } + + } + }) + + function showBadge(id, sum) { + var text = sum; + + if (sum == 0) { + $("#" + id).css("display", "none"); + return false; + } + + if (sum > 99) { + text = "99+"; + } + + $("#" + id).css("display", "block"); + $("#" + id).text(text); + + } + } + + + //初始化每类消息最新消息的时间 + ctrl.initLatestTime = function () { + messageDao.getTypeLatestTime(function (list) { + //先清空时间 + $("#bee-time").text(""); + $("#repair-keeper-time").text(""); + $("#inspect-keeper-time").text(""); + $("#report-keeper-time").text(""); + $("#alarm-keeper-time").text(""); + $("#oper-ticket-assistantor-time").text(""); + $("#work-ticket-assistantor-time").text(""); + + var length = list.length; + + for (var i = 0; i < length; i++) { + + switch (parseInt(list[i].type)) { + case 10: + showTime("bee-time", list[i].create_time); + break; //自定义消息 + case 20: + showTime("repair-keeper-time", list[i].create_time); + break; //抢修管家消息 + case 30: + showTime("inspect-keeper-time", list[i].create_time); + break; //巡检管家消息 + case 40: + showTime("oper-ticket-assistantor-time", list[i].create_time); + break; //操作票助手 + case 50: + showTime("work-ticket-assistantor-time", list[i].create_time); + break; //工作票助手 + case 60: + showTime("alarm-keeper-time", list[i].create_time); + break; //报警管家 + + case 70: + showTime("report-keeper-time", list[i].create_time); + break; //报表管家消息 + } + } + + function showTime(dom, time) { + var content = CommonModel.formatDateTime(parseInt(time)); + $("#" + dom).text(content); + } + + }) + + } + + //获取配电室并显示 + ctrl.getPr = function () { + var data = { + cusId: $api.getStorage('cusId') + } + + // 员工登陆 + var isEmployee = $api.getStorage('isEmployee') + if (isEmployee) { + data = { + employeeId: $api.getStorage('employeeId'), + roleId: $api.getStorage('roleId') + } + } + + /** + * 注意在客户体验模式下要拦截此接口的数据,另外在最外层的index.html中也有此接口的调用,如果需要修改,则两处都要该,别忘了 + */ + $api.get("/ems/rest/power/room/list", data, function (ret, err) { + + if (ret && ret.code == 200) { + + //判断是否是体验账号,如果是体验账号,则对云端返回的数据进行拦截 + if ($api.getStorage('cus')) { + //对云端返回的数据进行拦截 + if (ret.body && ret.body.length > 0) { + for (var i = 0; i < ret.body.length; i++) { + // var prInfo = ret.body[i]; + ret.body[i].prName = $api.guestPrName; + if (i > 0) { + ret.body[i].prName += (" #" + (i + 1)); + } + } + } + } + + render(ret.body); + } + }); + + function render(list) { + $('#pr-container').empty(); + var length = list.length; + var tpl = '
    '; + tpl += '
    '; + tpl += '
    {{prName}}
    '; + tpl += '
    '; + tpl += '
    '; + // tpl += '
    {{status}}
    '; + tpl += '
    安全运行 {{days}} 天
    '; + tpl += '
    '; + tpl += '
    '; + + var powerRooms = []; + for (var i = 0; i < length; i++) { + var status = '正常'; + + if (list[i].xjStatus == 1) { + status = '巡检'; + } + + if (list[i].bjStatus == 1) { + status = '故障'; + } + + if (list[i].qxStatus == 1) { + status = '抢修'; + } + + + var dom = $api.dom('.pr[prid="' + list[i].prId + '"]'); + if (dom) { + // $api.html($api.dom(dom, ".status"), status); + $api.html($api.dom(dom, ".days"), list[i].safetyDay); + } else { + var item = tpl.replace('{{prId}}', list[i].prId) + .replace('{{prName}}', list[i].prName) + // .replace('{{status}}', status) + .replace('{{days}}', list[i].safetyDay); + $api.append($api.dom('#pr-container'), item); + } + //保存最新的配电室列表 + powerRooms.push({ + "prId": list[i].prId, + "prName": list[i].prName, + "configId": list[i].configId + }) + + } + if ($api.getStorage('cus')) { + if (powerRooms.length > 0) { + $api.setStorage("prList", powerRooms); + } + $api.setStorage("powerRoom", powerRooms[0]); + } + + } + } + + ctrl.init(); +} diff --git a/app-saas-src/script/index/rtAlaramFrame.js b/app-saas-src/script/index/rtAlaramFrame.js new file mode 100644 index 0000000..64dbe86 --- /dev/null +++ b/app-saas-src/script/index/rtAlaramFrame.js @@ -0,0 +1,300 @@ +apiready = function () { + var ctrl = { + cycle: 10000, + init: {}, + bind: {}, + toast: {}, + getAlarmCount: {}, + // getAlarmList: {}, + renderAlarmList: {}, + + renderFilter: {}//渲染报警列表前的拦截器,用于处理体验账号模式下的数据 + }; + + ctrl.init = function () { + ctrl.bind(); + api.sendEvent({ + name: 'requestRtAlarm' + }); + } + + ctrl.toast = function (msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + + ctrl.bind = function () { + + //下拉刷新 + api.setRefreshHeaderInfo({ + loadingImg: 'widget://image/refresh.png', + bgColor: '#ccc', + textColor: '#fff', + textDown: '下拉刷新...', + textUp: '松开刷新...' + }, function (ret, err) { + + api.sendEvent({ + name: 'requestRtAlarm' + }); + ctrl.getAlarmCount(); + var list = $api.getStorage('rtAlarmList'); + ctrl.refreshAlarmList(list); + api.refreshHeaderLoadDone(); + + }); + + //点击报警 + //如果已经生成抢修单 直接跳转到抢修单页 + //如果没有 跳转到报警详情页 + $("#alarm-con").on("touchend", ".alarm", function () { + var alarmId = $(this).data("alarm-id"); + var orderId = $(this).data("order-id"); + if (orderId) { + api.openWin({ + 'name': 'repairDetail', + 'url': 'widget://html/feature/logQuery/repairLogDetail.html', + 'pageParam': { + id: orderId + } + }) + } else { + api.openWin({ + 'name': 'alarmDetail', + 'url': 'widget://html/feature/alarmDetail.html', + 'pageParam': { + id: alarmId + } + }) + } + }) + + api.addEventListener({ + name: 'rtAlarmListUpdated' + }, function (ret, err) { + if (ret) { + ctrl.getAlarmCount(); + + var list = $api.getStorage('rtAlarmList'); + + ctrl.renderAlarmList(list); + + } + + }); + } + + ctrl.getAlarmCount = function () { + var url = '/ems/rest/alarm/statistics'; + var userId = $api.getStorage("userId"); + + // add s 2023/7/20 + if ($api.getStorage("userType") == 2) { // 员工 + var roleId = $api.getStorage("roleId"); + url = '/ems/rest/alarm/statisticsByRole/' + roleId + } + // add e 2023/7/20 + + $api.get(url, {}, function (res, err) { + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != 200) { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } else { + res = res.body; + $api.text($api.dom('#today-times'), res.currentDay); + $api.text($api.dom('#yesterday-times'), res.yesterday); + $api.text($api.dom('#this-month-times'), res.currentMonth); + $api.text($api.dom('#last-month-times'), res.lastMonth); + } + + } + }); + } + // ctrl.getAlarmList = function () { + // var url = '/ems/rest/alarm/page'; + // var userId = $api.getStorage("userId"); + // var data = { + // "cusId": $api.getStorage('cusId'), + // "page" : 1, + // "pageSize": 999999 + // }; + // $api.post(url, data, function (res, err) { + // if (err) { + // ctrl.toast("网络请求失败"); + // + // } else { + // if (!res.code || res.code != 0) { + // ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + // api.refreshHeaderLoadDone(); + // } else { + // + // ctrl.renderAlarmList(res); + // + // } + // } + // }); + // } + + //渲染报警列表前的拦截器,用于处理体验账号模式下的数据 + ctrl.renderFilter = function (list) { + + if ($api.getStorage('cus') && list && list.length > 0) { + for (var i = 0; i < list.length; i++) { + var alarmItem = list[i]; + if (alarmItem.prName) { + alarmItem.prName = $api.guestPrName; + } + } + } + } + //页面刷新时 重新从alarmList列表中取数据渲染 + ctrl.refreshAlarmList = function (list) { + this.renderFilter(list); + //清空页面 + $api.html($api.dom('#alarm-con'), ''); + var length = list.length; + for (var i = 0; i < length; i++) { + item = ctrl.getAlarmDom(list[i]); + $api.append($api.dom('#alarm-con'), item); + } + } + + ctrl.renderAlarmList = function (list) { + //对体验账号模式下的数据进行修改 + ctrl.renderFilter(list); + var alarms = $(".alarm"); + + // $api.html($api.dom('#alarm-con'), ''); + var length = list.length; + //删除不存在元素 + ctrl.removeUnExistAlarm(list); + + var item = ''; + //var today = new Date().getDate(); + //判断是不是第一次 加载 如果是第一次加载 按照顺序append + if(alarms.length == 0){ + for (var i = 0; i < length; i++) { + + if (!ctrl.isExistOnPage(list[i])) { + + item = ctrl.getAlarmDom(list[i]); + $api.append($api.dom('#alarm-con'), item); + } + + } + }else{ + + //如果不是第一次加载 如果新的列表 与 页面中列表重复 替换掉页面中列表 + //如果页面中不存在新的列表 将新的列表倒序插入到 页面第一个前面 + list = list.reverse(); + for(var i = 0;i < list.length;i++){ + var item = ctrl.getAlarmDom(list[i]); + + if(!ctrl.isExistOnPage(list[i])){ + $(alarms[0]).before(item); + + } + } + + } + + var alarms = $api.domAll(".alarm"); + + if (alarms.length != 0) { + + $api.css($api.dom('#alarm-list-empty-tips'), 'display:none'); + $api.css($api.dom('#alarm-con'), 'display:block'); + + } else { + + $api.css($api.dom('#alarm-list-empty-tips'), 'display:block'); + $api.css($api.dom('#alarm-con'), 'display:none'); + + } + } + + //检测报警是不是存在页面上 + ctrl.isExistOnPage = function (item) { + + var alarms = $api.domAll('.alarm[alarm-id="' + item.alarmId + '"]'); + + var length = alarms.length; + + + return length > 0 ? true : false; + + } + + //删除页面上多余的报警 + ctrl.removeUnExistAlarm = function (list) { + + var alarms = $api.domAll('.alarm'); + + var alarmsLength = alarms.length; + var listLength = list.length; + + var id, isExist; + for (var i = 0; i < alarmsLength; i++) { + + id = alarms[i].getAttribute('alarm-id'); + isExist = false; + + + for (var j = 0; j < listLength; j++) { + + if (id == list[j].alarmId) { + + isExist = true; + break; + + } + + } + + if (!isExist) { + + alarms[i].remove(); + + } + + } + + } + + //获取报警dom + ctrl.getAlarmDom = function (item) { + var con = ''; + var alarmTime = CommonModel.formatDateTime(item.alarmTime); + var alarmValue = ''; + if (item.varType == "1") { + alarmValue = ((item.alarmValue || item.alarmValue == 0) ? (item.alarmValue + (item.unit ? item.unit : '')) : ''); + } else { + if (item.showValue) { + alarmValue = item.valueDefine; + } else { + alarmValue = " "; + } + } + con += '
    '; + con += '
    '; + con += '
    '; + con += '
    '; + con += '
    '; + con += '' + item.prName + ' '; + con += '
    '; + con += '
    ' + (item.alarmDesc ? item.alarmDesc : '') + '
    '; + con += '
    '; + con += '
    '; + con += '
    ' + alarmTime + '
    ' + alarmValue + '
    '; + + return con; + + } + + ctrl.init(); +} diff --git a/app-saas-src/script/index/systemOrderFrame.js b/app-saas-src/script/index/systemOrderFrame.js new file mode 100644 index 0000000..0108e1b --- /dev/null +++ b/app-saas-src/script/index/systemOrderFrame.js @@ -0,0 +1,371 @@ +apiready = function() { + var ctrl = { + roleId: $api.getStorage('roleId'), + employeeId: $api.getStorage('employeeId'), + tabType: 'order-list', + status: 1, + + init: {}, + bind: {}, + } + + ctrl.init = function() { + moment.locale("zh-CN"); + + //工单 状态发生变化 + api.addEventListener({ + name: 'orderTaskChanged' + }, ctrl.orderTaskChanged); + + ctrl.bind(); + + ctrl.initOrderListTab(); + } + ctrl.bind = function() { + + //点击 “工单列表” tab按钮 + $api.addEvt($api.dom("#order-list-tab"), "touchend", function () { + if (ctrl.tabType == 'order-list') { + return + }; + + $api.addCls(this, "active"); + $api.removeCls($api.dom("#order-task-tab"), "active"); + $api.css($api.dom("#order-list-panel"), 'display:block'); + $api.css($api.dom("#order-task-panel"), 'display:none'); + $api.css($api.dom('#order-empty-tips'), "display:none"); + + ctrl.tabType = 'order-list' + + // 初始化 工单 tab + ctrl.initOrderListTab(); + + }, false); + + //点击 “我的工单” tab按钮 + $api.addEvt($api.dom("#order-task-tab"), "touchend", function () { + if (ctrl.tabType == 'order-task') { + return + }; + + $api.addCls(this, "active"); + $api.removeCls($api.dom("#order-list-tab"), "active"); + $api.css($api.dom("#order-task-panel"), 'display:block'); + $api.css($api.dom("#order-list-panel"), 'display:none'); + $api.css($api.dom('#order-empty-tips'), "display:none"); + + ctrl.tabType = 'order-task'; + + // 初始化 我的工单 tab + ctrl.initOrderTaskTab(); + + }, false); + + //跳转到 工单 详情页 + $("#order-list-panel").on("touchend", ".left", function() { + var orderid = $(this).data("orderid"); + + api.openWin({ + name: 'systemOrderDetail', + url: '../systemOrder/systemOrderDetail.html', + pageParam: { + orderid: orderid, + status: 0 + } + }); + }); + + // 点击 “接单” + $('#order-list-panel').on("touchend", ".accept-btn", function(e) { + e.stopPropagation(); + + var orderId = $(this).data("id"); + api.confirm({ + title: '', + msg: '确定要接单吗', + buttons: ['确定', '取消'] + }, function(ret, err) { + var index = ret.buttonIndex; + if (index == 1) { // 确定 + ctrl.acceptOrder(orderId); + } + }); + }); + + // 点击“未处理” btn + $("#btn-nostart").on("touchend", function() { + ctrl.status = 1; + $(this).siblings('.bg-touch').removeClass('bg-yellow'); + $(this).addClass('bg-yellow'); + ctrl.initOrderTaskTab(); + }); + + // 点击“处理中” btn + $("#btn-handling").on("touchend", function() { + ctrl.status = 2; + $(this).siblings('.bg-touch').removeClass('bg-yellow'); + $(this).addClass('bg-yellow'); + ctrl.initOrderTaskTab(); + }); + + // 点击“已完成” btn + $("#btn-finished").on("touchend", function() { + ctrl.status = 3; + $(this).siblings('.bg-touch').removeClass('bg-yellow'); + $(this).addClass('bg-yellow'); + ctrl.initOrderTaskTab(); + }); + + // 跳转到 我的工单 详情页 + $("#order-content").on("touchend", ".order", function() { + var orderid = $(this).data("orderid"); + // status:1 未处理,2 处理中,3 已完成 + var status = $(this).data("status"); + + if (status == 3) { + api.openWin({ + name: 'systemOrderDetail', + url: '../systemOrder/systemOrderDetail.html', + pageParam: { + orderid: orderid, + status: 3 + } + }); + } else { + api.openWin({ + name: 'systemOrderEdit', + url: '../systemOrder/systemOrderEdit.html', + pageParam: { + orderid: orderid, + status: status + } + }); + } + + }); + + //下拉刷新 + api.setRefreshHeaderInfo({ + bgColor: "#CCCCCC", + textColor: "#FFFFFF" + }, function(ret, err) { + // 根据当前选择的tab 刷新对应的内容 + if (ctrl.tabType == 'order-list') { // 工单列表 + ctrl.initOrderListTab(); + } else if (ctrl.tabType == 'order-task') { // 我的工单 + ctrl.initOrderTaskTab(); + } + }); + }; + + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + }; + + // 巡检任务中的巡检单状态改变 触发的事件处理 + ctrl.orderTaskChanged = function(ret, err) { + ctrl.initOrderTaskTab(); + }; + + // 初始化 工单 tab + ctrl.initOrderListTab = function () { + ctrl.getOrderList(); + }; + + // 获取 工单 列表 + ctrl.getOrderList = function() { + //显示载入动画 + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + + var url = '/test/gong-dan/queryByList/1/9999/0/' + + this.employeeId + '/' + + this.roleId; + + $api.get(url, function(res, err) { + //隐藏载入动画 + api.hideProgress(); + // 隐藏下拉刷新提示 + api.refreshHeaderLoadDone(); + + if (res && res.code == 200 && res.data) { + + var list = res.data.records || []; + var length = list.length; + + if (length > 0) { + $api.css($api.dom('#order-list-panel'), "display:block"); + $api.css($api.dom('#order-empty-tips'), "display:none"); + $('#order-list-panel').empty(); + + for (var i = 0; i < length; i++) { + ctrl.renderOrderList(list[i]); + } + } else { + $api.css($api.dom('#order-list-panel'), "display:none"); + $api.css($api.dom('#order-empty-tips'), "display:block"); + } + + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + }); + }; + + // 渲染 工单 列表 + ctrl.renderOrderList = function(record) { + var prName = record.prName; + var tiJiaoRenName = record.tiJiaoRenName; + var id = record.id; + var miaoShu = record.miaoShu; + var template = '' + template +='
    ' + template += '
    ' + template += '
    ' + template += '
    ' + template += '
    {prName}配电室 ' + template += '
    ' + template += '
    {miaoShu}
    ' + template += '
    ' + template += '
    ' + template += '
    ' + template += '
    创建人:{tiJiaoRenName}
    ' + template += '
    ' + template += '
    ' + template += '' + template += '
    ' + template += '
    ' + template +='
    ' + + template = template.replace("{orderid}", id) + .replace("{prName}", prName) + .replace("{miaoShu}", miaoShu) + .replace("{tiJiaoRenName}", tiJiaoRenName) + .replace("{id}", id); + + $('#order-list-panel').append(template); + }; + + // 接单 + ctrl.acceptOrder = function(orderId) { + //显示载入动画 + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + + var url = '/test/gong-dan/gongDanJieDan'; + var data = { + id: orderId, + chuLiRenId: this.employeeId + }; + + $api.post(url, data, function(res, err) { + //隐藏载入动画 + api.hideProgress(); + + if (res && res.code == 200) { + + ctrl.toast("接单成功"); + + ctrl.initOrderListTab(); + + } else { + ctrl.toast(res.msg); + } + }); + }; + + // 初始化 我的工单 panel + ctrl.initOrderTaskTab = function() { + ctrl.getOrderTask(); + }; + + // 获取 我的工单 列表 + ctrl.getOrderTask = function() { + //显示载入动画 + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + + var url = '/test/gong-dan/queryChuLiRenByList/1/9999/' + + this.status + '/' + + this.employeeId; + + $api.get(url, function(res, err) { + //隐藏载入动画 + api.hideProgress(); + // 隐藏下拉刷新提示 + api.refreshHeaderLoadDone(); + + if (res && res.code == 200 && res.data) { + + var list = res.data.records || []; + var length = list.length; + + if (length > 0) { + $api.css($api.dom('#order-content'), "display:block"); + $api.css($api.dom('#order-empty-tips'), "display:none"); + $('#order-content').empty(); + + for (var i = 0; i < length; i++) { + ctrl.renderOrderTask(list[i]); + } + } else { + $api.css($api.dom('#order-content'), "display:none"); + $api.css($api.dom('#order-empty-tips'), "display:block"); + } + + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + }); + }; + + // 渲染 我的工单 列表 + ctrl.renderOrderTask = function(record) { + var id = record.id; + var status = record.zhuangTai; + var prName = record.prName; + var tiJiaoRenName = record.tiJiaoRenName; + var chuLiRenName = record.chuLiRenName; + var miaoShu = record.miaoShu; + var template = '' + template +='
    ' + template += '
    ' + template += '
    ' + template += '
    ' + template += '
    {prName}配电室 ' + template += '
    ' + template += '
    {miaoShu}
    ' + template += '
    ' + template += '
    ' + template += '
    ' + template += '
    创建人:{tiJiaoRenName}
    ' + template += '
    ' + template += '
    处理人:{chuLiRenName}
    ' + template += '
    ' + template +='
    ' + + template = template.replace("{orderid}", id) + .replace("{status}", status) + .replace("{prName}", prName) + .replace("{miaoShu}", miaoShu) + .replace("{tiJiaoRenName}", tiJiaoRenName) + .replace("{chuLiRenName}", chuLiRenName); + + $('#order-content').append(template); + }; + + ctrl.init(); +} diff --git a/app-saas-src/script/inspection/inspectionListDetail.js b/app-saas-src/script/inspection/inspectionListDetail.js new file mode 100644 index 0000000..2155113 --- /dev/null +++ b/app-saas-src/script/inspection/inspectionListDetail.js @@ -0,0 +1,363 @@ +apiready = function() { + var ctrl = { + init: {}, + bind: {}, + employeeId: null, + roleId: null, + prList: null, + inspectionId: null, + xjDate: null, + jieDanRenId: null, + status: null, // status:0 未接单,1 未开始,2 巡检中,3 已完成 + tabType: 'content', // 当前激活的 tab + prefix: 'https://cdyfile.saas.dianwutong.com/', + problemType: 0, // 设备缺陷类型 + }; + + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + + ctrl.inspectionId = api.pageParam.inspectionid; + ctrl.employeeId = $api.getStorage('employeeId'); + ctrl.roleId = $api.getStorage('roleId'); + ctrl.prList = $("#prList"); + ctrl.contentEmptyTips = $("#content-empty-tips"); + ctrl.problemEmptyTips = $("#problem-empty-tips"); + ctrl.title = $('#title'); + ctrl.xjDateDome = $('#xjDate'); + ctrl.prCountDom = $('#prCount'); + + ctrl.bind(); + + ctrl.initInspectContentTab(); + }; + + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }); + //点击 “巡检内容” tab按钮 + $api.addEvt($api.dom("#content-tab"), "touchend", function () { + if (ctrl.tabType == 'content') { + return + } + + $api.addCls(this, "active"); + $api.removeCls($api.dom("#problem-tab"), "active"); + $api.css($api.dom("#content-panel"), 'display:block'); + $api.css($api.dom("#problem-panel"), 'display:none'); + $api.css($api.dom('#content-empty-tips'), "display:none"); + + ctrl.tabType = 'content' + + // 初始化 巡检内容 tab + ctrl.initInspectContentTab(); + + }, false); + + //点击 “设备缺陷” tab按钮 + $api.addEvt($api.dom("#problem-tab"), "touchend", function () { + if (ctrl.tabType == 'problem') { + return + } + + $api.addCls(this, "active"); + $api.removeCls($api.dom("#content-tab"), "active"); + $api.css($api.dom("#problem-panel"), 'display:block'); + $api.css($api.dom("#content-panel"), 'display:none'); + $api.css($api.dom('#problem-empty-tips'), "display:none"); + + ctrl.tabType = 'problem'; + + // 初始化 设备缺陷 tab + ctrl.initInspectProblemTab(); + + }, false); + + // 点击“未处理” btn + $("#btn-unhandle").on("touchend", function() { + ctrl.problemType = 0; + $(this).siblings('.bg-touch').removeClass('bg-yellow'); + $(this).addClass('bg-yellow'); + ctrl.initInspectProblemTab(); + }); + + // 点击“处理中” btn + $("#btn-handling").on("touchend", function() { + ctrl.problemType = 1; + $(this).siblings('.bg-touch').removeClass('bg-yellow'); + $(this).addClass('bg-yellow'); + ctrl.initInspectProblemTab(); + }); + + // 点击图片预览 + $("#problem-list-container").on("touchend", ".problem-pic-item", function (e) { + e.stopPropagation(); + var src = $(this).attr('src'); + + $('#pic-review img').attr('src', src); + $('#pic-review').css('display', 'block'); + }); + + // 点击预览图片 关闭预览 + $('#pic-review').on("touchend", function () { + $(this).css('display', 'none'); + }); + }; + + /** + * 弹出提示框 + */ + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + }; + + // 初始化 设备缺陷 tab + ctrl.initInspectProblemTab = function() { + ctrl.getProblemList(); + }; + + // 获取设备缺陷 列表 + ctrl.getProblemList = function() { + api.showProgress(); + + var url = '/test/xun-jian-dan/queryProblemById/' + ctrl.inspectionId + '/' + ctrl.problemType; + + $api.get(url, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + api.hideProgress(); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + api.hideProgress(); + } else { + ctrl.renderProblemList(res.data); + } + } + }); + }; + + // 清空设备缺陷 列表 + ctrl.clearProblemList = function() { + $("#problem-list-container").empty(); + }; + + // 渲染设备缺陷 列表 + ctrl.renderProblemList = function(data) { + var length = data.length; + + ctrl.clearProblemList(); + + if (length > 0) { + ctrl.problemEmptyTips.hide(); + + for (var i = 0; i < length; i++) { + var dataItem = data[i]; + ctrl.createProblemDom(i + 1, dataItem); + }; + } else { + ctrl.problemEmptyTips.show(); + }; + + api.hideProgress(); + }; + + // 创建 设备缺陷 DOM + ctrl.createProblemDom = function(index, problemItem) { + var tpl = ''; + var status = ''; + var colorClass = ''; + var problemDesc = problemItem.problemDesc; + var pics = []; + + if (problemItem.picture) { + pics = problemItem.picture.split(','); + }; + var picsLength = pics.length; + + if (problemItem.status == 0) { + status = '未处理'; + colorClass = 'text-red'; + } else if (problemItem.status == 1) { + status = '处理中'; + colorClass = 'text-yellow'; + }; + + tpl += '
  • '; + tpl += '
    '; + tpl += '
    问题{index}
    '; + tpl += '
    {status}
    '; + tpl += '
    '; + tpl += '
    '; + tpl += '
    问题描述:
    '; + tpl += '
    {problemDesc}
    '; + tpl += '
    '; + tpl += '
    '; + tpl += '
    现场照片:
    '; + tpl += '
    '; + if (picsLength > 0) { + for (var i = 0; i < picsLength; i++) { + var url = pics[i]; + var img = ''; + tpl += img; + } + } else { + tpl += '无' + } + tpl += '
    '; + tpl += '
    '; + tpl += '
  • '; + + tpl = tpl.replace("{index}", index) + .replace("{colorClass}", colorClass) + .replace("{problemDesc}", problemDesc) + .replace("{status}", status); + + $("#problem-list-container").append(tpl); + }; + + /** + * 清空配电室列表 + */ + ctrl.clearPrList = function() { + $("#prList").empty(); + }; + + // 初始化 巡检内容 tab + ctrl.initInspectContentTab = function() { + ctrl.getInspectDetail(); + }; + + /** + * 获取巡检单详情 + */ + ctrl.getInspectDetail = function() { + api.showProgress(); + + var url = '/test/xun-jian-dan/queryById/' + ctrl.inspectionId; + + $api.get(url, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + api.hideProgress(); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + api.hideProgress(); + } else { + ctrl.renderInspectDetail(res.data); + // 获取当前巡检单对应的巡检配电室列表 + ctrl.getInspectPrList(); + } + } + }); + }; + + ctrl.renderInspectDetail = function(data) { + // 更新巡检日期 + ctrl.xjDate = data.xunJianShiJian; + $('#xjDate').text(data.xunJianShiJian); + // 更新巡检人员 + ctrl.jieDanRenId = data.jieDanRenId || null; + $('#inspector').text(data.jieDanRen || '无'); + }; + + /** + * 获取巡检配电室列表 + */ + ctrl.getInspectPrList = function() { + api.showProgress(); + + var url = '/test/xun-jian-pr/queryByList/1/9999/' + ctrl.inspectionId; + + $api.get(url, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + api.hideProgress(); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + api.hideProgress(); + } else { + api.hideProgress(); + ctrl.renderInspectPrList(res.data); + } + } + }); + }; + + ctrl.renderInspectPrList = function(data) { + // 判断配电室数量 + if (data.total <= 0) { + ctrl.prCountDom.text('0') + ctrl.contentEmptyTips.show(); + + return; + } else { + // 更新配电室数量 + ctrl.prCountDom.text(data.total) + ctrl.contentEmptyTips.hide(); + + // 渲染配电室列表 + ctrl.clearPrList(); + var records = data.records; + var len = data.records.length; + for (var i = 0; i < len; i++) { + var prItem = records[i]; + ctrl.createPrDom(prItem.prName, prItem.prId, prItem.xunJianLeiXing, prItem.id); + } + } + + }; + + /** + * 创建一个配电室DOM + */ + ctrl.createPrDom = function(prName, prId, inspectType, id) { + var type = '例行巡检'; + switch (inspectType) { + case 1: + type = '例行巡检'; + break; + case 2: + type = '特殊巡检'; + break; + case 3: + type = '会诊巡检'; + break; + case 4: + type = '熄灯巡检'; + break; + }; + + var template = '' + + template +='
    ' + template += '
    ' + template += '
    ' + template += '
    ' + template += '
    {prName} ' + template += '
    ' + template += '
    < {type} >
    ' + template += '
    ' + template += '
    ' + template +='
    ' + + template = template.replace("{prname}", prName) + .replace("{prName}", prName) + .replace("{prId}", prId) + .replace("{type}", type) + .replace("{id}", id || ''); + + ctrl.prList.append(template); + }; + + ctrl.init(); +} diff --git a/app-saas-src/script/inspection/inspectionPrDetail.js b/app-saas-src/script/inspection/inspectionPrDetail.js new file mode 100644 index 0000000..32d945b --- /dev/null +++ b/app-saas-src/script/inspection/inspectionPrDetail.js @@ -0,0 +1,616 @@ +apiready = function () { + var ctrl = { + init: {}, + bind: {}, + backCallback: {}, + + // 当前展示的tab 页类型 + tabType: 'guide', + + id: null, // 当前巡检配电室 数据id + prId: null, + prName: '', + + problemsObj: null, // 设备缺陷信息对象 + + emptyType: { // 对应的tab是否需要展示无数据提示 + usual: false, + review: false, + new: false + }, + + newTflen: 0, // 新增突发项个数 + + problemData: { + status: true, // true:完成了初始化,false:当前存在未提交设备缺陷 + desc: '', // 设备缺陷 文字描述 + pics: [], // 设备缺陷 图片信息 + serverPicUrls: [], // 上传完成,返回的图片 url + uploadPicNum: 0, // 已经上传完成的图片的数量 + activeProblemItemDom: null, // 当前正在编辑的设备缺陷 DOM + }, + + } + + ctrl.init = function () { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + var tabsTop = $('#heightHeader').height(); + $('#searcher').css('top',tabsTop); + + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + + ctrl.employeeId = $api.getStorage('employeeId'); + ctrl.id = api.pageParam.id; + ctrl.prId = api.pageParam.prid; + ctrl.prName = api.pageParam.prname; + + ctrl.bind(); + + // 将title改成配电室名 + $api.html($api.dom('#title-prname'), ctrl.prName); + + ctrl.initGuideTab(); + } + + ctrl.bind = function () { + + var height = $(window).height() - $("header").height() - $(".tabs").height(); + $(".content-container").css("height", height); + //绑定返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function () { + ctrl.backCallback(); + }) + + //点击系统返回按钮 + api.addEventListener({ + name: 'keyback' + }, function () { + ctrl.backCallback(); + }); + + //点击 “巡检指导书” tab按钮 + $api.addEvt($api.dom("#guide-tab"), "touchend", function () { + if (ctrl.tabType == 'guide') { + return + } + + $api.addCls(this, "active"); + $api.removeCls($api.dom("#problem-tab"), "active"); + $api.css($api.dom("#guide-panel"), 'display:block'); + $api.css($api.dom("#problem-panel"), 'display:none'); + $api.css($api.dom('#inspectionitem-empty-tips'), "display:none"); + + ctrl.tabType = 'guide' + + // 初始化 巡检指导书 tab + // ctrl.initGuideTab(); + + }, false); + + //点击 “设备缺陷” tab按钮 + $api.addEvt($api.dom("#problem-tab"), "touchend", function () { + if (ctrl.tabType == 'problem') { + return + } + + $api.addCls(this, "active"); + $api.removeCls($api.dom("#guide-tab"), "active"); + $api.css($api.dom("#problem-panel"), 'display:block'); + $api.css($api.dom("#guide-panel"), 'display:none'); + $api.css($api.dom('#inspectionitem-empty-tips'), "display:none"); + + ctrl.tabType = 'problem'; + + // 初始化 设备缺陷 tab + // ctrl.initInspectionTaskTab(); + + }, false); + + // 点击设备分类,自动折叠当前分类的巡检项 + $("#guide-panel").on("touchend", ".category-name", function () { + + // 隐藏 当前分类的巡检项 + $api.toggleCls($(this).next()[0], 'hide'); + // 分类名前的箭头旋转90度 + $api.toggleCls($api.dom(this, 'img'), 'transform'); + + }); + + // 点击 巡检完成 + $('#inspect-finish-btn').on("touchend", function () { + api.confirm({ + title: '', + msg: '确定完成巡检吗', + buttons: ['确定', '取消'] + }, function(ret, err) { + var index = ret.buttonIndex; + if (index == 1) { // 确定 + // 判断是否存在未提交的设备缺陷 + if (!ctrl.problemData.status) { + ctrl.toast('存在未提交的设备缺陷!') + } else { + ctrl.finishInspect(); + }; + } + }); + }); + + // 点击 新增设备缺陷 + $('#new-add-btn').on("touchend", function () { + // 判断是否有未提交的设备缺陷 + if (ctrl.problemData.status) { + // 页面中添加一个 问题 li DOM + ctrl.addProblemItemDom(); + + ctrl.problemData.status = false; + } else { + ctrl.toast('存在未提交的设备缺陷!') + }; + }); + + // 点击 相册选择 添加 设备缺陷图片 + $("#problem-list-container").on("touchend", ".pic-add-btn", function () { + var picContentDom = $($(this).parents('.pic-content')[0]); + var params = { + sourceType: 'library', + // sourceType: 'camera', + // sourceType: 'album', + destinationType: 'base64' + } + api.getPicture(params, function(ret, err){ + if (ret && ret.data) { + // 创建图片预览dom + var picItemDom = '' + var dom = picItemDom.replace('{{url}}', ret.data) + picContentDom.prepend(dom) + + // 保存 图片 base64 和 url + ctrl.problemData.pics.push({ + url: ret.data + }) + + } + }) + }); + + // 点击 拍照 添加 设备缺陷图片 + $("#problem-list-container").on("touchend", ".camera-btn", function () { + var picContentDom = $($(this).parents('.pic-content')[0]); + var params = { + // sourceType: 'library', + sourceType: 'camera', + // sourceType: 'album', + destinationType: 'base64' + } + api.getPicture(params, function(ret, err){ + if (ret && ret.data) { + // 创建图片预览dom + var picItemDom = '' + var dom = picItemDom.replace('{{url}}', ret.data) + picContentDom.prepend(dom) + + // 保存 图片 base64 和 url + ctrl.problemData.pics.push({ + url: ret.data + }) + + } + }) + }); + + // 图片预览 + $("#problem-list-container").on("touchend", ".problem-pic-item", function (e) { + e.stopPropagation(); + var src = $(this).attr('src'); + + $('#pic-review img').attr('src', src); + $('#pic-review').css('display', 'block'); + }); + + // 图片 “删除” + $("#problem-list-container").on("touchend", "i", function (e) { + e.stopPropagation(); + + var _this = this; + + api.confirm({ + title: '', + msg: '确定要删除吗', + buttons: ['确定', '取消'] + }, function(ret, err) { + var index = ret.buttonIndex; + if (index == 1) { // 确定 + var url = $($(_this).siblings('img')[0]).attr('src'); + + $(_this).parent('.pic-item').remove(); + + // 从 ctrl.problemData.pics 中删除对应url + ctrl.problemData.pics = ctrl.problemData.pics.filter(function (item) { + return item.url != url; + }); + } + }); + + }); + + // 点击预览图片 关闭预览 + $('#pic-review').on("touchend", function () { + $(this).css('display', 'none'); + }); + + // 点击 “删除” 设备缺陷 + $('#problem-list-container').on("touchend", ".delete-btn", function () { + var _this = this; + api.confirm({ + title: '', + msg: '确定要删除吗', + buttons: ['确定', '取消'] + }, function(ret, err) { + ctrl.problemData.activeProblemItemDom = $(_this).parents('.problem-item'); + + var index = ret.buttonIndex; + if (index == 1) { // 确定 + ctrl.handleDelete(); + } + }); + }); + + // 点击 “提交” 设备缺陷 + $('#problem-list-container').on("touchend", ".submit-btn", function () { + ctrl.problemData.activeProblemItemDom = $(this).parents('.problem-item'); + + ctrl.problemData.desc = ctrl.problemData.activeProblemItemDom.find('.desc').val().trim(); + + api.confirm({ + title: '', + msg: '确定要提交吗', + buttons: ['确定', '取消'] + }, function(ret, err) { + var index = ret.buttonIndex; + if (index == 1) { // 确定 + if (!ctrl.problemData.desc.trim()) { + ctrl.toast('问题描述不能为空!'); + } else { + ctrl.handleSubmit(); + }; + } + }); + }); + + }; + + // 添加一个 问题 dom + ctrl.addProblemItemDom = function() { + var index = $('#problem-list-container li').length + 1; + + var itemDom = ''; + itemDom += '
  • '; + itemDom += '
    '; + itemDom += '
    问题{index}
    '; + itemDom += '
    ' + itemDom += '
    ' + itemDom += '删除' + itemDom += '
    ' + itemDom += '
    '; + itemDom += '提交'; + itemDom += '
    '; + itemDom += '
    ' + itemDom += '
    已提交
    ' + itemDom += '
    '; + itemDom += '
    '; + itemDom += '
    *问题描述:
    '; + itemDom += '
    '; + itemDom += ''; + itemDom += '
    '; + itemDom += '
    '; + itemDom += '
    '; + itemDom += '
    现场照片:
    '; + itemDom += '
    '; + // itemDom += ''; + itemDom += '' + itemDom += '' + itemDom += '' + // itemDom += '' + // itemDom += '' + // itemDom += '' + itemDom += '
    '; + itemDom += '
    '; + itemDom += '
  • '; + + itemDom = itemDom.replace('{index}', index); + + $('#problem-list-container').append(itemDom); + }; + + // 处理 删除 事件 + ctrl.handleDelete = function () { + ctrl.problemData.activeProblemItemDom.remove(); + ctrl.resetProblemData(); + }; + + // 处理 提交 事件 + ctrl.handleSubmit = function() { + api.showProgress(); + + var pics = ctrl.problemData.pics; + var length = pics.length; + if (length > 0) { // 有图片 + // 上传 图片 + for (var i = 0; i < length; i++) { + var url = pics[i]['url'] + ctrl.uploadPic(url) + } + } else { // 没图片 + ctrl.submitProblem(); + }; + }; + + // 重置 设备缺陷 数据表单 + ctrl.resetProblemData = function () { + ctrl.problemData.status = true; + ctrl.problemData.desc = ''; + ctrl.problemData.pics = []; + ctrl.problemData.serverPicUrls = []; + ctrl.problemData.uploadPicNum = 0; + ctrl.problemData.activeProblemItemDom = null; + }; + + // 上传图片 + ctrl.uploadPic = function (file) { + + var url = "/ems/rest/common/file/pad_upload"; + var data = file; + + $api.uploadFile(url, data, function (res, err) { + + if (err) { + api.hideProgress(); + ctrl.toast("网络请求失败,请稍后再试"); + } else { + if (res.code == 200) { + // 将返回的图片路径保存 + if (res.body && res.body.fileUrl) { + ctrl.problemData.serverPicUrls.push(res.body.fileUrl) + + ctrl.problemData.uploadPicNum++; + if (ctrl.problemData.uploadPicNum == ctrl.problemData.pics.length) {// 代表全部图片上传完成 + // 2、调用提交 设备缺陷接口 + ctrl.submitProblem(); + } + } else { + api.hideProgress(); + ctrl.toast("服务器错误,未返回数据"); + } + } else { + api.hideProgress(); + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + + }) + }; + + // 提交 设备缺陷 + ctrl.submitProblem = function() { + api.showProgress(); + + var zhaoPian = ctrl.problemData.serverPicUrls.join(','); + var url = '/test/gong-dan/insert'; + var data = { + tiJiaoRenId: ctrl.employeeId, + xunJianPrId: ctrl.id, + prId: ctrl.prId, + miaoShu: ctrl.problemData.desc, + isXjProblem: 1 + }; + + if (zhaoPian) { + data.zhaoPian = zhaoPian; + }; + + $api.post(url, data, function (res, err) { + + if (err) { + api.hideProgress(); + ctrl.toast("提交设备缺陷失败,请稍后再试"); + } else { + if (res.code == 200) { + // 隐藏当前设备缺陷的 删除 和 提交 按钮,隐藏 添加图片 删除图片 按钮 + ctrl.problemData.activeProblemItemDom.find('.btns').css('display', 'none'); + ctrl.problemData.activeProblemItemDom.find('.finished').css('display', 'block'); + ctrl.problemData.activeProblemItemDom.find('.pic-add-btn').css('display', 'none'); + ctrl.problemData.activeProblemItemDom.find('.pic-item i').css('display', 'none'); + ctrl.problemData.activeProblemItemDom.find('.desc').attr('disabled', 'disabled'); + + // 初始化 problemData + ctrl.resetProblemData(); + + api.hideProgress(); + ctrl.toast("提交成功"); + } else { + api.hideProgress(); + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + }; + + }); + }; + + // 初始化 “巡检指导书” tab + ctrl.initGuideTab = function () { + ctrl.getInspectItem(); + }; + + // 获取 “巡检指导书” 内容 + ctrl.getInspectItem = function() { + api.showProgress(); + + var url = '/test/xun-jian-ri-zhi/queryXunJianXiang/111'; + + $api.get(url, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + api.hideProgress(); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + api.hideProgress(); + } else { + ctrl.renderInspectItem(res.data); + } + } + }); + }; + + // 渲染巡检项 + ctrl.renderInspectItem = function (data) { + $('#guide-panel>ul').empty(); + + var tpl = ''; + var len = data.length; + + for (var i = 0; i < len; i++) { + var categoryItem = data[i]; + var itemList = categoryItem.xjTplContents; + var categoryDom = ''; + + categoryDom += '
  • ' + categoryDom += '
    ' + categoryDom += '' + categoryDom += '{{categoryName}}' + categoryDom += '
    ' + categoryDom += '
      ' + + categoryDom += getItemDom(itemList) + + categoryDom += '
    ' + categoryDom += '
  • ' + + var dom = categoryDom.replace('{{categoryName}}', categoryItem.tplName); + + tpl += dom; + } + + $api.html($api.dom('#guide-panel .inspect-item-box'), tpl); + + api.hideProgress(); + + // 获取 巡检项 dom + function getItemDom(itemList) { + var tpl = '' + var len = itemList.length + + for (var i = 0; i < len; i++) { + var item = itemList[i] + + var itemDom = '' + itemDom += '
  • ' + itemDom += '
    ' + itemDom += '{{taskItemDesc}}' + itemDom += '
    ' + itemDom += '
  • ' + + var dom = itemDom.replace('{{taskItemDesc}}', item.checkItem); + + tpl += dom + + } + + return tpl; + } + }; + + // 巡检完成 + ctrl.finishInspect = function() { + var weather = "晴"; + var qing = $('#weather .qing')[0].checked; + var yin = $('#weather .yin')[0].checked; + var yu = $('#weather .yu')[0].checked; + var xue = $('#weather .xue')[0].checked; + + if (qing) { + weather = '晴'; + } else if (yin) { + weather = '阴'; + } else if (yu) { + weather = '雨'; + } else if (xue) { + weather = '雪'; + }; + + var remark = $('#remark').val().trim(); + + if (!remark) { + ctrl.toast("请填写巡检备注"); + return; + }; + + api.showProgress(); + + var url = '/test/xun-jian-pr/updateById'; + var data = { + id: ctrl.id, + shiFouWanCheng: 2, + tianQi: weather, + beiZhu: remark + }; + + $api.post(url, data, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + api.hideProgress(); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + api.hideProgress(); + } else { + api.hideProgress(); + // 隐藏巡检完成 按钮 + $('#inspect-finish-btn').hide(); + + // 返回巡检单详情页 并触发巡检单详情页面定义的 inspectionPrChanged 事件 + api.sendEvent({ + name: 'inspectionPrChanged' + }); + + api.closeWin(); + } + } + }); + }; + + /** + * 弹出提示框 + */ + ctrl.toast = function (msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + + ctrl.backCallback = function () { + //关闭首页正在加载的提示框 + api.execScript({ + name: 'index', + frameName: 'featureFrame', + script: "api.hideProgress();" + }); + api.setScreenOrientation({ + orientation: 'auto_portrait' + }); + api.setFullScreen({ + fullScreen: false + }); + api.closeWin({}); + }; + + ctrl.init(); + +} diff --git a/app-saas-src/script/inspection/inspectionTaskDetail.js b/app-saas-src/script/inspection/inspectionTaskDetail.js new file mode 100644 index 0000000..4c870bf --- /dev/null +++ b/app-saas-src/script/inspection/inspectionTaskDetail.js @@ -0,0 +1,546 @@ +apiready = function() { + var ctrl = { + init: {}, + bind: {}, + employeeId: null, + roleId: null, + prList: null, + inspectionId: null, + xjDate: null, + jieDanRenId: null, + status: null, // status:0 未接单,1 未开始,2 巡检中,3 已完成 + tabType: 'content', // 当前激活的 tab + prefix: 'https://cdyfile.saas.dianwutong.com/', + problemType: 0, // 设备缺陷类型 + hasUnfinishedPr: false, // 当前巡检任务下,是否存在未完成巡检的配电室,默认不存在 + }; + + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + + ctrl.inspectionId = api.pageParam.inspectionid; + // status:1 未开始,2 巡检中,3 已完成 + ctrl.status = api.pageParam.status; + if (ctrl.status == 1) { + $('#start-inspect-btn').show(); + $('#finish-inspect-btn').hide(); + } else if (ctrl.status == 2) { + $('#start-inspect-btn').hide(); + $('#finish-inspect-btn').show(); + } else if (ctrl.status == 3) { + $('#start-inspect-btn').hide(); + $('#finish-inspect-btn').hide(); + } + + ctrl.employeeId = $api.getStorage('employeeId'); + ctrl.roleId = $api.getStorage('roleId'); + ctrl.prList = $("#prList"); + ctrl.contentEmptyTips = $("#content-empty-tips"); + ctrl.problemEmptyTips = $("#problem-empty-tips"); + ctrl.title = $('#title'); + ctrl.xjDateDome = $('#xjDate'); + ctrl.prCountDom = $('#prCount'); + + //巡检任务信息发生变化 + api.addEventListener({ + name: 'inspectionPrChanged' + }, ctrl.inspectionPrChanged); + + ctrl.bind(); + + ctrl.initInspectContentTab() + }; + + ctrl.bind = function() { + // 点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }); + + //点击 “巡检内容” tab按钮 + $api.addEvt($api.dom("#content-tab"), "touchend", function () { + if (ctrl.tabType == 'content') { + return + } + + $api.addCls(this, "active"); + $api.removeCls($api.dom("#problem-tab"), "active"); + $api.css($api.dom("#content-panel"), 'display:block'); + $api.css($api.dom("#problem-panel"), 'display:none'); + $api.css($api.dom('#content-empty-tips'), "display:none"); + + ctrl.tabType = 'content' + + // 初始化 巡检内容 tab + ctrl.initInspectContentTab(); + + }, false); + + //点击 “设备缺陷” tab按钮 + $api.addEvt($api.dom("#problem-tab"), "touchend", function () { + if (ctrl.tabType == 'problem') { + return + } + + $api.addCls(this, "active"); + $api.removeCls($api.dom("#content-tab"), "active"); + $api.css($api.dom("#problem-panel"), 'display:block'); + $api.css($api.dom("#content-panel"), 'display:none'); + $api.css($api.dom('#problem-empty-tips'), "display:none"); + + ctrl.tabType = 'problem'; + + // 初始化 设备缺陷 tab + ctrl.initInspectProblemTab(); + + }, false); + + // 点击“未处理” btn + $("#btn-unhandle").on("touchend", function() { + ctrl.problemType = 0; + $(this).siblings('.bg-touch').removeClass('bg-yellow'); + $(this).addClass('bg-yellow'); + ctrl.initInspectProblemTab(); + }); + + // 点击“处理中” btn + $("#btn-handling").on("touchend", function() { + ctrl.problemType = 1; + $(this).siblings('.bg-touch').removeClass('bg-yellow'); + $(this).addClass('bg-yellow'); + ctrl.initInspectProblemTab(); + }); + + // 点击图片预览 + $("#problem-list-container").on("touchend", ".problem-pic-item", function (e) { + e.stopPropagation(); + var src = $(this).attr('src'); + + $('#pic-review img').attr('src', src); + $('#pic-review').css('display', 'block'); + }); + + // 点击预览图片 关闭预览 + $('#pic-review').on("touchend", function () { + $(this).css('display', 'none'); + }); + + // 点击配电室 跳转到对应配电室巡检详情页 + $('#prList').on("touchend", ".pr", function(e) { + e.stopPropagation(); + + // 只有巡检中的单子才能跳转到配电室详情页 + if (ctrl.status == 0 || ctrl.status == 1) { + ctrl.toast('开始巡检后才能查看'); + + return; + }; + + var id = $(this).data('id'); + var prId = $(this).data('prid'); + var prName = $(this).data('prname'); + var status = $(this).data('status'); + + if (status == '2') { // 已完成 巡检的配电室禁止跳转 + ctrl.toast('已完成巡检,无法查看'); + + return; + }; + + api.openWin({ + name: 'inspectionPrDetail', + url: './inspectionPrDetail.html', + pageParam: { + id: id, + prid: prId, + prname: prName + } + }); + }); + + // 点击 "开始巡检" 按钮 + $('#start-inspect-btn').on("touchend", function(e) { + e.stopPropagation(); + + api.confirm({ + title: '', + msg: '确定要开始吗', + buttons: ['确定', '取消'] + }, function(ret, err) { + var index = ret.buttonIndex; + if (index == 1) { // 确定 + ctrl.startInspect(); + } + }); + }); + + // 点击 “巡检完成” 按钮 + $('#finish-inspect-btn').on("touchend", function(e) { + e.stopPropagation(); + + api.confirm({ + title: '', + msg: '确定所有配电室巡检完成了吗', + buttons: ['确定', '取消'] + }, function(ret, err) { + var index = ret.buttonIndex; + if (index == 1) { // 确定 + if (ctrl.hasUnfinishedPr) { + ctrl.toast('存在未巡检完成的配电室!'); + } else { + ctrl.finishInspect(); + }; + } + }); + }); + }; + + /** + * 弹出提示框 + */ + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + }; + + // 初始化 巡检内容 tab + ctrl.initInspectContentTab = function() { + ctrl.getInspectDetail(); + }; + + // 初始化 设备缺陷 tab + ctrl.initInspectProblemTab = function() { + ctrl.getProblemList(); + }; + + // 获取设备缺陷 列表 + ctrl.getProblemList = function() { + api.showProgress(); + + var url = '/test/xun-jian-dan/queryProblemById/' + ctrl.inspectionId + '/' + ctrl.problemType; + + $api.get(url, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + api.hideProgress(); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + api.hideProgress(); + } else { + ctrl.renderProblemList(res.data); + } + } + }); + }; + + // 清空设备缺陷 列表 + ctrl.clearProblemList = function() { + $("#problem-list-container").empty(); + }; + + // 渲染设备缺陷 列表 + ctrl.renderProblemList = function(data) { + var length = data.length; + + ctrl.clearProblemList(); + + if (length > 0) { + ctrl.problemEmptyTips.hide(); + + for (var i = 0; i < length; i++) { + var dataItem = data[i]; + ctrl.createProblemDom(i + 1, dataItem); + }; + } else { + ctrl.problemEmptyTips.show(); + }; + + api.hideProgress(); + }; + + // 创建 设备缺陷 DOM + ctrl.createProblemDom = function(index, problemItem) { + var tpl = ''; + var status = ''; + var colorClass = ''; + var problemDesc = problemItem.problemDesc; + var pics = []; + + if (problemItem.picture) { + pics = problemItem.picture.split(','); + }; + var picsLength = pics.length; + + if (problemItem.status == 0) { + status = '未处理'; + colorClass = 'text-red'; + } else if (problemItem.status == 1) { + status = '处理中'; + colorClass = 'text-yellow'; + }; + + tpl += '
  • '; + tpl += '
    '; + tpl += '
    问题{index}
    '; + tpl += '
    {status}
    '; + tpl += '
    '; + tpl += '
    '; + tpl += '
    问题描述:
    '; + tpl += '
    {problemDesc}
    '; + tpl += '
    '; + tpl += '
    '; + tpl += '
    现场照片:
    '; + tpl += '
    '; + if (picsLength > 0) { + for (var i = 0; i < picsLength; i++) { + var url = pics[i]; + var img = ''; + tpl += img; + } + } else { + tpl += '无' + } + tpl += '
    '; + tpl += '
    '; + tpl += '
  • '; + + tpl = tpl.replace("{index}", index) + .replace("{colorClass}", colorClass) + .replace("{problemDesc}", problemDesc) + .replace("{status}", status); + + $("#problem-list-container").append(tpl); + }; + + /** + * 清空配电室列表 + */ + ctrl.clearPrList = function() { + $("#prList").empty(); + }; + + // 巡检单中的配电室巡检状态改变 触发的事件处理 + ctrl.inspectionPrChanged = function(ret, err) { + ctrl.initInspectContentTab(); + }; + + /** + * 获取巡检单详情 + */ + ctrl.getInspectDetail = function() { + api.showProgress(); + + var url = '/test/xun-jian-dan/queryById/' + ctrl.inspectionId; + + $api.get(url, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + api.hideProgress(); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + api.hideProgress(); + } else { + ctrl.renderInspectDetail(res.data); + // 获取当前巡检单对应的巡检配电室列表 + ctrl.getInspectPrList(); + } + } + }); + }; + + // 渲染 详情 + ctrl.renderInspectDetail = function(data) { + // 更新巡检日期 + ctrl.xjDate = data.xunJianShiJian; + $('#xjDate').text(data.xunJianShiJian); + // 更新巡检人员 + ctrl.jieDanRenId = data.jieDanRenId || null; + $('#inspector').text(data.jieDanRen || '无'); + }; + + /** + * 获取巡检配电室列表 + */ + ctrl.getInspectPrList = function() { + api.showProgress(); + + var url = '/test/xun-jian-pr/queryByList/1/9999/' + ctrl.inspectionId; + + $api.get(url, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + api.hideProgress(); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + api.hideProgress(); + } else { + api.hideProgress(); + ctrl.hasUnfinishedPr = false; + ctrl.renderInspectPrList(res.data); + } + } + }); + }; + + // 渲染巡检配电室列表 + ctrl.renderInspectPrList = function(data) { + // 判断配电室数量 + if (data.total <= 0) { + ctrl.prCountDom.text('0') + ctrl.contentEmptyTips.show(); + + return; + } else { + // 更新配电室数量 + ctrl.prCountDom.text(data.total) + ctrl.contentEmptyTips.hide(); + + ctrl.clearPrList(); + // 渲染配电室列表 + var records = data.records; + var len = data.records.length; + for (var i = 0; i < len; i++) { + var prItem = records[i]; + ctrl.createPrDom(prItem); + } + } + + }; + + /** + * 创建一个配电室DOM + */ + ctrl.createPrDom = function(prItem) { + var status = prItem.shiFouWanCheng; + var statusDesc = prItem.shiFouWanCheng? '已完成' : '未完成'; + var colorClass = prItem.shiFouWanCheng? 'color-green' : 'color-red'; + var id = prItem.id; + var prId = prItem.prId; + var prName = prItem.prName; + + var type = '例行巡检'; + switch (prItem.xunJianLeiXing - 0) { + case 1: + type = '例行巡检'; + break; + case 2: + type = '特殊巡检'; + break; + case 3: + type = '会诊巡检'; + break; + case 4: + type = '熄灯巡检'; + break; + }; + + if (!prItem.shiFouWanCheng) { + ctrl.hasUnfinishedPr = true; + }; + + var template = '' + + template +='
    ' + template += '
    ' + template += '
    ' + template += '
    ' + template += '
    {prName} ' + template += '
    ' + template += '
    < {type} >
    ' + template += '
    ' + template += '
    ' + template += '
    ' + template += '{statusDesc}' + template += '
    ' + template +='
    ' + + template = template.replace("{id}", id) + .replace("{prId}", prId) + .replace("{prName}", prName) + .replace("{status}", status) + .replace("{prName}", prName) + .replace("{type}", type) + .replace("{colorClass}", colorClass) + .replace("{statusDesc}", statusDesc); + + ctrl.prList.append(template); + }; + + // 开始巡检 + ctrl.startInspect = function () { + api.showProgress(); + + var url = '/test/xun-jian-dan/updateById'; + var data = { + id: ctrl.inspectionId, + shiFouWanCheng: 2 + }; + + $api.post(url, data, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + api.hideProgress(); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + api.hideProgress(); + } else { + ctrl.status = 2; + + api.hideProgress(); + // 隐藏开始巡检 按钮 + $('#start-inspect-btn').hide(); + + // 显示巡检完成 按钮 + $('#finish-inspect-btn').show(); + } + } + }); + }; + + // 全部巡检完成 + ctrl.finishInspect = function () { + api.showProgress(); + + var url = '/test/xun-jian-dan/updateById'; + var data = { + id: ctrl.inspectionId, + shiFouWanCheng: 3 + }; + + $api.post(url, data, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + api.hideProgress(); + } else { + if (!res.code || res.code != "200") { + ctrl.toast("服务器响应错误"); + api.hideProgress(); + } else { + api.hideProgress(); + // 隐藏开始巡检 按钮 + $('#start-inspect-btn').hide(); + + // 隐藏巡检完成 按钮 + $('#finish-inspect-btn').hide(); + + // 跳转到巡检任务页 并更新页面数据 + api.sendEvent({ + name: 'inspectionTaskChanged' + }); + + api.closeWin(); + } + } + }); + }; + + ctrl.init(); +} diff --git a/app-saas-src/script/inspectionRepair/inspection.js b/app-saas-src/script/inspectionRepair/inspection.js new file mode 100644 index 0000000..831bf20 --- /dev/null +++ b/app-saas-src/script/inspectionRepair/inspection.js @@ -0,0 +1,719 @@ +apiready = function () { + //默认显示对比分页tab-panel 即 ctrl.mode = ctrl.modes.COMPARE; + //默认时间粒度是日数据 即 ctrl.dimension = ctrl.dimensions.DAY; + //默认时间是当前月 + + //当收到侧栏页的 “energySelectedNumber”的消息,也就是侧栏页选中了调度号,同时在消息体里把调度号传回主页 调用获取数据的方法 getData + //getData方法调用各个获取数据的具体方法 + // getTimeData() + // getCompareData() + //获取到数据之后 保存在对用的数据对象里 + // compareAChartData + // compareATableData + // timeAChartData + // timeBChartData + // timeCChartData + // 然后调用分别在各个获取数据的方法里调用对应的render方法来渲染表格或者图表 + + //当切换了“分时分析”和“对比分析”panel 调用对应的render方法,不在调用getData(); + + //当点击“选择回路”按钮 弹出侧栏 选中调度号后 点击确定 主页收到“energySelectedNumber”消息 重新调用getData()方法,重复上述步骤 + + //当选择了“日数据”或“月数据”按钮, 重新调用getData()方法 + + //重新选择了日期之后, 重新调用getData()方法 + var ctrl = { + init: {}, + bind: {}, + backCallback: {}, + + // 当前展示的tab 页类型,msg:配电室资料 inspection:巡检日志 repair:抢修日志 + tabType: 'msg', + + prId: null, + prName: '', + baseUrl: '', + currentPage: 1, + pageSize: 20, + repairCurrentPage: 1, + repairPageSize: 20, + + flag: 2, // 处理完(日志) + } + + ctrl.init = function () { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + + ctrl.bind(); + + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + + ctrl.prId = api.pageParam.prid; + ctrl.prName = api.pageParam.prname; + ctrl.taskId = api.pageParam.taskid; + + ctrl.initPrMsgTab() + + } + + ctrl.bind = function () { + var $startTime = $('#startTime-select'); + var $endTime = $('#endTime-select'); + var $lbStartTime = $('#lbStartTime'); + var $lbEndTime = $('#lbEndTime'); + + var $repairStartTime = $('#repair-startTime-select'); + var $repairEndTime = $('#repair-endTime-select'); + var $repairLbStartTime = $('#repair-lbStartTime'); + var $repairLbEndTime = $('#repair-lbEndTime'); + + var _this = this; + + var height = $(window).height() - $("header").height() - $(".tabs").height(); + $(".content-container").css("height", height); + //绑定返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function () { + ctrl.backCallback(); + }) + + //点击系统返回按钮 + api.addEventListener({ + name: 'keyback' + }, function (ret, err) { + ctrl.backCallback(); + }); + + //点击开始巡检按钮 + $api.addEvt($api.dom("#start-inspect-btn"), "touchend", function () { + ctrl.handleStartInspect() + }) + + //点击配电室资料tab按钮 + $api.addEvt($api.dom("#pr-msg-tab"), "touchend", function () { + if (ctrl.tabType == 'msg') { + return + } + + $api.addCls(this, "active"); + $api.removeCls($api.dom("#inspection-log-tab"), "active"); + $api.removeCls($api.dom("#repair-log-tab"), "active"); + $api.css($api.dom("#pr-msg-panel"), 'display:block'); + $api.css($api.dom("#inspection-log-panel"), 'display:none'); + $api.css($api.dom("#repair-log-panel"), 'display:none'); + + ctrl.tabType = 'msg' + + ctrl.initPrMsgTab() + }, false); + + //点击巡检日志tab按钮 + $api.addEvt($api.dom("#inspection-log-tab"), "touchend", function () { + if (ctrl.tabType == 'inspection') { + return + } + + $api.addCls(this, "active"); + $api.removeCls($api.dom("#pr-msg-tab"), "active"); + $api.removeCls($api.dom("#repair-log-tab"), "active"); + $api.css($api.dom("#inspection-log-panel"), 'display:block'); + $api.css($api.dom("#pr-msg-panel"), 'display:none'); + $api.css($api.dom("#repair-log-panel"), 'display:none'); + + ctrl.tabType = 'inspection' + + // 初始化巡检日志 tab + ctrl.getInspectLog(); + + }, false); + + //点击抢修日志tab按钮 + $api.addEvt($api.dom("#repair-log-tab"), "touchend", function () { + if (ctrl.tabType == 'repair') { + return + } + + $api.addCls(this, "active"); + $api.removeCls($api.dom("#pr-msg-tab"), "active"); + $api.removeCls($api.dom("#inspection-log-tab"), "active"); + $api.css($api.dom("#repair-log-panel"), 'display:block'); + $api.css($api.dom("#pr-msg-panel"), 'display:none'); + $api.css($api.dom("#inspection-log-panel"), 'display:none'); + + ctrl.tabType = 'repair' + + ctrl.getRepairLogs(); + + }, false); + + /* + ====================配电室资料 tab 相关事件==================== + */ + // 点击配电室资料列表 ,在线浏览 pdf + $("#pr-msg-list").on("touchend", ".pr-msg-list-item", function () { + + var url = ctrl.baseUrl + $(this).data("url"); + + api.download({ + url: url, // 填写要下载文档的url + report: true, + cache: true, + allowResume: true + }, function (ret, err) { + if (ret.state == 1) { //下载成功 + + var superFile = api.require('superFile'); + superFile.open({ + path: ret.savePath, + }) + + } + }); + + }) + + /* + ====================巡检日志 tab 中相关事件==================== + */ + $startTime.on('change', function () { + var startTimeValue = $startTime.val(); + var endTimeValue = $endTime.val(); + if (startTimeValue) { + $lbStartTime.html(startTimeValue); + } else { + $lbStartTime.html("开始日期"); + } + }) + + $endTime.on('change', function () { + var startTimeValue = $startTime.val(); + var endTimeValue = $endTime.val(); + if (endTimeValue) { + $lbEndTime.html(endTimeValue); + } else { + $lbEndTime.html("结束日期"); + } + }) + // 点击巡检日志跳转到详情页 + $("#inspect-logs").on("touchend", ".item", function () { + var id = $(this).data('id'); + var name = $(this).data('name'); + api.openWin({ + name: 'inspectionLogDetail', + url: './inspectionLogDetail.html', + pageParam: { + id: id, + name: name + } + }); + }) + //点击查询巡检日志 + $api.addEvt($api.dom("#query"), "touchend", function () { + $api.html($api.dom('#inspect-logs'), ''); + _this.currentPage = 1; + _this.getInspectLog(); + }); + + /* + =======================抢修日志 tab 相关事件====================== + */ + + $repairStartTime.on('change', function () { + var startTimeValue = $repairStartTime.val(); + if (startTimeValue) { + $repairLbStartTime.html(startTimeValue); + } else { + $repairLbStartTime.html("开始日期"); + } + }) + + $repairEndTime.on('change', function () { + var endTimeValue = $repairEndTime.val(); + if (endTimeValue) { + $repairLbEndTime.html(endTimeValue); + } else { + $repairLbEndTime.html("结束日期"); + } + + }) + + $api.addEvt($api.dom("#repair-query"), "touchend", function () { + $api.html($api.dom('#repair-logs'), ''); + ctrl.repairCurrentPage = 1; + ctrl.getRepairLogs(); + }); + + //跳转到抢修日志详情页 + $("#repair-logs").on("touchend", ".item", function () { + var id = $(this).data('id'); + var name = $(this).data('name'); + api.openWin({ + name: 'repairDetail', + url: './repairLogDetail.html', + pageParam: { + id: id, + name: name + } + }); + }) + + // 查询抢修日志 + $api.addEvt($api.dom("#repair-query"), "touchend", function () { + $api.html($api.dom('#repair-logs'), ''); + ctrl.repairCurrentPage = 1; + ctrl.getRepairLogs(); + }); + + } + /** + * 弹出提示框 + */ + + ctrl.toast = function (msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + + ctrl.backCallback = function () { + //关闭首页正在加载的提示框 + api.execScript({ + name: 'index', + frameName: 'featureFrame', + script: "api.hideProgress();" + }); + api.setScreenOrientation({ + orientation: 'auto_portrait' + }); + api.setFullScreen({ + fullScreen: false + }); + api.closeWin({}); + } + + //上拉加载 + api.addEventListener({ + name: 'scrolltobottom' + }, function (ret, err) { + if (ctrl.tabType == 'inspection') { + + ctrl.currentPage++; + if (ctrl.currentPage > ctrl.totalPages) { + ctrl.toast("没有更多了"); + return; + } + ctrl.getInspectionLog(); + + } else if (ctrl.tabType == 'repair') { + + ctrl.repairCurrentPage++; + if (ctrl.repairCurrentPage > ctrl.repairTotalPages) { + ctrl.toast("没有更多了"); + return; + } + ctrl.getRepairLogs(); + + } + + }); + + //下拉刷新 + api.setRefreshHeaderInfo({ + loadingImg: 'widget://image/refresh.png', + bgColor: '#ccc', + textColor: '#fff', + textDown: '下拉刷新...', + textUp: '松开刷新...' + }, function (ret, err) { + if (ctrl.tabType == 'msg') { + + ctrl.initPrMsgTab() + + } else if (ctrl.tabType == 'inspection') { + + $startTime.val(''); + $endTime.val(''); + $lbStartTime.html("开始日期"); + $lbEndTime.html("结束日期"); + _this.currentPage = 1; + _this.getInspectLog(); + + } else if (ctrl.tabType == 'repair') { + + $repairStartTime.val(''); + $repairEndTime.val(''); + $repairLbStartTime.html("开始日期"); + $repairLbEndTime.html("结束日期"); + ctrl.repairCurrentPage = 1; + ctrl.getRepairLogs(); + + } + + api.refreshHeaderLoadDone(); + }); + + /* + ====================配电室资料 tab 相关=================== + */ + // 初始化 配电室资料 tab + ctrl.initPrMsgTab = function () { + ctrl.getPrMsg() + ctrl.getPrMsgList() + } + + // 获取配电室信息 + ctrl.getPrMsg = function () { + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + + var url = "/ems/rest/power/room/detail"; + var data = { + prId: ctrl.prId, + } + $api.get(url, data, function (res, err) { + api.hideProgress(); + + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (res.code == 200) { + ctrl.renderPrMsg(res.body); + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + }) + } + + // 渲染配电室信息panel + ctrl.renderPrMsg = function (data) { + + $('#pr-msg').empty(); + + var tpl = ''; + tpl += '

    配电室联系人:{{people}}

    '; + tpl += '

    联系人电话:{{tel}}

    '; + tpl += '

    配电室位置:{{province}} {{city}} {{address}}

    '; + + var dom = tpl.replace('{{people}}', data.lxr1) + .replace('{{tel}}', data.lxr1Mobile) + .replace('{{province}}', data.province) + .replace('{{city}}', data.city) + .replace('{{address}}', data.address) + + $api.html($api.dom('#pr-msg'), dom); + } + + // 获取配电室资料列表 + ctrl.getPrMsgList = function () { + var url = "/ems/rest/pr/file/list"; + var data = { + prId: ctrl.prId, + } + $api.get(url, data, function (res, err) { + + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (res.code == 200 && res.body) { + var length = res.body.length; + + ctrl.baseUrl = res.prefix; + + $('#pr-msg-list').empty(); + + for (var i = 0; i < length; i++) { + var listItem = res.body[i] + $api.append($api.dom('#pr-msg-list'), ctrl.getPrMsgListDOM(listItem)); + } + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + }) + } + + // 渲染配电室信息列表 + ctrl.getPrMsgListDOM = function (listItem) { + + var tpl = ''; + + tpl += '
    ' + tpl += '' + tpl += '
    ' + + var dom = tpl.replace('{{url}}', listItem.fileUrl) + .replace('{{name}}', listItem.fileName) + + return dom; + } + + /* + ===================巡检日志 tab 相关============== + */ + //获取巡检日志 + ctrl.getInspectLog = function () { + //显示载入动画 + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + var dateUtil = new DateUtils(); + var startDate = $('#startTime-select').val(); + if (startDate) { + dateUtil.setDate(startDate); + startDate = dateUtil.getMillisecond(); + } + var endDate = $('#endTime-select').val(); + if (endDate) { + dateUtil.setDate(endDate); + endDate = dateUtil.getMillisecond(); + } + // 如果开始时间大于结束时间 交换 + startDate && endDate && (startDate > endDate) && (startDate = [endDate, endDate = startDate][0]); + var url = '/ems/rest/common/xj/log/page'; + var data = { + "page": ctrl.currentPage, + "pageSize": ctrl.pageSize, + "prId": ctrl.prId, + "startDate": startDate, + "endDate": endDate, + }; + + $api.get(url, data, function (res, err) { + if (err) { + //隐藏载入动画 + api.hideProgress(); + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != 200) { + //隐藏载入动画 + api.hideProgress(); + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } else { + ctrl.renderInspectLog(res); + } + + } + }); + + } + ctrl.renderInspectLog = function (res) { + + ctrl.logList = res.body.records; + ctrl.totalPages = res.body.totalPages; + if (ctrl.currentPage == 1) { + $api.html($api.dom('#inspect-logs'), ''); + } + + if (ctrl.totalPages == 0) { + //隐藏载入动画 + api.hideProgress(); + api.refreshHeaderLoadDone(); + $api.css($api.dom('#inspect-logs'), "display:none"); + $api.css($api.dom('#inspect-log-empty-tips'), "display:block"); + } else { + var logList = ctrl.logList; + var length = logList.length; + for (var i = 0; i < length; i++) { + $("#inspect-logs").append(ctrl.getLogDom(logList[i])); + } + //隐藏载入动画 + api.hideProgress(); + $api.css($api.dom('#inspect-logs'), "display:block"); + $api.css($api.dom('#inspect-log-empty-tips'), "display:none"); + + } + } + ctrl.getLogDom = function (item) { + + var tpl = '
    '; + tpl += ''; + tpl += '
    '; + tpl += '
    日检:{{dailyCount}}项
    '; + tpl += '
    周检:{{weekCount}}项
    ' + tpl += '
    月检:{{monthCount}}项
    ' + + tpl += '
    复检:{{reviewCount}}项
    '; + tpl += '
    突发:{{burstCount}}项
    '; + tpl += '
    异常:{{abnormalCount}}项
    '; + + + tpl += '
    巡检组长:{{by}}
    '; + //tpl += '
    巡检人电话{{tel}}
    '; + tpl += ''; + + return tpl.replace('{{title}}', item.prName) + .replace('{{date}}', item.xjDate) + .replace('{{dailyCount}}', item.dayInspectCount) + .replace('{{weekCount}}', item.weekInspectCount) + .replace('{{monthCount}}', item.monthInspectCount) + .replace('{{abnormalCount}}', item.exceptionCount) + + .replace('{{reviewCount}}', item.fjCount) + .replace('{{burstCount}}', item.tfCount) + .replace('{{by}}', item.employeeName) + // .replace('{{tel}}', item.xjzz.lxMobile) + .replace('{{id}}', item.taskId) + .replace('{{name}}', item.prName) + } + + /* + ===================抢修日志 tab 相关================== + */ + ctrl.getRepairLogs = function () { + var $startTime = $('#repair-startTime-select'); + var $endTime = $('#repair-endTime-select'); + //显示载入动画 + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + + var dateUtil = new DateUtils(); + + var startDate = $startTime.val(); + if (startDate) { + dateUtil.setDate(startDate); + startDate = dateUtil.getMillisecond(); + } + + var endDate = $endTime.val(); + if (endDate) { + dateUtil.setDate(endDate); + endDate = dateUtil.getMillisecond(); + } + // 如果开始时间大于结束时间 交换 + startDate && endDate && (startDate > endDate) && (startDate = [endDate, endDate = startDate][0]); + var url = '/ems/rest/qx/order/page'; + var data = { + "page": ctrl.repairCurrentPage, + "pageSize": ctrl.repairPageSize, + "prId": ctrl.prId, + "startDate": startDate || null, + "endDate": endDate || null, + "flag": ctrl.flag // 处理完(日志) + }; + $api.get(url, data, function (res, err) { + if (err) { + //隐藏载入动画 + api.hideProgress(); + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != 200) { + //隐藏载入动画 + api.hideProgress(); + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } else { + ctrl.renderRepairLogs(res); + } + + } + }); + } + + ctrl.renderRepairLogs = function (res) { + var logList = res.body.records; + if (ctrl.repairCurrentPage == 1) { + $api.html($api.dom('#repair-logs'), ''); + } + + ctrl.repairTotalPages = res.body.totalPages; + if (ctrl.repairTotalPages == 0) { + // 隐藏载入动画 + api.hideProgress(); + api.refreshHeaderLoadDone(); + $api.css($api.dom('#repair-logs'), "display:none"); + $api.css($api.dom('#repair-log-empty-tips'), "display:block"); + + } else { + var length = logList.length; + for (var i = 0; i < length; i++) { + $api.append($api.dom('#repair-logs'), ctrl.getRepairLogDom(logList[i])); + } + //隐藏载入动画 + api.hideProgress(); + $api.css($api.dom('#repair-logs'), "display:block"); + $api.css($api.dom('#repair-log-empty-tips'), "display:none"); + + } + + } + + ctrl.getRepairLogDom = function (item) { + + var tpl = ''; + tpl += '
    '; + tpl += ''; + tpl += '
    '; + tpl += '
    '; + tpl += '{{problem}}'; + tpl += '
    '; + if (!item.orderDesc) { + item.orderDesc = ''; + } + var dateUtil = new DateUtils(); + dateUtil.setDate(item.createTime); + var createTime = dateUtil.getFormattedDate('yyyy-MM-dd hh:mm:ss'); + return tpl.replace('{{title}}', item.prName).replace('{{problem}}', item.orderDesc) + .replace('{{date}}', createTime) + .replace('{{id}}', item.qxOrderId); + } + + ctrl.handleStartInspect = function () { + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + + var url = "/ems/rest/xj/task/start"; + var data = { + taskId: ctrl.taskId, + } + $api.put(url, data, function (res, err) { + api.hideProgress(); + + if (err) { + ctrl.toast("网络请求失败,请稍后再试"); + } else { + if (res.code == 200) { + // 跳转到巡检内容页 + api.openWin({ + name: 'inspectionItem', + url: './inspectionItem.html', + pageParam: { + id: ctrl.prId, + name: ctrl.prName, + taskid: ctrl.taskId + } + }); + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + }) + } + + ctrl.init(); + +} diff --git a/app-saas-src/script/inspectionRepair/inspectionItem.js b/app-saas-src/script/inspectionRepair/inspectionItem.js new file mode 100644 index 0000000..68266ae --- /dev/null +++ b/app-saas-src/script/inspectionRepair/inspectionItem.js @@ -0,0 +1,1382 @@ +apiready = function () { + var ctrl = { + init: {}, + bind: {}, + backCallback: {}, + + firstLoadUsual: !$api.getStorage('usualIns') ? 'yes' : 'no', // yes:当前 日常检查项 页面是从异常巡检项填写页保存跳转来,no:当前页面是首次渲染 + firstLoadReview: !$api.getStorage('reviewIns') ? 'yes' : 'no', // yes:当前 复检检查项 页面是从异常巡检项填写页保存跳转来,no:当前页面是首次渲染 + firstLoadNew: !$api.getStorage('newIns') ? 'yes' : 'no', // yes:当前 新增检查项 页面是从异常巡检项填写页保存跳转来,no:当前页面是首次渲染 + + // 当前展示的tab 页类型,1:日常检查项 2:突发项 3:复检项 + tabType: 1, + date: '', + + prId: null, + prName: '', + taskId: null, + + problems: null, // 设备缺陷信息字符串 + problemsObj: null, // 设备缺陷信息对象 + + emptyType: { // 对应的tab是否需要展示无数据提示 + usual: false, + review: false, + new: false + }, + + newTflen: 0, // 新增突发项个数 + + serverPicUrls: [], + + } + + ctrl.init = function () { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + + ctrl.prId = api.pageParam.id; + ctrl.prName = api.pageParam.name; + ctrl.taskId = api.pageParam.taskid; + + // 获取保存的设备缺陷信息 + if ($api.getStorage('problems')) { + ctrl.problems = $api.getStorage('problems'); + ctrl.problemsObj = JSON.parse($api.getStorage('problems')) + } + + var dateUtil = new DateUtils(); + ctrl.date = dateUtil.getFormattedDate('yyyy-MM-dd'); + + // 将title改成配电室名 + $api.html($api.dom('#title-prname'), ctrl.prName); + + ctrl.initUsualTab() + ctrl.initReviewTab() + ctrl.renderNewTasks() + + ctrl.bind(); + + } + + ctrl.bind = function () { + + var height = $(window).height() - $("header").height() - $(".tabs").height(); + $(".content-container").css("height", height); + //绑定返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function () { + ctrl.backCallback(); + }) + + //点击系统返回按钮 + api.addEventListener({ + name: 'keyback' + }, function (ret, err) { + ctrl.backCallback(); + }); + + //点击 日常检查项 tab按钮 + $api.addEvt($api.dom("#usual-task-tab"), "touchend", function () { + if (ctrl.tabType == 1) { + return + } + + if (ctrl.emptyType.usual) { + $api.css($api.dom('#inspectionitem-empty-tips'), "display:block"); + } else { + $api.css($api.dom('#inspectionitem-empty-tips'), "display:none"); + } + + $api.addCls(this, "active"); + $api.removeCls($api.dom("#review-task-tab"), "active"); + $api.removeCls($api.dom("#new-task-tab"), "active"); + $api.css($api.dom("#usual-task-panel"), 'display:block'); + $api.css($api.dom("#review-task-panel"), 'display:none'); + $api.css($api.dom("#new-task-panel"), 'display:none'); + + ctrl.tabType = 1 + + // ctrl.initPrMsgTab() + }, false); + + //点击 复查检查项 tab按钮 + $api.addEvt($api.dom("#review-task-tab"), "touchend", function () { + if (ctrl.tabType == 3) { + return + } + + if (ctrl.emptyType.review) { + $api.css($api.dom('#inspectionitem-empty-tips'), "display:block"); + } else { + $api.css($api.dom('#inspectionitem-empty-tips'), "display:none"); + } + + $api.addCls(this, "active"); + $api.removeCls($api.dom("#usual-task-tab"), "active"); + $api.removeCls($api.dom("#new-task-tab"), "active"); + $api.css($api.dom("#review-task-panel"), 'display:block'); + $api.css($api.dom("#usual-task-panel"), 'display:none'); + $api.css($api.dom("#new-task-panel"), 'display:none'); + + ctrl.tabType = 3 + + // 初始化复检检查项 tab + // ctrl.initReviewTab() + + }, false); + + //点击 新增检查项 tab按钮 + $api.addEvt($api.dom("#new-task-tab"), "touchend", function () { + if (ctrl.tabType == 2) { + return + } + + if (ctrl.emptyType.new) { + $api.css($api.dom('#inspectionitem-empty-tips'), "display:block"); + } else { + $api.css($api.dom('#inspectionitem-empty-tips'), "display:none"); + } + + $api.addCls(this, "active"); + $api.removeCls($api.dom("#review-task-tab"), "active"); + $api.removeCls($api.dom("#usual-task-tab"), "active"); + $api.css($api.dom("#new-task-panel"), 'display:block'); + $api.css($api.dom("#review-task-panel"), 'display:none'); + $api.css($api.dom("#usual-task-panel"), 'display:none'); + + ctrl.tabType = 2 + + // ctrl.getRepairLogs(); + + }, false); + + // radio选择框改变事件 + + + /* + ====================日常检查项 事件====================== + */ + // 点击任意地方,关闭task-item-status-ok弹框 + $api.addEvt($api.dom("body"), "touchend", function () { + + // var domLis = $('.task-item-status-ok.display') + // // var domLis = $api.dom(".task-item-status-ok.display") + // var length = domLis.length + + // for (var i = 0; i < length; i++) { + // $api.removeCls(domLis[i], 'display'); + // } + + }, false); + + + /* + ====================复查检查项 事件====================== + */ + + /* + ====================新增检查项 事件====================== + */ + // 新增突发检查项 按钮 点击事件 + $('#new-add-btn').on("touchend", function () { + + api.prompt({ + title: '巡检项描述:' + }, function (ret, err) { + var text = ret.text; + + if (ret.buttonIndex == 2) { // 点击确定按钮 + ctrl.addNewInspItem(text); + } + }) + + }) + + /* + * =====================自动勾选、巡检完成=================== + */ + // 自动勾选剩余项按钮 点击事件 + $('#auto-checked-all').on("touchend", function () { + api.showProgress({ + title: '处理中...', + text: '请稍后', + modal: true + }); + + // 1、将剩余未勾选的 √ 状态改为选中状态 + var domList = $(".task-item[data-status='']") + var len = domList.length + for (var i = 0; i < len; i++) { + var dom = $($(domList[i]).find('.task-item-img-success')[0]) + + if (!dom.hasClass('light')) { + dom.addClass('light') + } + } + // 2、将剩余未选项的父元素 .task-item 上的 data-status 属性值填充为0,并更新localStorage + var usualIns = $api.getStorage('usualIns'); + var reviewIns = $api.getStorage('reviewIns'); + var newIns = $api.getStorage('newIns'); + + var usualInsObj = usualIns? JSON.parse(usualIns) : null; + var reviewInsObj = reviewIns? JSON.parse(reviewIns) : null; + var newInsObj = newIns? JSON.parse(newIns) : null; + + var taskItemDomList = $('.task-item') + var length = taskItemDomList.length + for (var j = 0; j < length; j++) { + var dom = $(taskItemDomList[j]) + var status = dom.data('status') + var itemId; + if (status === '') { + dom.data('status', 0) + + // 更新 localStorage + var id = $(dom.parents('.task-panel')[0]).attr('id') + + switch (id) { + case 'usual-task-panel': + itemId = dom.data('itemid') + usualInsObj[itemId] = 0; + $api.rmStorage('usualIns'); + $api.setStorage('usualIns', JSON.stringify(usualInsObj)); + break; + case 'review-task-panel': + itemId = dom.data('itemid') + reviewInsObj[itemId] = 0; + $api.rmStorage('reviewIns'); + $api.setStorage('reviewIns', JSON.stringify(reviewInsObj)); + break; + case 'new-task-panel': + itemId = dom.data('index') + newInsObj[itemId]['s'] = 0; + $api.rmStorage('newIns'); + $api.setStorage('newIns', JSON.stringify(newInsObj)); + break; + } + } + } + + api.hideProgress(); + }) + + // 巡检完成 + $('#inspection-finished').on("touchend", function () { + //1、检查是否存在未勾选的巡检项 + var emptyItemList = $(".task-item[data-status='']"); + if (emptyItemList.length) { + + api.confirm({ + title: '', + msg: '有未勾选的巡检项', + buttons: ['确定', '取消'] + }, function(ret, err) { + + }); + + return; + } + + api.showProgress({ + title: '提交中...', + text: '请稍后', + modal: false + }); + //2、从localStorage中获取设备缺陷信息(pics路径、desc描述) + // 存在新增突发项时,提交新增突发项 + var newItemDoms = $('#new-task-panel .task-item') + ctrl.newTflen = newItemDoms.length; + if (ctrl.newTflen) { + + newItemDoms.forEach(function (newItemDom, newItemDomIndex) { + var checkItem = $($(newItemDom).find('.task-item-desc')[0]).text(); + var status = $(newItemDom).data('status'); + + (function () { + ctrl.submitTfItem(checkItem, status, $(newItemDom), newItemDomIndex); + })() + }) + + } else { + + if (ctrl.problems) { // 没有突发项提交,但有设备缺陷 + ctrl.handleUploadPic(); + + } else { // 没有突发项提交,也没有设备缺陷 + + ctrl.comitUsual(); + + } + + } + + //3、先将每一条设备缺陷中的图片上传,再将当前设备缺陷提交;循环提交全部设备缺陷 + //4、调用巡检完成接口,完成当前配电室的巡检 + //5、将 localStorage 中保存的巡检项状态信息 和 设备缺陷信息清空 + + + }) + + } + + /* + 日常检查项 tab 中的事件绑定 + */ + ctrl.usualBind = function () { + // 点击设备分类,自动折叠当前分类的巡检项 + $("#usual-task-panel").on("touchend", ".category-name", function () { + + // 隐藏 当前分类的巡检项 + $api.toggleCls($(this).next()[0], 'hide'); + // 分类名前的箭头旋转90度 + $api.toggleCls($api.dom(this, 'img'), 'transform'); + + }) + + // 点击√ + $("#usual-task-panel .task-item-img-success").on("touchend", "img", function (e) { + e.stopPropagation(); + //切换√选中状态 + $api.addCls($(this).parent()[0], 'light'); + // 将同一项的x选中状态取消 + $api.removeCls($($(this).parents()[0]).siblings('.task-item-img-error')[0], 'light'); + // 切换弹框显示状态 + $api.toggleCls($(this).siblings('.task-item-status-ok')[0], 'display') + // 更新 父元素 .task-item 上的 data-status 属性值 + // 1、获取 当前巡检项选择的状态值 + var val = $($(this).siblings('.task-item-status-ok')[0]).children("input:checked")[0].value + // 2、将状态值 更新到父元素 .task-item 上的 data-status 属性 + var itemDom = $($(this).parents('.task-item')[0]) + itemDom.data('status', val) + + // 保存在 localStorage 中的设备缺陷,判断是否含有当前巡检项的问题,若有则删除,并更新设备缺陷 storage + var itemId = itemDom.data('itemid') + var problems = $api.getStorage('problems'); + if (!problems) { + return + } + var problemsObj = JSON.parse(problems); + var probArr = problemsObj.arr; + var len = probArr.length; + if (len) { + var _probArr = problemsObj.arr; + + probArr.forEach(function (t, i) { + if (t.itemId == itemId) { + _probArr.splice(i, 1) + } + }) + + problemsObj.arr = _probArr; + + $api.rmStorage('problems'); + $api.setStorage('problems', JSON.stringify(problemsObj)); + } + }) + + // 单选框 选中事件 + $('#usual-task-panel input[type=radio]').change(function () { + + // 将 value 值 更新到父元素 .task-item 上的 data-status 属性值 + var value = this.value + + $(this).parents('.task-item').data('status', value) + + }) + + // 点击×,切换×选中状态 + $("#usual-task-panel .task-item-img-error").on("touchend", "img", function () { + + // 切换x选中状态 + // $api.addCls($(this).parent()[0], 'light'); + // 将同一项的√选中状态取消 + // $api.removeCls($($(this).parents()[0]).siblings('.task-item-img-success')[0], 'light'); + + /** + * 将当前item的勾选状态更新到localStorage中的 usualIns 中 + * */ + var usualInsObj = JSON.parse($api.getStorage('usualIns')) + + // 日常检查项domList + var usualItems = $('#usual-task-panel li.task-item'); + + usualItems.forEach(function (uItem, uI) { + var itemId = $(uItem).attr('data-itemid') + usualInsObj[itemId] = $(uItem).attr('data-status') + }) + + $api.rmStorage('usualIns'); + $api.setStorage('usualIns', JSON.stringify(usualInsObj)) + + // 将状态值 更新到父元素 .task-item 上的 data-status 属性 + // $(this).parents('.task-item').data('status', 2); + + var itemId = $($(this).parents('.task-item')[0]).data('itemid'); + // 跳转到设备缺陷页 + api.openWin({ + name: 'inspectionProblem', + url: './inspectionProblem.html', + reload: true, + pageParam: { + prid: ctrl.prId, + taskid: ctrl.taskId, + itemid: itemId, + source: ctrl.tabType, + prname: ctrl.prName, + tabtype: 'usual' + } + }); + + }) + + } + + /** + * 复查检查项 tab 中的事件绑定 + */ + ctrl.reviewBind = function () { + + // 点击√ + $("#review-task-panel .task-item-img-success").on("touchend", "img", function (e) { + e.stopPropagation(); + //切换√选中状态 + $api.addCls($(this).parent()[0], 'light'); + // 将同一项的x选中状态取消 + $api.removeCls($($(this).parents()[0]).siblings('.task-item-img-error')[0], 'light'); + // 切换弹框显示状态 + $api.toggleCls($(this).siblings('.task-item-status-ok')[0], 'display') + // 更新 父元素 .task-item 上的 data-status 属性值 + // 1、获取 当前巡检项选择的状态值 + var val = $($(this).siblings('.task-item-status-ok')[0]).children("input:checked")[0].value + // 2、将状态值 更新到父元素 .task-item 上的 data-status 属性 + var itemDom = $($(this).parents('.task-item')[0]) + itemDom.data('status', val) + + // 保存在 localStorage 中的设备缺陷,判断是否含有当前巡检项的问题,若有则删除,并更新设备缺陷 storage + var itemId = itemDom.data('itemid') + var problems = $api.getStorage('problems'); + if (!problems) { + return + } + var problemsObj = JSON.parse(problems); + var probArr = problemsObj.arr; + var len = probArr.length; + if (len) { + var _probArr = problemsObj.arr; + + probArr.forEach(function (t, i) { + if (t.itemId == itemId) { + _probArr.splice(i, 1) + } + }) + + problemsObj.arr = _probArr; + + $api.rmStorage('problems'); + $api.setStorage('problems', JSON.stringify(problemsObj)); + } + }) + + // 单选框 选中事件 + $('#review-task-panel input[type=radio]').change(function () { + + // 将 value 值 更新到父元素 .task-item 上的 data-status 属性值 + var value = this.value + + $(this).parents('.task-item').data('status', value) + + }) + + // 点击×,切换×选中状态 + $("#review-task-panel .task-item-img-error").on("touchend", "img", function () { + + // 切换x选中状态 + // $api.addCls($(this).parent()[0], 'light'); + // 将同一项的√选中状态取消 + // $api.removeCls($($(this).parents()[0]).siblings('.task-item-img-success')[0], 'light'); + + /** + * 将当前item的勾选状态更新到localStorage中的 reviewIns 中 + * */ + var reviewInsObj = JSON.parse($api.getStorage('reviewIns')) + + // 日常检查项domList + var reviewItems = $('#review-task-panel li.task-item'); + + reviewItems.forEach(function (vItem, vI) { + var itemId = $(vItem).attr('data-itemid') + reviewInsObj[itemId] = $(vItem).attr('data-status') + }) + + $api.rmStorage('reviewIns'); + $api.setStorage('reviewIns', JSON.stringify(reviewInsObj)) + + // 将状态值 更新到父元素 .task-item 上的 data-status 属性 + // $(this).parents('.task-item').data('status', 2); + + var itemId = $($(this).parents('.task-item')[0]).data('itemid'); + // 跳转到设备缺陷页 + api.openWin({ + name: 'inspectionProblem', + url: './inspectionProblem.html', + reload: true, + pageParam: { + prid: ctrl.prId, + taskid: ctrl.taskId, + itemid: itemId, + source: ctrl.tabType, + prname: ctrl.prName, + tabtype: 'review' + } + }); + + }) + + } + + /** + * 新增检查项 tab 中的事件绑定 + */ + ctrl.newBind = function () { + // 点击√ + $($("#new-task-panel .task-item-img-success").last()[0]).on("touchend", "img", function (e) { + e.stopPropagation(); + //切换√选中状态 + $api.addCls($(this).parent()[0], 'light'); + // 将同一项的x选中状态取消 + $api.removeCls($($(this).parents()[0]).siblings('.task-item-img-error')[0], 'light'); + // 切换弹框显示状态 + $api.toggleCls($(this).siblings('.task-item-status-ok')[0], 'display') + // 更新 父元素 .task-item 上的 data-status 属性值 + // 1、获取 当前巡检项选择的状态值 + var val = $($(this).siblings('.task-item-status-ok')[0]).children("input:checked")[0].value + // 2、将状态值 更新到父元素 .task-item 上的 data-status 属性 + var itemDom = $($(this).parents('.task-item')[0]) + itemDom.data('status', val) + + // 保存在 localStorage 中的设备缺陷,判断是否含有当前巡检项的问题,若有则删除,并更新设备缺陷 storage + var index = itemDom.data('index') + var problems = $api.getStorage('problems'); + if (!problems) { + return + } + var problemsObj = JSON.parse(problems); + var newProbArr = problemsObj.newArr; + var len = newProbArr.length; + if (len) { + var _newProbArr = problemsObj.newArr; + + newProbArr.forEach(function (t, i) { + if (t.index == index) { + _newProbArr.splice(i, 1) + } + }) + + problemsObj.newArr = _newProbArr; + + $api.rmStorage('problems'); + $api.setStorage('problems', JSON.stringify(problemsObj)); + } + }) + + // 单选框 选中事件 + $('#new-task-panel input[type=radio]').change(function () { + + // 将 value 值 更新到父元素 .task-item 上的 data-status 属性值 + var value = this.value + + $(this).parents('.task-item').data('status', value) + + }) + + // 点击×,切换×选中状态 + $($("#new-task-panel .task-item-img-error").last()[0]).on("touchend", "img", function () { + + // 切换x选中状态 + // $api.addCls($(this).parent()[0], 'light'); + // 将同一项的√选中状态取消 + // $api.removeCls($($(this).parents()[0]).siblings('.task-item-img-success')[0], 'light'); + + /** + * 将当前item的勾选状态更新到localStorage中的 newIns 中 + * */ + var newInsObj = JSON.parse($api.getStorage('newIns')) + + // 日常检查项domList + var newItems = $('#new-task-panel li.task-item'); + + newItems.forEach(function (vItem, vI) { + var index = $(vItem).data('index') + newInsObj[index]['s'] = $(vItem).data('status') + }) + + $api.rmStorage('newIns'); + $api.setStorage('newIns', JSON.stringify(newInsObj)) + + // 将状态值 更新到父元素 .task-item 上的 data-status 属性 + // $(this).parents('.task-item').data('status', 2); + + var index = $($(this).parents('.task-item')[0]).data('index'); + // 跳转到设备缺陷页 + api.openWin({ + name: 'inspectionProblem', + url: './inspectionProblem.html', + reload: true, + pageParam: { + prid: ctrl.prId, + taskid: ctrl.taskId, + itemid: index, + source: ctrl.tabType, + prname: ctrl.prName, + tabtype: 'new' + } + }); + + }) + + } + + + /** + * 弹出提示框 + */ + + ctrl.toast = function (msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + + ctrl.backCallback = function () { + //关闭首页正在加载的提示框 + api.execScript({ + name: 'index', + frameName: 'featureFrame', + script: "api.hideProgress();" + }); + api.setScreenOrientation({ + orientation: 'auto_portrait' + }); + api.setFullScreen({ + fullScreen: false + }); + api.closeWin({}); + } + + /* + ====================日常检查项====================== + */ + // 初始化 日常检查项 tab + ctrl.initUsualTab = function () { + ctrl.getUsualTasks() + } + // 获取日常检查项 + ctrl.getUsualTasks = function () { + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + + var url = "/ems/rest/xj/routine/item/list"; + var data = { + prId: ctrl.prId, + xjDate: ctrl.date + } + $api.get(url, data, function (res, err) { + api.hideProgress(); + + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (res.code == 200) { + if (res.body && res.body.length > 0) { + ctrl.renderUsualTasks(res.body) + + ctrl.usualBind() + + ctrl.emptyType.usual = false; + $api.css($api.dom('#inspectionitem-empty-tips'), "display:none"); + } else { + ctrl.emptyType.usual = true; + $api.css($api.dom('#inspectionitem-empty-tips'), "display:block"); + } + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + }) + } + + // 渲染日常巡检项 + ctrl.renderUsualTasks = function (data) { + /** + * 将当前日常检查项的每项的勾选状态保存到localStorage中 + * 结构: + * usualIns: { + * itemId: val // 勾选状态值 + * } + * */ + var type = false; + var usualInsObj; + if (ctrl.firstLoadUsual == 'yes') { // 当前日常检查项DOM是首次渲染,不是从异常检查项页面中保存后跳转而来 + type = true; + + var usualIns = '' + + // 将日常检查项信息初始化到localStorage中 + $api.setStorage('usualIns', JSON.stringify(usualIns)) + } else { // 当前日常检查项页面是从异常检查项页面中保存后跳转而来 + // 获取 localStorage 中保存的巡检项状态信息 + var usualIns = $api.getStorage('usualIns'); + usualInsObj = JSON.parse(usualIns); + } + + // 处理DOM + $('#usual-task-panel>ul').empty(); + + var tpl = ''; + var len = data.length + + for (var i = 0; i < len; i++) { + var categoryItem = data[i] + var itemList = categoryItem.routineItems + var categoryDom = '' + + categoryDom += '
  • ' + categoryDom += '
    ' + categoryDom += '' + categoryDom += '{{categoryName}}' + categoryDom += '
    ' + categoryDom += '
      ' + + categoryDom += (function (i, itemList, type) { + return getItemDom(i, itemList, type) + })(i, itemList, type) + + categoryDom += '
    ' + categoryDom += '
  • ' + + var dom = categoryDom.replace('{{categoryId}}', categoryItem.categoryId) + .replace('{{categoryName}}', categoryItem.categoryName) + + tpl += dom + } + + $api.html($api.dom('#usual-task-panel>ul'), tpl); + + // 获取 巡检项 dom + function getItemDom(index, itemList, type) { + var tpl = '' + var len = itemList.length + + if (type) { + var s = JSON.parse($api.getStorage('usualIns')); + var usualIns = s ? s : {}; + } + + for (var i = 0; i < len; i++) { + var item = itemList[i] + + var itemDom = '' + itemDom += '
  • ' + itemDom += '
    ' + itemDom += '{{taskItemDesc}}' + itemDom += '
    ' + itemDom += '
    ' + itemDom += '' + itemDom += '' + itemDom += '' + itemDom += '' + itemDom += '   ' + itemDom += '' + itemDom += '' + itemDom += '' + itemDom += '' + itemDom += '' + itemDom += '' + itemDom += '' + itemDom += '' + itemDom += '' + itemDom += '' + itemDom += '
    ' + itemDom += '
  • ' + + var dom = itemDom.replace('{{itemId}}', item.itemId) + .replace('{{taskItemDesc}}', item.checkItem) + .replace(/{{index}}/g, index + '' + i); + + if (type) { // 首次渲染 + dom = dom.replace('{{status}}', '') + .replace('{{checked0}}', 'checked') + .replace('{{checked1}}', '') + .replace('{{successClass}}', '') + .replace('{{errorClass}}', '') + } else { // 不是首次渲染,是从设备缺陷页跳转而来 + dom = dom.replace('{{status}}', usualInsObj[item.itemId]) + .replace('{{checked0}}', (usualInsObj[item.itemId] == '0' || usualInsObj[item.itemId] == '' || usualInsObj[item.itemId] == '2') ? 'checked' : '') + .replace('{{checked1}}', usualInsObj[item.itemId] == '1' ? 'checked' : '') + .replace('{{successClass}}', (usualInsObj[item.itemId] == '0' || usualInsObj[item.itemId] == '1') ? 'light' : '') + .replace('{{errorClass}}', usualInsObj[item.itemId] == '2' ? 'light' : '') + } + + + tpl += dom + + if (type) { + usualIns[item.itemId] = '' + } + } + + if (type) { + $api.rmStorage('usualIns'); + $api.setStorage('usualIns', JSON.stringify(usualIns)) + } + + return tpl; + } + } + + /* + ====================复查检查项====================== + */ + // 初始化 日常检查项 tab + ctrl.initReviewTab = function () { + ctrl.getReviewTasks() + } + // 获取复查检查项 + ctrl.getReviewTasks = function () { + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + + var url = "/ems/rest/xj/fj/item/list"; + var data = { + prId: ctrl.prId + } + $api.get(url, data, function (res, err) { + api.hideProgress(); + + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (res.code == 200) { + if (res.body && res.body.length > 0) { + ctrl.renderReviewTasks(res.body) + + ctrl.reviewBind() + + ctrl.emptyType.review = false; + $api.css($api.dom('#inspectionitem-empty-tips'), "display:block"); + } else { + // 显示无数据提示 + ctrl.emptyType.review = true; + $api.css($api.dom('#inspectionitem-empty-tips'), "display:none"); + } + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + }) + } + + // 渲染复查检查项 + ctrl.renderReviewTasks = function (data) { + + /** + * 将当前复查检查项的每项的勾选状态保存到localStorage中 + * 结构: + * reviewIns: { + * itemId: val // 勾选状态值 + * } + * */ + var type = false; + var reviewInsObj; + if (ctrl.firstLoadReview == 'yes') { // 当前检查项DOM是首次渲染,不是从异常检查项页面中保存后跳转而来 + type = true; + + reviewInsObj = {}; + + } else { // 当前检查项页面是从异常检查项页面中保存后跳转而来 + // 获取 localStorage 中保存的巡检项状态信息 + var reviewIns = $api.getStorage('reviewIns'); + reviewInsObj = JSON.parse(reviewIns); + } + + // 处理DOM + $('#review-task-panel>ul').empty(); + + var tpl = ''; + var len = data.length + + for (var i = 0; i < len; i++) { + var reviewItem = data[i] + var reviewDom = '' + + reviewDom += '
  • ' + reviewDom += '
    ' + reviewDom += '{{checkItem}}' + reviewDom += '
    ' + reviewDom += '
    ' + reviewDom += '' + reviewDom += '' + reviewDom += '' + reviewDom += '' + reviewDom += '   ' + reviewDom += '' + reviewDom += '' + reviewDom += '' + reviewDom += '' + reviewDom += '' + reviewDom += '' + reviewDom += '' + reviewDom += '' + reviewDom += '' + reviewDom += '' + reviewDom += '
    ' + reviewDom += '
  • ' + + var dom = reviewDom.replace('{{itemId}}', reviewItem.itemId) + .replace('{{checkItem}}', reviewItem.checkItem) + .replace(/{{index}}/g, i); + + if (type) { // 首次渲染 + dom = dom.replace('{{status}}', '') + .replace('{{checked0}}', 'checked') + .replace('{{checked1}}', '') + .replace('{{successClass}}', '') + .replace('{{errorClass}}', '') + } else { // 不是首次渲染,是从设备缺陷页跳转而来 + dom = dom.replace('{{status}}', reviewInsObj[reviewItem.itemId]) + .replace('{{checked0}}', (reviewInsObj[reviewItem.itemId] == '0' || reviewInsObj[reviewItem.itemId] == '' || reviewInsObj[reviewItem.itemId] == '2') ? 'checked' : '') + .replace('{{checked1}}', reviewInsObj[reviewItem.itemId] == '1' ? 'checked' : '') + .replace('{{successClass}}', (reviewInsObj[reviewItem.itemId] == '0' || reviewInsObj[reviewItem.itemId] == '1') ? 'light' : '') + .replace('{{errorClass}}', reviewInsObj[reviewItem.itemId] == '2' ? 'light' : '') + } + + if (type) { + reviewInsObj[reviewItem.itemId] = '' + } + + tpl += dom + } + + if (type) { + $api.setStorage('reviewIns', JSON.stringify(reviewInsObj)) + } + + $api.html($api.dom('#review-task-panel>ul'), tpl); + + } + + /* + ====================新增检查项====================== + */ + // 添加一项突发检查项 + ctrl.addNewInspItem = function (text) { + var liList = $('#new-task-panel .category-item li') + var index = liList ? liList.length : 0 + + var newDom = '' + + newDom += '
  • ' + newDom += '
    ' + newDom += '{{checkItem}}' + newDom += '
    ' + newDom += '
    ' + newDom += '' + newDom += '' + newDom += '' + newDom += '' + newDom += '   ' + newDom += '' + newDom += '' + newDom += '' + newDom += '' + newDom += '' + newDom += '' + newDom += '' + newDom += '' + newDom += '' + newDom += '' + newDom += '
    ' + newDom += '
  • ' + + var dom = newDom.replace('{{itemId}}', '') + .replace('{{checkItem}}', text) + .replace(/{{index}}/g, index + 1) + .replace('{{status}}', '') + .replace('{{checked0}}', 'checked') + .replace('{{checked1}}', '') + .replace('{{successClass}}', '') + .replace('{{errorClass}}', ''); + + $('#new-task-panel .category-item').append(dom); + + // 更新 localStorage + var newIns = $api.getStorage('newIns'); + var type = newIns ? true : false; + var newInsObj = type ? JSON.parse(newIns) : {}; + + var item = { + s: '', // status 状态值 + c: text // 检查项checkItem + } + + newInsObj[index + 1] = item; + + $api.rmStorage('newIns'); + $api.setStorage('newIns', JSON.stringify(newInsObj)); + + ctrl.newBind(); + // if (index == 0) { + // } + + } + + // 渲染新增检查项 + ctrl.renderNewTasks = function () { + + if (ctrl.firstLoadNew == 'yes') { + return; + } + + var newIns = $api.getStorage('newIns'); + var newInsObj = JSON.parse(newIns); + + var tpl = ''; + + $('#new-task-panel ul').empty(); + + for (var key in newInsObj) { + if (newInsObj.hasOwnProperty(key)) { + + var val = newInsObj[key]; + + var itemDom = '' + + itemDom += '
  • ' + itemDom += '
    ' + itemDom += '{{checkItem}}' + itemDom += '
    ' + itemDom += '
    ' + itemDom += '' + itemDom += '' + itemDom += '' + itemDom += '' + itemDom += '   ' + itemDom += '' + itemDom += '' + itemDom += '' + itemDom += '' + itemDom += '' + itemDom += '' + itemDom += '' + itemDom += '' + itemDom += '' + itemDom += '' + itemDom += '
    ' + itemDom += '
  • ' + + var dom = itemDom.replace('{{itemId}}', '') + .replace('{{checkItem}}', val.c) + .replace(/{{index}}/g, key) + .replace('{{status}}', val.s) + .replace('{{checked0}}', (val.s == '0' || val.s == '' || val.s == '2') ? 'checked' : '') + .replace('{{checked1}}', val.s == '1' ? 'checked' : '') + .replace('{{successClass}}', (val.s == '0' || val.s == '1') ? 'light' : '') + .replace('{{errorClass}}', val.s == '2' ? 'light' : ''); + + $api.append($api.dom('#new-task-panel ul'), dom); + + ctrl.newBind(); + + // tpl += dom + + } + + } + + // $api.html($api.dom('#new-task-panel ul'), tpl); + } + + /** + * =========================其他======================== + */ + // 提交突发项 + ctrl.submitTfItem = function (checkItem, status, dom, i) { + var url = '/ems/rest/xj/tf/item' + var data = { + taskId: ctrl.taskId, + checkItem: checkItem, + status: status + } + + $api.post(url, data, function (res, err) { + + if (err) { + api.hideProgress(); + ctrl.toast("网络请求失败,请稍后再试"); + } else { + if (res.code == 200) { + var itemId = res.body; + + // 更新新增突发项dom 上的itemid + dom.data('itemid', itemId); + + // 更新 localStorage 中 新增突发项的 问题信息 itemId + var index = dom.data('index'); + var newArr = ctrl.problemsObj.newArr; + if (newArr.length) { + newArr.forEach(function (item, i) { + if (item.index == index) { + item.itemId = itemId + } + }) + + // $api.rmStorage('problems'); + // $api.setStorage('problems', JSON.stringify(problemsObj)); + } + + if (ctrl.newTflen == (i + 1)) { + // 突发检查项已经全部提交 + // 判断是否有设备缺陷需要提交 + if (ctrl.problems) { + ctrl.handleUploadPic(); + } else { + // 如果没有设备缺陷,直接提交常规和复检巡检项日志 + ctrl.comitUsual(); + } + } + } else { + api.hideProgress(); + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + + }) + } + + // 处理设备缺陷中的图片上传 + ctrl.handleUploadPic = function () { + ctrl.probsArr = ctrl.problemsObj.arr.concat(ctrl.problemsObj.newArr); + + var len = ctrl.probsArr.length; + if (len) { + ctrl.probsArr.forEach(function (probsItem, probsIndex) { + if (probsItem.picture) { + var pictureArr = probsItem.picture.split(','); + var pictureLen = pictureArr.length; + + pictureArr.forEach(function (pictureItem, pictureIndex) { + (function () { + ctrl.uploadPic(pictureItem, probsIndex, pictureLen, pictureIndex) + })() + }) + } else { + ctrl.comitProblem(probsIndex); + } + }) + } + } + + // 上传设备缺陷图片 + ctrl.uploadPic = function (file, probsIndex, pictureLen, pictureIndex) { + var pictureIndex = pictureIndex; + + var url = "/ems/rest/common/file/pad_upload"; + var data = file + + $api.uploadFile(url, data, function (res, err) { + + if (err) { + ctrl.toast("网络请求失败,请稍后再试"); + } else { + if (res.code == 200) { + // 将返回的图片路径保存 + if (res.body && res.body.fileUrl) { + ctrl.serverPicUrls.push(res.body.fileUrl) + + if ((pictureLen-1) == pictureIndex) {// 代表当前设备缺陷的图片全部上传完成 + // 2、调用提交 设备缺陷接口 + (function () { + ctrl.comitProblem(probsIndex) + })() + } + } else { + ctrl.toast("服务器错误,未返回数据"); + } + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + + }) + } + + // 提交设备缺陷 + ctrl.comitProblem = function (probsIndex) { + var picture = ctrl.serverPicUrls? ctrl.serverPicUrls.join(',') : ''; + var problemDesc = ctrl.probsArr[probsIndex]['problemDesc']; + var itemId = ctrl.probsArr[probsIndex]['itemId']; + var quesGrade = ctrl.probsArr[probsIndex]['quesGrade']; + + var url = '/ems/rest/xj/problem' + var data = { + taskId: ctrl.problemsObj.taskId, + itemId: itemId, + source: ctrl.problemsObj.source, + problemDesc: problemDesc, + picture: picture, + record: '', + quesGrade: quesGrade, + prId: ctrl.problemsObj.prId + } + + $api.post(url, data, function (res, err) { + api.hideProgress(); + + if (err) { + ctrl.toast("网络请求失败,请稍后再试"); + } else { + if (res.code == 200) { + ctrl.serverPicUrls = []; + if (probsIndex == (ctrl.probsArr.length-1)) { + // 调用巡检完成 + ctrl.comitUsual(); + } + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + + }) + } + + // 提交常规检查项巡检结果 + ctrl.comitUsual = function () { + var routineLogs = []; + var usualItemDoms = $('#usual-task-panel .task-item'); + + usualItemDoms.forEach(function (item, index) { + var itemid = $(item).data('itemid'); + var status = $(item).data('status'); + routineLogs.push({ + itemId: itemid, + status: status + }) + }) + + var url = '/ems/rest/xj/routine/log' + var data = { + taskId: ctrl.taskId, + routineLogs: routineLogs + } + + $api.post(url, data, function (res, err) { + + if (err) { + ctrl.toast("网络请求失败,请稍后再试"); + } else { + if (res.code == 200) { + ctrl.comitReview(); + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + + }) + } + // 提交复检检查项巡检结果 + ctrl.comitReview = function () { + var fjLogs = []; + var reviewItemDoms = $('#review-task-panel .task-item'); + var len = reviewItemDoms.length; + + if (!len) { + // 调用巡检完成接口 + ctrl.finished(); + + return; + } + + reviewItemDoms.forEach(function (item, index) { + var itemid = $(item).data('itemid'); + var status = $(item).data('status'); + fjLogs.push({ + itemId: itemid, + status: status + }) + }) + + var url = '/ems/rest/xj/fj/log' + var data = { + taskId: ctrl.taskId, + fjLogs: fjLogs + } + + $api.post(url, data, function (res, err) { + + if (err) { + ctrl.toast("网络请求失败,请稍后再试"); + } else { + if (res.code == 200) { + // 调用巡检完成接口 + ctrl.finished(); + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + + }) + } + + // 巡检完成 + ctrl.finished = function () { + var url = "/ems/rest/xj/task/complete"; + var data = { + taskId: ctrl.taskId, + } + $api.put(url, data, function (res, err) { + api.hideProgress(); + + if (err) { + ctrl.toast("网络请求失败,请稍后再试"); + } else { + if (res.code == 200) { + if (!$api.getStorage('canUploadFlag')) { + $api.setStorage('canUploadFlag', 'true') + } + + // 清除 localStorage 中保存的内容 + $api.rmStorage('usualIns') + $api.rmStorage('reviewIns') + $api.rmStorage('newIns') + $api.rmStorage('problems') + + api.openWin({ + name: 'inspectionFrame', + url: '../index/inspectionFrame.html', + reload: true, + pageParam: {} + }); + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + }) + } + + ctrl.init(); + +} diff --git a/app-saas-src/script/inspectionRepair/inspectionLogDetail.js b/app-saas-src/script/inspectionRepair/inspectionLogDetail.js new file mode 100644 index 0000000..42303fc --- /dev/null +++ b/app-saas-src/script/inspectionRepair/inspectionLogDetail.js @@ -0,0 +1,204 @@ +apiready = function() { + var ctrl = { + logId: null, + init: {}, //初始化 + bind: {}, //事件绑定 + toast: {}, //弹出提示框 + getInspectLogDetail: {}, //获取巡检日志详情 + renderInspectLogDetail: {}, //渲染巡检日志详情 + type: { + common: 1, // 一般 + recheck: 3, // 复检 + burst: 2 // 突发 + } + } + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + this.logId = api.pageParam.id; + var prName = api.pageParam.name; + + ctrl.bind(); + ctrl.getInspectLogDetail(); + + $("#pr-name").text(prName); + $("#power-name").text(prName); + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + + $("#inspect-con").on("touchend", ".more", function() { + $(this).parent().parent().parent().parent().find("tbody").toggle(); + $(this).toggleClass("close") + }) + //点击有问题的巡检项 + $("#inspect-con").on("touchend", "tr", function(e) { + e.stopPropagation(); + var status = $(this).data("status"); + if (status != 2) { + return false; + } + + var logId = ctrl.logId; + var type = $(this).data("type"); + var itemId = $(this).data("id"); + api.openWin({ + name: 'inspectBug', + url: 'widget://html/feature/logQuery/inspectBug.html', + pageParam: { + logId: logId, + type: type, + itemId: itemId, + } + }); + + }) + } + /** + * 弹出提示框 + */ + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + + ctrl.getInspectLogDetail = function() { + var url = '/ems/rest/common/xj/log/detail'; + var data = { + "taskId": this.logId + }; + $api.get(url, data, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (res.code === 200) { + ctrl.renderInspectLogDetail(res); + } else if (res.code == 404) { + var messageId = api.pageParam.messageId; + var msg = ""; + if (messageId) { + msg = "日志不存在"; + ctrl.toast(msg); + api.sendEvent({ + name: 'removeMessage', + extra: { + messageId: messageId + } + }); + + window.setTimeout(function() { + api.closeWin(); + }, 2000); + }else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + + } + + } + }); + + } + // 处理数据 + ctrl.handleData = function() { + ctrl.dailyLogs = []; + ctrl.weekLogs = []; + ctrl.monthLogs = []; + ctrl.ycLogs = []; + if (!ctrl.log.routineLogs) { + return; + } + var logs = ctrl.log.routineLogs.concat(ctrl.log.tfLogs, ctrl.log.fjLogs); + for (var i = 0; i < logs.length; i++) { + var item = logs[i]; + if (item.checkType === 1) { + ctrl.dailyLogs.push(item); + } + if (item.checkType === 2) { + ctrl.weekLogs.push(item); + } + if (item.checkType === 3) { + ctrl.monthLogs.push(item); + } + if (item.status === 2) { + ctrl.ycLogs.push(item); + } + } + ctrl.log.dailyCount = ctrl.dailyLogs.length; + ctrl.log.weekCount = ctrl.weekLogs.length; + ctrl.log.monthCount = ctrl.monthLogs.length; + ctrl.log.reviewCount = ctrl.log.fjLogs.length; + ctrl.log.burstCount = ctrl.log.tfLogs.length; + ctrl.log.bugCount = ctrl.ycLogs.length; + + } + ctrl.getItem = function(title, logs, type) { + //巡检详情 + var statusContent = ['
    正常
    ', + '
    异常已解决
    ', + '
    异常已汇报
    ' + ]; + var length = logs.length; + var str = ''; + if (length > 0) { + str += ''; + str += ''; + str += ""; + for (var i = 0; i < length; i++) { + str += ''; + } + str += ""; + str += "
    ' + title + '
    ' + (i + 1) + '' + logs[i].checkItem + '' + statusContent[logs[i].status] + '
    "; + } + return str; + } + ctrl.renderInspectLogDetail = function(res) { + var dateUtil = new DateUtils(); + ctrl.log = res.body; + ctrl.handleData(); + var log = ctrl.log; + $api.text($api.dom('#xjDate'), log.xjDate); + + dateUtil.setDate(log.startTime); + $api.text($api.dom('#start-time'), dateUtil.getFormattedDate('yyyy-MM-dd hh:mm')); + + dateUtil.setDate(log.endTime); + $api.text($api.dom('#complete-time'), dateUtil.getFormattedDate('yyyy-MM-dd hh:mm')); + + $api.text($api.dom('#inspector'), log.employeeName); + $api.text($api.dom('#dailyCount'), log.dailyCount); + $api.text($api.dom('#weekCount'), log.weekCount); + $api.text($api.dom('#monthCount'), log.monthCount); + $api.text($api.dom('#ycCount'), log.bugCount); + + $api.text($api.dom('#reviewCount'), log.reviewCount); + $api.text($api.dom('#burstCount'), log.burstCount); + + var dailyLogs = ctrl.dailyLogs; //日常巡检 + var weekLogs = ctrl.weekLogs; //周检 + var monthLogs = ctrl.monthLogs; //月检 + + + var reviewLogs = log.fjLogs; //复检 + var burstLogs = log.tfLogs; //突发 + var con = ""; + con += ctrl.getItem('日常巡检', dailyLogs, ctrl.type.common); + con += ctrl.getItem('周检', weekLogs, ctrl.type.common); + con += ctrl.getItem('月检', monthLogs, ctrl.type.common); + con += ctrl.getItem('复检项目', reviewLogs, ctrl.type.recheck); + con += ctrl.getItem('突发项目', burstLogs, ctrl.type.burst); + $api.html($api.dom('#inspect-con'), con); + + + } + + ctrl.init(); +} diff --git a/app-saas-src/script/inspectionRepair/inspectionProblem.js b/app-saas-src/script/inspectionRepair/inspectionProblem.js new file mode 100644 index 0000000..d71c365 --- /dev/null +++ b/app-saas-src/script/inspectionRepair/inspectionProblem.js @@ -0,0 +1,401 @@ +apiready = function () { + var ctrl = { + init: {}, + bind: {}, + backCallback: {}, + + prId: null, + taskId: null, + itemId: null, + + baseUrl: '', + + pics: [], // 现场照片本地url和base64数据 + + serverPicUrls: [], // 上传图片 服务器返回的路径 + + uploadPicNum: 0, // 上传图片 请求完成次数 + + quesGrade: '0', // 问题类型:0一般,1严重,2危急 + + flag: 0, // 当前设备缺陷是否已经成功提交,0:未提交,1:已提交 + + tabType: '', // 设备缺陷页是从日常、复查、新增三个tab 中的哪个跳转而来 + + } + + ctrl.init = function () { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + + ctrl.prId = api.pageParam.prid; + ctrl.prName = api.pageParam.prname; + ctrl.taskId = api.pageParam.taskid; + ctrl.itemId = api.pageParam.itemid; + ctrl.source = api.pageParam.source; + + ctrl.tabType = api.pageParam.tabtype; + + ctrl.bind(); + } + + ctrl.bind = function () { + + var height = $(window).height() - $("header").height() - $(".tabs").height(); + $(".content-container").css("height", height); + //绑定返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function () { + ctrl.backCallback(); + }) + + //点击系统返回按钮 + api.addEventListener({ + name: 'keyback' + }, function (ret, err) { + ctrl.backCallback(); + }); + + // 添加图片按钮 + $api.addEvt($api.dom("#pic-add-btn"), "touchend", function () { + var params = { + sourceType: 'camera', + destinationType: 'base64' + } + api.getPicture(params, function(ret, err){ + if (ret && ret.data) { + // 创建图片预览dom + var picItemDom = '' + var dom = picItemDom.replace('{{url}}', ret.data) + $('#pic-content').prepend(dom) + + // 保存 图片 base64 和 url + ctrl.pics.push({ + base64Data: ret.base64Data, + url: ret.data + }) + + // 点击图片预览 + $("#pic-content .pic-item").on("touchend", "img", function (e) { + e.stopPropagation(); + var src = $(this).attr('src') + + $('#pic-review img').attr('src', src) + $('#pic-review').css('display', 'block') + }) + + } else { + ctrl.toast(JSON.stringify(err)); + } + }) + }) + + // 图片 删除按钮 + $("#pic-content").on("touchend", "i", function (e) { + e.stopPropagation(); + + var url = $($(this).siblings('img')[0]).attr('src') + + $(this).parent('.pic-item').remove() + + // 从 ctrl.pics 中删除对应url + ctrl.pics = ctrl.pics.filter(function (item) { + return item.url != url + }) + }) + + // 点击预览图片 关闭预览 + $('#pic-review').on("touchend", function () { + $(this).css('display', 'none') + }) + + // 点击语音按钮 开始录音 + // $api.addEvt($api.dom("#audio-add-btn"), "touchstart", function () { + + // var recordForMP3 = api.require('recordForMP3'); + + // recordForMP3.startRecord(function (ret, err) { + // console.log(3333) + // if (ret) { + // console.log(ret.status) + // } else { + // console.log('err') + // } + + // }) + + // }) + + // 松开录音按钮 停止录音 + // $api.addEvt($api.dom("#audio-add-btn"), "touchend", function () { + // alert(222) + // }) + + // 保存 按钮 + $('#problem-submit-btn').on("touchend", function () { + api.showProgress({ + title: '保存中...', + text: '请稍后', + modal: false + }); + // 1、获取localStorage中已保存的设备缺陷信息 + // 2、将当前设备缺陷信息保存到localStorage中 + // 3、跳转到巡检项页面 + var problems; + var storage = $api.getStorage('problems'); + + if (!storage) { + problems = { + taskId: ctrl.taskId, + source: ctrl.source, + record: '', + prId: ctrl.prId, + arr: [], // + newArr: [] + } + } else { + problems = JSON.parse(storage) + } + + var pictureArr = []; + ctrl.pics.forEach(function (item, index) { + pictureArr.push(item.url) + }) + var picture = pictureArr.join(','); + var problemDesc = $('#problem-desc').val().trim() + var item; + + if (ctrl.tabType == 'new') { + item = { + itemId: '', + index: ctrl.itemId, + problemDesc: problemDesc, + picture: picture, + quesGrade: ctrl.quesGrade + }; + + problems.newArr.push(item); + + } else { + item = { + itemId: ctrl.itemId, + problemDesc: problemDesc, + picture: picture, + quesGrade: ctrl.quesGrade + }; + + problems.arr.push(item); + } + + $api.rmStorage('problems'); + $api.setStorage('problems', JSON.stringify(problems)); + + /** + * 更新 localStorage 中保存的巡检项状态信息 + * + * */ + var inspectMsg; + switch (ctrl.tabType) { + case 'usual': + inspectMsg = $api.getStorage('usualIns'); + break; + case 'review': + inspectMsg = $api.getStorage('reviewIns'); + break; + case 'new': + inspectMsg = $api.getStorage('newIns'); + break; + } + + var inspectMsgObj = JSON.parse(inspectMsg); + + switch (ctrl.tabType) { + case 'usual': + inspectMsgObj[ctrl.itemId] = 2; + $api.rmStorage('usualIns'); + $api.setStorage('usualIns', JSON.stringify(inspectMsgObj)); + break; + case 'review': + inspectMsgObj[ctrl.itemId] = 2; + $api.rmStorage('reviewIns'); + $api.setStorage('reviewIns', JSON.stringify(inspectMsgObj)); + break; + case 'new': + inspectMsgObj[ctrl.itemId]['s'] = 2; + $api.rmStorage('newIns'); + $api.setStorage('newIns', JSON.stringify(inspectMsgObj)); + break; + } + + api.hideProgress(); + + api.toast({ + msg: '保存成功' + }) + + api.openWin({ + name: 'inspectionItem', + url: './inspectionItem.html', + reload: true, + pageParam: { + id: ctrl.prId, + name: ctrl.prName, + taskid: ctrl.taskId + } + }); + + // 1、上传照片 + // 2、调用提交设备缺陷接口 + // var pics = ctrl.pics + // var length = pics.length + + // for (var i = 0; i < length; i++) { + // var url = pics[i]['url'] + // ctrl.uploadPic(url) + // } + + }) + + // 问题类型单选框 选中事件 + $('input[type=radio]').change(function() { + + var value = this.value + + ctrl.quesGrade = value + + }) + + } + /** + * 上传图片 + * @param {*} msg + */ + ctrl.uploadPic = function (file) { + + var url = "/ems/rest/common/file/pad_upload"; + var data = file + + $api.uploadFile(url, data, function (res, err) { + + if (err) { + ctrl.toast("网络请求失败,请稍后再试"); + } else { + if (res.code == 200) { + // 将返回的图片路径保存 + if (res.body && res.body.fileUrl) { + ctrl.serverPicUrls.push(res.body.fileUrl) + + ctrl.uploadPicNum++ + + if (ctrl.uploadPicNum == ctrl.pics.length) {// 代表全部图片上传完成 + // 2、调用提交 设备缺陷接口 + ctrl.comitProblem() + } + } else { + ctrl.toast("服务器错误,未返回数据"); + } + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + + }) + } + + /** + * 提交设备缺陷 + * @param {*} msg + */ + ctrl.comitProblem = function () { + var picture = ctrl.serverPicUrls.join(',') + var problemDesc = $('#problem-desc').val() + + var url = '/ems/rest/xj/problem' + var data = { + taskId: ctrl.taskId, + itemId: ctrl.itemId, + source: ctrl.source, + problemDesc: problemDesc, + picture: picture, + record: '', + quesGrade: ctrl.quesGrade, + prId: ctrl.prId + } + + $api.post(url, data, function (res, err) { + api.hideProgress(); + + if (err) { + ctrl.toast("网络请求失败,请稍后再试"); + } else { + if (res.code == 200) { + ctrl.flag = 1 + // 跳转到巡检内容页 + api.openWin({ + name: 'inspectionItem', + url: './inspectionItem.html', + pageParam: { + id: ctrl.prId, + name: ctrl.prName, + taskid: ctrl.taskId + } + }); + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + + }) + } + + /** + * 弹出提示框 + */ + + ctrl.toast = function (msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + + ctrl.backCallback = function () { + //关闭首页正在加载的提示框 + api.execScript({ + name: 'index', + frameName: 'featureFrame', + script: "api.hideProgress();" + }); + api.setScreenOrientation({ + orientation: 'auto_portrait' + }); + api.setFullScreen({ + fullScreen: false + }); + api.closeWin({}); + } + + //上拉加载 + api.addEventListener({ + name: 'scrolltobottom' + }, function (ret, err) { + + + }); + + //下拉刷新 + api.setRefreshHeaderInfo({ + loadingImg: 'widget://image/refresh.png', + bgColor: '#ccc', + textColor: '#fff', + textDown: '下拉刷新...', + textUp: '松开刷新...' + }, function (ret, err) { + + + api.refreshHeaderLoadDone(); + }); + + ctrl.init(); + +} diff --git a/app-saas-src/script/inspectionRepair/repair.js b/app-saas-src/script/inspectionRepair/repair.js new file mode 100644 index 0000000..cad38f3 --- /dev/null +++ b/app-saas-src/script/inspectionRepair/repair.js @@ -0,0 +1,403 @@ +apiready = function () { + var ctrl = { + init: {}, + bind: {}, + backCallback: {}, + + // 当前展示的tab 页类型,msg:配电室资料 detail:任务详情 + tabType: 'detail', + baseUrl: '', + + prid: null, + taskId: null, + qxorderid: null, + prefix: '', // 服务器图片基础路径 + + qxAccept: '0', // 当前抢修任务是否已经接单 0:否,1:是 + } + + ctrl.init = function () { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + + ctrl.bind(); + + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + + ctrl.qxorderid = api.pageParam.qxorderid; + ctrl.prid = api.pageParam.prid; + ctrl.qxAccept = $api.getStorage('qxAccept' + ctrl.qxorderid); + + ctrl.getQxOrderDetail() + + } + + ctrl.bind = function () { + + var height = $(window).height() - $("header").height() - $(".tabs").height(); + $(".content-container").css("height", height); + //绑定返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function () { + ctrl.backCallback(); + }) + + //点击系统返回按钮 + api.addEventListener({ + name: 'keyback' + }, function (ret, err) { + ctrl.backCallback(); + }); + + //点击任务详情tab + $api.addEvt($api.dom("#order-detail-tab"), "touchend", function () { + if (ctrl.tabType == 'detail') { + return + } + + $api.addCls(this, "active"); + $api.removeCls($api.dom("#pr-msg-tab"), "active"); + $api.removeCls($api.dom("#task-log-tab"), "active"); + $api.css($api.dom("#order-detail-panel"), 'display:block'); + $api.css($api.dom("#pr-msg-panel"), 'display:none'); + $api.css($api.dom("#task-log-panel"), 'display:none'); + + ctrl.tabType = 'detail' + + // 初始化任务详情 tab + ctrl.getQxOrderDetail(); + + }, false); + + //点击配电室资料tab按钮 + $api.addEvt($api.dom("#pr-msg-tab"), "touchend", function () { + if (ctrl.tabType == 'msg') { + return + } + + $api.addCls(this, "active"); + $api.removeCls($api.dom("#order-detail-tab"), "active"); + $api.removeCls($api.dom("#task-log-tab"), "active"); + $api.css($api.dom("#pr-msg-panel"), 'display:block'); + $api.css($api.dom("#order-detail-panel"), 'display:none'); + $api.css($api.dom("#task-log-panel"), 'display:none'); + + ctrl.tabType = 'msg' + + ctrl.initPrMsgTab() + }, false); + + /* + ====================任务详情 tab 中相关事件==================== + */ + + // 点击预览图片 关闭预览 + $('#pic-review').on("touchend", function () { + $(this).css('display', 'none') + }) + + /* + ====================配电室资料 tab 相关事件==================== + */ + // 点击配电室资料列表 ,在线浏览 pdf + $("#pr-msg-list").on("touchend", ".pr-msg-list-item", function () { + + var url = ctrl.baseUrl + $(this).data("url"); + + api.download({ + url: url, // 填写要下载文档的url + report: true, + cache: true, + allowResume: true + }, function (ret, err) { + if (ret.state == 1) { //下载成功 + + var superFile = api.require('superFile'); + superFile.open({ + path: ret.savePath, + }) + + } + }); + + }) + + + //点击开始抢修按钮 + $api.addEvt($api.dom("#start-repair-btn"), "touchend", function () { + // 判断当前抢修单时候已经接单 + if (ctrl.qxAccept == '1') { // 已经被接单 + // 跳转到抢修详情内容页 + api.openWin({ + name: 'repairProblem', + url: './repairProblem.html', + pageParam: { + prid: ctrl.prid, + taskid: ctrl.taskId, + qxorderid: ctrl.qxorderid + } + }); + + return; + } + ctrl.handleStartRepair() + }) + + } + /** + * 弹出提示框 + */ + + ctrl.toast = function (msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + + ctrl.backCallback = function () { + //关闭首页正在加载的提示框 + api.execScript({ + name: 'index', + frameName: 'featureFrame', + script: "api.hideProgress();" + }); + api.setScreenOrientation({ + orientation: 'auto_portrait' + }); + api.setFullScreen({ + fullScreen: false + }); + api.closeWin({}); + } + + /* + ===================任务详情 tab 相关============== + */ + //获取抢修任务详情 + ctrl.getQxOrderDetail = function () { + //显示载入动画 + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + + var url = '/ems/rest/qx/order'; + var data = { + "qxOrderId": ctrl.qxorderid, + }; + + $api.get(url, data, function (res, err) { + //隐藏载入动画 + api.hideProgress(); + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != 200) { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } else { + ctrl.taskId = res.body.qxTasks[0]['taskId']; + ctrl.prefix = res.prefix; + // 当前抢修任务已经被接单 + if (res.body.qxTasks && res.body.qxTasks[0]['acceptTime']) { + ctrl.qxAccept = '1'; + $api.getStorage('qxAccept' + ctrl.qxorderid)? null : $api.setStorage('qxAccept' + ctrl.qxorderid, '1'); + + if (res.body.qxTasks[0]['completeTime']) { // 若当前抢修单已经完成,隐藏“开始抢修”按钮 + $('#start-repair-btn').css('display', 'none'); + } + } + + ctrl.renderQxOrderDetail(res.body); + } + + } + }); + + } + + // 渲染任务详情 + ctrl.renderQxOrderDetail = function (data) { + // 抢修方案 + $('#qx-programme .content').text(data.qxProgramme || '没有抢修方案'); + + // 问题描述 + $('#qx-desc .content').text(data.orderDesc); + + // 现场照片 + var pics = data.xjPicture ? data.xjPicture.split(',') : []; + var pciCount = pics.length; + $('#pic-count').text(pciCount); + + var picDom = ''; + pics.forEach(function (item, index) { + var tpl = ''; + tpl.replace('{{src}}', ctrl.prefix + item); + picDom += tpl; + }) + + // 点击图片预览 + $("#pic-content .pic-item").on("touchend", "img", function (e) { + e.stopPropagation(); + var src = $(this).attr('src') + + $('#pic-review img').attr('src', src) + $('#pic-review').css('display', 'block') + }) + + $('#pic-content').prepend(picDom); + } + + /* + ====================配电室资料 tab 相关=================== + */ + // 初始化 配电室资料 tab + ctrl.initPrMsgTab = function () { + ctrl.getPrMsg() + ctrl.getPrMsgList() + } + + // 获取配电室信息 + ctrl.getPrMsg = function () { + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + + var url = "/ems/rest/power/room/detail"; + var data = { + prId: ctrl.prid, + } + $api.get(url, data, function (res, err) { + api.hideProgress(); + + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (res.code == 200) { + ctrl.renderPrMsg(res.body); + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + }) + } + + // 渲染配电室信息panel + ctrl.renderPrMsg = function (data) { + + $('#pr-msg').empty(); + + var tpl = ''; + tpl += '

    配电室联系人:{{people}}

    '; + tpl += '

    联系人电话:{{tel}}

    '; + tpl += '

    配电室位置:{{province}} {{city}} {{address}}

    '; + + var dom = tpl.replace('{{people}}', data.lxr1) + .replace('{{tel}}', data.lxr1Mobile) + .replace('{{province}}', data.province) + .replace('{{city}}', data.city) + .replace('{{address}}', data.address) + + $api.html($api.dom('#pr-msg'), dom); + } + + // 获取配电室资料列表 + ctrl.getPrMsgList = function () { + var url = "/ems/rest/pr/file/list"; + var data = { + prId: ctrl.prid, + } + $api.get(url, data, function (res, err) { + + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (res.code == 200 && res.body) { + var length = res.body.length; + + ctrl.baseUrl = res.prefix; + + $('#pr-msg-list').empty(); + + for (var i = 0; i < length; i++) { + var listItem = res.body[i] + $api.append($api.dom('#pr-msg-list'), ctrl.getPrMsgListDOM(listItem)); + } + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + }) + } + + // 渲染配电室信息列表 + ctrl.getPrMsgListDOM = function (listItem) { + + var tpl = ''; + + tpl += '
    ' + tpl += '' + tpl += '
    ' + + var dom = tpl.replace('{{url}}', listItem.fileUrl) + .replace('{{name}}', listItem.fileName) + + return dom; + } + + // 开始抢修 + ctrl.handleStartRepair = function () { + + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + + var url = "/ems/rest/qx/task"; + var data = { + taskId: ctrl.taskId, + acceptTime: new Date().getTime(), + isAccept: true + } + $api.put(url, data, function (res, err) { + api.hideProgress(); + + if (err) { + ctrl.toast("网络请求失败,请稍后再试"); + } else { + if (res.code == 200) { + // 将抢修接单信息保存到 localStorage 中 + ctrl.qxAccept = '1' + $api.setStorage('qxAccept' + ctrl.qxorderid, '1'); + + // 跳转到抢修详情内容页 + api.openWin({ + name: 'repairProblem', + url: './repairProblem.html', + pageParam: { + prid: ctrl.prid, + taskid: ctrl.taskId, + qxorderid: ctrl.qxorderid + } + }); + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + }) + } + + ctrl.init(); + +} diff --git a/app-saas-src/script/inspectionRepair/repairLogDetail.js b/app-saas-src/script/inspectionRepair/repairLogDetail.js new file mode 100644 index 0000000..9349348 --- /dev/null +++ b/app-saas-src/script/inspectionRepair/repairLogDetail.js @@ -0,0 +1,425 @@ +apiready = function() { + var ctrl = { + init: {}, + bind: {}, + getLog: {}, //获取抢修日志详情 + renderLog: {}, //渲染抢修日志详情 + toast: {}, //弹出提示框 + handleData: {}, //处理数据 + renderFilter: {}, //拦截接口返回数据,对体验模式下的数据进行过滤 + filter: {}, //数组筛选 + } + + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + ctrl.bind(); + ctrl.getPr(); + ctrl.getLog(); + } + // 弹出提示框 + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + + $('.bt-detail').on('touchend', function() { + $(this).parent().parent().find('.item').toggle(); + $(this).find('img').toggleClass("close") + }) + } + //数组筛选 obj {type:2} + ctrl.filter = function(ary, obj) { + var result = []; + for (var i = 0; i < ary.length; i++) { + var currentObj = ary[i]; + for (var attr in obj) { + if (currentObj.hasOwnProperty(attr) && currentObj[attr] == obj[attr]) { + result.push(currentObj); + } + } + + } + return result; + + } + // 获取抢修日志详情 + ctrl.getLog = function() { + var url = '/ems/rest/qx/order'; + var id = api.pageParam.id; + var messageId = api.pageParam.messageId; + var data = { + qxOrderId: id + }; + $api.get(url, data, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (res.code == 200) { + ctrl.renderLog(res); + } else if (res.code == 404) { + var msg = ""; + if (messageId) { + msg = "日志不存在"; + ctrl.toast(msg); + api.sendEvent({ + name: 'removeMessage', + extra: { + messageId: messageId + } + }); + + window.setTimeout(function() { + api.closeWin(); + }, 2000); + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + + + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + + } + }); + } + + // 获取配电室详情 + ctrl.getPr = function() { + var powerRoom = api.pageParam.name; + if (powerRoom) { + ctrl.prName = powerRoom.prName; + } else { + return; + } + } + ctrl.handleData = function() { + var dateUtil = new DateUtils(); + if (!ctrl.log) { + return; + } + if (ctrl.log.qxTasks) { + // 查勘任务 + ctrl.surveyTasks = ctrl.filter(ctrl.log.qxTasks, { + "taskType": 1 + }); + // 抢修任务 + var repairTask = ctrl.filter(ctrl.log.qxTasks, { + "taskType": 2 + }); + ctrl.repairTask = (repairTask && repairTask.length > 0) ? repairTask[0] : null; + } + + //查询报警时间 + if (ctrl.log.alarmTime) { + dateUtil.setDate(ctrl.log.alarmTime); + ctrl.alarmTime = dateUtil.getFormattedDate('yyyy-MM-dd hh:mm:ss'); + } + //查询开始查勘时间 + if (ctrl.surveyTasks && ctrl.surveyTasks.length > 0) { + var tasks = ctrl.surveyTasks.sort(function(a, b) { + return a.createTime - b.createTime; + }); + dateUtil.setDate(tasks[0].createTime); + ctrl.startSurveyTime = dateUtil.getFormattedDate('yyyy-MM-dd hh:mm:ss'); + } else { + ctrl.startSurveyTime = "没有安排查勘"; + } + + //获取抢修时间和抢修结束时间 + if (ctrl.repairTask) { + if (ctrl.repairTask.deleteFlag) { + ctrl.startRepairTime = "没有安排抢修"; + ctrl.completeRepairTime = "没有安排抢修"; + } else { + dateUtil.setDate(ctrl.repairTask.createTime); + ctrl.startRepairTime = dateUtil.getFormattedDate('yyyy-MM-dd hh:mm:ss'); + if (ctrl.repairTask.isComplete) { + dateUtil.setDate(ctrl.repairTask.completeTime); + ctrl.completeRepairTime = dateUtil.getFormattedDate('yyyy-MM-dd hh:mm:ss'); + } else { + ctrl.completeRepairTime = ''; + } + + } + + } else { + ctrl.startRepairTime = "没有安排抢修"; + ctrl.completeRepairTime = "没有安排抢修"; + } + + } + //查看图片 + //@param picContainner 图片放置的容器的id + //@param tasks 后台获取到的任务列表 + ctrl.showPic = function(picContainner, tasks) { + if (!tasks.picture) { + return; + } + var pics = tasks.picture.length > 0 ? tasks.picture.split(",") : []; + if (pics.length > 0) { + $api.html($api.dom('#' + picContainner), ''); + var photoBrowser = api.require('photoBrowser'); + var imageList = []; + var container = document.getElementById(picContainner); + //点击图片 使用图片查看器查看 + container.addEventListener("touchend", function() { + //初始化图片查看器 + photoBrowser.open({ + images: imageList, + bgColor: '#000' + }, function(ret, err) { + if (ret && ret.eventType == "click") { + photoBrowser.close(); + } + }); + }) + for (var i = 0; i < pics.length; i++) { + (function() { + var container = document.getElementById(picContainner); + var image = new Image(); + image.src = "../../../image/pre-pic.png"; + container.appendChild(image); + api.imageCache({ + url: ctrl.prefix+pics[i], + policy: "cache_else_network", + thumbnail: false + }, function(ret, err) { + if (ret.status) { + var container = document.getElementById(picContainner); + // var image = new Image(); + image.src = ret.url; + image.onload = function() { + container.appendChild(image); + photoBrowser.appendImage({ + images: [ret.url] + }); + imageList.push(ret.url); + } + } else { + // var image = new Image(); + var container = document.getElementById(picContainner); + image.src = "../../../image/img-error.png"; + image.onload = function() { + container.appendChild(image); + photoBrowser.appendImage({ + images: [image.src] + }); + + imageList.push(image.src); + } + } + + }) + + })() + + } + + } else { + var dom = "没有图片"; + $('#' + picContainner).html(dom); + } + } + + ctrl.renderLog = function(res) { + ctrl.log = res.body; + ctrl.prefix = res.prefix; + ctrl.handleData(); + var log = ctrl.log; + if (!log) { + return; + } + var isComplete = log.deleteFlag; + $api.text($api.dom('#pr-name'), ctrl.prName); + $api.text($api.dom('#malfunction-item'), log.orderDesc); + if (ctrl.completeRepairTime == "没有安排抢修") { + if (isComplete) { + $api.text($api.dom('#complete-time'), ctrl.completeRepairTime); + } + } else { + $api.text($api.dom('#complete-time'), ctrl.completeRepairTime.slice(10)); + $api.text($api.dom('#complete-date'), ctrl.completeRepairTime.slice(0, 10)); + } + if (ctrl.startRepairTime == "没有安排抢修") { + if (isComplete) { + $api.text($api.dom('#repair-time'), ctrl.startRepairTime); + } + } else { + $api.text($api.dom('#repair-time'), ctrl.startRepairTime.slice(10)); + $api.text($api.dom('#repair-date'), ctrl.startRepairTime.slice(0, 10)); + } + if (ctrl.startSurveyTime == "没有安排查勘") { + if (isComplete) { + $api.text($api.dom('#survey-time'), ctrl.startSurveyTime); + } + } else { + $api.text($api.dom('#survey-time'), ctrl.startSurveyTime.slice(10)); + $api.text($api.dom('#survey-date'), ctrl.startSurveyTime.slice(0, 10)); + } + + $api.text($api.dom('#alram-time'), ctrl.alarmTime && ctrl.alarmTime.slice(10) || ''); + $api.text($api.dom('#alram-date'), ctrl.alarmTime && ctrl.alarmTime.slice(0, 10) || ''); + if (ctrl.completeRepairTime != "没有安排抢修" && ctrl.completeRepairTime) { + $api.addCls($api.dom('#complete-circle'), 'circle-green'); + $api.addCls($api.dom('#repair-circle'), 'circle'); + $api.addCls($api.dom('#survey-circle'), 'circle'); + $api.addCls($api.dom('#alram-circle'), 'circle'); + } else if (ctrl.startRepairTime != "没有安排抢修") { + $api.addCls($api.dom('#complete-circle'), 'circle'); + $api.addCls($api.dom('#repair-circle'), 'circle-green'); + $api.addCls($api.dom('#survey-circle'), 'circle'); + $api.addCls($api.dom('#alram-circle'), 'circle'); + } else if (ctrl.startSurveyTime != "没有安排查勘") { + $api.addCls($api.dom('#complete-circle'), 'circle'); + $api.addCls($api.dom('#repair-circle'), 'circle'); + $api.addCls($api.dom('#survey-circle'), 'circle-green'); + $api.addCls($api.dom('#alram-circle'), 'circle'); + } else { + $api.addCls($api.dom('#complete-circle'), 'circle'); + $api.addCls($api.dom('#repair-circle'), 'circle'); + $api.addCls($api.dom('#survey-circle'), 'circle'); + $api.addCls($api.dom('#alram-circle'), 'circle-green'); + } + + //抢修方案 + if (ctrl.cus) { + log.qxProgramme = log.qxProgramme?log.qxProgramme.replace($api.guestKeysPattern, $api.guestName): ''; + } + $("#repair-programme").text(log.qxProgramme ? log.qxProgramme : "没有制定抢修方案"); + + //查勘结果 + var surveyTasks = ctrl.surveyTasks; + if (surveyTasks && surveyTasks.length) { + var str = '
    '; + for (var i = 0; i < surveyTasks.length; i++) { + str += '
    查勘记录' + (i + 1) + '
    '; + if (surveyTasks[i].taskDesc) { + if (ctrl.cus) { + surveyTasks[i].taskDesc = surveyTasks[i].taskDesc.replace($api.guestKeysPattern, $api.guestName); + } + str += '
    查勘描述:' + surveyTasks[i].taskDesc + '
    '; + } else if (!surveyTasks[i].picture) { + str += '
    该条查勘记录没有相关信息
    '; + } else { + str += '
    没有查勘描述
    '; + } + str += '
    '; + if (surveyTasks[i].picture && surveyTasks[i].picture.length) { + var id = surveyTasks[i].taskId; + str += '
    '; + str += '
    '; + $('#survey-list-con').html(str); + //查勘图片处理 + var tasks = surveyTasks[i]; + var pics = tasks.picture.length > 0 ? tasks.picture.split(",") : []; + + if (pics.length > 0) { + var photoBrowser = api.require('photoBrowser'); + ctrl.imageList = []; + + var container = document.getElementById(id); + + $('#survey-list-con').on('touchend', '.survey-pic', function() { + //初始化图片查看器 + photoBrowser.open({ + images: ctrl.imageList, + bgColor: '#000' + }, function(ret, err) { + if (ret && ret.eventType == "click") { + photoBrowser.close(); + } + }); + }) + + function addPic(index) { + for (var j = 0; j < pics.length; j++) { + (function() { + var container = document.getElementById(index); + var image = new Image(); + image.src = "../../../image/pre-pic.png"; + container.appendChild(image); + api.imageCache({ + url: ctrl.prefix+pics[j], + policy: "cache_else_network", + thumbnail: false + }, function(ret, err) { + if (ret.status) { + var container = document.getElementById(index); + image.src = ret.url; + image.onload = function() { + container.appendChild(image); + photoBrowser.appendImage({ + images: [ret.url] + }); + ctrl.imageList.push(ret.url); + } + } else { + var container = document.getElementById(index); + image.src = "../../../image/img-error.png"; + image.onload = function() { + container.appendChild(image); + photoBrowser.appendImage({ + images: [image.src] + }); + + ctrl.imageList.push(image.src); + } + } + + }) + })() + + + } + } + addPic(id); + } + } else if (surveyTasks[i].taskDesc) { + //没有查勘图片 + str += '
    没有查勘图片
    ' + str += ''; + $('#survey-list-con').html(str); + } else { + str += ''; + $('#survey-list-con').html(str); + } + + + + } + } else { + //没有查勘结果 + $('#survey-list-con').html('没有查勘结果'); + }; + //抢修结果 + var repairTask = ctrl.repairTask; + + if (repairTask) { + if (ctrl.cus) { + repairTask.result = log.qxProgramme.replace($api.guestKeysPattern, $api.guestName); + } + $api.text($api.dom("#taskDesc"), repairTask.result); + if (repairTask.picture && repairTask.picture.length) { + + ctrl.showPic('repair-pic', repairTask); + } + + } else { + var dom = "无抢修记录"; + $('#repair-result').html(dom); + + } + } + + ctrl.init(); +} diff --git a/app-saas-src/script/inspectionRepair/repairProblem.js b/app-saas-src/script/inspectionRepair/repairProblem.js new file mode 100644 index 0000000..bcf3065 --- /dev/null +++ b/app-saas-src/script/inspectionRepair/repairProblem.js @@ -0,0 +1,270 @@ +apiready = function () { + var ctrl = { + init: {}, + bind: {}, + backCallback: {}, + + prId: null, + taskId: null, + qxorderId: null, + + baseUrl: '', + + pics: [], // 现场照片本地url和base64数据 + + serverPicUrls: [], // 上传图片 服务器返回的路径 + + uploadPicNum: 0, // 上传图片 请求完成次数 + + flag: 0, // 当前设备缺陷是否已经成功提交,0:未提交,1:已提交 + + tabType: '', // 设备缺陷页是从日常、复查、新增三个tab 中的哪个跳转而来 + + } + + ctrl.init = function () { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + + ctrl.prId = api.pageParam.prid; + ctrl.taskId = api.pageParam.taskid; + ctrl.qxorderId = api.pageParam.qxorderid; + + ctrl.bind(); + } + + ctrl.bind = function () { + + var height = $(window).height() - $("header").height() - $(".tabs").height(); + $(".content-container").css("height", height); + //绑定返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function () { + ctrl.backCallback(); + }) + + //点击系统返回按钮 + api.addEventListener({ + name: 'keyback' + }, function (ret, err) { + ctrl.backCallback(); + }); + + // 添加图片按钮 + $api.addEvt($api.dom("#pic-add-btn"), "touchend", function () { + var params = { + sourceType: 'camera', + destinationType: 'base64' + } + api.getPicture(params, function(ret, err){ + if (ret && ret.data) { + // 创建图片预览dom + var picItemDom = '' + var dom = picItemDom.replace('{{url}}', ret.data) + $('#pic-content').prepend(dom) + + // 保存 图片 base64 和 url + ctrl.pics.push({ + base64Data: ret.base64Data, + url: ret.data + }) + + // 点击图片预览 + $("#pic-content .pic-item").on("touchend", "img", function (e) { + e.stopPropagation(); + var src = $(this).attr('src') + + $('#pic-review img').attr('src', src) + $('#pic-review').css('display', 'block') + }) + + } else { + ctrl.toast(JSON.stringify(err)); + } + }) + }) + + // 图片 删除按钮 + $("#pic-content").on("touchend", "i", function (e) { + e.stopPropagation(); + + var url = $($(this).siblings('img')[0]).attr('url') + + $(this).parent('.pic-item').remove() + + // 从 ctrl.pics 中删除对应url + ctrl.pics.filter(function (item) { + return item.url != url + }) + }) + + // 点击预览图片 关闭预览 + $('#pic-review').on("touchend", function () { + $(this).css('display', 'none') + }) + + // 点击语音按钮 开始录音 + // $api.addEvt($api.dom("#audio-add-btn"), "touchstart", function () { + + // var recordForMP3 = api.require('recordForMP3'); + + // recordForMP3.startRecord(function (ret, err) { + // console.log(3333) + // if (ret) { + // console.log(ret.status) + // } else { + // console.log('err') + // } + + // }) + + // }) + + // 松开录音按钮 停止录音 + // $api.addEvt($api.dom("#audio-add-btn"), "touchend", function () { + // alert(222) + // }) + + // 提交 按钮 + $('#problem-submit-btn').on("touchend", function () { + api.showProgress({ + title: '提交中...', + text: '请稍后', + modal: false + }); + + // 判断是否需要上传照片 + if (ctrl.pics && ctrl.pics.length > 0) { // 需要上传时,先上传,再提交 + ctrl.pics.forEach(function (pic, i) { + ctrl.uploadPic(pic.url) + }) + } else { // 不需要上传时,直接提交 + ctrl.comitProblem() + } + + }) + + } + /** + * 上传图片 + * @param {*} msg + */ + ctrl.uploadPic = function (file) { + + var url = "/ems/rest/common/file/pad_upload"; + var data = file + + $api.uploadFile(url, data, function (res, err) { + + if (err) { + ctrl.toast("网络请求失败,请稍后再试"); + } else { + if (res.code == 200) { + // 将返回的图片路径保存 + if (res.body && res.body.fileUrl) { + ctrl.serverPicUrls.push(res.body.fileUrl) + + ctrl.uploadPicNum++ + + if (ctrl.uploadPicNum == ctrl.pics.length) {// 代表全部图片上传完成 + // 2、调用提交 设备缺陷接口 + ctrl.comitProblem() + } + } else { + ctrl.toast("服务器错误,未返回数据"); + } + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + + }) + } + + /** + * 提交抢修 + * @param {*} msg + */ + ctrl.comitProblem = function () { + var picture = ctrl.serverPicUrls.join(',') + var result = $('#problem-desc').val() + + var url = '/ems/rest/qx/task' + var data = { + taskId: ctrl.taskId, + completeTime: new Date().getTime(), + isComplete: true, + picture: picture, + record: '', + result: result + } + + $api.put(url, data, function (res, err) { + api.hideProgress(); + + if (err) { + ctrl.toast("网络请求失败,请稍后再试"); + } else { + if (res.code == 200) { + ctrl.flag = 1 + api.toast({ + msg: '提交成功' + }) + + var activeNav = $api.getStorage('activeNav') + var url, name; + if (activeNav == 'inspectionFrame') { + name = 'inspectionFrame'; + url = '../index/inspectionFrame.html'; + } else if (activeNav == 'repairFrame') { + name = 'repairFrame'; + url = '../index/repairFrame.html'; + } + + api.openWin({ + name: name, + url: url, + reload: true, + pageParam: { + id: ctrl.prId, + qxorderid: ctrl.qxorderId + } + }); + } else { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + + }) + } + + /** + * 弹出提示框 + */ + + ctrl.toast = function (msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + + ctrl.backCallback = function () { + //关闭首页正在加载的提示框 + api.execScript({ + name: 'index', + frameName: 'featureFrame', + script: "api.hideProgress();" + }); + api.setScreenOrientation({ + orientation: 'auto_portrait' + }); + api.setFullScreen({ + fullScreen: false + }); + api.closeWin({}); + } + + ctrl.init(); + +} diff --git a/app-saas-src/script/menu-privilege.js b/app-saas-src/script/menu-privilege.js new file mode 100644 index 0000000..04ddca3 --- /dev/null +++ b/app-saas-src/script/menu-privilege.js @@ -0,0 +1,50 @@ +var privilegeModule = { + menuList: {}, // 菜单列表 + getMenuList: {}, // 获取登录用户可以查看的菜单列表[ems中设置权限] +} +privilegeModule.getMenuList = function(callback) { + var cusId = $api.getStorage('cusId'); + var cusRoleType = $api.getStorage('cusRoleType'); + var url = '/ems/rest/menu/list/by/customer'; + var data = { + menuBelong: 1, // 1为app,2为edp + customerId: cusId, // 客户id + roleId: cusRoleType, // 客户角色id 如董事长,项目经理,项目负责人 + isSelected: true + + } + $api.get(url,data,function(data, error){ + if(data && data.code == 200 ){ + if(data.body && data.body.length){ + privilegeModule.menuList = data.body; // 获取到菜单列表 + callback && callback(); + return; + } + api.toast({ + msg: '请先联系工作站站长设置权限', + duration: 3000, + locaiton: 'top' + }); + + }else{ + api.toast({ + msg: '网络错误,请稍后再试...', + duration: 3000, + locaiton: 'top' + }); + } + }) +} +privilegeModule.hasMenu = function(name) { + var list = privilegeModule.menuList; + var menuName = $api.trim(name); + var flag = false; + for(var i = 0; i < list.length;i++){ + var itemName = $api.trim(list[i]['menuName']); + if(itemName == menuName) { + flag = true; + return true; + } + } + return false; +} diff --git a/app-saas-src/script/message/messageList.js b/app-saas-src/script/message/messageList.js new file mode 100644 index 0000000..6ec1341 --- /dev/null +++ b/app-saas-src/script/message/messageList.js @@ -0,0 +1,119 @@ +//10自定义消息 20抢修管家消息 2001:抢修单消息 2002:抢修日志消息 30巡检管家消息 3001 巡检安排消息 3002巡检日志消息 40操作票助手消息 4001操作票审核提示消息 4002 操作票归档完成消息 50工作票助手消息 5001 工作票审核提示消息 5002工作票归档完成消息 +// 报表管家7001 +apiready = function() { + + ctrl = { + who: null, + people: { + CUSTOM: { + name: "电务小蜜蜂", + messageTypes: [10] + }, + REPAIR: { + name: "抢修管家", + messageTypes: [2001, 2002] + }, + INSPECT: { + name: "巡检管家", + messageTypes: [3001, 3002] + }, + OPERATE: { + name: "操作票助手", + messageTypes: [4001, 4002] + }, + WORK: { + name: "工作票助手", + messageTypes: [5001, 5002] + }, + ALARM: { + name: "报警管家", + messageTypes: [7001] + }, + REPORT: { + name: "报表管家", + messageTypes: [7001] + } + }, + + init: {}, + bind: {}, + toggleEditMode: {}, + + } + + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + //获取userId + var userId = $api.getStorage("userId"); + ctrl.userId = userId; + + //获取传递进来的参数:消息类型 + var who = api.pageParam.type; + + //显示who + $("#title").text(ctrl.people[who].name); + + //打开frame + var headerHeight = parseInt($api.cssVal($api.dom("header"), "height")); + var windowWidth = parseInt($api.cssVal($api.dom("body"), "width")); + var windowHeight = parseInt($api.cssVal($api.dom("body"), "height")); + + //打开frame + api.openFrame({ + name: "messageListFrame", + url: "./messageListFrame.html", + rect: { + x: 0, + y: headerHeight, + w: windowWidth, + h: windowHeight - headerHeight + }, + pageParam: { + type: who + } + }); + + ctrl.bind(); + } + + ctrl.bind = function() { + //返回按钮 + $("#back").on("touchend", function() { + api.closeWin({}); + }) + + // 点击编辑按钮 + $("#edit").on("touchend", function() { + ctrl.toggleEditMode(); + }) + + // 接受到子页面发送过来的关闭编辑模式的请求 关闭编辑模式 + api.addEventListener({ + name: 'requestCancelEditMode' + }, function(ret, err) { + ctrl.toggleEditMode(); + }); + + + } + + ctrl.toggleEditMode = function() { + var editBtn = $("#edit"); + var isEditting = editBtn.data('is-editting'); + if (!isEditting) { + api.sendEvent({ + name: 'openEditMode' + }); + editBtn.data('is-editting', '1'); + editBtn.text('取消'); + } else { + api.sendEvent({ + name: 'cancelEditMode' + }); + editBtn.data('is-editting', '0'); + editBtn.text('编辑'); + } + } + ctrl.init(); +} diff --git a/app-saas-src/script/message/messageListFrame.js b/app-saas-src/script/message/messageListFrame.js new file mode 100644 index 0000000..ee3c7ac --- /dev/null +++ b/app-saas-src/script/message/messageListFrame.js @@ -0,0 +1,925 @@ +//10自定义消息 1001消息 +//20抢修管家消息 2001:抢修单消息 2002:抢修日志消息 +//30巡检管家消息 3001 巡检安排消息 3002巡检日志消息 +//40操作票助手消息 4001操作票审核提示消息 4002 操作票归档完成消息 +//50工作票助手消息 5001 工作票审核提示消息 5002工作票归档完成消息 +// 60 预报警消息 6001 预警消息 6002 报警消息 6003 紧急报警消息 +// 70报表管家消息 7001 + +function imgErrorCallback(node) { + node.parentNode.removeChild(node); +} +apiready = function() { + + ctrl = { + userId: null, + oldMaxId: null, + newMinId: null, + page: 0, + pageSize: 20, + who: null, + editMode: false, + people: { + CUSTOM: { + name: "电务小蜜蜂", + messageTypes: [1001] + }, + REPAIR: { + name: "抢修管家", + messageTypes: [2001, 2002] + }, + INSPECT: { + name: "巡检管家", + messageTypes: [3001, 3002] + }, + OPERATE: { + name: "操作票助手", + messageTypes: [4001, 4002] + }, + WORK: { + name: "工作票助手", + messageTypes: [5001, 5002] + }, + + // 报警管家消息 + ALARM: { + name: "报警管家", + messageTypes: [6001, 6002, 6003] + }, + + // 报表管家消息 + REPORT: { + name: "报表管家", + messageTypes: [7001] + }, + + }, + + init: {}, + bind: {}, + updateMsgToIsRead: {}, //更新消息为已读 + getMessages: {}, + msgFilter: {}, //读取消息前的处理,针对体验账号,替换部分数据 + openEditMode: {}, //打开编辑模式 + cancelEditMode: {}, //取消编辑模式 + onTouchMessage: {}, //跳转到消息详情 + checkedAMessage: {}, // 选中一个消息 + updateActBtn: {}, // 更新全选按钮的状态 + removeMessages: {}, // 批量删除消息 + markMessagesToReaded: {}, //批量标记消息为已读 + } + + ctrl.init = function() { + //获取userId + var userId = $api.getStorage("userId"); + ctrl.userId = userId; + + //获取传递进来的参数:消息类型 + var who = api.pageParam.type; + ctrl.who = who; + + //如果是自定义消息 不显示标记为已读按钮 + if (who != 'CUSTOM') { + $("#mark-to-readed").removeClass('displayNone'); + } + + //显示who + $("#title").text(ctrl.people[who].name); + + ctrl.bind(); + + //读取消息 + ctrl.getOldMessages(); + } + + ctrl.bind = function() { + //返回按钮 + $("#back").on("touchend", function() { + api.closeWin({}); + }) + + // 全选按钮 + $('#select-all').on("touchend", function() { + var selectAll = $(this).data('select-all'); + if (!selectAll) { + $('.message input[type="checkbox"]').attr('checked', true); + } else { + $('.message input[type="checkbox"]').removeAttr('checked'); + } + + ctrl.updateActBtn(); + }) + + // 删除消息 + $("#remove").on("touchend", function() { + ctrl.removeMessages(); + + // 向父页面发送关闭编辑模式请求 + api.sendEvent({ + name: 'requestCancelEditMode' + }); + + }) + + // 标为已读 + $("#mark-to-readed").on("touchend", function() { + ctrl.markMessagesToReaded(); + // 向父页面发送关闭编辑模式请求 + api.sendEvent({ + name: 'requestCancelEditMode' + }); + }) + + //上拉加载 + api.addEventListener({ + name: 'scrolltobottom' + }, function(ret, err) { + ctrl.getOldMessages(); + }); + + //获取新消息 + api.addEventListener({ + name: 'messageUpdated' + }, function(ret, err) { + if (ret) { + if (ret.value.type == 'delete') { + var msgId = ret.value.msgId; + $(".message[data-message-id='" + msgId + "']").remove(); + } else { + ctrl.getNewMessages(); + } + } + + }); + + // 收到父页面发送过来的 打开编辑模式的请求 + api.addEventListener({ + name: 'openEditMode' + }, function(ret, err) { + ctrl.openEditMode(); + }); + + // 收到父页面发送过来的取消编辑模式的请求 + api.addEventListener({ + name: 'cancelEditMode' + }, function(ret, err) { + ctrl.cancelEditMode(); + }); + + //下来刷新 + api.setRefreshHeaderInfo({ + bgColor: "#CCCCCC", + textColor: "#FFFFFF" + }, function(ret, err) { + + messageDao.updateData(function() { + api.refreshHeaderLoadDone(); + + ctrl.page = 0; + $("#list").empty(); + ctrl.oldMaxId = null; + ctrl.newMinId = null; + ctrl.getOldMessages(); + }) + }) + + //自定义消息 + $("#list").on("jump", ".bee-message", function() { + + var moreId = $(this).data("more-id"); + var messageType = $(this).data("message-type"); + var messageId = $(this).data("message-id"); + + ctrl.updateMsgToIsRead(messageId); + $(this).removeClass("unread"); + + switch (parseInt(messageType)) { + //新闻 + case 1001: + api.openWin({ + name: 'news', + url: 'widget://html/message/news.html', + pageParam: { + id: moreId, + messageId: messageId + } + }); + } + }) + + $("#list").on("touchend", ".message", function() { + ctrl.onTouchMessage(this); + }) + + //点击抢修管家消息 + $("#list").on("jump", ".repair-message", function() { + var msgId = $(this).data("message-id"); + ctrl.updateMsgToIsRead(msgId); + $(this).removeClass("unread"); + + var moreId = $(this).data("more-id"); + var messageType = $(this).data("message-type"); + var messageId = $(this).data("message-id"); + switch (parseInt(messageType)) { + case 2001: + case 2002: + api.openWin({ + name: 'repairDetail', + url: 'widget://html/feature/logQuery/repairLogDetail.html', + pageParam: { + id: moreId, + messageId: messageId + } + }); + } + + }) + + //点击巡检管家消息 + $("#list").on("jump", ".inspect-message", function() { + var messageId = $(this).data("message-id"); + ctrl.updateMsgToIsRead(messageId); + $(this).removeClass("unread"); + + var moreId = $(this).data("more-id"); + var messageType = $(this).data("message-type"); + + switch (parseInt(messageType)) { + case 3001: + api.openWin({ + name: 'inspectArrangement', + url: 'widget://html/feature/logQuery/inspectArrangement.html', + pageParam: { + id: moreId, + messageId: messageId + } + }); + break; + //巡检日志 + case 3002: + api.openWin({ + name: 'inspectLogDetail', + url: 'widget://html/feature/logQuery/inspectLogDetail.html', + pageParam: { + id: moreId, + messageId: messageId + } + }); + } + }) + // add by guoyuanyuan 2018/9/11 + //点击报表管家消息 + + // 点击报表管家消息 + $("#list").on("jump", ".report-message", function() { + var messageId = $(this).data("message-id"); + var time = $(this).data("time"); + ctrl.updateMsgToIsRead(messageId); + $(this).removeClass("unread"); + // var moreId = $(this).data("more-id"); + // var messageType = $(this).data("message-type"); + api.openWin({ + name: 'reportProject', + url: 'widget://html/report/reportProject.html', + pageParam: { + messageId: messageId, + time: time + } + }); + }) + + // 点击报警管家消息 + $("#list").on("jump", ".alarm-message", function() { + var messageId = $(this).data("message-id"); + ctrl.updateMsgToIsRead(messageId); + $(this).removeClass("unread"); + + var moreId = $(this).data("more-id"); + var messageType = $(this).data("message-type"); + api.openWin({ + name: 'alarmDetail', + url: 'widget://html/feature/alarmDetail.html', + pageParam: { + id: moreId, + messageId: messageId + } + }); + }) + // add by guoyuanyuan 2018/9/11 + //点击报表管家消息 + + //点击操作票助手消息 + $("#list").on("jump", ".operate-message", function() { + var msgId = $(this).data("message-id"); + ctrl.updateMsgToIsRead(msgId); + $(this).removeClass("unread"); + + var moreId = $(this).data("more-id"); + var messageType = $(this).data("message-type"); + var messageId = $(this).data("message-id"); + switch (parseInt(messageType)) { + //审核提示 + case 4001: + api.openWin({ + name: 'operateTicketCommon', + url: 'widget://html/message/operateTicketCommon.html', + pageParam: { + messageId: msgId, + type: messageType + } + }); + break; + + //完成操作票 + case 4002: + api.openWin({ + name: 'operateTicketDetail', + url: 'widget://html/feature/logQuery/operateTicketDetail.html', + pageParam: { + id: moreId, + messageId: messageId + } + }); + } + }) + + //点击工作票助手消息 + $("#list").on("jump", ".work-message", function() { + var messageId = $(this).data("message-id"); + ctrl.updateMsgToIsRead(messageId); + $(this).removeClass("unread"); + var moreId = $(this).data("more-id"); + var messageType = $(this).data("message-type"); + + switch (parseInt(messageType)) { + //完成工作票 + case 5001: + api.openWin({ + name: 'workTicket', + url: 'widget://html/message/workTicketCommon.html', + pageParam: { + id: messageId, + type: messageType, + messageId: messageId + } + }); + break; + //完成工作票 + case 5002: + api.openWin({ + name: 'workTicket', + url: 'widget://html/feature/logQuery/workTicketDetail.html', + pageParam: { + ticketId: moreId, + messageId: messageId + } + }); + } + }) + + } + + // 跳转到详情页 + ctrl.onTouchMessage = function(dom) { + // 如果是编辑模式 不跳转 + if (this.editMode) { + this.checkedAMessage(dom); + return false; + } + + $(dom).trigger('jump'); + + } + + // 选择一个消息 + ctrl.checkedAMessage = function(dom) { + var checkbox = $(dom).find('input[type="checkbox"]'); + if (checkbox.is(':checked')) { + checkbox.removeAttr('checked'); + } else { + checkbox.attr('checked', true); + } + + ctrl.updateActBtn(); + + } + + //显示消息前的拦截器,当处于体验模式下的话,需要替换配电室名称 + ctrl.msgFilter = function(who, list) { + if ($api.getStorage('cus') && list && list.length > 0) { + //如果处于体验模式下,并且存在消息 + switch (who) { + case "CUSTOM": + break; + case "REPAIR": + //拦截抢修管家消息 + //抢修管家目前有两种2002及2001 + for (var i = 0; i < list.length; i++) { + var msgEntity = list[i]; + if (msgEntity.msg_type == "2002" || msgEntity.msg_type == "2001") { + if (/配电室/.test(msgEntity.msg_title)) { + msgEntity.msg_title = $api.guestPrName; + } + + } + } + break; + case "INSPECT": + //拦截巡检管家消息 + //巡检管家消息分两种,只需要对msg_type为3002的巡检日志消息进行处理 + //替换掉巡检日志的标题(即配电室名称) + for (var i = 0; i < list.length; i++) { + var msgEntity = list[i]; + if (msgEntity.msg_type == "3002") { + msgEntity.msg_title = $api.guestPrName; + } + } + break; + case "OPERATE": + for (var i = 0; i < list.length; i++) { + var msgEntity = list[i]; + if (msgEntity.msg_type == "4001" || msgEntity.msg_type == "4002") { + msgEntity.msg_title = $api.guestPrName; + } + } + break; + + case "WORK": + for (var i = 0; i < list.length; i++) { + var msgEntity = list[i]; + if (msgEntity.msg_type == "5001" || msgEntity.msg_type == "5002") { + msgEntity.msg_title = $api.guestPrName; + } + } + break; + case "REPORT": + for (var i = 0; i < list.length; i++) { + var msgEntity = list[i]; + if (/配电室/.test(msgEntity.msg_title)) { + msgEntity.msg_title = $api.guestPrName; + } + } + break; + case "ALARM": + for (var i = 0; i < list.length; i++) { + var msgEntity = list[i]; + if (/配电室/.test(msgEntity.msg_title)) { + msgEntity.msg_title = $api.guestPrName; + } + } + break; + } + } + }; + + //读取旧消息 + ctrl.getOldMessages = function() { + var who = this.people[this.who]; + var oldMaxId = this.oldMaxId; + + messageDao.getOldMessages(who.messageTypes, this.page, this.pageSize, oldMaxId, function(list) { + if (list.length == 0) { + api.toast({ + msg: '没有消息了' + }) + ctrl.renderMessage([]); + } else { + + //如果 oldMaxId/newMinId 未赋值 表示第一次加载 把最大的id赋值给他们 用于后面渲染是做比较 + if (list[0]) { + + if (!ctrl.newMinId || parseInt(ctrl.newMinId) < parseInt(list[0].msg_id)) { + ctrl.newMinId = list[0].msg_id; + } + + if (!ctrl.oldMaxId) { + ctrl.oldMaxId = list[0].msg_id; + } + + } + + ctrl.renderMessage(list); + + if (list[list.length - 1]) { + if (!ctrl.oldMaxId || parseInt(ctrl.oldMaxId) > parseInt(list[list.length - 1].msg_id)) { + ctrl.oldMaxId = list[list.length - 1].msg_id; + } + } + ctrl.page++; + } + + }) + } + + //读取新消息 + ctrl.getNewMessages = function() { + + var who = this.people[this.who]; + var newMinId = this.newMinId; + + messageDao.getNewMessages(who.messageTypes, newMinId, function(list) { + + if (list.length > 0) { + + ctrl.newMinId = list[list.length - 1].msg_id; + + ctrl.renderMessage(list); + + } + + }) + } + + //渲染消息 + ctrl.renderMessage = function(list) { + + //显示钱先拦截一遍 + ctrl.msgFilter(ctrl.who, list); + + switch (ctrl.who) { + case "CUSTOM": + ctrl.customRenderCallback(list); + break; + case "REPAIR": + ctrl.repairRenderCallback(list); + break; + case "INSPECT": + ctrl.inspectRenderCallback(list); + break; + case "OPERATE": + ctrl.operateRenderCallback(list); + break; + case "WORK": + ctrl.workRenderCallback(list); + break; + case 'REPORT': + ctrl.reportRenderCallback(list); + case 'ALARM': + ctrl.alarmRenderCallback(list); + } + + //如果页面上没有消息 显示 空提示 + if ($(".message").length == 0) { + $("#empty-tips").css("display", "block"); + } else { + $("#empty-tips").css("display", "none"); + } + ctrl.updateActBtn(); + } + + //往页面上添加消息 + + ctrl.appendMessage = function(id, message) { + + if (parseInt(id) <= parseInt(ctrl.oldMaxId)) { + + $("#list").append(message); + + } else { + + var messages = $(".message"); + + if (messages.length > 0) { + + messages.eq(0).before(message); + + } else { + + $("#list").append(message); + + } + + } + + } + + //更新消息为已读 + ctrl.updateMsgToIsRead = function(msgId) { + messageDao.updateMessageToIsRead(msgId); + } + + var defaltMessagetpl = ''; + defaltMessagetpl += '
    '; + defaltMessagetpl += '
    '; + defaltMessagetpl += '
    '; + defaltMessagetpl += '
    '; + defaltMessagetpl += '
    {{msgTitle}}
    '; + defaltMessagetpl += '
    {{content}}
    '; + defaltMessagetpl += '
    '; + defaltMessagetpl += '
    '; + defaltMessagetpl += '
    {{time}}
    '; + defaltMessagetpl += '
    '; + defaltMessagetpl += '
    '; + defaltMessagetpl += '
    '; + defaltMessagetpl += '
    '; + + //渲染自定义消息列表 + ctrl.customRenderCallback = function(list) { + var length = list.length; + var message = ""; + for (var i = 0; i < length; i++) { + switch (parseInt(list[i].msg_type)) { + case 1001: //新闻 + message = getNewsDOM(list[i]); + break; + default: + + } + + ctrl.appendMessage(list[i].msg_id, message); + + } + + //获取新闻dOM + function getNewsDOM(item) { + + var newsTpl = '
    '; + newsTpl += '
    ' + newsTpl += '
    '; + newsTpl += '
    {{msgTitle}}
    '; + newsTpl += '
    {{content}} [{{time}}]
    '; + newsTpl += '
    '; + newsTpl += '
    '; + newsTpl += '
    '; + + var msgContent = null; + try { + msgContent = JSON.parse(item.msg_content); + } catch (e) { + msgContent = ''; + } + + var content = ""; + if (msgContent) { + content += msgContent.content.slice(0, 40); + } else { + content = item.msg_content; + } + + var time = CommonModel.formatDateTime(item.create_time); + + var unRead = item.is_read == '1' ? "" : 'unread'; + + var msgTitle = (item.msg_title && item.msg_title != "null" && item.msg_title != "undefined") ? item.msg_title : "新闻"; + + var message = newsTpl.replace("{{what}}", "operate-message") + .replace(/{{messageId}}/g, item.msg_id) + .replace("{{messageType}}", item.msg_type) + .replace("{{unRead}}", unRead) + .replace("{{time}}", time) + .replace("{{moreId}}", item.content_id) + .replace("{{msgTitle}}", msgTitle) + .replace("{{content}}", content); + + var dom = $(message); + if (msgContent && msgContent.pic) { + api.imageCache({ + url: msgContent.pic, + thumbnail: false + }, function(ret, err) { + + if (ret.status) { + dom.find(".right").html('
    ') + } + }) + } + + return dom; + + } + } + + //渲染抢修管家消息 + + ctrl.repairRenderCallback = function(list) { + var length = list.length; + for (var i = 0; i < length; i++) { + var msgTitle = (list[i].msg_title && list[i].msg_title != "null" && list[i].msg_title != "undefined") ? list[i].msg_title : "消息"; + var unRead = list[i].is_read == '1' ? "" : 'unread'; + var message = defaltMessagetpl.replace("{{what}}", "repair-message") + .replace(/{{messageId}}/g, list[i].msg_id) + .replace("{{messageType}}", list[i].msg_type) + .replace("{{unRead}}", unRead) + .replace("{{moreId}}", list[i].content_id) + .replace("{{msgTitle}}", msgTitle) + .replace("{{time}}", CommonModel.formatDateTime(list[i].create_time)) + .replace("{{content}}", list[i].msg_content) + .replace("{{iconSrc}}", "../../image/message_icon_" + list[i].msg_type + '.svg') + .replace("{{iconClass}}", "icon_" + list[i].msg_type); + + ctrl.appendMessage(list[i].msg_id, message); + } + } + + //渲染巡检管家消息 + ctrl.inspectRenderCallback = function(list) { + var length = list.length; + for (var i = 0; i < length; i++) { + var msgTitle = (list[i].msg_title && list[i].msg_title != "null" && list[i].msg_title != "undefined") ? list[i].msg_title : "消息"; + var unRead = list[i].is_read == '1' ? "" : 'unread'; + var message = defaltMessagetpl.replace("{{what}}", "inspect-message") + .replace(/{{messageId}}/g, list[i].msg_id) + .replace("{{messageType}}", list[i].msg_type) + .replace("{{unRead}}", unRead) + .replace("{{moreId}}", list[i].content_id) + .replace("{{msgTitle}}", msgTitle) + .replace("{{time}}", CommonModel.formatDateTime(list[i].create_time)) + .replace("{{content}}", list[i].msg_content) + .replace("{{iconSrc}}", "../../image/message_icon_" + list[i].msg_type + '.svg') + .replace("{{iconClass}}", "icon_" + list[i].msg_type); + + ctrl.appendMessage(list[i].msg_id, message); + } + } + + // add by guoyuanyuan 2018/9/11 + // 渲染报表管家消息 + ctrl.reportRenderCallback = function(list) { + var length = list.length; + for (var i = 0; i < length; i++) { + var msgTitle = (list[i].msg_title && list[i].msg_title != "null" && list[i].msg_title != "undefined") ? list[i].msg_title : "消息"; + var unRead = list[i].is_read == '1' ? "" : 'unread'; + var message = defaltMessagetpl.replace("{{what}}", "report-message") + .replace(/{{messageId}}/g, list[i].msg_id) + .replace("{{messageType}}", list[i].msg_type) + .replace("{{unRead}}", unRead) + .replace("{{moreId}}", list[i].content_id) + .replace("{{msgTitle}}", msgTitle) + .replace("{{currentTime}}", list[i].create_time) + .replace("{{time}}", CommonModel.formatDateTime(list[i].create_time)) + .replace("{{content}}", list[i].msg_content) + .replace("{{iconSrc}}", "../../image/message_icon_" + list[i].msg_type + '.svg') + .replace("{{iconClass}}", "icon_" + list[i].msg_type); + + ctrl.appendMessage(list[i].msg_id, message); + } + } + + + // add by guoyuanyuan 2018/9/20 + // 渲染报警管家消息 + ctrl.alarmRenderCallback = function(list) { + var length = list.length; + for (var i = 0; i < length; i++) { + var msgTitle = (list[i].msg_title && list[i].msg_title != "null" && list[i].msg_title != "undefined") ? list[i].msg_title : "消息"; + var unRead = list[i].is_read == '1' ? "" : 'unread'; + var message = defaltMessagetpl.replace("{{what}}", "alarm-message") + .replace(/{{messageId}}/g, list[i].msg_id) + .replace("{{messageType}}", list[i].msg_type) + .replace("{{unRead}}", unRead) + .replace("{{moreId}}", list[i].content_id) + .replace("{{msgTitle}}", msgTitle) + .replace("{{currentTime}}", list[i].create_time) + .replace("{{time}}", CommonModel.formatDateTime(list[i].create_time)) + .replace("{{content}}", list[i].msg_content) + .replace("{{iconSrc}}", '../../image/message_icon_6001.svg') + .replace("{{iconClass}}", "icon_" + list[i].msg_type); + + ctrl.appendMessage(list[i].msg_id, message); + } + } + + //操作票助手消息 + ctrl.operateRenderCallback = function(list) { + var length = list.length; + for (var i = 0; i < length; i++) { + var msgTitle = (list[i].msg_title && (list[i].msg_title != "null" || list[i].msg_title != "undefined")) ? list[i].msg_title : "消息"; + var unRead = list[i].is_read == '1' ? "" : 'unread'; + var message = defaltMessagetpl.replace("{{what}}", "operate-message") + .replace(/{{messageId}}/g, list[i].msg_id) + .replace("{{messageType}}", list[i].msg_type) + .replace("{{unRead}}", unRead) + .replace("{{moreId}}", list[i].content_id) + .replace("{{msgTitle}}", msgTitle) + .replace("{{time}}", CommonModel.formatDateTime(list[i].create_time)) + .replace("{{content}}", list[i].msg_content) + .replace("{{iconSrc}}", "../../image/message_icon_" + list[i].msg_type + '.svg') + .replace("{{iconClass}}", "icon_" + list[i].msg_type); + + ctrl.appendMessage(list[i].msg_id, message); + } + } + + //工作票助手消息 + ctrl.workRenderCallback = function(list) { + var length = list.length; + for (var i = 0; i < length; i++) { + var msgTitle = (list[i].msg_title && (list[i].msg_title != "null" || list[i].msg_title != "undefined")) ? list[i].msg_title : "消息"; + var unRead = list[i].is_read == '1' ? "" : 'unread'; + var message = defaltMessagetpl.replace("{{what}}", "work-message") + .replace(/{{messageId}}/g, list[i].msg_id) + .replace("{{messageType}}", list[i].msg_type) + .replace("{{unRead}}", unRead) + .replace("{{moreId}}", list[i].content_id) + .replace("{{msgTitle}}", msgTitle) + .replace("{{time}}", CommonModel.formatDateTime(list[i].create_time)) + .replace("{{content}}", list[i].msg_content) + .replace("{{iconSrc}}", "../../image/message_icon_" + list[i].msg_type + '.svg') + .replace("{{iconClass}}", "icon_" + list[i].msg_type); + + ctrl.appendMessage(list[i].msg_id, message); + } + } + + + // 打开编辑模式 + ctrl.openEditMode = function() { + $("body").addClass('edit-mode'); + $('.message').removeClass('bg-touch'); + $(".message input[type='checkbox']").removeAttr('checked'); + this.updateActBtn(); + this.editMode = true; + } + + // 关闭编辑模式 + ctrl.cancelEditMode = function() { + $("body").removeClass('edit-mode'); + $('.message').addClass('bg-touch'); + this.editMode = false; + } + + // 更新全选按钮的状态 + ctrl.updateActBtn = function() { + var messageLength = $(".message").length; + var checkedMessageLength = $(".message input[type='checkbox']:checked").length; + var checkedUnReadMessageLength = $(".message.unread input[type='checkbox']:checked").length; + + // 如果处于编辑状态,页面上的选中条数也总条数不一样,显示全选按钮 + var selectAllBtn = $("#select-all"); + if (checkedMessageLength != messageLength) { + $("#select-all").data('select-all', 0).text('全选'); + } else { + $("#select-all").data('select-all', 1).text('取消'); + } + + if (checkedUnReadMessageLength > 0) { + $('#mark-to-readed').removeClass('color-gray').addClass('color-green').data('useable', 1); + } else { + $('#mark-to-readed').removeClass('color-green').addClass('color-gray').data('useable', 0); + } + + if (checkedMessageLength > 0) { + $('#remove').removeClass('color-gray').addClass('color-red').data('useable', 1); + } else { + $('#remove').removeClass('color-red').addClass('color-gray').data('useable', 0); + } + + if (messageLength == 0) { + $("#act-panel").css('display', 'none'); + } + } + + // 批量删除消息 + ctrl.removeMessages = function() { + var checkedMessage = $(".message input[type='checkbox']:checked"); + var index = 0; + if (checkedMessage.length > 0) { + remove(); + } + + function remove() { + (function(index) { + var messageId = checkedMessage[index].value; + messageDao.deleteOne(messageId, function(ret) { + $(checkedMessage[index]).parents('.message').remove(); + $(checkedMessage[index]).removeAttr('checked'); + }) + })(index) + + index++; + if (index < checkedMessage.length) { + setTimeout(function() { + remove() + }, 100); + } + } + } + + // 批量标记为已读 + ctrl.markMessagesToReaded = function() { + var checkedMessage = $(".message.unread input[type='checkbox']:checked"); + var index = 0; + if (checkedMessage.length > 0) { + mark(); + } + + function mark() { + (function(index) { + var messageId = checkedMessage[index].value; + messageDao.updateMessageToIsRead(messageId, function(ret) { + $(checkedMessage[index]).parents('.message').removeClass('unread'); + $(checkedMessage[index]).removeAttr('checked'); + }) + })(index) + + index++; + if (index < checkedMessage.length) { + setTimeout(function() { + mark() + }, 100); + } + } + } + + ctrl.init(); +} diff --git a/app-saas-src/script/message/news.js b/app-saas-src/script/message/news.js new file mode 100644 index 0000000..bf8d809 --- /dev/null +++ b/app-saas-src/script/message/news.js @@ -0,0 +1,44 @@ +apiready = function() { + var ctrl = { + newsId: null, + init: {}, + bind: {}, + } + + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + this.newsId = api.pageParam.id; + this.bind(); + // this.getNews(); + } + + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + //打开frame + //计算frame显示的位置和尺寸 + var windowWidth = parseInt($api.cssVal($api.dom("body"), "width")); + var windowHeight = parseInt($api.cssVal($api.dom("body"), "height")); + var headerHeight = parseInt($api.cssVal($api.dom("#header"), "height")); + var frameX = 0; + var frameY = headerHeight; + var frameWidth = windowWidth; + var frameHeight = windowHeight - headerHeight; + api.openFrame({ + name: 'newsFrame', + url: 'https://www.dianwutong.com/app/news.do?id=' + this.newsId, + rect: { + x: frameX, + y: frameY, + w: frameWidth, + h: frameHeight + }, + }); + + } + + ctrl.init(); +} diff --git a/app-saas-src/script/message/operateTicketCommon.js b/app-saas-src/script/message/operateTicketCommon.js new file mode 100644 index 0000000..b7a03c7 --- /dev/null +++ b/app-saas-src/script/message/operateTicketCommon.js @@ -0,0 +1,78 @@ +apiready = function() { + var ctrl = { + id: null, + type: null, + init: {}, + bind: {}, + + initVerifyNotice: {}, + } + + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + this.id = api.pageParam.messageId; + this.type = api.pageParam.type; + this.bind(); + + switch (this.type) { + case 4001: //审核通知 + this.initVerifyNotice(); + break; + default: + + } + } + + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + } + + //显示审核通知 + ctrl.initVerifyNotice = function() { + var url = '/ems/rest/message'; + var args = { + msgId: this.id + }; + + $api.get(url, args, function(data, err) { + + if (data && data.code == '200' && data.body) { + + var msg = data.body; + var content = msg.msgDetail; + $('#content').html(content); + var dateUtils = new DateUtils(); + var time = dateUtils.getFormattedDate(dateUtils.setDate(msg.createTime)) + $('#time').html(time); + + } else if (data.code == 404) { + var msg = "消息已过期"; + var messageId = api.pageParam.messageId; + toast(msg); + api.sendEvent({ + name: 'removeMessage', + extra: { + messageId: messageId + } + }); + + window.setTimeout(function() { + api.closeWin(); + }, 2000); + + } else { + + toast('网络错误:' + data.code); + + } + + }) + + } + + ctrl.init(); +} diff --git a/app-saas-src/script/message/workTicketCommon.js b/app-saas-src/script/message/workTicketCommon.js new file mode 100644 index 0000000..4ba3d13 --- /dev/null +++ b/app-saas-src/script/message/workTicketCommon.js @@ -0,0 +1,77 @@ +apiready = function() { + var ctrl = { + id: null, + type: null, + init: {}, + bind: {}, + + initVerifyNotice: {}, + } + + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + this.id = api.pageParam.id; + this.type = api.pageParam.type; + this.bind(); + + switch (this.type) { + case 5001: //审核通知 + this.initVerifyNotice(); + break; + default: + + } + } + + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + } + + //显示审核通知 + ctrl.initVerifyNotice = function() { + var url = '/ems/rest/message'; + var args = { + msgId: this.id + }; + + $api.get(url, args, function(data, err) { + + if (data && data.code == '200' && data.body) { + var msg = data.body; + var content = msg.msgDetail; + $('#content').html(content); + var dateUtils = new DateUtils(); + var time = dateUtils.getFormattedDate(dateUtils.setDate(msg.createTime)) + $('#time').html(time); + + } else if (data.code == 404) { + var msg = "消息已过期"; + var messageId = api.pageParam.messageId; + toast(msg); + api.sendEvent({ + name: 'removeMessage', + extra: { + messageId: messageId + } + }); + + window.setTimeout(function() { + api.closeWin(); + }, 2000); + + } else { + + toast('网络错误:' + data.code); + + } + + }) + + } + + ctrl.init(); +} diff --git a/app-saas-src/script/moment.min.js b/app-saas-src/script/moment.min.js new file mode 100644 index 0000000..e409056 --- /dev/null +++ b/app-saas-src/script/moment.min.js @@ -0,0 +1,80 @@ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return Md.apply(null,arguments)}function b(a){Md=a}function c(a){return"[object Array]"===Object.prototype.toString.call(a)}function d(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function e(a,b){var c,d=[];for(c=0;c0)for(c in Od)d=Od[c],e=b[d],"undefined"!=typeof e&&(a[d]=e);return a}function n(b){m(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN),Pd===!1&&(Pd=!0,a.updateOffset(this),Pd=!1)}function o(a){return a instanceof n||null!=a&&null!=a._isAMomentObject}function p(a){return 0>a?Math.ceil(a):Math.floor(a)}function q(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=p(b)),c}function r(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&q(a[d])!==q(b[d]))&&g++;return g+f}function s(){}function t(a){return a?a.toLowerCase().replace("_","-"):a}function u(a){for(var b,c,d,e,f=0;f0;){if(d=v(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&r(e,c,!0)>=b-1)break;b--}f++}return null}function v(a){var b=null;if(!Qd[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=Nd._abbr,require("./locale/"+a),w(b)}catch(c){}return Qd[a]}function w(a,b){var c;return a&&(c="undefined"==typeof b?y(a):x(a,b),c&&(Nd=c)),Nd._abbr}function x(a,b){return null!==b?(b.abbr=a,Qd[a]=Qd[a]||new s,Qd[a].set(b),w(a),Qd[a]):(delete Qd[a],null)}function y(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return Nd;if(!c(a)){if(b=v(a))return b;a=[a]}return u(a)}function z(a,b){var c=a.toLowerCase();Rd[c]=Rd[c+"s"]=Rd[b]=a}function A(a){return"string"==typeof a?Rd[a]||Rd[a.toLowerCase()]:void 0}function B(a){var b,c,d={};for(c in a)f(a,c)&&(b=A(c),b&&(d[b]=a[c]));return d}function C(b,c){return function(d){return null!=d?(E(this,b,d),a.updateOffset(this,c),this):D(this,b)}}function D(a,b){return a._d["get"+(a._isUTC?"UTC":"")+b]()}function E(a,b,c){return a._d["set"+(a._isUTC?"UTC":"")+b](c)}function F(a,b){var c;if("object"==typeof a)for(c in a)this.set(c,a[c]);else if(a=A(a),"function"==typeof this[a])return this[a](b);return this}function G(a,b,c){var d=""+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function H(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(Vd[a]=e),b&&(Vd[b[0]]=function(){return G(e.apply(this,arguments),b[1],b[2])}),c&&(Vd[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function I(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function J(a){var b,c,d=a.match(Sd);for(b=0,c=d.length;c>b;b++)Vd[d[b]]?d[b]=Vd[d[b]]:d[b]=I(d[b]);return function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function K(a,b){return a.isValid()?(b=L(b,a.localeData()),Ud[b]=Ud[b]||J(b),Ud[b](a)):a.localeData().invalidDate()}function L(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Td.lastIndex=0;d>=0&&Td.test(a);)a=a.replace(Td,c),Td.lastIndex=0,d-=1;return a}function M(a){return"function"==typeof a&&"[object Function]"===Object.prototype.toString.call(a)}function N(a,b,c){ie[a]=M(b)?b:function(a){return a&&c?c:b}}function O(a,b){return f(ie,a)?ie[a](b._strict,b._locale):new RegExp(P(a))}function P(a){return a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Q(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),"number"==typeof b&&(d=function(a,c){c[b]=q(a)}),c=0;cd;d++){if(e=h([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function X(a,b){var c;return"string"==typeof b&&(b=a.localeData().monthsParse(b),"number"!=typeof b)?a:(c=Math.min(a.date(),T(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a)}function Y(b){return null!=b?(X(this,b),a.updateOffset(this,!0),this):D(this,"Month")}function Z(){return T(this.year(),this.month())}function $(a){var b,c=a._a;return c&&-2===j(a).overflow&&(b=c[le]<0||c[le]>11?le:c[me]<1||c[me]>T(c[ke],c[le])?me:c[ne]<0||c[ne]>24||24===c[ne]&&(0!==c[oe]||0!==c[pe]||0!==c[qe])?ne:c[oe]<0||c[oe]>59?oe:c[pe]<0||c[pe]>59?pe:c[qe]<0||c[qe]>999?qe:-1,j(a)._overflowDayOfYear&&(ke>b||b>me)&&(b=me),j(a).overflow=b),a}function _(b){a.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+b)}function aa(a,b){var c=!0;return g(function(){return c&&(_(a+"\n"+(new Error).stack),c=!1),b.apply(this,arguments)},b)}function ba(a,b){te[a]||(_(b),te[a]=!0)}function ca(a){var b,c,d=a._i,e=ue.exec(d);if(e){for(j(a).iso=!0,b=0,c=ve.length;c>b;b++)if(ve[b][1].exec(d)){a._f=ve[b][0];break}for(b=0,c=we.length;c>b;b++)if(we[b][1].exec(d)){a._f+=(e[6]||" ")+we[b][0];break}d.match(fe)&&(a._f+="Z"),va(a)}else a._isValid=!1}function da(b){var c=xe.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(ca(b),void(b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b))))}function ea(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function fa(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function ga(a){return ha(a)?366:365}function ha(a){return a%4===0&&a%100!==0||a%400===0}function ia(){return ha(this.year())}function ja(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=Da(a).add(f,"d"),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function ka(a){return ja(a,this._week.dow,this._week.doy).week}function la(){return this._week.dow}function ma(){return this._week.doy}function na(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function oa(a){var b=ja(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}function pa(a,b,c,d,e){var f,g=6+e-d,h=fa(a,0,1+g),i=h.getUTCDay();return e>i&&(i+=7),c=null!=c?1*c:e,f=1+g+7*(b-1)-i+c,{year:f>0?a:a-1,dayOfYear:f>0?f:ga(a-1)+f}}function qa(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function ra(a,b,c){return null!=a?a:null!=b?b:c}function sa(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function ta(a){var b,c,d,e,f=[];if(!a._d){for(d=sa(a),a._w&&null==a._a[me]&&null==a._a[le]&&ua(a),a._dayOfYear&&(e=ra(a._a[ke],d[ke]),a._dayOfYear>ga(e)&&(j(a)._overflowDayOfYear=!0),c=fa(e,0,a._dayOfYear),a._a[le]=c.getUTCMonth(),a._a[me]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;7>b;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[ne]&&0===a._a[oe]&&0===a._a[pe]&&0===a._a[qe]&&(a._nextDay=!0,a._a[ne]=0),a._d=(a._useUTC?fa:ea).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[ne]=24)}}function ua(a){var b,c,d,e,f,g,h;b=a._w,null!=b.GG||null!=b.W||null!=b.E?(f=1,g=4,c=ra(b.GG,a._a[ke],ja(Da(),1,4).year),d=ra(b.W,1),e=ra(b.E,1)):(f=a._locale._week.dow,g=a._locale._week.doy,c=ra(b.gg,a._a[ke],ja(Da(),f,g).year),d=ra(b.w,1),null!=b.d?(e=b.d,f>e&&++d):e=null!=b.e?b.e+f:f),h=pa(c,d,e,g,f),a._a[ke]=h.year,a._dayOfYear=h.dayOfYear}function va(b){if(b._f===a.ISO_8601)return void ca(b);b._a=[],j(b).empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,k=0;for(e=L(b._f,b._locale).match(Sd)||[],c=0;c0&&j(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),k+=d.length),Vd[f]?(d?j(b).empty=!1:j(b).unusedTokens.push(f),S(f,d,b)):b._strict&&!d&&j(b).unusedTokens.push(f);j(b).charsLeftOver=i-k,h.length>0&&j(b).unusedInput.push(h),j(b).bigHour===!0&&b._a[ne]<=12&&b._a[ne]>0&&(j(b).bigHour=void 0),b._a[ne]=wa(b._locale,b._a[ne],b._meridiem),ta(b),$(b)}function wa(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&12>b&&(b+=12),d||12!==b||(b=0),b):b}function xa(a){var b,c,d,e,f;if(0===a._f.length)return j(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;ef)&&(d=f,c=b));g(a,c||b)}function ya(a){if(!a._d){var b=B(a._i);a._a=[b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],ta(a)}}function za(a){var b=new n($(Aa(a)));return b._nextDay&&(b.add(1,"d"),b._nextDay=void 0),b}function Aa(a){var b=a._i,e=a._f;return a._locale=a._locale||y(a._l),null===b||void 0===e&&""===b?l({nullInput:!0}):("string"==typeof b&&(a._i=b=a._locale.preparse(b)),o(b)?new n($(b)):(c(e)?xa(a):e?va(a):d(b)?a._d=b:Ba(a),a))}function Ba(b){var f=b._i;void 0===f?b._d=new Date:d(f)?b._d=new Date(+f):"string"==typeof f?da(b):c(f)?(b._a=e(f.slice(0),function(a){return parseInt(a,10)}),ta(b)):"object"==typeof f?ya(b):"number"==typeof f?b._d=new Date(f):a.createFromInputFallback(b)}function Ca(a,b,c,d,e){var f={};return"boolean"==typeof c&&(d=c,c=void 0),f._isAMomentObject=!0,f._useUTC=f._isUTC=e,f._l=c,f._i=a,f._f=b,f._strict=d,za(f)}function Da(a,b,c,d){return Ca(a,b,c,d,!1)}function Ea(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return Da();for(d=b[0],e=1;ea&&(a=-a,c="-"),c+G(~~(a/60),2)+b+G(~~a%60,2)})}function Ka(a){var b=(a||"").match(fe)||[],c=b[b.length-1]||[],d=(c+"").match(Ce)||["-",0,0],e=+(60*d[1])+q(d[2]);return"+"===d[0]?e:-e}function La(b,c){var e,f;return c._isUTC?(e=c.clone(),f=(o(b)||d(b)?+b:+Da(b))-+e,e._d.setTime(+e._d+f),a.updateOffset(e,!1),e):Da(b).local()}function Ma(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Na(b,c){var d,e=this._offset||0;return null!=b?("string"==typeof b&&(b=Ka(b)),Math.abs(b)<16&&(b=60*b),!this._isUTC&&c&&(d=Ma(this)),this._offset=b,this._isUTC=!0,null!=d&&this.add(d,"m"),e!==b&&(!c||this._changeInProgress?bb(this,Ya(b-e,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?e:Ma(this)}function Oa(a,b){return null!=a?("string"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Pa(a){return this.utcOffset(0,a)}function Qa(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Ma(this),"m")),this}function Ra(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Ka(this._i)),this}function Sa(a){return a=a?Da(a).utcOffset():0,(this.utcOffset()-a)%60===0}function Ta(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ua(){if("undefined"!=typeof this._isDSTShifted)return this._isDSTShifted;var a={};if(m(a,this),a=Aa(a),a._a){var b=a._isUTC?h(a._a):Da(a._a);this._isDSTShifted=this.isValid()&&r(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Va(){return!this._isUTC}function Wa(){return this._isUTC}function Xa(){return this._isUTC&&0===this._offset}function Ya(a,b){var c,d,e,g=a,h=null;return Ia(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(g={},b?g[b]=a:g.milliseconds=a):(h=De.exec(a))?(c="-"===h[1]?-1:1,g={y:0,d:q(h[me])*c,h:q(h[ne])*c,m:q(h[oe])*c,s:q(h[pe])*c,ms:q(h[qe])*c}):(h=Ee.exec(a))?(c="-"===h[1]?-1:1,g={y:Za(h[2],c),M:Za(h[3],c),d:Za(h[4],c),h:Za(h[5],c),m:Za(h[6],c),s:Za(h[7],c),w:Za(h[8],c)}):null==g?g={}:"object"==typeof g&&("from"in g||"to"in g)&&(e=_a(Da(g.from),Da(g.to)),g={},g.ms=e.milliseconds,g.M=e.months),d=new Ha(g),Ia(a)&&f(a,"_locale")&&(d._locale=a._locale),d}function Za(a,b){var c=a&&parseFloat(a.replace(",","."));return(isNaN(c)?0:c)*b}function $a(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function _a(a,b){var c;return b=La(b,a),a.isBefore(b)?c=$a(a,b):(c=$a(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c}function ab(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(ba(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period)."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=Ya(c,d),bb(this,e,a),this}}function bb(b,c,d,e){var f=c._milliseconds,g=c._days,h=c._months;e=null==e?!0:e,f&&b._d.setTime(+b._d+f*d),g&&E(b,"Date",D(b,"Date")+g*d),h&&X(b,D(b,"Month")+h*d),e&&a.updateOffset(b,g||h)}function cb(a,b){var c=a||Da(),d=La(c,this).startOf("day"),e=this.diff(d,"days",!0),f=-6>e?"sameElse":-1>e?"lastWeek":0>e?"lastDay":1>e?"sameDay":2>e?"nextDay":7>e?"nextWeek":"sameElse";return this.format(b&&b[f]||this.localeData().calendar(f,this,Da(c)))}function db(){return new n(this)}function eb(a,b){var c;return b=A("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=o(a)?a:Da(a),+this>+a):(c=o(a)?+a:+Da(a),c<+this.clone().startOf(b))}function fb(a,b){var c;return b=A("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=o(a)?a:Da(a),+a>+this):(c=o(a)?+a:+Da(a),+this.clone().endOf(b)b-f?(c=a.clone().add(e-1,"months"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)}function kb(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function lb(){var a=this.clone().utc();return 0b;b++)if(this._weekdaysParse[b]||(c=Da([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b}function Pb(a){var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Kb(a,this.localeData()),this.add(a-b,"d")):b}function Qb(a){var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function Rb(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)}function Sb(a,b){H(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function Tb(a,b){return b._meridiemParse}function Ub(a){return"p"===(a+"").toLowerCase().charAt(0)}function Vb(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function Wb(a,b){b[qe]=q(1e3*("0."+a))}function Xb(){return this._isUTC?"UTC":""}function Yb(){return this._isUTC?"Coordinated Universal Time":""}function Zb(a){return Da(1e3*a)}function $b(){return Da.apply(null,arguments).parseZone()}function _b(a,b,c){var d=this._calendar[a];return"function"==typeof d?d.call(b,c):d}function ac(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function bc(){return this._invalidDate}function cc(a){return this._ordinal.replace("%d",a)}function dc(a){return a}function ec(a,b,c,d){var e=this._relativeTime[c];return"function"==typeof e?e(a,b,c,d):e.replace(/%d/i,a)}function fc(a,b){var c=this._relativeTime[a>0?"future":"past"];return"function"==typeof c?c(b):c.replace(/%s/i,b)}function gc(a){var b,c;for(c in a)b=a[c],"function"==typeof b?this[c]=b:this["_"+c]=b;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function hc(a,b,c,d){var e=y(),f=h().set(d,b);return e[c](f,a)}function ic(a,b,c,d,e){if("number"==typeof a&&(b=a,a=void 0),a=a||"",null!=b)return hc(a,b,c,e);var f,g=[];for(f=0;d>f;f++)g[f]=hc(a,f,c,e);return g}function jc(a,b){return ic(a,b,"months",12,"month")}function kc(a,b){return ic(a,b,"monthsShort",12,"month")}function lc(a,b){return ic(a,b,"weekdays",7,"day")}function mc(a,b){return ic(a,b,"weekdaysShort",7,"day")}function nc(a,b){return ic(a,b,"weekdaysMin",7,"day")}function oc(){var a=this._data;return this._milliseconds=_e(this._milliseconds),this._days=_e(this._days),this._months=_e(this._months),a.milliseconds=_e(a.milliseconds),a.seconds=_e(a.seconds),a.minutes=_e(a.minutes),a.hours=_e(a.hours),a.months=_e(a.months),a.years=_e(a.years),this}function pc(a,b,c,d){var e=Ya(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function qc(a,b){return pc(this,a,b,1)}function rc(a,b){return pc(this,a,b,-1)}function sc(a){return 0>a?Math.floor(a):Math.ceil(a)}function tc(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||0>=f&&0>=g&&0>=h||(f+=864e5*sc(vc(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=p(f/1e3),i.seconds=a%60,b=p(a/60),i.minutes=b%60,c=p(b/60),i.hours=c%24,g+=p(c/24),e=p(uc(g)),h+=e,g-=sc(vc(e)),d=p(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function uc(a){return 4800*a/146097}function vc(a){return 146097*a/4800}function wc(a){var b,c,d=this._milliseconds;if(a=A(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+uc(b),"month"===a?c:c/12;switch(b=this._days+Math.round(vc(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}function xc(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*q(this._months/12)}function yc(a){return function(){return this.as(a)}}function zc(a){return a=A(a),this[a+"s"]()}function Ac(a){return function(){return this._data[a]}}function Bc(){return p(this.days()/7)}function Cc(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function Dc(a,b,c){var d=Ya(a).abs(),e=qf(d.as("s")),f=qf(d.as("m")),g=qf(d.as("h")),h=qf(d.as("d")),i=qf(d.as("M")),j=qf(d.as("y")),k=e0,k[4]=c,Cc.apply(null,k)}function Ec(a,b){return void 0===rf[a]?!1:void 0===b?rf[a]:(rf[a]=b,!0)}function Fc(a){var b=this.localeData(),c=Dc(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function Gc(){var a,b,c,d=sf(this._milliseconds)/1e3,e=sf(this._days),f=sf(this._months);a=p(d/60),b=p(a/60),d%=60,a%=60,c=p(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(0>m?"-":"")+"P"+(g?g+"Y":"")+(h?h+"M":"")+(i?i+"D":"")+(j||k||l?"T":"")+(j?j+"H":"")+(k?k+"M":"")+(l?l+"S":""):"P0D"} +//! moment.js locale configuration +//! locale : belarusian (be) +//! author : Dmitry Demidov : https://github.com/demidov91 +//! author: Praleska: https://praleska.pro/ +//! Author : Menelion Elensúle : https://github.com/Oire +function Hc(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function Ic(a,b,c){var d={mm:b?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:b?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===c?b?"хвіліна":"хвіліну":"h"===c?b?"гадзіна":"гадзіну":a+" "+Hc(d[c],+a)}function Jc(a,b){var c={nominative:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_"),accusative:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function Kc(a,b){var c={nominative:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),accusative:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_")},d=/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/.test(b)?"accusative":"nominative";return c[d][a.day()]} +//! moment.js locale configuration +//! locale : breton (br) +//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou +function Lc(a,b,c){var d={mm:"munutenn",MM:"miz",dd:"devezh"};return a+" "+Oc(d[c],a)}function Mc(a){switch(Nc(a)){case 1:case 3:case 4:case 5:case 9:return a+" bloaz";default:return a+" vloaz"}}function Nc(a){return a>9?Nc(a%10):a}function Oc(a,b){return 2===b?Pc(a):a}function Pc(a){var b={m:"v",b:"v",d:"z"};return void 0===b[a.charAt(0)]?a:b[a.charAt(0)]+a.substring(1)} +//! moment.js locale configuration +//! locale : bosnian (bs) +//! author : Nedim Cholich : https://github.com/frontyard +//! based on (hr) translation by Bojan Marković +function Qc(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}function Rc(a){return a>1&&5>a&&1!==~~(a/10)}function Sc(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"pár sekund":"pár sekundami";case"m":return b?"minuta":d?"minutu":"minutou";case"mm":return b||d?e+(Rc(a)?"minuty":"minut"):e+"minutami";break;case"h":return b?"hodina":d?"hodinu":"hodinou";case"hh":return b||d?e+(Rc(a)?"hodiny":"hodin"):e+"hodinami";break;case"d":return b||d?"den":"dnem";case"dd":return b||d?e+(Rc(a)?"dny":"dní"):e+"dny";break;case"M":return b||d?"měsíc":"měsícem";case"MM":return b||d?e+(Rc(a)?"měsíce":"měsíců"):e+"měsíci";break;case"y":return b||d?"rok":"rokem";case"yy":return b||d?e+(Rc(a)?"roky":"let"):e+"lety"}} +//! moment.js locale configuration +//! locale : austrian german (de-at) +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire +//! author : Martin Groller : https://github.com/MadMG +function Tc(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]} +//! moment.js locale configuration +//! locale : german (de) +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire +function Uc(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]} +//! moment.js locale configuration +//! locale : estonian (et) +//! author : Henry Kehlmann : https://github.com/madhenry +//! improvements : Illimar Tambek : https://github.com/ragulka +function Vc(a,b,c,d){var e={s:["mõne sekundi","mõni sekund","paar sekundit"],m:["ühe minuti","üks minut"],mm:[a+" minuti",a+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[a+" tunni",a+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[a+" kuu",a+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[a+" aasta",a+" aastat"]};return b?e[c][2]?e[c][2]:e[c][1]:d?e[c][0]:e[c][1]}function Wc(a,b,c,d){var e="";switch(c){case"s":return d?"muutaman sekunnin":"muutama sekunti";case"m":return d?"minuutin":"minuutti";case"mm":e=d?"minuutin":"minuuttia";break;case"h":return d?"tunnin":"tunti";case"hh":e=d?"tunnin":"tuntia";break;case"d":return d?"päivän":"päivä";case"dd":e=d?"päivän":"päivää";break;case"M":return d?"kuukauden":"kuukausi";case"MM":e=d?"kuukauden":"kuukautta";break;case"y":return d?"vuoden":"vuosi";case"yy":e=d?"vuoden":"vuotta"}return e=Xc(a,d)+" "+e}function Xc(a,b){return 10>a?b?Pf[a]:Of[a]:a} +//! moment.js locale configuration +//! locale : hrvatski (hr) +//! author : Bojan Marković : https://github.com/bmarkovic +function Yc(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}function Zc(a,b,c,d){var e=a;switch(c){case"s":return d||b?"néhány másodperc":"néhány másodperce";case"m":return"egy"+(d||b?" perc":" perce");case"mm":return e+(d||b?" perc":" perce");case"h":return"egy"+(d||b?" óra":" órája");case"hh":return e+(d||b?" óra":" órája");case"d":return"egy"+(d||b?" nap":" napja");case"dd":return e+(d||b?" nap":" napja");case"M":return"egy"+(d||b?" hónap":" hónapja");case"MM":return e+(d||b?" hónap":" hónapja");case"y":return"egy"+(d||b?" év":" éve");case"yy":return e+(d||b?" év":" éve")}return""}function $c(a){return(a?"":"[múlt] ")+"["+Uf[this.day()]+"] LT[-kor]"} +//! moment.js locale configuration +//! locale : Armenian (hy-am) +//! author : Armendarabyan : https://github.com/armendarabyan +function _c(a,b){var c={nominative:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_"),accusative:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function ad(a,b){var c="հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_");return c[a.month()]}function bd(a,b){var c="կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_");return c[a.day()]} +//! moment.js locale configuration +//! locale : icelandic (is) +//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik +function cd(a){return a%100===11?!0:a%10===1?!1:!0}function dd(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nokkrar sekúndur":"nokkrum sekúndum";case"m":return b?"mínúta":"mínútu";case"mm":return cd(a)?e+(b||d?"mínútur":"mínútum"):b?e+"mínúta":e+"mínútu";case"hh":return cd(a)?e+(b||d?"klukkustundir":"klukkustundum"):e+"klukkustund";case"d":return b?"dagur":d?"dag":"degi";case"dd":return cd(a)?b?e+"dagar":e+(d?"daga":"dögum"):b?e+"dagur":e+(d?"dag":"degi");case"M":return b?"mánuður":d?"mánuð":"mánuði";case"MM":return cd(a)?b?e+"mánuðir":e+(d?"mánuði":"mánuðum"):b?e+"mánuður":e+(d?"mánuð":"mánuði");case"y":return b||d?"ár":"ári";case"yy":return cd(a)?e+(b||d?"ár":"árum"):e+(b||d?"ár":"ári")}} +//! moment.js locale configuration +//! locale : Georgian (ka) +//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili +function ed(a,b){var c={nominative:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),accusative:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},d=/D[oD] *MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function fd(a,b){var c={nominative:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),accusative:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_")},d=/(წინა|შემდეგ)/.test(b)?"accusative":"nominative";return c[d][a.day()]} +//! moment.js locale configuration +//! locale : Luxembourgish (lb) +//! author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz +function gd(a,b,c,d){var e={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return b?e[c][0]:e[c][1]}function hd(a){var b=a.substr(0,a.indexOf(" "));return jd(b)?"a "+a:"an "+a}function id(a){var b=a.substr(0,a.indexOf(" "));return jd(b)?"viru "+a:"virun "+a}function jd(a){if(a=parseInt(a,10),isNaN(a))return!1;if(0>a)return!0;if(10>a)return a>=4&&7>=a?!0:!1;if(100>a){var b=a%10,c=a/10;return jd(0===b?c:b)}if(1e4>a){for(;a>=10;)a/=10;return jd(a)}return a/=1e3,jd(a)}function kd(a,b,c,d){return b?"kelios sekundės":d?"kelių sekundžių":"kelias sekundes"}function ld(a,b){var c={nominative:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),accusative:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function md(a,b,c,d){return b?od(c)[0]:d?od(c)[1]:od(c)[2]}function nd(a){return a%10===0||a>10&&20>a}function od(a){return Vf[a].split("_")}function pd(a,b,c,d){var e=a+" ";return 1===a?e+md(a,b,c[0],d):b?e+(nd(a)?od(c)[1]:od(c)[0]):d?e+od(c)[1]:e+(nd(a)?od(c)[1]:od(c)[2])}function qd(a,b){var c=-1===b.indexOf("dddd HH:mm"),d=Wf[a.day()];return c?d:d.substring(0,d.length-2)+"į"}function rd(a,b,c){return c?b%10===1&&11!==b?a[2]:a[3]:b%10===1&&11!==b?a[0]:a[1]}function sd(a,b,c){return a+" "+rd(Xf[c],a,b)}function td(a,b,c){return rd(Xf[c],a,b)}function ud(a,b){return b?"dažas sekundes":"dažām sekundēm"}function vd(a){return 5>a%10&&a%10>1&&~~(a/10)%10!==1}function wd(a,b,c){var d=a+" ";switch(c){case"m":return b?"minuta":"minutę";case"mm":return d+(vd(a)?"minuty":"minut");case"h":return b?"godzina":"godzinę";case"hh":return d+(vd(a)?"godziny":"godzin");case"MM":return d+(vd(a)?"miesiące":"miesięcy");case"yy":return d+(vd(a)?"lata":"lat")}} +//! moment.js locale configuration +//! locale : romanian (ro) +//! author : Vlad Gurdiga : https://github.com/gurdiga +//! author : Valentin Agachi : https://github.com/avaly +function xd(a,b,c){var d={mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},e=" ";return(a%100>=20||a>=100&&a%100===0)&&(e=" de "),a+e+d[c]} +//! moment.js locale configuration +//! locale : russian (ru) +//! author : Viktorminator : https://github.com/Viktorminator +//! Author : Menelion Elensúle : https://github.com/Oire +function yd(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function zd(a,b,c){var d={mm:b?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===c?b?"минута":"минуту":a+" "+yd(d[c],+a)}function Ad(a,b){var c={nominative:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),accusative:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function Bd(a,b){var c={nominative:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),accusative:"янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function Cd(a,b){var c={nominative:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),accusative:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_")},d=/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/.test(b)?"accusative":"nominative";return c[d][a.day()]}function Dd(a){return a>1&&5>a}function Ed(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"pár sekúnd":"pár sekundami";case"m":return b?"minúta":d?"minútu":"minútou";case"mm":return b||d?e+(Dd(a)?"minúty":"minút"):e+"minútami";break;case"h":return b?"hodina":d?"hodinu":"hodinou";case"hh":return b||d?e+(Dd(a)?"hodiny":"hodín"):e+"hodinami";break;case"d":return b||d?"deň":"dňom";case"dd":return b||d?e+(Dd(a)?"dni":"dní"):e+"dňami";break;case"M":return b||d?"mesiac":"mesiacom";case"MM":return b||d?e+(Dd(a)?"mesiace":"mesiacov"):e+"mesiacmi";break;case"y":return b||d?"rok":"rokom";case"yy":return b||d?e+(Dd(a)?"roky":"rokov"):e+"rokmi"}} +//! moment.js locale configuration +//! locale : slovenian (sl) +//! author : Robert Sedovšek : https://github.com/sedovsek +function Fd(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nekaj sekund":"nekaj sekundami";case"m":return b?"ena minuta":"eno minuto";case"mm":return e+=1===a?b?"minuta":"minuto":2===a?b||d?"minuti":"minutama":5>a?b||d?"minute":"minutami":b||d?"minut":"minutami";case"h":return b?"ena ura":"eno uro";case"hh":return e+=1===a?b?"ura":"uro":2===a?b||d?"uri":"urama":5>a?b||d?"ure":"urami":b||d?"ur":"urami";case"d":return b||d?"en dan":"enim dnem";case"dd":return e+=1===a?b||d?"dan":"dnem":2===a?b||d?"dni":"dnevoma":b||d?"dni":"dnevi";case"M":return b||d?"en mesec":"enim mesecem";case"MM":return e+=1===a?b||d?"mesec":"mesecem":2===a?b||d?"meseca":"mesecema":5>a?b||d?"mesece":"meseci":b||d?"mesecev":"meseci";case"y":return b||d?"eno leto":"enim letom";case"yy":return e+=1===a?b||d?"leto":"letom":2===a?b||d?"leti":"letoma":5>a?b||d?"leta":"leti":b||d?"let":"leti"}}function Gd(a,b,c,d){var e={s:["viensas secunds","'iensas secunds"],m:["'n míut","'iens míut"],mm:[a+" míuts"," "+a+" míuts"],h:["'n þora","'iensa þora"],hh:[a+" þoras"," "+a+" þoras"],d:["'n ziua","'iensa ziua"],dd:[a+" ziuas"," "+a+" ziuas"],M:["'n mes","'iens mes"],MM:[a+" mesen"," "+a+" mesen"],y:["'n ar","'iens ar"],yy:[a+" ars"," "+a+" ars"]};return d?e[c][0]:b?e[c][0]:e[c][1].trim()} +//! moment.js locale configuration +//! locale : ukrainian (uk) +//! author : zemlanin : https://github.com/zemlanin +//! Author : Menelion Elensúle : https://github.com/Oire +function Hd(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function Id(a,b,c){var d={mm:"хвилина_хвилини_хвилин",hh:"година_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===c?b?"хвилина":"хвилину":"h"===c?b?"година":"годину":a+" "+Hd(d[c],+a)}function Jd(a,b){var c={nominative:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_"),accusative:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_")},d=/D[oD]? *MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function Kd(a,b){var c={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")},d=/(\[[ВвУу]\]) ?dddd/.test(b)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(b)?"genitive":"nominative";return c[d][a.day()]}function Ld(a){return function(){return a+"о"+(11===this.hours()?"б":"")+"] LT"}}var Md,Nd,Od=a.momentProperties=[],Pd=!1,Qd={},Rd={},Sd=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Td=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Ud={},Vd={},Wd=/\d/,Xd=/\d\d/,Yd=/\d{3}/,Zd=/\d{4}/,$d=/[+-]?\d{6}/,_d=/\d\d?/,ae=/\d{1,3}/,be=/\d{1,4}/,ce=/[+-]?\d{1,6}/,de=/\d+/,ee=/[+-]?\d+/,fe=/Z|[+-]\d\d:?\d\d/gi,ge=/[+-]?\d+(\.\d{1,3})?/,he=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,ie={},je={},ke=0,le=1,me=2,ne=3,oe=4,pe=5,qe=6;H("M",["MM",2],"Mo",function(){return this.month()+1}),H("MMM",0,0,function(a){return this.localeData().monthsShort(this,a)}),H("MMMM",0,0,function(a){return this.localeData().months(this,a)}),z("month","M"),N("M",_d),N("MM",_d,Xd),N("MMM",he),N("MMMM",he),Q(["M","MM"],function(a,b){b[le]=q(a)-1}),Q(["MMM","MMMM"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[le]=e:j(c).invalidMonth=a});var re="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),se="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),te={};a.suppressDeprecationWarnings=!1;var ue=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ve=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],we=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],xe=/^\/?Date\((\-?\d+)/i;a.createFromInputFallback=aa("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),H(0,["YY",2],0,function(){return this.year()%100}),H(0,["YYYY",4],0,"year"),H(0,["YYYYY",5],0,"year"),H(0,["YYYYYY",6,!0],0,"year"),z("year","y"),N("Y",ee),N("YY",_d,Xd),N("YYYY",be,Zd),N("YYYYY",ce,$d),N("YYYYYY",ce,$d),Q(["YYYYY","YYYYYY"],ke),Q("YYYY",function(b,c){c[ke]=2===b.length?a.parseTwoDigitYear(b):q(b)}),Q("YY",function(b,c){c[ke]=a.parseTwoDigitYear(b)}),a.parseTwoDigitYear=function(a){return q(a)+(q(a)>68?1900:2e3)};var ye=C("FullYear",!1);H("w",["ww",2],"wo","week"),H("W",["WW",2],"Wo","isoWeek"),z("week","w"),z("isoWeek","W"),N("w",_d),N("ww",_d,Xd),N("W",_d),N("WW",_d,Xd),R(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=q(a)});var ze={dow:0,doy:6};H("DDD",["DDDD",3],"DDDo","dayOfYear"),z("dayOfYear","DDD"),N("DDD",ae),N("DDDD",Yd),Q(["DDD","DDDD"],function(a,b,c){c._dayOfYear=q(a)}),a.ISO_8601=function(){};var Ae=aa("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var a=Da.apply(null,arguments);return this>a?this:a}),Be=aa("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var a=Da.apply(null,arguments);return a>this?this:a});Ja("Z",":"),Ja("ZZ",""),N("Z",fe),N("ZZ",fe),Q(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=Ka(a)});var Ce=/([\+\-]|\d\d)/gi;a.updateOffset=function(){};var De=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,Ee=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;Ya.fn=Ha.prototype;var Fe=ab(1,"add"),Ge=ab(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var He=aa("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)});H(0,["gg",2],0,function(){return this.weekYear()%100}),H(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Db("gggg","weekYear"),Db("ggggg","weekYear"),Db("GGGG","isoWeekYear"),Db("GGGGG","isoWeekYear"),z("weekYear","gg"),z("isoWeekYear","GG"),N("G",ee),N("g",ee),N("GG",_d,Xd),N("gg",_d,Xd),N("GGGG",be,Zd),N("gggg",be,Zd),N("GGGGG",ce,$d),N("ggggg",ce,$d),R(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=q(a)}),R(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),H("Q",0,0,"quarter"),z("quarter","Q"),N("Q",Wd),Q("Q",function(a,b){b[le]=3*(q(a)-1)}),H("D",["DD",2],"Do","date"),z("date","D"),N("D",_d),N("DD",_d,Xd),N("Do",function(a,b){return a?b._ordinalParse:b._ordinalParseLenient}),Q(["D","DD"],me),Q("Do",function(a,b){b[me]=q(a.match(_d)[0],10)});var Ie=C("Date",!0);H("d",0,"do","day"),H("dd",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),H("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),H("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),H("e",0,0,"weekday"),H("E",0,0,"isoWeekday"),z("day","d"),z("weekday","e"),z("isoWeekday","E"),N("d",_d),N("e",_d),N("E",_d),N("dd",he),N("ddd",he),N("dddd",he),R(["dd","ddd","dddd"],function(a,b,c){var d=c._locale.weekdaysParse(a);null!=d?b.d=d:j(c).invalidWeekday=a}),R(["d","e","E"],function(a,b,c,d){b[d]=q(a)});var Je="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ke="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Le="Su_Mo_Tu_We_Th_Fr_Sa".split("_");H("H",["HH",2],0,"hour"),H("h",["hh",2],0,function(){return this.hours()%12||12}),Sb("a",!0),Sb("A",!1),z("hour","h"),N("a",Tb),N("A",Tb),N("H",_d),N("h",_d),N("HH",_d,Xd),N("hh",_d,Xd),Q(["H","HH"],ne),Q(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),Q(["h","hh"],function(a,b,c){b[ne]=q(a),j(c).bigHour=!0});var Me=/[ap]\.?m?\.?/i,Ne=C("Hours",!0);H("m",["mm",2],0,"minute"),z("minute","m"),N("m",_d),N("mm",_d,Xd),Q(["m","mm"],oe);var Oe=C("Minutes",!1);H("s",["ss",2],0,"second"),z("second","s"),N("s",_d),N("ss",_d,Xd),Q(["s","ss"],pe);var Pe=C("Seconds",!1);H("S",0,0,function(){return~~(this.millisecond()/100)}),H(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),H(0,["SSS",3],0,"millisecond"),H(0,["SSSS",4],0,function(){return 10*this.millisecond()}),H(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),H(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),H(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),H(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),H(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),z("millisecond","ms"),N("S",ae,Wd),N("SS",ae,Xd),N("SSS",ae,Yd);var Qe;for(Qe="SSSS";Qe.length<=9;Qe+="S")N(Qe,de);for(Qe="S";Qe.length<=9;Qe+="S")Q(Qe,Wb);var Re=C("Milliseconds",!1);H("z",0,0,"zoneAbbr"),H("zz",0,0,"zoneName");var Se=n.prototype;Se.add=Fe,Se.calendar=cb,Se.clone=db,Se.diff=ib,Se.endOf=ub,Se.format=mb,Se.from=nb,Se.fromNow=ob,Se.to=pb,Se.toNow=qb,Se.get=F,Se.invalidAt=Cb,Se.isAfter=eb,Se.isBefore=fb,Se.isBetween=gb,Se.isSame=hb,Se.isValid=Ab,Se.lang=He,Se.locale=rb,Se.localeData=sb,Se.max=Be,Se.min=Ae,Se.parsingFlags=Bb,Se.set=F,Se.startOf=tb,Se.subtract=Ge,Se.toArray=yb,Se.toObject=zb,Se.toDate=xb,Se.toISOString=lb,Se.toJSON=lb,Se.toString=kb,Se.unix=wb,Se.valueOf=vb,Se.year=ye,Se.isLeapYear=ia,Se.weekYear=Fb,Se.isoWeekYear=Gb,Se.quarter=Se.quarters=Jb,Se.month=Y,Se.daysInMonth=Z,Se.week=Se.weeks=na,Se.isoWeek=Se.isoWeeks=oa,Se.weeksInYear=Ib,Se.isoWeeksInYear=Hb,Se.date=Ie,Se.day=Se.days=Pb,Se.weekday=Qb,Se.isoWeekday=Rb,Se.dayOfYear=qa,Se.hour=Se.hours=Ne,Se.minute=Se.minutes=Oe,Se.second=Se.seconds=Pe,Se.millisecond=Se.milliseconds=Re,Se.utcOffset=Na,Se.utc=Pa,Se.local=Qa,Se.parseZone=Ra,Se.hasAlignedHourOffset=Sa,Se.isDST=Ta,Se.isDSTShifted=Ua,Se.isLocal=Va,Se.isUtcOffset=Wa,Se.isUtc=Xa,Se.isUTC=Xa,Se.zoneAbbr=Xb,Se.zoneName=Yb,Se.dates=aa("dates accessor is deprecated. Use date instead.",Ie),Se.months=aa("months accessor is deprecated. Use month instead",Y),Se.years=aa("years accessor is deprecated. Use year instead",ye),Se.zone=aa("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Oa);var Te=Se,Ue={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Ve={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},We="Invalid date",Xe="%d",Ye=/\d{1,2}/,Ze={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},$e=s.prototype;$e._calendar=Ue,$e.calendar=_b,$e._longDateFormat=Ve,$e.longDateFormat=ac,$e._invalidDate=We,$e.invalidDate=bc,$e._ordinal=Xe,$e.ordinal=cc,$e._ordinalParse=Ye,$e.preparse=dc,$e.postformat=dc,$e._relativeTime=Ze,$e.relativeTime=ec,$e.pastFuture=fc,$e.set=gc,$e.months=U,$e._months=re,$e.monthsShort=V,$e._monthsShort=se,$e.monthsParse=W,$e.week=ka,$e._week=ze,$e.firstDayOfYear=ma,$e.firstDayOfWeek=la,$e.weekdays=Lb,$e._weekdays=Je,$e.weekdaysMin=Nb,$e._weekdaysMin=Le,$e.weekdaysShort=Mb,$e._weekdaysShort=Ke,$e.weekdaysParse=Ob,$e.isPM=Ub,$e._meridiemParse=Me,$e.meridiem=Vb,w("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===q(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),a.lang=aa("moment.lang is deprecated. Use moment.locale instead.",w),a.langData=aa("moment.langData is deprecated. Use moment.localeData instead.",y);var _e=Math.abs,af=yc("ms"),bf=yc("s"),cf=yc("m"),df=yc("h"),ef=yc("d"),ff=yc("w"),gf=yc("M"),hf=yc("y"),jf=Ac("milliseconds"),kf=Ac("seconds"),lf=Ac("minutes"),mf=Ac("hours"),nf=Ac("days"),of=Ac("months"),pf=Ac("years"),qf=Math.round,rf={s:45,m:45,h:22,d:26,M:11},sf=Math.abs,tf=Ha.prototype;tf.abs=oc,tf.add=qc,tf.subtract=rc,tf.as=wc,tf.asMilliseconds=af,tf.asSeconds=bf,tf.asMinutes=cf,tf.asHours=df,tf.asDays=ef,tf.asWeeks=ff,tf.asMonths=gf,tf.asYears=hf,tf.valueOf=xc,tf._bubble=tc,tf.get=zc,tf.milliseconds=jf,tf.seconds=kf,tf.minutes=lf,tf.hours=mf,tf.days=nf,tf.weeks=Bc,tf.months=of,tf.years=pf,tf.humanize=Fc,tf.toISOString=Gc,tf.toString=Gc,tf.toJSON=Gc,tf.locale=rb,tf.localeData=sb,tf.toIsoString=aa("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Gc),tf.lang=He,H("X",0,0,"unix"),H("x",0,0,"valueOf"),N("x",ee),N("X",ge),Q("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),Q("x",function(a,b,c){c._d=new Date(q(a))}), +//! moment.js +//! version : 2.10.6 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com +a.version="2.10.6",b(Da),a.fn=Te,a.min=Fa,a.max=Ga,a.utc=h,a.unix=Zb,a.months=jc,a.isDate=d,a.locale=w,a.invalid=l,a.duration=Ya,a.isMoment=o,a.weekdays=lc,a.parseZone=$b,a.localeData=y,a.isDuration=Ia,a.monthsShort=kc,a.weekdaysMin=nc,a.defineLocale=x,a.weekdaysShort=mc,a.normalizeUnits=A,a.relativeTimeThreshold=Ec;var uf=a,vf=(uf.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(a){return/^nm$/i.test(a)},meridiem:function(a,b,c){return 12>a?c?"vm":"VM":c?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),uf.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}}),{1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"}),wf={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},xf=(uf.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(a){return a.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return wf[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return vf[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}}),uf.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}}),{1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"}),yf={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},zf=function(a){return 0===a?0:1===a?1:2===a?2:a%100>=3&&10>=a%100?3:a%100>=11?4:5},Af={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},Bf=function(a){return function(b,c,d,e){var f=zf(b),g=Af[a][zf(b)];return 2===f&&(g=g[c?0:1]),g.replace(/%d/i,b)}},Cf=["كانون الثاني يناير","شباط فبراير","آذار مارس","نيسان أبريل","أيار مايو","حزيران يونيو","تموز يوليو","آب أغسطس","أيلول سبتمبر","تشرين الأول أكتوبر","تشرين الثاني نوفمبر","كانون الأول ديسمبر"],Df=(uf.defineLocale("ar",{months:Cf,monthsShort:Cf,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:Bf("s"),m:Bf("m"),mm:Bf("m"),h:Bf("h"),hh:Bf("h"),d:Bf("d"),dd:Bf("d"),M:Bf("M"),MM:Bf("M"),y:Bf("y"),yy:Bf("y")},preparse:function(a){return a.replace(/\u200f/g,"").replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return yf[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return xf[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}}),{1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"}),Ef=(uf.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(a){return/^(gündüz|axşam)$/.test(a)},meridiem:function(a,b,c){return 4>a?"gecə":12>a?"səhər":17>a?"gündüz":"axşam"},ordinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(a){if(0===a)return a+"-ıncı";var b=a%10,c=a%100-b,d=a>=100?100:null;return a+(Df[b]||Df[c]||Df[d])},week:{dow:1,doy:7}}),uf.defineLocale("be",{months:Jc,monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:Kc,weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:Ic,mm:Ic,h:Ic,hh:Ic,d:"дзень",dd:Ic,M:"месяц",MM:Ic,y:"год",yy:Ic},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(a){return/^(дня|вечара)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночы":12>a?"раніцы":17>a?"дня":"вечара"},ordinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a%10!==2&&a%10!==3||a%100===12||a%100===13?a+"-ы":a+"-і";case"D":return a+"-га";default:return a}},week:{dow:1,doy:7}}),uf.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}}),{1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"}),Ff={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"},Gf=(uf.defineLocale("bn",{months:"জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্রু_শনি".split("_"),weekdaysMin:"রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কএক সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(a){return a.replace(/[১২৩৪৫৬৭৮৯০]/g,function(a){return Ff[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Ef[a]})},meridiemParse:/রাত|সকাল|দুপুর|বিকেল|রাত/,isPM:function(a){return/^(দুপুর|বিকেল|রাত)$/.test(a)},meridiem:function(a,b,c){return 4>a?"রাত":10>a?"সকাল":17>a?"দুপুর":20>a?"বিকেল":"রাত"},week:{dow:0,doy:6}}),{1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"}),Hf={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"},If=(uf.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(a){return a.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,function(a){return Hf[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Gf[a]})},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,isPM:function(a){return/^(ཉིན་གུང|དགོང་དག|མཚན་མོ)$/.test(a)},meridiem:function(a,b,c){return 4>a?"མཚན་མོ":10>a?"ཞོགས་ཀས":17>a?"ཉིན་གུང":20>a?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}}),uf.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",m:"ur vunutenn",mm:Lc,h:"un eur",hh:"%d eur",d:"un devezh",dd:Lc,M:"ur miz",MM:Lc,y:"ur bloaz",yy:Mc},ordinalParse:/\d{1,2}(añ|vet)/,ordinal:function(a){var b=1===a?"añ":"vet";return a+b},week:{dow:1,doy:4}}),uf.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:Qc,mm:Qc,h:Qc,hh:Qc,d:"dan",dd:Qc,M:"mjesec",MM:Qc,y:"godinu",yy:Qc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),uf.defineLocale("ca",{months:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),monthsShort:"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),longDateFormat:{LT:"H:mm",LTS:"LT:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd D MMMM YYYY H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(a,b){var c=1===a?"r":2===a?"n":3===a?"r":4===a?"t":"è";return("w"===b||"W"===b)&&(c="a"),a+c},week:{dow:1,doy:4}}),"leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_")),Jf="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),Kf=(uf.defineLocale("cs",{months:If,monthsShort:Jf,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(If,Jf),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:Sc,m:Sc,mm:Sc,h:Sc,hh:Sc,d:Sc,dd:Sc,M:Sc,MM:Sc,y:Sc,yy:Sc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(a){var b=/сехет$/i.exec(a)?"рен":/ҫул$/i.exec(a)?"тан":"ран";return a+b},past:"%s каялла",s:"пӗр-ик ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},ordinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}}),uf.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},ordinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(a){var b=a,c="",d=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"];return b>20?c=40===b||50===b||60===b||80===b||100===b?"fed":"ain":b>0&&(c=d[b]),a+c},week:{dow:1,doy:4}}),uf.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY HH:mm"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I går kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[Heute um] LT [Uhr]",sameElse:"L",nextDay:"[Morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[Gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:Tc,mm:"%d Minuten",h:Tc,hh:"%d Stunden",d:Tc,dd:Tc,M:Tc,MM:Tc,y:Tc,yy:Tc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[Heute um] LT [Uhr]",sameElse:"L",nextDay:"[Morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[Gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:Uc,mm:"%d Minuten",h:Uc,hh:"%d Stunden",d:Uc,dd:Uc,M:Uc,MM:Uc,y:Uc,yy:Uc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(a,b){return/D/.test(b.substring(0,b.indexOf("MMMM")))?this._monthsGenitiveEl[a.month()]:this._monthsNominativeEl[a.month()]},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(a,b,c){return a>11?c?"μμ":"ΜΜ":c?"πμ":"ΠΜ"},isPM:function(a){return"μ"===(a+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(a,b){var c=this._calendarEl[a],d=b&&b.hours();return"function"==typeof c&&(c=c.apply(b)),c.replace("{}",d%12===1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},ordinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}}),uf.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),uf.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"D MMMM, YYYY",LLL:"D MMMM, YYYY h:mm A",LLLL:"dddd, D MMMM, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),uf.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),uf.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"),weekdaysShort:"Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-an de] MMMM, YYYY",LLL:"D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-an de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(a){return"p"===a.charAt(0).toLowerCase()},meridiem:function(a,b,c){return a>11?c?"p.t.m.":"P.T.M.":c?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"je %s",past:"antaŭ %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},ordinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}}),"Ene._Feb._Mar._Abr._May._Jun._Jul._Ago._Sep._Oct._Nov._Dic.".split("_")),Lf="Ene_Feb_Mar_Abr_May_Jun_Jul_Ago_Sep_Oct_Nov_Dic".split("_"),Mf=(uf.defineLocale("es",{months:"Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre".split("_"),monthsShort:function(a,b){return/-MMM-/.test(b)?Lf[a.month()]:Kf[a.month()]},weekdays:"Domingo_Lunes_Martes_Miércoles_Jueves_Viernes_Sábado".split("_"),weekdaysShort:"Dom._Lun._Mar._Mié._Jue._Vie._Sáb.".split("_"),weekdaysMin:"Do_Lu_Ma_Mi_Ju_Vi_Sá".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),uf.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:Vc,m:Vc,mm:Vc,h:Vc,hh:Vc,d:Vc,dd:"%d päeva",M:Vc,MM:Vc,y:Vc,yy:Vc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]", +lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),{1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"}),Nf={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"},Of=(uf.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(a){return/بعد از ظهر/.test(a)},meridiem:function(a,b,c){return 12>a?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چندین ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(a){return a.replace(/[۰-۹]/g,function(a){return Nf[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return Mf[a]}).replace(/,/g,"،")},ordinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}}),"nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" ")),Pf=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",Of[7],Of[8],Of[9]],Qf=(uf.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:Wc,m:Wc,mm:Wc,h:Wc,hh:Wc,d:Wc,dd:Wc,M:Wc,MM:Wc,y:Wc,yy:Wc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",m:"ein minutt",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaði",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(a){return a+(1===a?"er":"e")}}),uf.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|)/,ordinal:function(a){return a+(1===a?"er":"")},week:{dow:1,doy:4}}),"jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_")),Rf="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),Sf=(uf.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(a,b){return/-MMM-/.test(b)?Rf[a.month()]:Qf[a.month()]},weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),uf.defineLocale("gl",{months:"Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"),monthsShort:"Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"),weekdays:"Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"),weekdaysShort:"Dom._Lun._Mar._Mér._Xov._Ven._Sáb.".split("_"),weekdaysMin:"Do_Lu_Ma_Mé_Xo_Ve_Sá".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd D MMMM YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(a){return"uns segundos"===a?"nuns segundos":"en "+a},past:"hai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:7}}),uf.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(a){return 2===a?"שעתיים":a+" שעות"},d:"יום",dd:function(a){return 2===a?"יומיים":a+" ימים"},M:"חודש",MM:function(a){return 2===a?"חודשיים":a+" חודשים"},y:"שנה",yy:function(a){return 2===a?"שנתיים":a%10===0&&10!==a?a+" שנה":a+" שנים"}}}),{1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"}),Tf={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},Uf=(uf.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return Tf[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Sf[a]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात"===b?4>a?a:a+12:"सुबह"===b?a:"दोपहर"===b?a>=10?a:a+12:"शाम"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"रात":10>a?"सुबह":17>a?"दोपहर":20>a?"शाम":"रात"},week:{dow:0,doy:6}}),uf.defineLocale("hr",{months:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"),monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:Yc,mm:Yc,h:Yc,hh:Yc,d:"dan",dd:Yc,M:"mjesec",MM:Yc,y:"godinu",yy:Yc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),"vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ")),Vf=(uf.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(a){return"u"===a.charAt(1).toLowerCase()},meridiem:function(a,b,c){return 12>a?c===!0?"de":"DE":c===!0?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return $c.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return $c.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:Zc,m:Zc,mm:Zc,h:Zc,hh:Zc,d:Zc,dd:Zc,M:Zc,MM:Zc,y:Zc,yy:Zc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),uf.defineLocale("hy-am",{months:_c,monthsShort:ad,weekdays:bd,weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(a){return/^(ցերեկվա|երեկոյան)$/.test(a)},meridiem:function(a){return 4>a?"գիշերվա":12>a?"առավոտվա":17>a?"ցերեկվա":"երեկոյան"},ordinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(a,b){switch(b){case"DDD":case"w":case"W":case"DDDo":return 1===a?a+"-ին":a+"-րդ";default:return a}},week:{dow:1,doy:7}}),uf.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"siang"===b?a>=11?a:a+12:"sore"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"siang":19>a?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),uf.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:dd,m:dd,mm:dd,h:"klukkustund",hh:dd,d:dd,dd:dd,M:dd,MM:dd,y:dd,yy:dd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"D_L_Ma_Me_G_V_S".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(a){return(/^[0-9].+$/.test(a)?"tra":"in")+" "+a},past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),uf.defineLocale("ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"Ah時m分",LTS:"Ah時m分s秒",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah時m分",LLLL:"YYYY年M月D日Ah時m分 dddd"},meridiemParse:/午前|午後/i,isPM:function(a){return"午後"===a},meridiem:function(a,b,c){return 12>a?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}}),uf.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(a,b){return 12===a&&(a=0),"enjing"===b?a:"siyang"===b?a>=11?a:a+12:"sonten"===b||"ndalu"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"enjing":15>a?"siyang":19>a?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}}),uf.defineLocale("ka",{months:ed,monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:fd,weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(a){return/(წამი|წუთი|საათი|წელი)/.test(a)?a.replace(/ი$/,"ში"):a+"ში"},past:function(a){return/(წამი|წუთი|საათი|დღე|თვე)/.test(a)?a.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(a)?a.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},ordinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(a){return 0===a?a:1===a?a+"-ლი":20>a||100>=a&&a%20===0||a%100===0?"მე-"+a:a+"-ე"},week:{dow:1,doy:7}}),uf.defineLocale("km",{months:"មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysMin:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[ថ្ងៃនៈ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},week:{dow:1,doy:4}}),uf.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h시 m분",LTS:"A h시 m분 s초",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h시 m분",LLLL:"YYYY년 MMMM D일 dddd A h시 m분"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇초",ss:"%d초",m:"일분",mm:"%d분",h:"한시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한달",MM:"%d달",y:"일년",yy:"%d년"},ordinalParse:/\d{1,2}일/,ordinal:"%d일",meridiemParse:/오전|오후/,isPM:function(a){return"오후"===a},meridiem:function(a,b,c){return 12>a?"오전":"오후"}}),uf.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:hd,past:id,s:"e puer Sekonnen",m:gd,mm:"%d Minutten",h:gd,hh:"%d Stonnen",d:gd,dd:"%d Deeg",M:gd,MM:"%d Méint",y:gd,yy:"%d Joer"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"}),Wf="sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),Xf=(uf.defineLocale("lt",{months:ld,monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:qd,weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:kd,m:md,mm:pd,h:md,hh:pd,d:md,dd:pd,M:md,MM:pd,y:md,yy:pd},ordinalParse:/\d{1,2}-oji/,ordinal:function(a){return a+"-oji"},week:{dow:1,doy:4}}),{m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")}),Yf=(uf.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:ud,m:td,mm:sd,h:td,hh:sd,d:td,dd:sd,M:td,MM:sd,y:td,yy:sd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{words:{m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,b,c){var d=Yf.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+Yf.correctGrammaticalCase(a,d)}}),Zf=(uf.defineLocale("me",{months:["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"],monthsShort:["jan.","feb.","mar.","apr.","maj","jun","jul","avg.","sep.","okt.","nov.","dec."],weekdays:["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],weekdaysShort:["ned.","pon.","uto.","sri.","čet.","pet.","sub."],weekdaysMin:["ne","po","ut","sr","če","pe","su"],longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var a=["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",m:Yf.translate,mm:Yf.translate,h:Yf.translate,hh:Yf.translate,d:"dan",dd:Yf.translate,M:"mjesec",MM:Yf.translate,y:"godinu",yy:Yf.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),uf.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Во изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Во изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}}),uf.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,isPM:function(a){return/^(ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി)$/.test(a)},meridiem:function(a,b,c){return 4>a?"രാത്രി":12>a?"രാവിലെ":17>a?"ഉച്ച കഴിഞ്ഞ്":20>a?"വൈകുന്നേരം":"രാത്രി"}}),{1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"}),$f={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},_f=(uf.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%s नंतर",past:"%s पूर्वी",s:"सेकंद",m:"एक मिनिट",mm:"%d मिनिटे",h:"एक तास",hh:"%d तास",d:"एक दिवस",dd:"%d दिवस",M:"एक महिना",MM:"%d महिने",y:"एक वर्ष",yy:"%d वर्षे"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return $f[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Zf[a]})},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात्री"===b?4>a?a:a+12:"सकाळी"===b?a:"दुपारी"===b?a>=10?a:a+12:"सायंकाळी"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"रात्री":10>a?"सकाळी":17>a?"दुपारी":20>a?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}}),uf.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"tengahari"===b?a>=11?a:a+12:"petang"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"tengahari":19>a?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT", +lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),uf.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"tengahari"===b?a>=11?a:a+12:"petang"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"tengahari":19>a?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),{1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"}),ag={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"},bg=(uf.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(a){return a.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,function(a){return ag[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return _f[a]})},week:{dow:1,doy:4}}),uf.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tirs_ons_tors_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"H.mm",LTS:"H.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H.mm",LLLL:"dddd D. MMMM YYYY [kl.] H.mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"}),cg={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},dg=(uf.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आइ._सो._मङ्_बु._बि._शु._श.".split("_"),longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return cg[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return bg[a]})},meridiemParse:/राती|बिहान|दिउँसो|बेलुका|साँझ|राती/,meridiemHour:function(a,b){return 12===a&&(a=0),"राती"===b?3>a?a:a+12:"बिहान"===b?a:"दिउँसो"===b?a>=10?a:a+12:"बेलुका"===b||"साँझ"===b?a+12:void 0},meridiem:function(a,b,c){return 3>a?"राती":10>a?"बिहान":15>a?"दिउँसो":18>a?"बेलुका":20>a?"साँझ":"राती"},calendar:{sameDay:"[आज] LT",nextDay:"[भोली] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडी",s:"केही समय",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:1,doy:7}}),"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_")),eg="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),fg=(uf.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(a,b){return/-MMM-/.test(b)?eg[a.month()]:dg[a.month()]},weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),uf.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s sidan",s:"nokre sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),"styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_")),gg="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),hg=(uf.defineLocale("pl",{months:function(a,b){return""===b?"("+gg[a.month()]+"|"+fg[a.month()]+")":/D MMMM/.test(b)?gg[a.month()]:fg[a.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"nie_pon_wt_śr_czw_pt_sb".split("_"),weekdaysMin:"N_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:wd,mm:wd,h:wd,hh:wd,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:wd,y:"rok",yy:wd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº"}),uf.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),uf.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",m:"un minut",mm:xd,h:"o oră",hh:xd,d:"o zi",dd:xd,M:"o lună",MM:xd,y:"un an",yy:xd},week:{dow:1,doy:7}}),uf.defineLocale("ru",{months:Ad,monthsShort:Bd,weekdays:Cd,weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[й|я]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сегодня в] LT",nextDay:"[Завтра в] LT",lastDay:"[Вчера в] LT",nextWeek:function(){return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT"},lastWeek:function(a){if(a.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:zd,mm:zd,h:"час",hh:zd,d:"день",dd:zd,M:"месяц",MM:zd,y:"год",yy:zd},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(a){return/^(дня|вечера)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночи":12>a?"утра":17>a?"дня":"вечера"},ordinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":return a+"-й";case"D":return a+"-го";case"w":case"W":return a+"-я";default:return a}},week:{dow:1,doy:7}}),uf.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්‍ර_සි_සෙ".split("_"),longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},ordinalParse:/\d{1,2} වැනි/,ordinal:function(a){return a+" වැනි"},meridiem:function(a,b,c){return a>11?c?"ප.ව.":"පස් වරු":c?"පෙ.ව.":"පෙර වරු"}}),"január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_")),ig="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"),jg=(uf.defineLocale("sk",{months:hg,monthsShort:ig,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(hg,ig),weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:Ed,m:Ed,mm:Ed,h:Ed,hh:Ed,d:Ed,dd:Ed,M:Ed,MM:Ed,y:Ed,yy:Ed},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:Fd,m:Fd,mm:Fd,h:Fd,hh:Fd,d:Fd,dd:Fd,M:Fd,MM:Fd,y:Fd,yy:Fd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),uf.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),meridiemParse:/PD|MD/,isPM:function(a){return"M"===a.charAt(0)},meridiem:function(a,b,c){return 12>a?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{words:{m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,b,c){var d=jg.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+jg.correctGrammaticalCase(a,d)}}),kg=(uf.defineLocale("sr-cyrl",{months:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],monthsShort:["јан.","феб.","мар.","апр.","мај","јун","јул","авг.","сеп.","окт.","нов.","дец."],weekdays:["недеља","понедељак","уторак","среда","четвртак","петак","субота"],weekdaysShort:["нед.","пон.","уто.","сре.","чет.","пет.","суб."],weekdaysMin:["не","по","ут","ср","че","пе","су"],longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){var a=["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",m:jg.translate,mm:jg.translate,h:jg.translate,hh:jg.translate,d:"дан",dd:jg.translate,M:"месец",MM:jg.translate,y:"годину",yy:jg.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),{words:{m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,b,c){var d=kg.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+kg.correctGrammaticalCase(a,d)}}),lg=(uf.defineLocale("sr",{months:["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"],monthsShort:["jan.","feb.","mar.","apr.","maj","jun","jul","avg.","sep.","okt.","nov.","dec."],weekdays:["nedelja","ponedeljak","utorak","sreda","četvrtak","petak","subota"],weekdaysShort:["ned.","pon.","uto.","sre.","čet.","pet.","sub."],weekdaysMin:["ne","po","ut","sr","če","pe","su"],longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var a=["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:kg.translate,mm:kg.translate,h:kg.translate,hh:kg.translate,d:"dan",dd:kg.translate,M:"mesec",MM:kg.translate,y:"godinu",yy:kg.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),uf.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}(e|a)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"e":1===b?"a":2===b?"a":"e";return a+c},week:{dow:1,doy:4}}),uf.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},ordinalParse:/\d{1,2}வது/,ordinal:function(a){return a+"வது"},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(a,b,c){return 2>a?" யாமம்":6>a?" வைகறை":10>a?" காலை":14>a?" நண்பகல்":18>a?" எற்பாடு":22>a?" மாலை":" யாமம்"},meridiemHour:function(a,b){return 12===a&&(a=0),"யாமம்"===b?2>a?a:a+12:"வைகறை"===b||"காலை"===b?a:"நண்பகல்"===b&&a>=10?a:a+12},week:{dow:0,doy:6}}),uf.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"),weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),longDateFormat:{LT:"H นาฬิกา m นาที",LTS:"H นาฬิกา m นาที s วินาที",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H นาฬิกา m นาที",LLLL:"วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(a){return"หลังเที่ยง"===a},meridiem:function(a,b,c){return 12>a?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}}),uf.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"[Ngayon sa] LT",nextDay:"[Bukas sa] LT",nextWeek:"dddd [sa] LT",lastDay:"[Kahapon sa] LT",lastWeek:"dddd [huling linggo] LT",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},ordinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}}),{1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"}),mg=(uf.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinalParse:/\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,ordinal:function(a){if(0===a)return a+"'ıncı";var b=a%10,c=a%100-b,d=a>=100?100:null;return a+(lg[b]||lg[c]||lg[d])},week:{dow:1,doy:7}}),uf.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"LT.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY LT",LLLL:"dddd, [li] D. MMMM [dallas] YYYY LT"},meridiem:function(a,b,c){return a>11?c?"d'o":"D'O":c?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:Gd,m:Gd,mm:Gd,h:Gd,hh:Gd,d:Gd,dd:Gd,M:Gd,MM:Gd,y:Gd,yy:Gd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}}),uf.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}}),uf.defineLocale("uk",{months:Jd,monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:Kd,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:Ld("[Сьогодні "),nextDay:Ld("[Завтра "),lastDay:Ld("[Вчора "),nextWeek:Ld("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return Ld("[Минулої] dddd [").call(this);case 1:case 2:case 4:return Ld("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:Id,mm:Id,h:"годину",hh:Id,d:"день",dd:Id,M:"місяць",MM:Id,y:"рік",yy:Id},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(a){return/^(дня|вечора)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночі":12>a?"ранку":17>a?"дня":"вечора"},ordinalParse:/\d{1,2}-(й|го)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a+"-й";case"D":return a+"-го";default:return a}},week:{dow:1,doy:7}}),uf.defineLocale("uz",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}}),uf.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm", +llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},ordinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}}),uf.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah点mm分",LTS:"Ah点m分s秒",L:"YYYY-MM-DD",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah点mm分",LLLL:"YYYY年MMMD日ddddAh点mm分",l:"YYYY-MM-DD",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日Ah点mm分",llll:"YYYY年MMMD日ddddAh点mm分"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上午"===b?a:"下午"===b||"晚上"===b?a+12:a>=11?a:a+12},meridiem:function(a,b,c){var d=100*a+b;return 600>d?"凌晨":900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:function(){return 0===this.minutes()?"[今天]Ah[点整]":"[今天]LT"},nextDay:function(){return 0===this.minutes()?"[明天]Ah[点整]":"[明天]LT"},lastDay:function(){return 0===this.minutes()?"[昨天]Ah[点整]":"[昨天]LT"},nextWeek:function(){var a,b;return a=uf().startOf("week"),b=this.unix()-a.unix()>=604800?"[下]":"[本]",0===this.minutes()?b+"dddAh点整":b+"dddAh点mm"},lastWeek:function(){var a,b;return a=uf().startOf("week"),b=this.unix()=11?a:a+12:"下午"===b||"晚上"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return 900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},ordinalParse:/\d{1,2}(日|月|週)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"一分鐘",mm:"%d分鐘",h:"一小時",hh:"%d小時",d:"一天",dd:"%d天",M:"一個月",MM:"%d個月",y:"一年",yy:"%d年"}}),uf);return mg.locale("en"),mg}); \ No newline at end of file diff --git a/app-saas-src/script/report/reportData.js b/app-saas-src/script/report/reportData.js new file mode 100644 index 0000000..ad3e827 --- /dev/null +++ b/app-saas-src/script/report/reportData.js @@ -0,0 +1,252 @@ +apiready = function() { + var ctrl = { + prId: null, // 配电室id + startTime: null, // 查询历史数据的开始时间 + endTime: null, // 查询历史数据的结束时间 + ddNum: null, // 调度号 + location: null, // 位置 + interval: null, // 频率 + dataList: {}, // 数据列表 + init: {}, + bind: {} + } + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + // 初始化表格容器的高度 + var winHeight = api.winHeight; + var winWidth = api.winWidth; + var headerHeight = $("#header").height() + $('.heightGap').height(); + var tableHeight = winHeight - headerHeight; + $("#table-panel").height(tableHeight); + $("#table-panel").css("top", headerHeight + "px"); + + //计算table-head-right的宽度和位置 + var tableHeadLeftWidth = $("#table-head-left").width() - 1; //由于四舍五入 可能多出1像素 -1 保证没有缝隙 + $("#table-head-right").width(winWidth - tableHeadLeftWidth); + $("#table-head-right").css("left", tableHeadLeftWidth + "px"); + + //算出table-body的高度和位置 + var tableHeadHeight = $("#table-head").height(); + var tableBodyHeight = tableHeight - tableHeadHeight; + + $("#table-body").height(tableBodyHeight); + $("#table-body").css("top", (tableHeadHeight + 3) + "px"); //3像素的border + $("#table-body-left").height(tableBodyHeight); + $("#table-body-right").css("left", tableHeadLeftWidth + "px"); + $("#table-body-right").height(tableBodyHeight); + $("#table-body-right").width(winWidth - tableHeadLeftWidth); + ctrl.initParam(); + ctrl.bind(); + ctrl.getData(); + } + + // 初始化调取历史数据所需要的参数 + ctrl.initParam = function() { + ctrl.prId = $api.getStorage('powerRoom').prId; // 获取配电室id + ctrl.cusRoleType = $api.getStorage('cusRoleType'); // 获取客户角色id + ctrl.location = api.pageParam.location; // 获取location + ctrl.ddNum = api.pageParam.ddNum; // 获取调度号 + ctrl.interval = 2 * 60 * 60; // 以秒为单位,目前默认是两个小时 + // 获取获取历史数据所需的起止时间和结束时间 目前默认是查看前一天的00 + var currentTime = api.pageParam.time - 1 * 24 * 60 * 60 * 1000; // 推送时间 - 1 = 前一天的时间戳 + var dateUtil = new DateUtils(); + dateUtil.setDate(currentTime); + ctrl.startTime = dateUtil.getMillisecondOfDate(); + ctrl.endTime = dateUtil.getMillisecondOfDateEnd(); + + $('#title').text(POSITIONCLASSIFY[ctrl.location] + ctrl.ddNum + '报表'); + } + ctrl.bind = function() { + //用户点击了返回按钮 + $(".back").on("touchend", function() { + api.closeWin(); + }); + //阻止ios的返回事件 + api.addEventListener({ + name: 'swiperight' + }, function(ret, err) { + return false; + }); + //监听表的滚动事件 同步各区域滚动 + $("#table-body-right").on("scroll", function() { + var top = $(this).scrollTop(); + var left = $(this).scrollLeft(); + $("#table-body-left").scrollTop(top); + $("#table-head-right").scrollLeft(left); + }) + + $("#table-body-left").on("scroll", function() { + var top = $(this).scrollTop(); + $("#table-body-right").scrollTop(top); + + }) + + $("#table-head-right").on("scroll", function() { + var left = $(this).scrollLeft(); + $("#table-body-right").scrollLeft(left); + + }) + + } + /** + * 弹出提示框 + */ + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 5000, + locaiton: 'top' + }); + } + // 请求历史数据 + ctrl.getData = function() { + //显示载入动画 + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + //var url = '/edp/rest/data/history'; + var url = '/edp/rest/data/report/ai/history' + var args = { + flag: 2, // 1: 查询历史数据 2: 查询报表数据 + cusRoleType: ctrl.cusRoleType, + prId: ctrl.prId, + ddNum: ctrl.ddNum, + location: ctrl.location, + interval: ctrl.interval, + startTime: ctrl.startTime, + endTime: ctrl.endTime + }; + $api.get(url, args, function(data, err) { + //隐藏载入动画 + api.hideProgress(); + if (err) { + ctrl.toast('网络请求失败'); + } else { + if (!data.code || data.code != 200) { + ctrl.toast("服务器响应错误" + (data.code ? (",错误码:" + data.code) : "")); + } else { + if (data.body && data.body.timeList && data.body.timeList.length && data.body.categories) { + ctrl.dataList = data.body; + // 渲染时间列 + ctrl.renderTime(); + + // 渲染表头 + ctrl.renderTableHeader(); + + // 渲染表格里的数值 + + ctrl.renderValue(); + + $('#empty-tips').hide(); + $('.heightGap').show(); + $('#table-panel').show(); + } else { + $('#table-panel').hide(); + $('.heightGap').hide(); + $('#empty-tips').show(); + } + } + } + }) + + } + // 渲染表格时间列 + ctrl.renderTime = function() { + var list = ctrl.dataList.timeList; + // 首先清空时间列 + $('#timeColumn').empty(); + for (var i = 0; i < list.length; i++) { + var dateUtil = new DateUtils(); + dateUtil.setDate(list[i]); + var time = dateUtil.getFormattedDate('MM-dd hh:mm:ss'); + var template = '{time}'; + template = template.replace("{time}", time); + $("#timeColumn").append(template); + + } + + } + + // 渲染表头 + ctrl.renderTableHeader = function() { + // 清空表头 + $('#table-header-list').empty(); + $('#table-title-list').empty(); + $('#header-table').width(0); + var list = ctrl.dataList.categories; + for (var i = 0; i < list.length; i++) { + var headerItem = list[i]; + var templateHead = '{name}'; + templateHead = templateHead.replace("{col}", headerItem.vars.length); + templateHead = templateHead.replace("{name}", headerItem.categotyName); + + $("#table-header-list").append(templateHead); + + var templateTitle = '{title}'; + var titleList = $("#table-title-list"); + for (var j = 0; j < headerItem.vars.length; j++) { + var item = headerItem.vars[j]; + var title = item.tagKey + (item.unit ? '(' + item.unit + ')' : ''); + titleList.append(templateTitle.replace("{title}", title)); + } + } + + } + + // 渲染表格里的数值 + + ctrl.renderValue = function() { + //清空表格中的值 + $('#tbHistroyValue').empty(); + var historyValueTable = $("#tbHistroyValue"); + historyValueTable.width(0); + var rowCount = ctrl.dataList.timeList.length; + for (var i = 0; i < rowCount; i++) { + //生成第一行的数据 + var row = ''; + for (var j = 0; j < ctrl.dataList.categories.length; j++) { + var type = ctrl.dataList.categories[j]; + for (var k = 0; k < type.vars.length; k++) { + var values = type.vars[k].values; + values[i] = parseFloat(values[i]); + if (isNaN(values[i])) { + values[i] = '-' + } else { + values[i] = parseFloat(values[i]).toFixed(2) + } + row += ""; + row += values[i]; + row += ""; + } + } + row += ""; + historyValueTable.append(row); + setTimeout(function() { + //计算列宽 + var tableTitleTds = $('#table-title-list>td'); + var tableValuesTds = $('#tbHistroyValue>tr').eq(0).find('td'); + var columnCounts = tableTitleTds.length; + var widthSum = 0; + for (var i = 0; i < columnCounts; i++) { + var title = $(tableTitleTds[i]); + var value = $(tableValuesTds[i]); + var titleWidth = title.width(); + var valueWidth = value.width(); + var width = titleWidth > valueWidth ? titleWidth : valueWidth; + + width += 10; + widthSum += width; + title.width(width); + value.width(width); + } + $("#header-table").width(widthSum); + $("#tbHistroyValue").width(widthSum); + }, 100); + } + } + + ctrl.init(); +} diff --git a/app-saas-src/script/report/reportDdhList.js b/app-saas-src/script/report/reportDdhList.js new file mode 100644 index 0000000..17746d5 --- /dev/null +++ b/app-saas-src/script/report/reportDdhList.js @@ -0,0 +1,57 @@ +// 报表项目页外层(仅包含头部) +// 因为调用的apicloud的刷新组件只能刷新整个页面, +//所以将所有要进行刷新的页面分成两部分 +apiready = function() { + var ctrl = { + init : {}, + bind : {}, + }; + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + ctrl.time = api.pageParam.time; // 当前报表的时间 + + // 设置页面title 如9-18报表 + var dateUtils = new DateUtils(); + dateUtils.setDate(ctrl.time); + var date = dateUtils.getFormattedDate('MM-dd'); + $('#title').text(date + '报表'); + + + ctrl.bind(); + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + //打开frame + var id = api.pageParam.id; + //计算frame显示的位置和尺寸 + var windowWidth = parseInt($api.cssVal($api.dom("body"), "width")); + var windowHeight = parseInt($api.cssVal($api.dom("body"), "height")); + var headerHeight = parseInt($api.cssVal($api.dom("#header"), "height")); + var frameX = 0; + var frameY = headerHeight; + var frameWidth = windowWidth; + var frameHeight = windowHeight - headerHeight; + + api.openFrame({ + name: 'reportDdhListFrame', + url: './reportDdhListFrame.html', + rect: { + x: frameX, + y: frameY, + w: frameWidth, + h: frameHeight + }, + pageParam: { + id: id, + time: ctrl.time + } + }); + + } + ctrl.init(); + +} diff --git a/app-saas-src/script/report/reportDdhListFrame.js b/app-saas-src/script/report/reportDdhListFrame.js new file mode 100644 index 0000000..14deefd --- /dev/null +++ b/app-saas-src/script/report/reportDdhListFrame.js @@ -0,0 +1,112 @@ +apiready = function(){ + ctrl = { + prId: null, //配电室id + keyword: '', // 关键字 + init: {}, + bind: {}, + getList: {}, // 获取列表 + renderList: {} // 渲染列表 + } + /** + * 弹出提示框 + */ + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + + ctrl.init = function() { + this.prId = api.pageParam.id; // 获取客户id + this.bind(); + this.getList(); + } + ctrl.bind = function() { + // 搜索回路 + $('#searchBox').on('input', function() { + ctrl.keyword = $(this).val(); + ctrl.getList(); + }) + // 下拉刷新 + api.setRefreshHeaderInfo({ + bgColor: "#CCCCCC", + textColor: "#FFFFFF" + }, function (ret, err) { + ctrl.keyword = ''; + $('#searchBox').val('') + ctrl.getList(); + }) + var time = api.pageParam.time; // 当前报表的时间 + // 点击每个回路 + $('#list').on('touchend', '.item', function() { + var id = $(this).data('prid'); + var ddNum = $(this).data('ddh'); + var location = $(this).data('location'); + api.openWin({ + name: 'reportData', + url: './reportData.html', + pageParam: { + prid: id, + time: time, + ddNum: ddNum, + location:location + } + }); + }) + } + ctrl.getList = function() { + var args = { + prId: ctrl.prId, + roleId: $api.getStorage('cusRoleType'), + keyword: ctrl.keyword + } + var url = '/ems/rest/report/Ddn'; + $api.get(url, args, function(data,err) { + api.refreshHeaderLoadDone(); + if(err) { + toast('网络请求失败'); + }else { + if(data.code === 200) { + $("#list").empty(); + if(!data.body || !data.body.length) { + $('#empty-tips').css('display', 'block'); + return; + } + $('#empty-tips').css('display', 'none'); + ctrl.renderList(data.body); + } + } + }) + } + + ctrl.renderList = function(list) { + var tpl = ''; + tpl += '
    '; + tpl += '
    '; + tpl += '
    '; + tpl += '
    {{locationName}}{{ddNum}}({{deivceName}})
    '; + tpl += '
    点击查看详情
    '; + tpl += '
    '; + tpl += '
    '; + tpl += '
    '; + tpl += '
    '; + tpl += '
    '; + tpl += '
    '; + for(var i = 0; i < list.length; i++) { + var item = list[i]; + if($api.getStorage('cus')) { + item.prName = $api.guestPrName; + } + var prDom = tpl.replace('{{prId}}', item.location) + .replace('{{locationName}}', POSITIONCLASSIFY[item['location']]) + .replace('{{location}}', item.location) + .replace('{{prName}}', item.prName) + .replace(/{{ddNum}}/g, item.ddNum) + .replace('{{deivceName}}', item.deivceName); + $('#list').append(prDom); + } + } + ctrl.init(); +} diff --git a/app-saas-src/script/report/reportPr.js b/app-saas-src/script/report/reportPr.js new file mode 100644 index 0000000..f87a370 --- /dev/null +++ b/app-saas-src/script/report/reportPr.js @@ -0,0 +1,49 @@ +// 报表项目页外层(仅包含头部) +// 因为调用的apicloud的刷新组件只能刷新整个页面, +//所以将所有要进行刷新的页面分成两部分 +apiready = function() { + var ctrl = { + init : {}, + bind : {}, + }; + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + ctrl.bind(); + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + //打开frame + var id = api.pageParam.id; + var time = api.pageParam.time; // 当前报表的时间 + //计算frame显示的位置和尺寸 + var windowWidth = parseInt($api.cssVal($api.dom("body"), "width")); + var windowHeight = parseInt($api.cssVal($api.dom("body"), "height")); + var headerHeight = parseInt($api.cssVal($api.dom("#header"), "height")); + var frameX = 0; + var frameY = headerHeight; + var frameWidth = windowWidth; + var frameHeight = windowHeight - headerHeight; + api.openFrame({ + name: 'reportPrFrame', + url: './reportPrFrame.html', + rect: { + x: frameX, + y: frameY, + w: frameWidth, + h: frameHeight + }, + scaleEnabled:true, + pageParam: { + id: id, + time: time + } + }); + + } + ctrl.init(); + +} diff --git a/app-saas-src/script/report/reportPrFrame.js b/app-saas-src/script/report/reportPrFrame.js new file mode 100644 index 0000000..2f618ff --- /dev/null +++ b/app-saas-src/script/report/reportPrFrame.js @@ -0,0 +1,103 @@ +apiready = function(){ + ctrl = { + cusId: null, //客户id(即园区客户的项目id) + keyword: '', // 关键字 + init: {}, + bind: {}, + getPrList: {}, // 获取配电室列表 + renderPrList: {} // 渲染配电室列表 + } + /** + * 弹出提示框 + */ + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + + ctrl.init = function() { + this.cusId = api.pageParam.id; // 获取客户id + this.bind(); + this.getPrList(); + } + ctrl.bind = function() { + // 搜索配电室 + $('#searchBox').on('input', function() { + ctrl.keyword = $(this).val(); + ctrl.getPrList(); + }) + // 下拉刷新 + api.setRefreshHeaderInfo({ + bgColor: "#CCCCCC", + textColor: "#FFFFFF" + }, function (ret, err) { + ctrl.keyword = ''; + $('#searchBox').val('') + ctrl.getPrList(); + }) + var time = api.pageParam.time; // 当前报表的时间 + // 点击每个配电室 + $('#list').on('touchend', '.pr', function() { + var id = $(this).data('id'); + api.openWin({ + name: 'reportDdhList', + url: './reportDdhList.html', + pageParam: { + id: id, + time: time + } + }); + }) + } + ctrl.getPrList = function() { + var args = { + cusId: ctrl.cusId, + keyword: ctrl.keyword + } + var url = '/ems/rest/report/powerRoom'; + $api.get(url, args, function(data,err) { + api.refreshHeaderLoadDone(); + if(err) { + toast('网络请求失败'); + }else { + if(data.code === 200) { + $("#list").empty(); + if(!data.body || !data.body.length) { + $('#empty-tips').css('display', 'block'); + return; + } + $('#empty-tips').css('display', 'none'); + ctrl.renderPrList(data.body); + } + } + }) + } + + ctrl.renderPrList = function(list) { + var tpl = ''; + tpl += '
    '; + tpl += '
    '; + tpl += '
    '; + tpl += '
    {{prName}}
    '; + tpl += '
    点击查看详情
    '; + tpl += '
    '; + tpl += '
    '; + tpl += '
    '; + tpl += '
    '; + tpl += '
    '; + tpl += '
    '; + for(var i = 0; i < list.length; i++) { + var item = list[i]; + if($api.getStorage('cus')) { + item.prName = $api.guestPrName; + } + var prDom = tpl.replace('{{prId}}', item.prId) + .replace('{{prName}}', item.prName); + $('#list').append(prDom); + } + } + ctrl.init(); +} diff --git a/app-saas-src/script/report/reportProject.js b/app-saas-src/script/report/reportProject.js new file mode 100644 index 0000000..61365df --- /dev/null +++ b/app-saas-src/script/report/reportProject.js @@ -0,0 +1,48 @@ +// 报表项目页外层(仅包含头部) +// 因为调用的apicloud的刷新组件只能刷新整个页面, +//所以将所有要进行刷新的页面分成两部分 +apiready = function() { + var ctrl = { + init : {}, + bind : {}, + }; + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + ctrl.bind(); + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + //打开frame + var time = api.pageParam.time; // 当前报表的时间 + + //计算frame显示的位置和尺寸 + var windowWidth = parseInt($api.cssVal($api.dom("body"), "width")); + var windowHeight = parseInt($api.cssVal($api.dom("body"), "height")); + var headerHeight = parseInt($api.cssVal($api.dom("#header"), "height")); + var frameX = 0; + var frameY = headerHeight; + var frameWidth = windowWidth; + var frameHeight = windowHeight - headerHeight; + api.openFrame({ + name: 'reportProjectFrame', + url: './reportProjectFrame.html', + rect: { + x: frameX, + y: frameY, + w: frameWidth, + h: frameHeight + }, + scaleEnabled:true, + pageParam: { + time: time + } + }); + + } + ctrl.init(); + +} diff --git a/app-saas-src/script/report/reportProjectFrame.js b/app-saas-src/script/report/reportProjectFrame.js new file mode 100644 index 0000000..2150571 --- /dev/null +++ b/app-saas-src/script/report/reportProjectFrame.js @@ -0,0 +1,103 @@ +// 报表项目页内容部分 +apiready = function() { + ctrl = { + userId: null, // 用户id + cusType: null, // 客户类型 + init: {}, + bind: {}, + getProjects: {}, // 获取项目列表 + renderProjects: {} // 渲染项目列表 + } + /** + * 弹出提示框 + */ + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + + ctrl.init = function() { + // 获取userId + this.userId = $api.getStorage('userId'); + // 获取cusType + this.cusType = $api.getStorage('cusType'); + this.bind(); + this.getProjects(); + + } + ctrl.bind = function() { + var time = api.pageParam.time; // 当前报表的时间 + // 下拉刷新 + api.setRefreshHeaderInfo({ + bgColor: "#CCCCCC", + textColor: "#FFFFFF" + }, function (ret, err) { + ctrl.getProjects(); + }) + $('#list').on('touchend', '.project', function() { + var id = $(this).data('id'); + api.openWin({ + name: 'reportPr', + url: './reportPr.html', + pageParam: { + id: id, + time: time + } + }); + }) + } + // 获取项目 + ctrl.getProjects = function() { + var args = { + // cusType: ctrl.cusType, + userId: ctrl.userId + } + var url = '/ems/rest/report/customer'; + $api.get(url,args, function(data, err) { + api.refreshHeaderLoadDone(); + $("#list").empty(); + if(err){ + toast('网络请求失败'); + }else { + if(data.code === 200) { + if (!data.body || !data.body.length) { + $('#empty-tips').css('display', 'block'); + return; + } + $('#empty-tips').css('display', 'none'); + ctrl.renderProjects(data.body); + } + } + }) + } + + // 渲染项目列表 + ctrl.renderProjects = function(list) { + var tpl = ''; + tpl += '
    '; + tpl += '
    '; + tpl += '
    {{cusName}}
    '; + tpl += '
    配电室数量: {{prNum}} 个
    '; + tpl += '
    '; + tpl += '
    '; + // tpl += '
    {{time}}
    '; + tpl += '
    '; + tpl += '
    '; + tpl += '
    '; + tpl += '
    '; + for(var i = 0; i < list.length; i++) { + var item = list[i]; + if($api.getStorage('cus')) { + item.cusName = $api.guestName; + } + var projectDom = tpl.replace("{{cusId}}", item.cusId) + .replace("{{cusName}}", item.cusName) + .replace("{{prNum}}", item.prNum?item.prNum:0) + $('#list').append(projectDom); + } + } + ctrl.init(); +} diff --git a/app-saas-src/script/systemOrder/systemOrderDetail.js b/app-saas-src/script/systemOrder/systemOrderDetail.js new file mode 100644 index 0000000..9c31283 --- /dev/null +++ b/app-saas-src/script/systemOrder/systemOrderDetail.js @@ -0,0 +1,147 @@ + + +apiready = function() { + var ctrl = { + init: {}, + bind: {}, + prefix: 'https://cdyfile.saas.dianwutong.com/', + orderData: { + pics: [], + serverPicUrls: [], + uploadPicNum: 0, + desc: '', + prId: null, + }, + }; + + ctrl.init = function() { + CommonModel.fitInStatusBar(); + + ctrl.orderId = api.pageParam.orderid; + ctrl.status = api.pageParam.status; + + if (ctrl.status == 0) { // 未接单 + $('.handle-detail').hide(); + } else if (ctrl.status == 3) { // 已完成 + $('.handle-detail').show(); + } + + ctrl.bind(); + + ctrl.initOrderDetail(); + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }); + + // 点击图片预览 + $("#content").on("touchend", ".pic", function (e) { + e.stopPropagation(); + var src = $(this).attr('src'); + + $('#pic-review img').attr('src', src); + $('#pic-review').css('display', 'block'); + }); + + // 点击处理结果图片预览 + // $("#result-pic-content").on("touchend", ".pic", function (e) { + // console.log(3322323) + // e.stopPropagation(); + // var src = $(this).attr('src'); + + // $('#pic-review img').attr('src', src); + // $('#pic-review').css('display', 'block'); + // }); + + // 点击预览图片 关闭预览 + $('#pic-review').on("touchend", function () { + $(this).css('display', 'none'); + }); + }; + + /** + * 弹出提示框 + */ + ctrl.toast = function (msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + }; + + // 初始化 工单详情 + ctrl.initOrderDetail = function () { + ctrl.getOrderDetail(); + }; + + // 获取工单详情 + ctrl.getOrderDetail = function () { + var url = '/test/gong-dan/queryById/' + ctrl.orderId; + + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + $api.get(url, function(res, err) { + api.hideProgress(); + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != "200" || !res.data) { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } else { + ctrl.renderOrderDetail(res.data); + } + } + }); + }; + + // 渲染工单详情 + ctrl.renderOrderDetail = function (data) { + $('#pr-name').text(data.prName); + $('#person').text(data.tiJiaoRenName); + $('#create-time').text(data.tiJiaoShiJian); + $('#desc').text(data.miaoShu); + $('#result-desc').text(data.chuLiMiaoShu || '无'); + $('#result-person').text(data.chuLiRenName || '无'); + $('#handle-time').text(data.chuLiShiJian || '无'); + $('#complete-time').text(data.wanChengShiJian || '无'); + + // 渲染问题照片 + var picContentDom = $('#pic-content'); + if (data.zhaoPian) { + ctrl.renderPics(picContentDom, data.zhaoPian); + } else { + picContentDom.html('无'); + }; + + // 渲染处理照片 + var resultPicContentDom = $('#result-pic-content'); + if (data.chuLiZhaoPian) { + ctrl.renderPics(resultPicContentDom, data.chuLiZhaoPian); + } else { + resultPicContentDom.html('无'); + }; + }; + + // 渲染 图片 + ctrl.renderPics = function(dom, pics) { + dom.empty(); + + var picsArr = pics.split(','); + var length = picsArr.length; + + for (var i = 0; i < length; i++) { + var picUrl = ctrl.prefix + picsArr[i]; + var picDom = ''; + + dom.append(picDom); + } + }; + + ctrl.init(); +} diff --git a/app-saas-src/script/systemOrder/systemOrderEdit.js b/app-saas-src/script/systemOrder/systemOrderEdit.js new file mode 100644 index 0000000..67f4b99 --- /dev/null +++ b/app-saas-src/script/systemOrder/systemOrderEdit.js @@ -0,0 +1,728 @@ + + +apiready = function() { + var ctrl = { + init: {}, + bind: {}, + prefix: 'https://cdyfile.saas.dianwutong.com/', + employeeId: '', + prId: '', + orderData: { + pics: [], + serverPicUrls: [], + uploadPicNum: 0, + resultDesc: '' + }, + tabType: 'order', + problemData: { + status: true, // true:完成了初始化,false:当前存在未提交设备缺陷 + desc: '', // 设备缺陷 文字描述 + pics: [], // 设备缺陷 图片信息 + serverPicUrls: [], // 上传完成,返回的图片 url + uploadPicNum: 0, // 已经上传完成的图片的数量 + activeProblemItemDom: null, // 当前正在编辑的设备缺陷 DOM + }, + }; + + ctrl.init = function() { + CommonModel.fitInStatusBar(); + + ctrl.orderId = api.pageParam.orderid; + ctrl.status = api.pageParam.status; + + ctrl.employeeId = $api.getStorage('employeeId'); + + ctrl.startBtnDom = $('#start-btn'); + ctrl.finishBtnDom = $('#finish-btn'); + + if (ctrl.status == 1) { // 未处理 + ctrl.startBtnDom.show(); + ctrl.finishBtnDom.hide(); + $('.start-show').hide(); + } else if (ctrl.status == 2) { // 处理中 + ctrl.startBtnDom.hide(); + ctrl.finishBtnDom.show(); + $('.start-show').show(); + }; + + ctrl.bind(); + + ctrl.initOrderDetail(); + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }); + + //点击 “工单详情” tab按钮 + $api.addEvt($api.dom("#order-tab"), "touchend", function () { + if (ctrl.tabType == 'order') { + return + } + + $api.addCls(this, "active"); + $api.removeCls($api.dom("#problem-tab"), "active"); + $api.css($api.dom("#order-panel"), 'display:block'); + $api.css($api.dom("#problem-panel"), 'display:none'); + $api.css($api.dom('#inspectionitem-empty-tips'), "display:none"); + + ctrl.tabType = 'order' + + }, false); + + //点击 “设备缺陷” tab按钮 + $api.addEvt($api.dom("#problem-tab"), "touchend", function () { + if (ctrl.tabType == 'problem') { + return + } + + $api.addCls(this, "active"); + $api.removeCls($api.dom("#order-tab"), "active"); + $api.css($api.dom("#problem-panel"), 'display:block'); + $api.css($api.dom("#order-panel"), 'display:none'); + $api.css($api.dom('#inspectionitem-empty-tips'), "display:none"); + + ctrl.tabType = 'problem'; + + }, false); + /** + * =============================order-panel 工单详情 中的事件绑定=============================== + */ + // 点击 添加 图片 + + // $("#pic-add-btn").on("touchend", function () { + // var resultPicContentDom = $('#result-pic-content'); + // var params = { + // sourceType: 'camera', + // destinationType: 'base64' + // }; + // api.getPicture(params, function(ret, err){ + // if (ret && ret.data) { + // // 创建图片预览dom + // var picItemDom = ''; + // var dom = picItemDom.replace('{{url}}', ret.data); + // resultPicContentDom.prepend(dom); + + // // 保存 图片 base64 和 url + // ctrl.orderData.pics.push({ + // url: ret.data + // }); + // } + // }) + // }); + + // 点击 相册选择 添加 设备缺陷图片 + $("#pic-add-btn").on("touchend", function () { + var picContentDom = $('#pic-content'); + var params = { + sourceType: 'library', + // sourceType: 'camera', + // sourceType: 'album', + destinationType: 'base64' + } + api.getPicture(params, function(ret, err){ + if (ret && ret.data) { + // 创建图片预览dom + var picItemDom = '' + var dom = picItemDom.replace('{{url}}', ret.data) + picContentDom.prepend(dom) + + // 保存 图片 base64 和 url + ctrl.orderData.pics.push({ + url: ret.data + }); + } + }) + }); + + // 点击 照相机 拍照添加 设备缺陷图片 + $("#camera-btn").on("touchend", function () { + var picContentDom = $('#result-pic-content'); + var params = { + // sourceType: 'library', + sourceType: 'camera', + // sourceType: 'album', + destinationType: 'base64' + } + api.getPicture(params, function(ret, err){ + if (ret && ret.data) { + // 创建图片预览dom + var picItemDom = '' + var dom = picItemDom.replace('{{url}}', ret.data) + picContentDom.prepend(dom) + + // 保存 图片 base64 和 url + ctrl.orderData.pics.push({ + url: ret.data + }); + } + }) + }); + + // 图片 删除按钮 + $("#result-pic-content").on("touchend", "i", function (e) { + e.stopPropagation(); + + var _this = this; + + api.confirm({ + title: '', + msg: '确定要删除吗', + buttons: ['确定', '取消'] + }, function(ret, err) { + var index = ret.buttonIndex; + if (index == 1) { // 确定 + var url = $($(_this).siblings('img')[0]).attr('src'); + + $(_this).parent('.pic-item').remove(); + + // 从 ctrl.orderData.pics 中删除对应url + ctrl.orderData.pics = ctrl.orderData.pics.filter(function (item) { + return item.url != url; + }); + } + }); + + }); + + // 点击图片预览 + $("#order-panel").on("touchend", ".pic", function (e) { + e.stopPropagation(); + var src = $(this).attr('src'); + + $('#pic-review img').attr('src', src); + $('#pic-review').css('display', 'block'); + }); + + // 点击 “开始处理” 按钮 + $('#start-btn').on("touchend", function () { + api.confirm({ + title: '', + msg: '确定开始处理吗', + buttons: ['确定', '取消'] + }, function(ret, err) { + var index = ret.buttonIndex; + if (index == 1) { // 确定 + ctrl.handleStart(); + } + }); + }); + + // 点击 “处理完成” 按钮 + $('#finish-btn').on("touchend", function () { + api.confirm({ + title: '', + msg: '确定提交处理结果吗', + buttons: ['确定', '取消'] + }, function(ret, err) { + var index = ret.buttonIndex; + if (index == 1) { // 确定 + // 判断是否有未提交的设备缺陷 + if (!ctrl.problemData.status) { + ctrl.toast('存在未提交的设备缺陷!'); + } else { + ctrl.handleFinish(); + }; + } + }); + }); + + /** + * ===============================prolem-panel 设备缺陷 中的事件绑定================================ + */ + // 点击 新增设备缺陷 + $('#new-add-btn').on("touchend", function () { + // 判断当前工单是否是 “处理中” ,“未处理”工单不可以添加设备缺陷 + if (ctrl.status == 1) { + ctrl.toast("工单未开始处理,不能添加设备缺陷"); + return + }; + + // 判断是否有未提交的设备缺陷 + if (ctrl.problemData.status) { + // 页面中添加一个 问题 li DOM + ctrl.addProblemItemDom(); + + ctrl.problemData.status = false; + } else { + ctrl.toast('存在未提交的设备缺陷!') + }; + }); + + // 点击 添加设备缺陷图片 + + $("#problem-list-container").on("touchend", ".pic-add-btn", function () { + var picContentDom = $(this).parent('.pic-content'); + var params = { + sourceType: 'camera', + destinationType: 'base64' + } + api.getPicture(params, function(ret, err){ + if (ret && ret.data) { + // 创建图片预览dom + var picItemDom = '' + var dom = picItemDom.replace('{{url}}', ret.data) + picContentDom.prepend(dom) + + // 保存 图片 base64 和 url + ctrl.problemData.pics.push({ + url: ret.data + }) + + } + }) + }); + + // 图片预览 + $("#problem-list-container").on("touchend", ".problem-pic-item", function (e) { + e.stopPropagation(); + var src = $(this).attr('src'); + + $('#pic-review img').attr('src', src); + $('#pic-review').css('display', 'block'); + }); + + // 设备缺陷 图片 “删除” + $("#problem-list-container").on("touchend", "i", function (e) { + e.stopPropagation(); + + var _this = this; + + api.confirm({ + title: '', + msg: '确定要删除吗', + buttons: ['确定', '取消'] + }, function(ret, err) { + var index = ret.buttonIndex; + if (index == 1) { // 确定 + var url = $($(_this).siblings('img')[0]).attr('src'); + + $(_this).parent('.pic-item').remove(); + + // 从 ctrl.problemData.pics 中删除对应url + ctrl.problemData.pics = ctrl.problemData.pics.filter(function (item) { + return item.url != url; + }); + } + }); + + }); + + // 点击 “删除” 设备缺陷 + $('#problem-list-container').on("touchend", ".delete-btn", function () { + var _this = this; + api.confirm({ + title: '', + msg: '确定要删除吗', + buttons: ['确定', '取消'] + }, function(ret, err) { + ctrl.problemData.activeProblemItemDom = $(_this).parents('.problem-item'); + + var index = ret.buttonIndex; + if (index == 1) { // 确定 + ctrl.handleDelete(); + } + }); + }); + + // 点击 “提交” 设备缺陷 + $('#problem-list-container').on("touchend", ".submit-btn", function () { + ctrl.problemData.activeProblemItemDom = $(this).parents('.problem-item'); + + ctrl.problemData.desc = ctrl.problemData.activeProblemItemDom.find('.desc').val().trim(); + + api.confirm({ + title: '', + msg: '确定要提交吗', + buttons: ['确定', '取消'] + }, function(ret, err) { + var index = ret.buttonIndex; + if (index == 1) { // 确定 + if (!ctrl.problemData.desc.trim()) { + ctrl.toast('缺陷描述不能为空!'); + } else { + ctrl.handleSubmit(); + }; + } + }); + }); + + // 点击预览图片 关闭预览 + $('#pic-review').on("touchend", function (e) { + e.stopPropagation(); + $(this).css('display', 'none'); + }); + }; + + /** + * 弹出提示框 + */ + ctrl.toast = function (msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + }; + + // 初始化 工单详情 + ctrl.initOrderDetail = function () { + ctrl.getOrderDetail(); + }; + + // 获取工单详情 + ctrl.getOrderDetail = function () { + var url = '/test/gong-dan/queryById/' + ctrl.orderId; + + api.showProgress({ + title: '载入中...', + text: '请稍后', + modal: false + }); + $api.get(url, function(res, err) { + api.hideProgress(); + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != "200" || !res.data) { + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } else { + ctrl.prId = res.data.prId; + ctrl.renderOrderDetail(res.data); + } + } + }); + }; + + // 渲染工单详情 + ctrl.renderOrderDetail = function (data) { + $('#pr-name').text(data.prName); + $('#person').text(data.tiJiaoRenName); + $('#create-time').text(data.tiJiaoShiJian); + $('#desc').text(data.miaoShu); + + // 渲染问题照片 + var picContentDom = $('#pic-content'); + if (data.zhaoPian) { + ctrl.renderPics(picContentDom, data.zhaoPian); + } else { + picContentDom.html('无'); + }; + }; + + // 渲染 图片 + ctrl.renderPics = function(dom, pics) { + dom.empty(); + + var picsArr = pics.split(','); + var length = picsArr.length; + + for (var i = 0; i < length; i++) { + var picUrl = ctrl.prefix + picsArr[i]; + var picDom = ''; + + dom.append(picDom); + } + }; + + // “开始处理” + ctrl.handleStart = function () { + api.showProgress(); + + var url = '/test/gong-dan/gongDanKaiShi'; + var data = { + id: ctrl.orderId + }; + + $api.post(url, data, function (res, err) { + + if (err) { + api.hideProgress(); + ctrl.toast("开始失败,请稍后再试"); + } else { + if (res.code == 200) { + ctrl.startBtnDom.hide(); + ctrl.finishBtnDom.show(); + $('.start-show').show(); + + api.hideProgress(); + ctrl.toast("开始成功"); + + ctrl.status = 2; + } else { + api.hideProgress(); + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + }; + + }); + }; + + // “处理完成” + ctrl.handleFinish = function () { + + // 数据校验 + var flag = ctrl.checkData(); + + if (!flag) { + ctrl.toast("请填写完整,再提交"); + return; + }; + + api.showProgress(); + + var pics = ctrl.orderData.pics; + var length = pics.length; + if (length > 0) { // 有图片 + // 上传 图片 + for (var i = 0; i < length; i++) { + var url = pics[i]['url']; + ctrl.uploadPic(url); + } + } else { // 没图片 + ctrl.submit(); + }; + }; + + // 数据校验 + ctrl.checkData = function () { + ctrl.orderData.resultDesc = $('#result-desc').val().trim(); + + if (ctrl.orderData.resultDesc) { // 验证处理结果 + return true; + } else { + return false; + }; + }; + + // 上传图片 + ctrl.uploadPic = function (file) { + + var url = "/ems/rest/common/file/pad_upload"; + var data = file; + + $api.uploadFile(url, data, function (res, err) { + + if (err) { + ctrl.toast("网络请求失败,请稍后再试"); + } else { + if (res.code == 200) { + // 将返回的图片路径保存 + if (res.body && res.body.fileUrl) { + ctrl.orderData.serverPicUrls.push(res.body.fileUrl) + + ctrl.orderData.uploadPicNum++; + + if (ctrl.orderData.uploadPicNum == ctrl.orderData.pics.length) {// 代表全部图片上传完成 + // 2、调用接口 + ctrl.submit(); + } + } else { + api.hideProgress(); + ctrl.toast("服务器错误,未返回数据"); + } + } else { + api.hideProgress(); + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + + }) + }; + + // 提交处理结果 + ctrl.submit = function () { + api.showProgress(); + + var chuLiZhaoPian = ctrl.orderData.serverPicUrls.join(','); + + var url = '/test/gong-dan/gongDanWanCheng'; + var data = { + id: ctrl.orderId, + chuLiMiaoShu: ctrl.orderData.resultDesc + }; + + if (chuLiZhaoPian) { + data.chuLiZhaoPian = chuLiZhaoPian; + }; + + $api.post(url, data, function (res, err) { + + if (err) { + api.hideProgress(); + ctrl.toast("提交结果失败,请稍后再试"); + } else { + if (res.code == 200) { + // 返回 我的工单 页 + api.sendEvent({ + name: 'orderTaskChanged' + }); + + api.hideProgress(); + ctrl.toast("提交成功"); + api.closeWin(); + } else { + api.hideProgress(); + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + }; + + }); + }; + + /** + * ============================= 设备缺陷 panel ============================ + */ + // 添加一个 设备缺陷 dom + ctrl.addProblemItemDom = function() { + var index = $('#problem-list-container li').length + 1; + + var itemDom = ''; + itemDom += '
  • '; + itemDom += '
    '; + itemDom += '
    问题{index}
    '; + itemDom += '
    ' + itemDom += '
    ' + itemDom += '删除' + itemDom += '
    ' + itemDom += '
    '; + itemDom += '提交'; + itemDom += '
    '; + itemDom += '
    ' + itemDom += '
    已提交
    ' + itemDom += '
    '; + itemDom += '
    '; + itemDom += '
    *问题描述:
    '; + itemDom += '
    '; + itemDom += ''; + itemDom += '
    '; + itemDom += '
    '; + itemDom += '
    '; + itemDom += '
    现场照片:
    '; + itemDom += '
    '; + itemDom += ''; + itemDom += '
    '; + itemDom += '
    '; + itemDom += '
  • '; + + itemDom = itemDom.replace('{index}', index); + + $('#problem-list-container').append(itemDom); + }; + + // 处理 删除 事件 + ctrl.handleDelete = function () { + ctrl.problemData.activeProblemItemDom.remove(); + ctrl.resetProblemData(); + }; + + // 处理 问题 提交 事件 + ctrl.handleSubmit = function() { + api.showProgress(); + + var pics = ctrl.problemData.pics; + var length = pics.length; + if (length > 0) { // 有图片 + // 上传 图片 + for (var i = 0; i < length; i++) { + var url = pics[i]['url'] + ctrl.uploadProblemPic(url) + } + } else { // 没图片 + ctrl.submitProblem(); + }; + }; + + // 重置 设备缺陷 数据表单 + ctrl.resetProblemData = function () { + ctrl.problemData.status = true; + ctrl.problemData.desc = ''; + ctrl.problemData.pics = []; + ctrl.problemData.serverPicUrls = []; + ctrl.problemData.uploadPicNum = 0; + ctrl.problemData.activeProblemItemDom = null; + }; + + // 上传 设备缺陷 图片 + ctrl.uploadProblemPic = function (file) { + + var url = "/ems/rest/common/file/pad_upload"; + var data = file; + + $api.uploadFile(url, data, function (res, err) { + + if (err) { + api.hideProgress(); + ctrl.toast("网络请求失败,请稍后再试"); + } else { + if (res.code == 200) { + // 将返回的图片路径保存 + if (res.body && res.body.fileUrl) { + ctrl.problemData.serverPicUrls.push(res.body.fileUrl) + + ctrl.problemData.uploadPicNum++; + + if (ctrl.problemData.uploadPicNum == ctrl.problemData.pics.length) {// 代表全部图片上传完成 + // 2、调用提交 设备缺陷接口 + ctrl.submitProblem(); + } + } else { + api.hideProgress(); + ctrl.toast("服务器错误,未返回数据"); + } + } else { + api.hideProgress(); + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + } + + }) + }; + + // 提交 设备缺陷 + ctrl.submitProblem = function() { + api.showProgress(); + + var zhaoPian = ctrl.problemData.serverPicUrls.join(','); + var url = '/test/gong-dan/insert'; + var data = { + tiJiaoRenId: ctrl.employeeId, + xunJianPrId: ctrl.id, + prId: ctrl.prId, + miaoShu: ctrl.problemData.desc, + isXjProblem: 1 + }; + + if (zhaoPian) { + data.zhaoPian = zhaoPian; + }; + + $api.post(url, data, function (res, err) { + + if (err) { + api.hideProgress(); + ctrl.toast("提交设备缺陷失败,请稍后再试"); + } else { + if (res.code == 200) { + // 隐藏当前设备缺陷的 删除 和 提交 按钮,隐藏 添加图片 删除图片 按钮 + ctrl.problemData.activeProblemItemDom.find('.btns').css('display', 'none'); + ctrl.problemData.activeProblemItemDom.find('.finished').css('display', 'block'); + ctrl.problemData.activeProblemItemDom.find('.pic-add-btn').css('display', 'none'); + ctrl.problemData.activeProblemItemDom.find('.pic-item i').css('display', 'none'); + ctrl.problemData.activeProblemItemDom.find('.desc').attr('disabled', 'disabled'); + + // 初始化 problemData + ctrl.resetProblemData(); + + api.hideProgress(); + ctrl.toast("提交成功"); + } else { + api.hideProgress(); + ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : "")); + } + }; + + }); + }; + + ctrl.init(); +} diff --git a/app-saas-src/script/user/findPassWord.js b/app-saas-src/script/user/findPassWord.js new file mode 100644 index 0000000..c5dfc2c --- /dev/null +++ b/app-saas-src/script/user/findPassWord.js @@ -0,0 +1,183 @@ +apiready = function() { + var ctrl = { + init: {}, + bind: {}, + phoneEmpty: {}, //验证手机号是否为空以及格式是否正确 + getCode: {}, //获取验证码 + refreshCode: {}, //验证码倒计时 + toast: {}, //弹出框提示 + checkIn: {}, //提交信息重置密码 + isCountdowning: false //是否正在进行倒计时 + }; + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + ctrl.bind(); + } + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + ctrl.phoneEmpty = function() { + ctrl.phoneNumber = $api.trim($api.val($api.dom('#phone'))); + //var code = $api.trim($api.val($api.dom('#confirm-code'))); + if (ctrl.phoneNumber == '') { + $api.text($api.dom('#phone-tip'), '请输入手机号'); + } else { + var reg = /^1[0-9]{10}$/; + if (!reg.test(ctrl.phoneNumber)) { + $api.text($api.dom('#phone-tip'), '手机号格式不正确'); + } else { + $api.text($api.dom('#phone-tip'), ''); + return true; + } + } + } + + ctrl.bind = function() { + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + // //点击确认按钮 验证手机号及验证码是否正确 + $api.addEvt($api.dom('#submit'), 'touchend', function() { + ctrl.checkIn(); + }) + //点击获取验证码按钮获取验证码 + $api.addEvt($api.dom('#get-code'), 'touchend', function() { + $api.attr($api.dom('#get-code'), "disabled", true); + if (ctrl.phoneEmpty()) { + //手机号正确并且正在进行倒计时 + if (ctrl.isCountdowning) { + return; + } else { + //手机号正确并且倒计时结束 + $api.removeAttr($api.dom('#get-code'), "disabled"); + ctrl.getCode(); + } + + } + }) + //手机号选框失去焦点时 + $api.addEvt($api.dom('#phone'), 'blur', function() { + if (ctrl.phoneEmpty()) { + //手机号正确并且此时没有进行验证码倒计时 + if (!ctrl.isCountdowning) { + $api.removeAttr($api.dom('#get-code'), "disabled"); + } + } else { + $api.attr($api.dom('#get-code'), "disabled", true); + } + }) + + + $api.addEvt($api.dom('#code'), 'keyup', function() { + var phoneNumber = $api.trim($api.val($api.dom('#phone')));; + var code = $api.trim($api.val($api.dom('#code'))); + if (phoneNumber != '' && code != '' && phoneNumber != null && code != null) { + $api.css($api.dom('#submit'), 'background:#E9BE2B'); + } else { + $api.css($api.dom('#submit'), 'background:#d9d9d9'); + } + }) + } + //获取验证码 + ctrl.getCode = function() { + var url = "/admin/rest/user/get/sms"; + var data = { + "userName": ctrl.phoneNumber + }; + $api.post(url, data, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (res.code == 200) { + //验证手机号码正确进行倒计时 + ctrl.refreshCode(); + + } else { + //$api.attr($api.dom('#get-code'), "disabled", true); + $api.text($api.dom('#phone-tip'), '手机号不正确'); + } + } + }); + } + //提交信息进行重置密码 + ctrl.checkIn = function() { + var phoneNumber = $api.trim($api.val($api.dom('#phone')));; + var code = $api.trim($api.val($api.dom('#code'))); + if (phoneNumber == '' || phoneNumber == null) { + $api.text($api.dom('#phone-tip'), '请输入手机号'); + } else { + $api.text($api.dom('#phone-tip'), ''); + } + if (code == '' || code == null) { + $api.text($api.dom('#code-tip'), '请输入验证码'); + } else { + $api.text($api.dom('#code-tip'), ''); + } + + if (phoneNumber != '' && code != '' && phoneNumber != null && code != null) { + $api.css($api.dom('#submit'), 'background:#E9BE2B'); + var url = "/admin/rest/user/sms/validate"; + var data = { + "userName": phoneNumber, + "code": code + } + $api.post(url, data, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (res.code != 200) { + //验证码错误 + $api.text($api.dom('#code-tip'), '验证码不正确'); + } else { + //验证码正确跳转到重置密码页 + $api.text($api.dom('#code-tip'), ''); + api.openWin({ + name: 'resetPassword', + url: '../../html/user/resetPassword.html', + pageParam: { + id: res.body //userId + } + }); + // api.closeWin({}); + window.setTimeout(function() { + api.closeWin(); + }, 500) + } + } + }); + } + + } + //验证码倒计时 + ctrl.refreshCode = function() { + //如果正在倒计时则不执行 + if (ctrl.isCountdowning) { + return; + } + ctrl.isCountdowning = true; + $api.val($api.dom('#get-code'), '短信已发送'); + var i = 60; + $api.attr($api.dom('#get-code'), "disabled", true); + if (ctrl.timer) { + window.clearInterval(ctrl.timer); + } + ctrl.timer = window.setInterval(function() { + i--; + $api.val($api.dom('#get-code'), i + '秒之后重试'); + //倒计时为0时可以重新获取验证码 + if (i == 0) { + ctrl.isCountdowning = false; + window.clearInterval(ctrl.timer); + $api.val($api.dom('#get-code'), '获取验证码'); + $api.removeAttr($api.dom('#get-code'), "disabled"); + } + }, 1000) + + } + ctrl.init(); +} diff --git a/app-saas-src/script/user/login.js b/app-saas-src/script/user/login.js new file mode 100644 index 0000000..9534148 --- /dev/null +++ b/app-saas-src/script/user/login.js @@ -0,0 +1,635 @@ +apiready = function() { + + var ctrl = { + init: {}, + bind: {}, + checkData: {}, + checkIn: {}, + initBD: {}, + listenMessage: {}, + checkToUpdate: {}, + checkHasUpdated: {}, + cmpVersion: {}, + isRemember: false, // 是否勾选了记住密码,默认不记住 + } + + ctrl.init = function() { + + // add start 2019/4/29 kangzhi + // 检测是否需要记住账号密码 + ctrl.checkIsRemember(); + // add end 2019/4/29 kangzhi + + // 允许调用接口 + $api.disabledRequest = false; + + // add start 2019/4/29 kangzhi + // 将检测版本是否需要更新,由之前的index页面更改到login登录页面 + ctrl.checkToUpdate(); + ctrl.checkHasUpdated(); + // add end 2019/4/29 kangzhi + + ctrl.bind(); + } + + ctrl.bind = function() { + + $api.addEvt($api.dom("#check-in"), "touchend", function() { + // $api.addCls($api.dom("#check-in"), 'btn-success'); + var data = ctrl.checkData(); + if (data) { + ctrl.checkIn(data); + } + }); + + // 体验账号登录 + // $api.addEvt($api.dom("#cus"), "touchend", function() { + // var data = { + // "loginFlag": 1 + // } + // ctrl.experience(); + // }); + + //点击忘记密码跳转到找回密码页 + $api.addEvt($api.dom("#forget-password"), "touchend", function() { + api.openWin({ + name: 'forgetPassword', + url: '../../html/user/findPassWord.html', + + }); + }); + + //用户点击了服务条款按钮 + $api.addEvt($api.dom("#protocol"), "touchend", function() { + api.openWin({ + name: "protocol", + url: "../../html/user/protocol.html", + animation: { + type: "movein", + subType: "from_bottom" + } + }); + }); + + //阻止android的返回事件 + api.addEventListener({ + name: 'keyback' + }, function(ret, err) { + api.closeWidget({}); + return false; + }); + + //阻止ios的返回事件 + api.addEventListener({ + name: 'swiperight' + }, function(ret, err) { + return false; + }); + + // add start 2019/4/29 kangzhi + $api.addEvt($api.dom("#remember-password"), "touchend", function() { + + if ($api.hasCls($api.dom("#remember-password"), 'is-remember')) { + + ctrl.isRemember = false; + $api.removeCls($api.dom("#remember-password"), 'is-remember'); + + } else { + + ctrl.isRemember = true; + $api.addCls($api.dom("#remember-password"), 'is-remember'); + + } + + }); + // add end 2019/4/29 kangzhi + } + + ctrl.checkData = function() { + var account = $api.trim($api.val($api.dom("#account"))); + var password = $api.val($api.dom("#password")); + + $api.text($api.dom("#account-tip"), ''); + $api.text($api.dom("#password-tip"), ''); + + if (account.length == 0) { + $api.text($api.dom("#account-tip"), '请输入账号'); + return false; + } + + if (password.length == 0) { + $api.text($api.dom("#password-tip"), '请输入密码'); + return false; + } + + var data = { + userName: account, + password: password + } + + return data; + } + // 体验用户登陆 + ctrl.experience = function() { + + $api.post('/admin/rest/user/login_experience', {}, function(ret, err) { + if (err) { + api.toast({ + msg: '网络错误', + duration: 2000, + location: 'bottom' + }); + return false; + } + + if (ret.code == 200) { + $api.setStorage("token", ret.body.token); + $api.setStorage("username", ret.body.userName); + $api.setStorage('cus', '1'); + var realName = ret.body.replaceTo; + $api.setStorage("realName", realName); + $api.setStorage("guestKeys", ret.body.originalStr); + var cusExperience = true; // 体验客户的标志 + ctrl.getCus(cusExperience); + + } + }); + + } + // 通过token 获取客户的信息 + ctrl.getCus = function(cusExperience) { + $api.get('/ems/rest/customer/token', {}, function(ret, err) { + if (ret.code == 200) { + // 如果是园区的董事长或者项目经理登录, + // 可能存在多个客户(即项目与之对应,所以返回一个客户列表) + var customers = ret.body.cus; // 返回的客户列表 + // 没有客户信息 禁止登录 + if (!customers || !customers.length) { + api.toast({ + msg: '获取用户信息失败', + duration: 2000, + location: 'bottom' + }); + return; + } + + // 存储当前登录人员所对应的所有客户 + $api.setStorage('customers', customers); + + + // 默认选择客户列表中的第一个登录 登录之后可以切换(如果多个) + var currentCus = customers[0]; + // userId + $api.setStorage("userId", ret.body.userId); + // 客户角色id 董事长 项目经理 项目负责人 + $api.setStorage('cusRoleType', ret.body.cusRoleType); + // 非体验客户 + if (!cusExperience) { + $api.prefix = ret.body.prefix; + $api.setStorageOfCus(currentCus); + $api.setStorage('cus', null); + } else { + // 体验客户 + $api.setStorageOfExperCus(currentCus); + } + + + ctrl.jump() + } else { + api.toast({ + msg: '获取用户信息失败', + duration: 2000, + location: 'bottom' + }); + } + + }) + } + ctrl.checkIn = function(data) { + + $api.post("/admin/rest/user/login", data, function(ret, err) { + + if (err) { + api.toast({ + msg: '网络错误', + duration: 2000, + location: 'bottom' + }); + return false; + } + if (ret.code == 200) { + var role = null; + var user = ret.body + var userType = user.userType; + // edit start + // 巡检组长和抢修组长也可以登陆APP 1:运营中心管理员 2:员工 3:客户, 4:兼职, 5:体验账户 + if (userType != 3 && userType != 5 && userType != 2) { + $api.text($api.dom("#account-tip"), '账号不存在'); + return false; + } + + // 清空 storage + $api.clearStorage(); + + $api.setStorage("ocId", user.ocId); + $api.setStorage("token", user.token); + $api.setStorage("username", user.userName); + $api.setStorage("userType", userType); + // $api.setStorage("employeeType", employeeType); + + // add start 2019/4/29 kangzhi + if (ctrl.isRemember) { + // 勾选了记住密码,将账号和密码保存 + $api.setStorage("remember", '1'); + $api.setStorage("account", data.userName); + $api.setStorage("password", data.password); + } + // add end 2019/4/29 kangzhi + + // 可以登陆APP角色: 组团长、巡检组长、抢修组长、客户站长、客户巡检组长 + // 组团长、巡检组长 抢修组长登陆 + if (userType == 2) { // 员工(包括自己员工、客户员工) + $api.setStorage("realName", user.userName); + $api.setStorage("isEmployee", true); + + // 获取员工角色 + var args = { + token: user.token + } + $api.get("/ems/rest/employee/role", args, function(ret, err) { + + if (ret.code == 200) { + var roles = ret.body + // 保存 employeeId + $api.setStorage("employeeId", roles[0]['employeeId']) + // var roleList = [] + var hasSetRoleIdStorage = false + + roles.forEach(function (element) { + // 将组团长、巡检组长、客户站长、客户巡检组长的角色信息存储 + // 以下为 自己员工============================================================== + // 组团长 + if (element.roleId == 2) { + $api.setStorage("isZTZ", true) + if (!hasSetRoleIdStorage) { + $api.setStorage("roleId", 2) + hasSetRoleIdStorage = true + } + } + // 巡检组长 + if (element.roleId == 3) { + $api.setStorage("isXJZZ", true) + if (!hasSetRoleIdStorage) { + $api.setStorage("roleId", 3) + hasSetRoleIdStorage = true + } + } + // 以下为 客户员工=============================================================== + // 站长 + if (element.roleId == 15) { + $api.setStorage("isKHZZ", true) + if (!hasSetRoleIdStorage) { + $api.setStorage("roleId", 15) + hasSetRoleIdStorage = true + } + } + + // 客户值长 + if (element.roleId == 18) { + $api.setStorage("isKHZBZ", true) + if (!hasSetRoleIdStorage) { + $api.setStorage("roleId", 18) + hasSetRoleIdStorage = true + } + } + + // 客户值班员 + if (element.roleId == 16) { + $api.setStorage("isKHZBY", true) + if (!hasSetRoleIdStorage) { + $api.setStorage("roleId", 16) + hasSetRoleIdStorage = true + } + } + + // roleList.push(element) + }); + + // if (roleList.length) { + // $api.setStorage("roleId", roleList[0]['roleId']) // 登陆成功后默认使用第一个角色 + // } + // $api.setStorage("roleList", roleList) + + ctrl.jump() + } else { + api.toast({ + msg: '获取账号角色信息失败', + duration: 2000, + location: 'bottom' + }); + } + }) + + } + // edit end + + // userType 1:运营中心管理员 2:员工 3:客户, 4:兼职, 5:体验账户 + if (userType == 5) { + $api.setStorage('cus', '1'); + var realName = ret.body.replaceTo; + $api.setStorage("realName", realName); + $api.setStorage("guestKeys", ret.body.originalStr); + var cusExperience = true; // 体验客户的标志 + ctrl.getCus(cusExperience); + } + + if (userType == 3) { // edit 2023/2/27 + ctrl.getCus(); + } + + } else { + $api.text($api.dom("#password-tip"), '密码错误'); + } + }); + + } + ctrl.jump = function() { + api.removeEventListener({ + name: 'loginout' + }); + // console.log(1) + //发出登录成功的消息 + api.sendEvent({ + name: 'logined' + }); + // console.log(2) + var edge = api.winWidth * 0.2; + (edge < 0) && (edge = 60); + api.openDrawerLayout({ + name: 'index', + url: 'widget://html/index/index.html', + leftPane: { + edge: edge, + name: 'index.leftPanel', + url: 'widget://html/index/leftPanel.html' + }, + reload: true, + slidBackEnabled: false + }); + } + + // add start 2019/4/29 kangzhi + // 将检测版本功能从index页面移动到login页面中 + //比较版本号 + + ctrl.cmpVersion = function(thisVersion, otherVersion) { + var _this = thisVersion.split('.'); + var _other = otherVersion.split('.'); + + for (var i = 0; i < 3; i++) { + var _t = parseInt(_this[i]); + var _o = parseInt(_other[i]); + + if (_t > _o) { + return 1; + } else if (_t < _o) { + return -1; + } + } + return 0; + } + + //版本更新 + + ctrl.checkToUpdate = function() { + var thisVersion = api.readFile({ + sync: true, + path: 'widget://resource/version.txt' + }); + $api.getVersion(function(ret) { + if (ret) { + //如果当前版本低于服务器的最低版本 强制更新 + if (ctrl.cmpVersion(thisVersion, ret.minSupport) < 0) { + api.alert({ + title: '版本更新', + msg: '版本太低,强烈建议更新', + buttons: ['确定'] + }, function(ret, err) { + update(function() { + //关闭当前页 退出登录 跳转到登录页 + api.openWin({ + name: 'login', + url: 'widget://html/user/login.html', + reload: true, + animation: { + type: "fade" + } + }); + + api.sendEvent({ + name: 'loginout' + }); + + api.closeWin({ + animation: { + type: "fade" + } + }); + }); + + }); + } else if (ctrl.cmpVersion(thisVersion, ret.latestVersion) < 0) { + //如果当前版本低于服务器的最新版本 建议更新 + if (dialogBox) { + return; + } + var dialogBox = api.require('dialogBox'); + dialogBox.alert({ + texts: { + title: '版本更新', + content: '发现新的版本,请更新', + leftBtnTitle: '确定', + rightBtnTitle: '取消', + }, + styles: { + bg: '#fff', + w: 300, + corner: 6, + title: { + marginT: 20, + titleSize: 18, + titleColor: '#000' + }, + content: { + marginT: 10, + color: '#000', + size: 14 + }, + left: { + marginB: 7, + marginL: 20, + w: 130, + h: 35, + corner: 2, + bg: '#fff', + size: 18 + }, + right: { + marginB: 7, + marginL: 10, + w: 130, + h: 35, + corner: 2, + bg: 'white', + size: 18 + } + + } + }, function(ret) { + if (ret.eventType == 'right') { + var dialogBox = api.require('dialogBox'); + dialogBox.close({ + dialogName: 'alert' + }); + } else if (ret.eventType == 'left') { + update(); + var dialogBox = api.require('dialogBox'); + dialogBox.close({ + dialogName: 'alert' + }); + } + }); + } + + //如果版本号不一样 标记已经提示过 + //一天之内不在提示 + if (ctrl.cmpVersion(thisVersion, ret.latestVersion) != 0) { + + var exdate = new Date() + exdate.setHours(exdate.getHours() + 24) + document.cookie = "has_remind_update=1;expires=" + exdate.toGMTString(); + + } + + + } + }, 'json'); + + function update(callback) { + + var platform = api.systemType; + if (platform == "ios") { + api.openApp({ + iosUrl: 'https://itunes.apple.com/us/app/%E7%94%B5%E5%8A%A1%E9%80%9Asaas/id1398709195?l=zh&ls=1&mt=8' + }, function(ret, err) { + //coding... + }); + callback && callback(); + } else if (platform == "android") { + api.showProgress({ + title: '下载中', + text: '请稍等...', + modal: false + }); + + api.download({ + url: "https://cdn.dianwutong.com/app/dianwutong_saas/app.apk", + cache: false, + allowResume: true + }, function(ret, err) { + api.hideProgress(); + if (ret.state == 1) { + //下载成功 + api.installApp({ + appUri: ret.savePath + }); + callback && callback(); + } else { + api.alert({ + title: '版本更新', + msg: '下载失败,请到电务通官网扫码下载最新app', + buttons: ['确定'] + }, function(ret, err) { + //coding... + callback && callback(); + }); + + } + }); + + } + + } + } + + //检查是否更新 + + ctrl.checkHasUpdated = function() { + + var lastVersion = $api.getStorage('lastVersion'); + + var currentVersion = api.readFile({ + sync: true, + path: 'widget://resource/version.txt' + }); + + if (lastVersion && ctrl.cmpVersion(lastVersion, currentVersion) < 0) { + + api.alert({ + title: '提示', + msg: '版本更新成功,请重新登陆', + buttons: ['确定'] + }, function(ret, err) { + + api.sendEvent({ + name: 'loginout' + }); + + setTimeout(function() { + api.closeWin({ + animation: { + type: 'fade' + } + }); + }, 500) + + api.openWin({ + name: 'login', + url: 'widget://html/user/login.html', + animation: { + type: 'fade' + } + }); + + }) + + } else { + + $api.setStorage('lastVersion', currentVersion); + + } + + + } + + // 检测上次登录是否记住了账号密码 + ctrl.checkIsRemember = function() { + + var remember = $api.getStorage('remember'); + var account = $api.getStorage('account'); + var password = $api.getStorage('password'); + + if (remember) { + + $api.val($api.dom("#account"), account); + $api.val($api.dom("#password"), password); + ctrl.isRemember = true; + $api.addCls($api.dom("#remember-password"), 'is-remember'); + + } + + } + // add end 2019/4/29 kangzhi + + ctrl.init(); +}; diff --git a/app-saas-src/script/user/protocol.js b/app-saas-src/script/user/protocol.js new file mode 100644 index 0000000..b1b4373 --- /dev/null +++ b/app-saas-src/script/user/protocol.js @@ -0,0 +1,7 @@ +apiready = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + $api.addEvt($api.dom(".back"), 'click', function() { + api.closeWin(); + }); +} diff --git a/app-saas-src/script/user/resetPassword.js b/app-saas-src/script/user/resetPassword.js new file mode 100644 index 0000000..3da6f41 --- /dev/null +++ b/app-saas-src/script/user/resetPassword.js @@ -0,0 +1,115 @@ +apiready = function() { + var ctrl = { + init: {}, + bind: {}, + password: null, //密码 + repeatPassword: null, //确认密码 + toast: {}, //弹框提示 + + }; + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + ctrl.bind(); + } + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + ctrl.bind = function() { + //点击返回按钮,返回上一页 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + //点击确认按钮进行重置密码 + $api.addEvt($api.dom('#check-in'), "touchend", function() { + + var password = $api.trim($api.val($api.dom('#password'))); + var repeatPassword = $api.trim($api.val($api.dom('#confirm-password'))); + //密码为空禁止点击 + if (!password || password == null) { + //$api.attr($api.dom('#check-in'), 'disabled', true); + $api.text($api.dom('#password-tip'), '请输入密码'); + } else { + //$api.removeAttr($api.dom('#check-in'), 'disabled'); + $api.text($api.dom('#password-tip'), ''); + } + if (!repeatPassword) { + //$api.attr($api.dom('#check-in'), 'disabled', true); + $api.text($api.dom('#confirm-tip'), '请输入密码'); + } else { + //$api.removeAttr($api.dom('#check-in'), 'disabled'); + $api.text($api.dom('#confirm-tip'), ''); + } + if (password && repeatPassword && password == repeatPassword) { + $api.removeAttr($api.dom('#check-in'), 'disabled'); + var url = "/admin/rest/user/forget/password"; + var data = { + "password": password, + "userId": api.pageParam.id //userId + } + $api.post(url, data, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + } else { + //密码重置成功,跳转到登陆页 + if (res.code == 200) { + api.alert({ + title: '', + msg: '重置密码成功,请重新登陆', + }, function(ret, err) { + api.openWin({ + name: '跳转到登陆页', + url: '../../html/user/login.html' + }); + window.setTimeout(function() { + api.closeWin(); + }, 500) + + }); + } else { + //密码重置失败 + ctrl.toast("重置密码失败"); + } + } + }); + } + }); + //确认密码选框失去焦点时如果两次密码不一致给出提示并且阻止点击确认修改按钮 + $api.addEvt($api.dom('#confirm-password'), 'blur', function() { + ctrl.password = $api.trim($api.val($api.dom('#password'))); + ctrl.repeatPassword = $api.trim($api.val($api.dom('#confirm-password'))); + var password = ctrl.password; + var repeatPassword = ctrl.repeatPassword; + if (password && repeatPassword) { + if (ctrl.password != ctrl.repeatPassword) { + $api.attr($api.dom('#check-in'), 'disabled', true); + $api.text($api.dom('#confirm-tip'), '两次密码不一致'); + $api.css($api.dom('#check-in'), 'background:#d9d9d9'); + } else { + $api.text($api.dom('#confirm-tip'), ''); + $api.css($api.dom('#check-in'), 'background:#E9BE2B'); + $api.removeAttr($api.dom('#check-in'), 'disabled') + } + } + + }) + $api.addEvt($api.dom('#confirm-password'), 'keyup', function() { + var password = $api.trim($api.val($api.dom('#password'))); + var repeatPassword = $api.trim($api.val($api.dom('#confirm-password'))); + if (password && repeatPassword) { + if (password != repeatPassword) { + $api.removeAttr($api.dom('#check-in'), 'disabled') + $api.css($api.dom('#check-in'), 'background:#d9d9d9'); + } else { + $api.css($api.dom('#check-in'), 'background:#E9BE2B'); + } + } + }) + + } + ctrl.init(); +} diff --git a/app-saas-src/script/user/updatePassword.js b/app-saas-src/script/user/updatePassword.js new file mode 100644 index 0000000..1ee5e2c --- /dev/null +++ b/app-saas-src/script/user/updatePassword.js @@ -0,0 +1,162 @@ +apiready = function() { + var ctrl = { + init: {}, + bind: {}, + verifyPwd: {}, + checkIn: {}, + toast: {}, + forbidChangePwd: {} //客户体验禁止修改密码 + } + ctrl.init = function() { + // 适配安卓状态栏 + CommonModel.fitInStatusBar(); + ctrl.bind(); + } + ctrl.toast = function(msg) { + api.toast({ + msg: msg, + duration: 3000, + locaiton: 'top' + }); + } + ctrl.bind = function() { + //点击返回按钮 + $api.addEvt($api.dom("#back"), "touchend", function() { + api.closeWin(); + }) + $api.addEvt($api.dom("#confirm-pwd"), "keyup", function() { + var newPwd = $api.trim($api.val($api.dom("#new-pwd"))); + var confirmPwd = $api.trim($api.val($api.dom("#confirm-pwd"))); + var originPwd = $api.trim($api.val($api.dom("#origin-pwd"))); + if (confirmPwd && newPwd) { + if (newPwd != confirmPwd) { + $api.text($api.dom('#confirm-pwd-tip'), '两次密码不一致') + } else { + $api.text($api.dom('#confirm-pwd-tip'), '') + } + } else { + $api.text($api.dom('#confirm-pwd-tip'), '') + } + + if (originPwd && newPwd && confirmPwd) { + if (newPwd == confirmPwd && originPwd != newPwd && confirmPwd != originPwd) { + $api.css($api.dom('#confirm'), 'background:#E9BE2B'); + } else { + $api.css($api.dom('#confirm'), 'background:#d9d9d9'); + } + + } else { + $api.css($api.dom('#confirm'), 'background:#d9d9d9'); + } + }) + $api.addEvt($api.dom("#new-pwd"), "keyup", function() { + var newPwd = $api.trim($api.val($api.dom("#new-pwd"))); + var confirmPwd = $api.trim($api.val($api.dom("#confirm-pwd"))); + if (confirmPwd != '' && newPwd != '') { + if (newPwd != confirmPwd) { + $api.text($api.dom('#confirm-pwd-tip'), '两次密码不一致') + } else { + $api.text($api.dom('#confirm-pwd-tip'), '') + } + } else { + $api.text($api.dom('#confirm-pwd-tip'), '') + } + }); + //如果新密码和原密码相同给出提示 + $api.addEvt($api.dom("#new-pwd"), "keyup", function() { + var newPwd = $api.trim($api.val($api.dom("#new-pwd"))); + var originPwd = $api.trim($api.val($api.dom("#origin-pwd"))); + if (newPwd != '' && originPwd != '') { + if (newPwd == originPwd) { + $api.text($api.dom('#new-pwd-tip'), '不能跟原密码相同') + } else { + $api.text($api.dom('#new-pwd-tip'), '') + } + } else { + $api.text($api.dom('#new-pwd-tip'), '') + + } + + }); + + $api.addEvt($api.dom('#confirm'), 'touchend', function() { + var originPwd = $api.trim($api.val($api.dom("#origin-pwd"))); + var newPwd = $api.trim($api.val($api.dom("#new-pwd"))); + var confirmPwd = $api.trim($api.val($api.dom("#confirm-pwd"))); + if (originPwd != '' && newPwd != '' && confirmPwd != '') { + if (newPwd == confirmPwd && originPwd != newPwd && confirmPwd != originPwd) { + $api.text($api.dom('#origin-pwd-tip'), ''); + $api.text($api.dom('#new-pwd-tip'), ''); + $api.text($api.dom('#confirm-pwd-tip'), ''); + ctrl.checkIn(originPwd, newPwd); + } + + } else { + if (!originPwd) { + $api.text($api.dom('#origin-pwd-tip'), '请填写原密码'); + return; + } else { + $api.text($api.dom('#origin-pwd-tip'), ''); + } + + if (!newPwd) { + $api.text($api.dom('#new-pwd-tip'), '请填写新密码'); + return; + } else { + $api.text($api.dom('#new-pwd-tip'), ''); + } + if (!confirmPwd) { + $api.text($api.dom('#confirm-pwd-tip'), '请确认新密码'); + } else { + $api.text($api.dom('#confirm-pwd-tip'), ''); + } + if (newPwd && originPwd && newPwd == originPwd) { + $api.text($api.dom('#new-pwd-tip'), '不能跟原密码相同'); + } else { + $api.text($api.dom('#new-pwd-tip'), ''); + } + + } + + }); + + } + + ctrl.checkIn = function(password, newPassword) { + var url = '/admin/rest/user/edit/password'; + var username = $api.getStorage('username'); + var data = { + "userName": username, + "oldPassword": password, + "newPassword": newPassword + } + $api.post(url, data, function(res, err) { + if (err) { + ctrl.toast("网络请求失败"); + } else { + if (!res.code || res.code != 200) { + $api.text($api.dom('#origin-pwd-tip'), '原密码错误'); + } else { + $api.text($api.dom('#origin-pwd-tip'), ''); + api.alert({ + title: '', + msg: '修改密码成功请重新登陆', + }, function(ret, err) { + api.openWin({ + name: '跳转到登陆页', + url: '../../html/user/login.html' + }); + window.setTimeout(function() { + api.closeWin(); + }, 500) + }); + + } + + } + + }); + } + + ctrl.init(); +} diff --git a/app-saas-src/script/zepto.min.js b/app-saas-src/script/zepto.min.js new file mode 100644 index 0000000..4821a1c --- /dev/null +++ b/app-saas-src/script/zepto.min.js @@ -0,0 +1,2 @@ +/* Zepto v1.2.0 - zepto event ajax form ie - zeptojs.com/license */ +!function(t,e){"function"==typeof define&&define.amd?define(function(){return e(t)}):e(t)}(this,function(t){var e=function(){function $(t){return null==t?String(t):S[C.call(t)]||"object"}function F(t){return"function"==$(t)}function k(t){return null!=t&&t==t.window}function M(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function R(t){return"object"==$(t)}function Z(t){return R(t)&&!k(t)&&Object.getPrototypeOf(t)==Object.prototype}function z(t){var e=!!t&&"length"in t&&t.length,n=r.type(t);return"function"!=n&&!k(t)&&("array"==n||0===e||"number"==typeof e&&e>0&&e-1 in t)}function q(t){return a.call(t,function(t){return null!=t})}function H(t){return t.length>0?r.fn.concat.apply([],t):t}function I(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function V(t){return t in l?l[t]:l[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function _(t,e){return"number"!=typeof e||h[I(t)]?e:e+"px"}function B(t){var e,n;return c[t]||(e=f.createElement(t),f.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),c[t]=n),c[t]}function U(t){return"children"in t?u.call(t.children):r.map(t.childNodes,function(t){return 1==t.nodeType?t:void 0})}function X(t,e){var n,r=t?t.length:0;for(n=0;r>n;n++)this[n]=t[n];this.length=r,this.selector=e||""}function J(t,r,i){for(n in r)i&&(Z(r[n])||L(r[n]))?(Z(r[n])&&!Z(t[n])&&(t[n]={}),L(r[n])&&!L(t[n])&&(t[n]=[]),J(t[n],r[n],i)):r[n]!==e&&(t[n]=r[n])}function W(t,e){return null==e?r(t):r(t).filter(e)}function Y(t,e,n,r){return F(e)?e.call(t,n,r):e}function G(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function K(t,n){var r=t.className||"",i=r&&r.baseVal!==e;return n===e?i?r.baseVal:r:void(i?r.baseVal=n:t.className=n)}function Q(t){try{return t?"true"==t||("false"==t?!1:"null"==t?null:+t+""==t?+t:/^[\[\{]/.test(t)?r.parseJSON(t):t):t}catch(e){return t}}function tt(t,e){e(t);for(var n=0,r=t.childNodes.length;r>n;n++)tt(t.childNodes[n],e)}var e,n,r,i,O,P,o=[],s=o.concat,a=o.filter,u=o.slice,f=t.document,c={},l={},h={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},p=/^\s*<(\w+|!)[^>]*>/,d=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,m=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,g=/^(?:body|html)$/i,v=/([A-Z])/g,y=["val","css","html","text","data","width","height","offset"],x=["after","prepend","before","append"],b=f.createElement("table"),E=f.createElement("tr"),j={tr:f.createElement("tbody"),tbody:b,thead:b,tfoot:b,td:E,th:E,"*":f.createElement("div")},w=/complete|loaded|interactive/,T=/^[\w-]*$/,S={},C=S.toString,N={},A=f.createElement("div"),D={tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},L=Array.isArray||function(t){return t instanceof Array};return N.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var r,i=t.parentNode,o=!i;return o&&(i=A).appendChild(t),r=~N.qsa(i,e).indexOf(t),o&&A.removeChild(t),r},O=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():""})},P=function(t){return a.call(t,function(e,n){return t.indexOf(e)==n})},N.fragment=function(t,n,i){var o,s,a;return d.test(t)&&(o=r(f.createElement(RegExp.$1))),o||(t.replace&&(t=t.replace(m,"<$1>")),n===e&&(n=p.test(t)&&RegExp.$1),n in j||(n="*"),a=j[n],a.innerHTML=""+t,o=r.each(u.call(a.childNodes),function(){a.removeChild(this)})),Z(i)&&(s=r(o),r.each(i,function(t,e){y.indexOf(t)>-1?s[t](e):s.attr(t,e)})),o},N.Z=function(t,e){return new X(t,e)},N.isZ=function(t){return t instanceof N.Z},N.init=function(t,n){var i;if(!t)return N.Z();if("string"==typeof t)if(t=t.trim(),"<"==t[0]&&p.test(t))i=N.fragment(t,RegExp.$1,n),t=null;else{if(n!==e)return r(n).find(t);i=N.qsa(f,t)}else{if(F(t))return r(f).ready(t);if(N.isZ(t))return t;if(L(t))i=q(t);else if(R(t))i=[t],t=null;else if(p.test(t))i=N.fragment(t.trim(),RegExp.$1,n),t=null;else{if(n!==e)return r(n).find(t);i=N.qsa(f,t)}}return N.Z(i,t)},r=function(t,e){return N.init(t,e)},r.extend=function(t){var e,n=u.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){J(t,n,e)}),t},N.qsa=function(t,e){var n,r="#"==e[0],i=!r&&"."==e[0],o=r||i?e.slice(1):e,s=T.test(o);return t.getElementById&&s&&r?(n=t.getElementById(o))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:u.call(s&&!r&&t.getElementsByClassName?i?t.getElementsByClassName(o):t.getElementsByTagName(e):t.querySelectorAll(e))},r.contains=f.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},r.type=$,r.isFunction=F,r.isWindow=k,r.isArray=L,r.isPlainObject=Z,r.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},r.isNumeric=function(t){var e=Number(t),n=typeof t;return null!=t&&"boolean"!=n&&("string"!=n||t.length)&&!isNaN(e)&&isFinite(e)||!1},r.inArray=function(t,e,n){return o.indexOf.call(e,t,n)},r.camelCase=O,r.trim=function(t){return null==t?"":String.prototype.trim.call(t)},r.uuid=0,r.support={},r.expr={},r.noop=function(){},r.map=function(t,e){var n,i,o,r=[];if(z(t))for(i=0;i=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return o.every.call(this,function(e,n){return t.call(e,n,e)!==!1}),this},filter:function(t){return F(t)?this.not(this.not(t)):r(a.call(this,function(e){return N.matches(e,t)}))},add:function(t,e){return r(P(this.concat(r(t,e))))},is:function(t){return this.length>0&&N.matches(this[0],t)},not:function(t){var n=[];if(F(t)&&t.call!==e)this.each(function(e){t.call(this,e)||n.push(this)});else{var i="string"==typeof t?this.filter(t):z(t)&&F(t.item)?u.call(t):r(t);this.forEach(function(t){i.indexOf(t)<0&&n.push(t)})}return r(n)},has:function(t){return this.filter(function(){return R(t)?r.contains(this,t):r(this).find(t).size()})},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!R(t)?t:r(t)},last:function(){var t=this[this.length-1];return t&&!R(t)?t:r(t)},find:function(t){var e,n=this;return e=t?"object"==typeof t?r(t).filter(function(){var t=this;return o.some.call(n,function(e){return r.contains(e,t)})}):1==this.length?r(N.qsa(this[0],t)):this.map(function(){return N.qsa(this,t)}):r()},closest:function(t,e){var n=[],i="object"==typeof t&&r(t);return this.each(function(r,o){for(;o&&!(i?i.indexOf(o)>=0:N.matches(o,t));)o=o!==e&&!M(o)&&o.parentNode;o&&n.indexOf(o)<0&&n.push(o)}),r(n)},parents:function(t){for(var e=[],n=this;n.length>0;)n=r.map(n,function(t){return(t=t.parentNode)&&!M(t)&&e.indexOf(t)<0?(e.push(t),t):void 0});return W(e,t)},parent:function(t){return W(P(this.pluck("parentNode")),t)},children:function(t){return W(this.map(function(){return U(this)}),t)},contents:function(){return this.map(function(){return this.contentDocument||u.call(this.childNodes)})},siblings:function(t){return W(this.map(function(t,e){return a.call(U(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(t){return r.map(this,function(e){return e[t]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=B(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=F(t);if(this[0]&&!e)var n=r(t).get(0),i=n.parentNode||this.length>1;return this.each(function(o){r(this).wrapAll(e?t.call(this,o):i?n.cloneNode(!0):n)})},wrapAll:function(t){if(this[0]){r(this[0]).before(t=r(t));for(var e;(e=t.children()).length;)t=e.first();r(t).append(this)}return this},wrapInner:function(t){var e=F(t);return this.each(function(n){var i=r(this),o=i.contents(),s=e?t.call(this,n):t;o.length?o.wrapAll(s):i.append(s)})},unwrap:function(){return this.parent().each(function(){r(this).replaceWith(r(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(t){return this.each(function(){var n=r(this);(t===e?"none"==n.css("display"):t)?n.show():n.hide()})},prev:function(t){return r(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return r(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each(function(e){var n=this.innerHTML;r(this).empty().append(Y(this,t,e,n))}):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each(function(e){var n=Y(this,t,e,this.textContent);this.textContent=null==n?"":""+n}):0 in this?this.pluck("textContent").join(""):null},attr:function(t,r){var i;return"string"!=typeof t||1 in arguments?this.each(function(e){if(1===this.nodeType)if(R(t))for(n in t)G(this,n,t[n]);else G(this,t,Y(this,r,e,this.getAttribute(t)))}):0 in this&&1==this[0].nodeType&&null!=(i=this[0].getAttribute(t))?i:e},removeAttr:function(t){return this.each(function(){1===this.nodeType&&t.split(" ").forEach(function(t){G(this,t)},this)})},prop:function(t,e){return t=D[t]||t,1 in arguments?this.each(function(n){this[t]=Y(this,e,n,this[t])}):this[0]&&this[0][t]},removeProp:function(t){return t=D[t]||t,this.each(function(){delete this[t]})},data:function(t,n){var r="data-"+t.replace(v,"-$1").toLowerCase(),i=1 in arguments?this.attr(r,n):this.attr(r);return null!==i?Q(i):e},val:function(t){return 0 in arguments?(null==t&&(t=""),this.each(function(e){this.value=Y(this,t,e,this.value)})):this[0]&&(this[0].multiple?r(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value)},offset:function(e){if(e)return this.each(function(t){var n=r(this),i=Y(this,e,t,n.offset()),o=n.offsetParent().offset(),s={top:i.top-o.top,left:i.left-o.left};"static"==n.css("position")&&(s.position="relative"),n.css(s)});if(!this.length)return null;if(f.documentElement!==this[0]&&!r.contains(f.documentElement,this[0]))return{top:0,left:0};var n=this[0].getBoundingClientRect();return{left:n.left+t.pageXOffset,top:n.top+t.pageYOffset,width:Math.round(n.width),height:Math.round(n.height)}},css:function(t,e){if(arguments.length<2){var i=this[0];if("string"==typeof t){if(!i)return;return i.style[O(t)]||getComputedStyle(i,"").getPropertyValue(t)}if(L(t)){if(!i)return;var o={},s=getComputedStyle(i,"");return r.each(t,function(t,e){o[e]=i.style[O(e)]||s.getPropertyValue(e)}),o}}var a="";if("string"==$(t))e||0===e?a=I(t)+":"+_(t,e):this.each(function(){this.style.removeProperty(I(t))});else for(n in t)t[n]||0===t[n]?a+=I(n)+":"+_(n,t[n])+";":this.each(function(){this.style.removeProperty(I(n))});return this.each(function(){this.style.cssText+=";"+a})},index:function(t){return t?this.indexOf(r(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return t?o.some.call(this,function(t){return this.test(K(t))},V(t)):!1},addClass:function(t){return t?this.each(function(e){if("className"in this){i=[];var n=K(this),o=Y(this,t,e,n);o.split(/\s+/g).forEach(function(t){r(this).hasClass(t)||i.push(t)},this),i.length&&K(this,n+(n?" ":"")+i.join(" "))}}):this},removeClass:function(t){return this.each(function(n){if("className"in this){if(t===e)return K(this,"");i=K(this),Y(this,t,n,i).split(/\s+/g).forEach(function(t){i=i.replace(V(t)," ")}),K(this,i.trim())}})},toggleClass:function(t,n){return t?this.each(function(i){var o=r(this),s=Y(this,t,i,K(this));s.split(/\s+/g).forEach(function(t){(n===e?!o.hasClass(t):n)?o.addClass(t):o.removeClass(t)})}):this},scrollTop:function(t){if(this.length){var n="scrollTop"in this[0];return t===e?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var n="scrollLeft"in this[0];return t===e?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),n=this.offset(),i=g.test(e[0].nodeName)?{top:0,left:0}:e.offset();return n.top-=parseFloat(r(t).css("margin-top"))||0,n.left-=parseFloat(r(t).css("margin-left"))||0,i.top+=parseFloat(r(e[0]).css("border-top-width"))||0,i.left+=parseFloat(r(e[0]).css("border-left-width"))||0,{top:n.top-i.top,left:n.left-i.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||f.body;t&&!g.test(t.nodeName)&&"static"==r(t).css("position");)t=t.offsetParent;return t})}},r.fn.detach=r.fn.remove,["width","height"].forEach(function(t){var n=t.replace(/./,function(t){return t[0].toUpperCase()});r.fn[t]=function(i){var o,s=this[0];return i===e?k(s)?s["inner"+n]:M(s)?s.documentElement["scroll"+n]:(o=this.offset())&&o[t]:this.each(function(e){s=r(this),s.css(t,Y(this,i,e,s[t]()))})}}),x.forEach(function(n,i){var o=i%2;r.fn[n]=function(){var n,a,s=r.map(arguments,function(t){var i=[];return n=$(t),"array"==n?(t.forEach(function(t){return t.nodeType!==e?i.push(t):r.zepto.isZ(t)?i=i.concat(t.get()):void(i=i.concat(N.fragment(t)))}),i):"object"==n||null==t?t:N.fragment(t)}),u=this.length>1;return s.length<1?this:this.each(function(e,n){a=o?n:n.parentNode,n=0==i?n.nextSibling:1==i?n.firstChild:2==i?n:null;var c=r.contains(f.documentElement,a);s.forEach(function(e){if(u)e=e.cloneNode(!0);else if(!a)return r(e).remove();a.insertBefore(e,n),c&&tt(e,function(e){if(!(null==e.nodeName||"SCRIPT"!==e.nodeName.toUpperCase()||e.type&&"text/javascript"!==e.type||e.src)){var n=e.ownerDocument?e.ownerDocument.defaultView:t;n.eval.call(n,e.innerHTML)}})})})},r.fn[o?n+"To":"insert"+(i?"Before":"After")]=function(t){return r(t)[n](this),this}}),N.Z.prototype=X.prototype=r.fn,N.uniq=P,N.deserializeValue=Q,r.zepto=N,r}();return t.Zepto=e,void 0===t.$&&(t.$=e),function(e){function h(t){return t._zid||(t._zid=n++)}function p(t,e,n,r){if(e=d(e),e.ns)var i=m(e.ns);return(a[h(t)]||[]).filter(function(t){return t&&(!e.e||t.e==e.e)&&(!e.ns||i.test(t.ns))&&(!n||h(t.fn)===h(n))&&(!r||t.sel==r)})}function d(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function m(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function g(t,e){return t.del&&!f&&t.e in c||!!e}function v(t){return l[t]||f&&c[t]||t}function y(t,n,i,o,s,u,f){var c=h(t),p=a[c]||(a[c]=[]);n.split(/\s/).forEach(function(n){if("ready"==n)return e(document).ready(i);var a=d(n);a.fn=i,a.sel=s,a.e in l&&(i=function(t){var n=t.relatedTarget;return!n||n!==this&&!e.contains(this,n)?a.fn.apply(this,arguments):void 0}),a.del=u;var c=u||i;a.proxy=function(e){if(e=T(e),!e.isImmediatePropagationStopped()){e.data=o;var n=c.apply(t,e._args==r?[e]:[e].concat(e._args));return n===!1&&(e.preventDefault(),e.stopPropagation()),n}},a.i=p.length,p.push(a),"addEventListener"in t&&t.addEventListener(v(a.e),a.proxy,g(a,f))})}function x(t,e,n,r,i){var o=h(t);(e||"").split(/\s/).forEach(function(e){p(t,e,n,r).forEach(function(e){delete a[o][e.i],"removeEventListener"in t&&t.removeEventListener(v(e.e),e.proxy,g(e,i))})})}function T(t,n){return(n||!t.isDefaultPrevented)&&(n||(n=t),e.each(w,function(e,r){var i=n[e];t[e]=function(){return this[r]=b,i&&i.apply(n,arguments)},t[r]=E}),t.timeStamp||(t.timeStamp=Date.now()),(n.defaultPrevented!==r?n.defaultPrevented:"returnValue"in n?n.returnValue===!1:n.getPreventDefault&&n.getPreventDefault())&&(t.isDefaultPrevented=b)),t}function S(t){var e,n={originalEvent:t};for(e in t)j.test(e)||t[e]===r||(n[e]=t[e]);return T(n,t)}var r,n=1,i=Array.prototype.slice,o=e.isFunction,s=function(t){return"string"==typeof t},a={},u={},f="onfocusin"in t,c={focus:"focusin",blur:"focusout"},l={mouseenter:"mouseover",mouseleave:"mouseout"};u.click=u.mousedown=u.mouseup=u.mousemove="MouseEvents",e.event={add:y,remove:x},e.proxy=function(t,n){var r=2 in arguments&&i.call(arguments,2);if(o(t)){var a=function(){return t.apply(n,r?r.concat(i.call(arguments)):arguments)};return a._zid=h(t),a}if(s(n))return r?(r.unshift(t[n],t),e.proxy.apply(null,r)):e.proxy(t[n],t);throw new TypeError("expected function")},e.fn.bind=function(t,e,n){return this.on(t,e,n)},e.fn.unbind=function(t,e){return this.off(t,e)},e.fn.one=function(t,e,n,r){return this.on(t,e,n,r,1)};var b=function(){return!0},E=function(){return!1},j=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,w={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};e.fn.delegate=function(t,e,n){return this.on(e,t,n)},e.fn.undelegate=function(t,e,n){return this.off(e,t,n)},e.fn.live=function(t,n){return e(document.body).delegate(this.selector,t,n),this},e.fn.die=function(t,n){return e(document.body).undelegate(this.selector,t,n),this},e.fn.on=function(t,n,a,u,f){var c,l,h=this;return t&&!s(t)?(e.each(t,function(t,e){h.on(t,n,a,e,f)}),h):(s(n)||o(u)||u===!1||(u=a,a=n,n=r),(u===r||a===!1)&&(u=a,a=r),u===!1&&(u=E),h.each(function(r,o){f&&(c=function(t){return x(o,t.type,u),u.apply(this,arguments)}),n&&(l=function(t){var r,s=e(t.target).closest(n,o).get(0);return s&&s!==o?(r=e.extend(S(t),{currentTarget:s,liveFired:o}),(c||u).apply(s,[r].concat(i.call(arguments,1)))):void 0}),y(o,t,u,a,n,l||c)}))},e.fn.off=function(t,n,i){var a=this;return t&&!s(t)?(e.each(t,function(t,e){a.off(t,n,e)}),a):(s(n)||o(i)||i===!1||(i=n,n=r),i===!1&&(i=E),a.each(function(){x(this,t,i,n)}))},e.fn.trigger=function(t,n){return t=s(t)||e.isPlainObject(t)?e.Event(t):T(t),t._args=n,this.each(function(){t.type in c&&"function"==typeof this[t.type]?this[t.type]():"dispatchEvent"in this?this.dispatchEvent(t):e(this).triggerHandler(t,n)})},e.fn.triggerHandler=function(t,n){var r,i;return this.each(function(o,a){r=S(s(t)?e.Event(t):t),r._args=n,r.target=a,e.each(p(a,t.type||t),function(t,e){return i=e.proxy(r),r.isImmediatePropagationStopped()?!1:void 0})}),i},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(t){e.fn[t]=function(e){return 0 in arguments?this.bind(t,e):this.trigger(t)}}),e.Event=function(t,e){s(t)||(e=t,t=e.type);var n=document.createEvent(u[t]||"Events"),r=!0;if(e)for(var i in e)"bubbles"==i?r=!!e[i]:n[i]=e[i];return n.initEvent(t,r,!0),T(n)}}(e),function(e){function p(t,n,r){var i=e.Event(n);return e(t).trigger(i,r),!i.isDefaultPrevented()}function d(t,e,n,i){return t.global?p(e||r,n,i):void 0}function m(t){t.global&&0===e.active++&&d(t,null,"ajaxStart")}function g(t){t.global&&!--e.active&&d(t,null,"ajaxStop")}function v(t,e){var n=e.context;return e.beforeSend.call(n,t,e)===!1||d(e,n,"ajaxBeforeSend",[t,e])===!1?!1:void d(e,n,"ajaxSend",[t,e])}function y(t,e,n,r){var i=n.context,o="success";n.success.call(i,t,o,e),r&&r.resolveWith(i,[t,o,e]),d(n,i,"ajaxSuccess",[e,n,t]),b(o,e,n)}function x(t,e,n,r,i){var o=r.context;r.error.call(o,n,e,t),i&&i.rejectWith(o,[n,e,t]),d(r,o,"ajaxError",[n,r,t||e]),b(e,n,r)}function b(t,e,n){var r=n.context;n.complete.call(r,e,t),d(n,r,"ajaxComplete",[e,n]),g(n)}function E(t,e,n){if(n.dataFilter==j)return t;var r=n.context;return n.dataFilter.call(r,t,e)}function j(){}function w(t){return t&&(t=t.split(";",2)[0]),t&&(t==c?"html":t==f?"json":a.test(t)?"script":u.test(t)&&"xml")||"text"}function T(t,e){return""==e?t:(t+"&"+e).replace(/[&?]{1,2}/,"?")}function S(t){t.processData&&t.data&&"string"!=e.type(t.data)&&(t.data=e.param(t.data,t.traditional)),!t.data||t.type&&"GET"!=t.type.toUpperCase()&&"jsonp"!=t.dataType||(t.url=T(t.url,t.data),t.data=void 0)}function C(t,n,r,i){return e.isFunction(n)&&(i=r,r=n,n=void 0),e.isFunction(r)||(i=r,r=void 0),{url:t,data:n,success:r,dataType:i}}function O(t,n,r,i){var o,s=e.isArray(n),a=e.isPlainObject(n);e.each(n,function(n,u){o=e.type(u),i&&(n=r?i:i+"["+(a||"object"==o||"array"==o?n:"")+"]"),!i&&s?t.add(u.name,u.value):"array"==o||!r&&"object"==o?O(t,u,r,n):t.add(n,u)})}var i,o,n=+new Date,r=t.document,s=/)<[^<]*)*<\/script>/gi,a=/^(?:text|application)\/javascript/i,u=/^(?:text|application)\/xml/i,f="application/json",c="text/html",l=/^\s*$/,h=r.createElement("a");h.href=t.location.href,e.active=0,e.ajaxJSONP=function(i,o){if(!("type"in i))return e.ajax(i);var c,p,s=i.jsonpCallback,a=(e.isFunction(s)?s():s)||"Zepto"+n++,u=r.createElement("script"),f=t[a],l=function(t){e(u).triggerHandler("error",t||"abort")},h={abort:l};return o&&o.promise(h),e(u).on("load error",function(n,r){clearTimeout(p),e(u).off().remove(),"error"!=n.type&&c?y(c[0],h,i,o):x(null,r||"error",h,i,o),t[a]=f,c&&e.isFunction(f)&&f(c[0]),f=c=void 0}),v(h,i)===!1?(l("abort"),h):(t[a]=function(){c=arguments},u.src=i.url.replace(/\?(.+)=\?/,"?$1="+a),r.head.appendChild(u),i.timeout>0&&(p=setTimeout(function(){l("timeout")},i.timeout)),h)},e.ajaxSettings={type:"GET",beforeSend:j,success:j,error:j,complete:j,context:null,global:!0,xhr:function(){return new t.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript, application/x-javascript",json:f,xml:"application/xml, text/xml",html:c,text:"text/plain"},crossDomain:!1,timeout:0,processData:!0,cache:!0,dataFilter:j},e.ajax=function(n){var u,f,s=e.extend({},n||{}),a=e.Deferred&&e.Deferred();for(i in e.ajaxSettings)void 0===s[i]&&(s[i]=e.ajaxSettings[i]);m(s),s.crossDomain||(u=r.createElement("a"),u.href=s.url,u.href=u.href,s.crossDomain=h.protocol+"//"+h.host!=u.protocol+"//"+u.host),s.url||(s.url=t.location.toString()),(f=s.url.indexOf("#"))>-1&&(s.url=s.url.slice(0,f)),S(s);var c=s.dataType,p=/\?.+=\?/.test(s.url);if(p&&(c="jsonp"),s.cache!==!1&&(n&&n.cache===!0||"script"!=c&&"jsonp"!=c)||(s.url=T(s.url,"_="+Date.now())),"jsonp"==c)return p||(s.url=T(s.url,s.jsonp?s.jsonp+"=?":s.jsonp===!1?"":"callback=?")),e.ajaxJSONP(s,a);var P,d=s.accepts[c],g={},b=function(t,e){g[t.toLowerCase()]=[t,e]},C=/^([\w-]+:)\/\//.test(s.url)?RegExp.$1:t.location.protocol,N=s.xhr(),O=N.setRequestHeader;if(a&&a.promise(N),s.crossDomain||b("X-Requested-With","XMLHttpRequest"),b("Accept",d||"*/*"),(d=s.mimeType||d)&&(d.indexOf(",")>-1&&(d=d.split(",",2)[0]),N.overrideMimeType&&N.overrideMimeType(d)),(s.contentType||s.contentType!==!1&&s.data&&"GET"!=s.type.toUpperCase())&&b("Content-Type",s.contentType||"application/x-www-form-urlencoded"),s.headers)for(o in s.headers)b(o,s.headers[o]);if(N.setRequestHeader=b,N.onreadystatechange=function(){if(4==N.readyState){N.onreadystatechange=j,clearTimeout(P);var t,n=!1;if(N.status>=200&&N.status<300||304==N.status||0==N.status&&"file:"==C){if(c=c||w(s.mimeType||N.getResponseHeader("content-type")),"arraybuffer"==N.responseType||"blob"==N.responseType)t=N.response;else{t=N.responseText;try{t=E(t,c,s),"script"==c?(1,eval)(t):"xml"==c?t=N.responseXML:"json"==c&&(t=l.test(t)?null:e.parseJSON(t))}catch(r){n=r}if(n)return x(n,"parsererror",N,s,a)}y(t,N,s,a)}else x(N.statusText||null,N.status?"error":"abort",N,s,a)}},v(N,s)===!1)return N.abort(),x(null,"abort",N,s,a),N;var A="async"in s?s.async:!0;if(N.open(s.type,s.url,A,s.username,s.password),s.xhrFields)for(o in s.xhrFields)N[o]=s.xhrFields[o];for(o in g)O.apply(N,g[o]);return s.timeout>0&&(P=setTimeout(function(){N.onreadystatechange=j,N.abort(),x(null,"timeout",N,s,a)},s.timeout)),N.send(s.data?s.data:null),N},e.get=function(){return e.ajax(C.apply(null,arguments))},e.post=function(){var t=C.apply(null,arguments);return t.type="POST",e.ajax(t)},e.getJSON=function(){var t=C.apply(null,arguments);return t.dataType="json",e.ajax(t)},e.fn.load=function(t,n,r){if(!this.length)return this;var a,i=this,o=t.split(/\s/),u=C(t,n,r),f=u.success;return o.length>1&&(u.url=o[0],a=o[1]),u.success=function(t){i.html(a?e("
    ").html(t.replace(s,"")).find(a):t),f&&f.apply(i,arguments)},e.ajax(u),this};var N=encodeURIComponent;e.param=function(t,n){var r=[];return r.add=function(t,n){e.isFunction(n)&&(n=n()),null==n&&(n=""),this.push(N(t)+"="+N(n))},O(r,t,n),r.join("&").replace(/%20/g,"+")}}(e),function(t){t.fn.serializeArray=function(){var e,n,r=[],i=function(t){return t.forEach?t.forEach(i):void r.push({name:e,value:t})};return this[0]&&t.each(this[0].elements,function(r,o){n=o.type,e=o.name,e&&"fieldset"!=o.nodeName.toLowerCase()&&!o.disabled&&"submit"!=n&&"reset"!=n&&"button"!=n&&"file"!=n&&("radio"!=n&&"checkbox"!=n||o.checked)&&i(t(o).val())}),r},t.fn.serialize=function(){var t=[];return this.serializeArray().forEach(function(e){t.push(encodeURIComponent(e.name)+"="+encodeURIComponent(e.value))}),t.join("&")},t.fn.submit=function(e){if(0 in arguments)this.bind("submit",e);else if(this.length){var n=t.Event("submit");this.eq(0).trigger(n),n.isDefaultPrevented()||this.get(0).submit()}return this}}(e),function(){try{getComputedStyle(void 0)}catch(e){var n=getComputedStyle;t.getComputedStyle=function(t,e){try{return n(t,e)}catch(r){return null}}}}(),e}); \ No newline at end of file