commit 05d4a24009faf7880e5f31f3e5b213c0367ad80b Author: kangz Date: Thu Dec 26 17:00:06 2024 +0800 初始化 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+tpfBLQAAML5JREFUeNrsXQe4FPX1vXQQpQiIYgQREQ0YUVDRWBArgl0jajTEGgsmxho1kahEjZrYY40YS4z1byEBu0ajEsWCIsbe6FJEitT/PfmdzVuG2fbe7ns7u+d83/32vak7sztnb7+NVq5caYIg1C8aNWpUUdcz/ZneZ/nLeS5NXS7tPOjdi/K6DyIgQRAB1ZF89vSXsZHFuzgJPZdr36b6KgiCkAfJrEUNp4/Ly9RylnP1yTG7DHMRAQmCUBTc7bIP/x7i0tzlAv6/Xcz2M2WCCYJMsGJoP1v5y+uRxXNdA2rv6zr53zNcJriMgHbky/MmFWlAgiDkwu4xy9o4+azhr+u6LHbZ24lneqEHbqx7KwhCDvTm65Muh7ns79LPCWehv7Z2ea825CMNSBCEfNDV5S4nmSNj1q0gCdUK0oAEQciFti43ZFj3ncsmbo71FAEJglAKwGO+PMO6VLTrCJlggiCUAiCfHV3Gu6YDzvihywCXHi6duf5EXzfLX190U+3NvJlNYXhBaACVopZh+BnjtmkCk4cP/lyXyevsOX5xKd+rE8sT/rKOBSf0T1065NjlI5c/wWxzMlokAhKEhBOQE09LfznHQtZxx7RVS12edrnR5TEnoxVFJh+80fEu/Wux+1fQjJyEHhMBCUJCCcjJpy21j61zbIpkwJOchF4tEvkgz+cel/3qeCgUpl4Ql6AoJ7QglD/uzIN8AGQsv+SEdb5LnVKtnXxQavF4EcgH+LXLVXErRECCUMZwIkHd1T4F7NKEGsdffd/mdTj1dS67FPFSTnVSO04EJAjJwoha7neoywO1ISEnir385bgSXMsf/dgbiIAEIRnaDzKMd63DIaA53VIg+YATrizRJeF6fiMCEoRkAD6duubqHeVEdkYB26Pw9PslvKafOsmtk/pHiYiCUL7onmP9Jy4Pu3ztsrHLYAvV6VFc6iT0wjp7jh+fxzkPK+D9IcfnJZd3XT5zmWMhaxotOmBqoU9QXwt+qRTw94EW0gZEQIJQxlg7y7qbXUY4qSxJM9ma+cuPXS6xkKiY/tDf6et/4Nt/l+OcuRzPCKU/StPumVyJhq7t4H2gTOOXLutz8SARkCAkF69YyPdZpT7L/0dS4u1ONCCI223V6Bmyp2GKjcpCFmi72jXLeRGW/6WTzgcpcnE510KZBrS1NS24dfC+ZrtMdnnI5WoLmdFo6YrtU+095AMShDLGtxmWj4qST4SIYJIhf+eayKpfOTl1znK+TCUWC1wOdeIBoX0I0nGZ6n9PcznfZWcSFzS2djxOTxIgiHBxGhENtVBdLwIShDLHlJhlMKGeyrWjk9BKl59HSAhRqDOz7BaXvIh2q9s7+dznpHOU/z2fWlS6r2mZy+cuk0hKUcDSQmgfpPUDS6ucFwEJQvniPzHLPiuw+PQ0l0fS/j+BpR35aFzfuGDkzrtOPs/66x22avMxmHwIq7dwgurm0ttlPWpAcSQJXxT8UyeIgASh/PFxDCnMKOQALE4dTg0FgJ/mx3HbOnmgt8+ctEUnubxnobp9YGRz+Hi6YAChyyoFsBsMmtTK5RcLFq34RYa3dZgT2nkiIEEoY5A8no8sXlmL46Btx+EW2qcaCSkTXuTr004sGMWD3j7dIttAA+vp62elL2xujTq5wFH9pcs7mw6ZfP5LExa8nOE8ZzkJtRMBCUJ5Y1zk/3a1JDPk69zMf/u7GbZBhk0f5OvlThDwH20as81xTj6zowt/d9ml/7z6+uuGpC3qePiZn2373ZKVy2KO0cblWBGQIJQ3Ho5oPV3rcCz4a+bx770zbHO/y4cub1j8xNOZTj53RRe65tPlq6+m9Fq0cOEqy1estMZjX5w/JcO5DhIBCUJ5m2EwZ9Idum1de9molseCj+cy/vvDuG04ageZyqgHi+OHxzMcfq3rr7nGzjnzrNVWPPPq/GkZ9tlcBCQI5Y/oRIpt6nAsJAQilL5lpg2chCZaCJtn0pDigOTEL+JWLFmycmyGfVqLgASh/IHM5vfT/h9SB40KDunRFhIFsyFTGcg7sSRjK+HgRnRtQWTVQ1ec1WVMhmPNFwEJQvmbYXi409tYDGXdV20BAmrhx2ifZZtM3NAy0w5OQi9YKPlA+P0CC8WxB7du1XiLDLu8KQIShGQApk+q1zMiYUPrQGjoHY0co7ZZNstUtLpttmM7CU1xudrlQpexLnCg759h84dFQIKQDC0ID/LxVjMg8Bd1POSYHOvfzrC8kHYdqakaO8WsQjTudlXDC0IDw02hLhacvnAMo5QBzyUIB05d+H7+7fKak9Dbvu1ICz2fd/K/+/my12t52n+BH7Ks/z+Lb4S/u5NKy86D3s23HOQYC9nXUZzrx5grAhKEhiMekA2mRRxi8YWg6fjat4fWgnoshOV3IxHtXcvTj3Py+m8vn+83advCQpHokknL573F9UhaPCvGTIPv6aF8zutEtT7fY5w5iWic5oIJQkNg5hPbfs9CX5/1a7E7arN68O89nEierM17cOJBGw0MO0SDMDSvByENdRJ6hgRyFAkvCpiBR7gG87ccBHSQvzwQWQzyHOr7ficCEoSGI6B7LUyuiMMsahlv8G/4ahGx2oxm2nbURAC0Ze3jJLSwFgTUiSSYntgYJSEQ1CUxu6+gljTKyeTLNNJBUzMkMt7ly5f7/+gJdALNMIx4vtyXL01tLwIShIYhIBBGq5hVV7j8OlvLDTfF8JDDZ3SshSbyN/v2P8th7sHdcrDL3+jQTpFQLwsFqB0jJLS/k9ATJBX077neMkfN4LBGucXaJEiQ430upzrZZPMziYAEoYEIKO7Be8bJoaAxPE4smGCB8op7fd+7s2yDdWgQf6Jvd2NEE8Lcd8yXb5O2GFrKMCehh0hCaEAGn9Axke2yAY5uOJufFwEJQnkREDKKe0cWX+Tk8JvaHM9JBubcBN//gxjNB72A1kvTbvr7dpMiJLQtTaQ2ETPrJCehm9JMLGhtcIDvxPeP4yIv6RuaiyhkRdRubLppJgIShPIiILRLjc5Lf8iJ4aBin8tJ6BR/uTZtEZzYW/u55kRICL6lsTEazu9cznciKjpZKBFREBoGMIOidVX7OVn0quuBnUiauTSOnOvNtP8RQbs3OrbZCQbNwwZRk0kHJlnc5cdsKQIShAoA53MdEnnY0TP5gSw9m/MhHxwDTcUGp50LDcGOtNDJMIU9XO7wczWOkBASG7enKZUOdFR8zo+/rghIECqDhCZT4/g8bXEfl2edGGr7oCM0jtD3mZFzQds6PbLtMJfr/VyNIiT0AUnohcj28BMVdW68CEgQGpaE0HsHoevH0hbj/4lODIcUqP2gydjR/Hdn/3/vyLnQV+jWyG4I39/l52oSISE0L0OIP9qLaGoxr19OaEFoADRqtHrlhZMAhgn+3kJLixSQozPSQoh+ZQ4CakaCSA0YRB3ZFk4m36WdA1GxMTTB0oFlw/wc38YcF3lAiIRhJM9P/XijRUCCUGEERIKAJjKUmgk0kJRmghlhd1BTepc9guJI6GILI5BT+L0TxtmRc6xhobVqdA486sD282N/FnPcjS3kEh3qx/tUBCQIFUhAEaJoQ5IY6AICSM1fx+hlDArExAwk+e3upDGGRIGM5k+tZoAgHvC9UlnNERJCp8Vo4iNC88P9eI/GkFATP85ymWCCUAUElA+cSFBQiqhXFyeNJSQKhM1HRUhlgJPHfyL7IgyP/KDjYw6N0P3ZfsxvSnkf5IQWhISC0aurLfh8DkhbhXqy9BwjFLL+3Ynpe+n7g7BcUCiKRMVoB0SYgO/4OfYtKRFLAxKEZGpATg5oTp8ak4NEw61SjmonG/T3QQvX9ORBZEDv4prQFzHHQvgf877i+jfD3Dvej/2hNCBBEP4L1x3SncsoNP1f2N5JBhXqx0R2QQb0K05OW0WPxTwhjPtBwWnU7MLyBTLBBEEwajhdp01fGs2YvtI1mXZpJHSPv5wR2QbtX1/y/Y+NISGYZJdbGNkD31Cqx9AoXz61FNchAhKEZGLfO/76dfPIMvh4VkkcdBJC5vIvI9vBLLvFSej/XNaPIaIZLqdaGAON5vdXlMwUlQ9IEOofdfUBOXHc37Rpo4PHPNDzqxbNG0VJ5AwnkCsj26MZ2WirCc+ngMRDbHuVk9Xc+r4P0oAEIZnot2zZSrv+5hnzY9Zd4abYURFNCL2Z4ft5LbIt8oowRPAzJ6nLmHBYf0QsDUgQkqUBOUmgJev/HMV339p94vpdmm8es+lprgldFdkXmdUnkXQ6ZDgFKuKPpiNbGpAgCKsgvYm8nXLGFxsvXbpyWsx2f3RN6DaX1mma0HIXOJgREfuVS1zXQlTpT5QGJAjSgOI0IIw6fjh9Wc8eLWbcdM2GrRo3srVidkF7DfSCfjrmWFBC0BLkAL5C+/lJsUsuRECCUDkEdKKt3ibDem/Wasq1l3dt1bjxfzOf4/APl4udiP5VNvdBBCQIiSOgkRZ8OKuhy7rN5t187YZfr9m68UZZDoGqd1S2/93J6F0RkCCIgAohINR/nZppfbOmjey0UzpPGLx72838NK1yHG6Cy9BSJRrmgpzQgpA8ZO0ZvXTZSvv9VdO2+tFPPlo+4c2Fr7uOEVdGAc3jFpeBDUU+0oD0qys0zI/+irocwDUgTB3Nu13rGq0aL99/n3bv7Lpzm+Ubdm3erUmTRihcPdOJ540G/06KgERAQr0BOTjoyYPC0fl1ICBUwA8pcLfZFsYl38rJF2WBpvpOCEK9AeUQy+tCPsSaeWyDWe0gmldcnsTfTjwryu2GiIAEof6AVhcji3QskBh8N1+mySfUsCY52cxKwg0RAQlC/QD9nd+hGWR1dH0MrBi3gHxA1QP5gMoHeu4CFIYXBEEEJAiCCEgQBEEEJAiCCEgQBEEEJAgJA+q1LjWlumSFbo4glAZol9HLZZluRWYoD6iaPmzlAdUXNrVQBrGlhczk1aDnTgQkAhJKhbEWeiqfmWkDPXcywQShFECbDMxl/5FuRW7ICS0IxQPqvTAG5+e2+nx1QSaYTDChpAD5wPE8ONeGeu6kAQlCsfGqyym6DdKABGlAZQ09d9KABEEQAQmCIAISBEEQAQmCIAISBCEbMFpnDd0GEZAg1De+5/KUyyDdirpBYfhq+rAVhi8GUL70nAumi9Y650fPnTQgQagNRrm0cjldt6I4bC4IQn441OVYl61dvtPtEAEJQn0BFe63WBiv/LFuh0wwQagvYBb7oy4Xujyh21E8yAldTR925TihN3PZwWUbl01cultohQEN5cwSnXNPl3HFOpieOxGQCCh5QJuLG1zau7zo8orLuy6fuMx1meXybRIuRM+dCEgElDx0ddmI5JPoZu967kRAIqDqwmkuH1nw5YiAygRyQgvlhlYlOi7C5mfq9oqABCEOcCTDyXtZiY5/r8sAC87qbPi+PgoRkFBdON7lLZf3XM4t0TlmW3BQd8qyDZIM4V/aQB9J/UCJiEJDYm0LofP+Lnvz4S8lVmT5zp/ocomFcPsX+mikAQmVjT4ur7ksd9miHsino0s7CyH7KKB1/dZlVwuN5QVpQEIFoxsJ51ILPp/6CAmBXN5xWZK2rInL9Rbyiwa6TNJHIwISKh+fWXAIT67Hcw5xeSTt/9Yu97msx/cyVR+LCEioHkyu5/PBx9M88t1HXhAq3L/Vx9EwUCJiNX3YakhWNtBzFyAntCAIIiBBEERAglBsdGzAc7dw6a2PQAQkVC8edjmiAc471EKrjkv0EZQv5ISupg+7/p3Q0H6muKxjoV9PfQC1XFe67Gwh8vUXq588o4Kg504akFB6bGqhf3J9kA+IBwWn/3bZy+V5lzvLkXwEEZBQTz/0ULzq4TxHkXiQTHi/hYxn5Pes0EcgAhKqFxMtdDHsVuLz/N1lYwuJhSirgP/nG91+EZBQ3QAJ3OZyq62ahVxsoBf0/i4Xu+xmodRDEAEJgp1loezhgVrs29llmMufLczlygRE2X5noZXGRN3y5EC1YEKpsdBlDwvjc7Khn8uWNNd68+/1Lfh20CkxkyMbFe0n0+xSK42EQWH4avqwy7sW7GwLI4+/tNAZ8W2XCVahI5D13ImARECCCKiBIR+QIAgiIEEQRECCUK7ApIpeug0iIEGob+xgoYH9gboVIiBBqE9gZtg/XM4xVbZXHJQHJJQrWlrNxIrdXV7RLRGE1fETC8WPmG/1uctIK23ZQTWgh8sbLs+6rFuJF4gwvESpCHXF7y3MmUIZwECXES4zXZ4UCdVJ8/mK5laTSr1IkY8IqK6AaYB2D/tElvd0+drCpE2hdli/0i9Q5BNEqbG1x3gL5QLHxqw7zuUqC0Pv1BZCiCUgwURAdfBRfOjS1+WtmPVohj7NQpHkPQUcFzPSt7JQ//QMjyGIgIQKBDrmPWGhcTleTyBx5AO0f5iRY5vHXK7N83jbWKj6xrfyYxLPUpfTKtjPs161E5BkZdXmAV1ooV/w+y7XuExyGWWhl0zfPH0UH+fY5sM8fRkgsxctdPNDV7+N+HCCEK+kr6lSsJaF/kCfuJyp30ChGgEnMZzHB0eWt3e5z2WeS/8cx8BDlCsvBT6gh3JsgwZaCN+PyLD+dpcxFXDPe/F+oKfPUy67ygST9lOtZug5lrlrHnxid1gYJdMhyzEOshDpyqZBgjiuyLK+HU2tbNsczPMkFYe5POfyrcst9G8JIqCqJqCbXO7Osh5+IDTE+lOWbTpTi9o2w/pWFjoB7pPlGOdaSFxsmWWbgZbssTKjXU5yaSPKEQHJB5QfEIE6z2U4fRZxmE4T7PAM6/cjcTydQzu40WVxlm268FxJBe7hDaZUBCEDqpGA4DzONS/8cZdlFmqQMuFWPmBrxqw7kVrWwgz7YmJoH/pDsgHTPV8r4rW3tTAxAu8ds7R6FLAvMrs3oVl4Me/Rr/UICUJh6E/tZMMc271godQiE9awMA7ml5HlA3j8LbLsuytNuDVykMVcklwx0cylu4UEyt/k2HaIy5v0ieH9zuZ9QeTwaFN/Hplg8gHVCih0vDrHNjAdHsuxDUy1qREi+Qe1g2w4wXKH8S+hj6gha8owVHAXaozy44iAREBFwhCaWDtn2eY0ElU24KGckWaK7EJNoV8exPVilvXQLhCeH6qHUyIndOUBIfJr+ZopJwXE0inHceBcHWlhpAySBxFSv8vl9Rz7dbT4TOpGPNbNFqJHj5sgCBWJRiQMtNM4JWY9kgQX5XEcNHVDJvV73P57eewzmpIO5B097LLA5UcyTyTVINXcEREG6BkWSibgDxpE38xMrkc4vmUex4Epd6qFHkAwxb7M8/xL0/7e10J+0jw6sfMdL7wpneod6bBGasBk/bYIQv2iCQkERIBMZ4SYNypgf/hs3iX5HE3taFsrLAnwV5Z/MStC9ChNQDTqUfp7rsqT8HCtw6l14f2heRciVZ/x/3F5mI7SgCRyQhcJGOf7MTUKOI1fshCZwtVhVvg+eR4HDz+KVBfzGMdZ6bKQR/M9L6Izum+e+0HTQZtSlDZcaqvn8SD0jx5F/xIBSURApcc6LnNc7uXDmY7NLWQaL+UDn284uwed0ytLTEAIsf/Y8u/JhLwgJCWi/1C3LNttRI1qgAhIIgIqLU6nD6dZlm3gI5lGkiqkx/Bu1IRKAWgqrQo0MZ+iozsf8+oTmqEiIInC8CVELzpel2bZBloDSir2cLm8gGPjgf9hid73W5ZfhC2FC0mkQ9Oc5JnQjCQ1W65BodyRdAJCoeaGeWyHqNIwl5+7HJKwa9yRDu5jLDQty4VhNOv+qa+3IJQW8HMg87h3nttfZKG/TlKmLrSkiXlnnttjhtZUOqjlhJZoKkY9APk3aJuxk4WkwlzmCUw25Orsl4BrQ7EoUgs2ycOkQgIk6tAQIUNJyOIkE5AgJAXrk1BQtrBmHttvaSFKNKTMr6s7/UTH5UGqR9M3BLOrbdI/UGkG0oCSBjRzH0dzDO0xxvDvTMDM8b1oupWrpnA/NZ9UgSsiYUg16EBt5/sWomkoqEVGO8pKUEG/tBIISKgOVNJcMPRYHkWNAeYKEvwwsx2ha4Th0btnAQkHGcsTuf1lZXgtSK4cn2U9/FhIZEQ07VlqfxXTdVAEJAJKMhCCRrh6B5cfWIiSrW3xEb95XD+3DMkU19E6bdk3JFCQz7JK/lKKgERAlQiYLmulXfdK+oKmVvoDLQISRECCIAISImiqW5D3fUJUCk7ffvx7fWpViLyhzqwZt0MbDziNEcFCSHwGtaz/WEgBmMj/BUEakG5BLBBlwtgcRMowvaJT5F6tINHAJzOfphyc20tJRkggbEKTD36cFpH9l5GE4ESGA/keHkeQBiQCqlIgMfFnLttbTQN2aDEo7ESbj5cttFr91EIJSKFPCbKUUWm/nYVeQ9CmulpNDyHk8TxnoS/Qv6r5gxABiYCqBcgDQtkC+kKjOh2Z1OingxnxaBo2pR7eA1prHE8C3JSaEyJeaFR2voVGYyIgQaggHODyAbWYZdQ4ymECBVIFMK9rIs28ldS+BlYbAUnUD6gSsQNNqpXUMi6zhp27lQ1otvYXamV4v0iq7CsCkoiAkgeYV0/yQYbj+PQEvXcMPbyBmhq0IjisW4qAJKoFS47WgypxRKPQ1uIYS2biYWf6plD1j9A+asAmVyoBCdWBSh9MeKKFWeYIkyO69RNLbtbzdJIOrqEd/US76SssJBmVrAGNdLnAQkMv1IQtqqBrQ54SRvG0d9nfcs+wlwYkiIDqERgQ+FsL2ccgnyUVeI3wDcGh3oFmWcXkDomAREBJxggLk06RqYwRNZVc9oB59J/RxETT+ndFQIIIqOGABu7PWPCX3GxhmkRd0YlEhtqvLjR/ICizQPfBlhRkT8Ontpgyj5oXSizgNEbXRiQ2YpLpFxb6+RSjGRq0vbN47P5WASUdIiARUBLRnhrAcxbquDaiiVIIutCc2cZC0enmPO4KEsfnfNBnUuZT4ky8tdIEOT3rksQ2JHGtIAnBl4MSD5R6vFoLUupKLehzmmGHiYAEEVD941qXPakNjLYQKcrn+jH7C45c9IhGKcRcEsG/LZRlYAY7fEnFbHUKUkNL1d4kOhBeyleFvs6PuDxUgPkIMkRS5e8tRMaeEQEJQv0BxIHw+mCXgy20YM0GkBNmbWHOFr7tr/D/ftZwqQnQilAPdhPfP/w6qJTfK48fCmhlw2h2vp30HxYl6CkTOmm4zmrGKPcjqcRNh0BG9Pk0m6Bd/MbyG2xY3wAJYpLrAyTWCTQN47AmtxlAEw+a2iARkEQEVD8AqaCu63D+j2pyOH2HR7aDP2cyzZWTrHxrwKJAC4+7SarXxbxvXDea8Dfj/yCt+0RAEhFQ/WA3+k5apS27hH6b1EOJ/juISj1oIW8mqdcJrQ1lJakeQk3po7oibTuYoHMswVnuejBFQEnCxRZG8ER9PNCCriThTKVvJelOd2hDiHZdxf/RywjjhtZO26YTtaW+IiBJuUsl9ITGUMK3Isvm0jQZSwc1yOhkK7yLYbkBTnPUgj1hIdfpDAvRu9mRiBgIt5eFEL8glC0qoRi1Iwkmiqf4sA7m+hUV8pk9Z6HZPTQ/tJAdF7PNTN4XQRABlRioifouwzo4bw+xECH6u8sGCb9WJEo+Tt/WoS63ZthuMe+LIIiASowZlt2xDMfz1vSNTKLZ0iph14j3i5n3iOKh/gtO9QeybN+BJpogiIBKDPh7euTYBg8uso2RA3SOhRKIX1jN9ItyBco4UFz7voWcpQt4HdmKTptT05uir7cglN4kwaz0bwrYBwmKI6k5ISHxRgtFrOUSIcP7QPO0G3hds/h+2+W5PzpALrfkphsoOqQwfGJ8P8gQRiEnrqRfgfsjl+YoC05dOKg/50O/r4Xs4voEzrePhUTDz/l+UBM23Arv/4zQPPKibhMBSdQTunRA3dNgEg8atX9qYaRNbTWpg3m8nUlOaHn6MkluEs2euUV43zD7MG0VhahbWnCQb0HSeN5C6sD9FqrvCwWc02j1cZfLqS6n8D4ljoCE6kBSCehAPqQDqSngfzSc36SWD246oHH0pxkEZy+q1Deiv2wONZQvacIh/+bbDMTUjpoNkgTRjgN1WhhC2J4aG/xQKBx9lUSH6vu6to1Fw/2reC78fRHJ7SMRkCACKg7gw/kPTYxzuQzk8AoftFL0wwEp9SKBQL5HYunA19Qc+BRS8+JnpwlI6zMK3v/CEt2Xa1xG8bN9hvdmoCUoCVMEJJQz/mCh0Vg0lD6AvpN9q/S+/JkEnO4z6kHT7kfyAUnkhK47oH2g9cR+GdZfRDOpR5WRz7EkmgEx6y4nYTcXAUlEQHUDQuZvZFkPUwgTUD+kmVQN2JfkMyLD+nY0CY8UAUlEQLVHBzppD8rDF4IiTESt1q1w8tmT5PMHXnemDO8r6fAWAUlEQLUEQspTqeXkQ1aILCEkvVWFks9JNEd/ZyHzGUWp6BV0VMy23emEPkwEJBEB1Q6v0p+RL6AN/JXRpqMriHgQ2r+Nms/xLptZqPyHyYnIFxrTHx6zH7Kqx4uAJCKgwpFqsjWgwP3wQKL4FNXyGF+8XsLJZyc6lD+1UD6CpMmxvD8pIOw+Jmbf/7OETIjVg1k9kpRi1F34C/7vPLeHmdaHf6NdaT9qCMiTOdeSVw2/ocu9FspGkNuD5Ej0uD7OQhLmzLRtkYqA9rOtI8e43kKm9GAThDJBUggIs7vQdnV5Dm0HDxcyou+h2YWSBNSMvWOhJceZFqrg32fUqHUCiAf1Ye9ZyMbekddwI02xIy0+oXG5rZ5V/RR9RsP1tReEwjCOvo1M2I2mCB7O9P7I29Mx2zVtGaJFaG0xi4Ks4Z5l9qMwiBoPCANpB4dyOZzISDPYMscxHsywHNnYH8oEk8gHVBjg8/hpBlPrejqnM2kz3UhCA2Kc1IisvU3/EjSsk7l9Q5DONiTDT0k86Hy4BzW73S10dDzbcicUbkOCjcNT9AM1EQFJVA2fP+D/GcaHMB0ovMRAwvtz7A9yupX73xmzHj4i9I8+gL6it/mw4tiYtz6tyNeD+74ZTUsIpp92pnYygU5k+HK2oun1It9/PtX4d1houhY31hn+sNMtTMx4q5wJSKgOJGUqBgo9v40s60nN5f489l9gITR9oYWZYedH/EmvU07lwznUQsTpOJ77S/phUnPip5CU8JDPo1axMGLmQctAdArJkOuR2DAPHlM60IoDbTm+IMGdR3KEj2c7HgNk80duky+25H6ZZspP43vdvJwJSBABlRO2SCORdPS11eeBZf1hdfk1/ShwUqN+an7Mdm9azTibJlbTt2czksceJJX2eZ4XRIco1VcksTHURMaT2KK+LGQtv19LM+5ianKZANMOo5t76KsviIDyN1fMVs/hgZk0IovDNROQnPiBhabuGGvzSQ7yeNviyxhaUMNZmw9/W77XlDaE3KPZJJ98RgIdYcEp/n4t7xOa1t/HY2RCE763jfXVF0RA+WFZmlmTDjyoLWm2/LPAY75mweH8NE255bV4X99Rg/myCNe4D7Wf2nZ03Ipa2hE5tluHJpoISBAB5Yl5fN0kZt2p/NXHQzWxQHPlUj6wyxv4+lDHNdxCz562fG+zCtgfWhiigAfnsS3SEaZb8jPCBRFQveFrvvaJWbeQJHI3CSVfnxBML5QmvFwG1wefDAYJwi81hxpfZ5pz6BF9p2WOfuHzu42m6Jw8zgU/FroE9NZXXxAKe0j/k2X9GnyAh+dxLDzYj1r5t6NF2cTeLo9YCJ3Hvd8/ueyf5/HW4H28wIrfDraoUH6MasHKDWgA3yPGDxTVhDDdAlMgso3VQQg6Ncqn3EkXoXl0f0QKwqjIehDJZGpy6YD2hBKNwbZqqc12/B/Rt6TVwgkViqQQ0Pv01eyV7YfTQm+cv7g8ZKGANZMZ8nbCPqebXDqSYAG04YAD/uoYn9hVNFtB2PemmdlwdCOx8juKIIiA8gRG2CCJ7tA8toUf6EBqAKNtdYfrJjxe0vCshWgXND1Uw58bWX8pNZvDqDldx31A2gi/H0JtqQ19ToIgAsoTqGZHLs1Qmhi5AJPlLAsFrJh2enaa2YGH+IMEflbrkVRhSo2ImJDDabJdFtlnET/jVKkH/GQtyt0HJIiAyg0IsWPYHkoMTilgP5ROoL7rPT58D1JDStoDCAf0j/l5RckH2dloPXJRZB84nVE/94SFFiQPU4sEkc3QV18Q8kcHPnQoU0BIul2VXf9W1ObiImHIAYIvaFyadgiSQQdIVMYP4L3bluugJf2jnC9W0SFVw5cj4IhGhOvnFsopzhYvrwI0XDvBQmb2FjRBUV3/PEk7NbDxbxaSO4/PcJzuNPNSbT9SpSXwG8G5PYua1KJSEpBQHWiaoPf6En/Ff+VyuwUH83v6CP8HtKsd6PKCy0guO5Ia0A/StkMU8M9ZjoOM6pMjy1rRpEtPb0CN26cW8rMmUsZbYVncQpUjSRoQxs38gWbGk3wg0EtnuT7GWKBiH1nPaN96XtoPDrSZIbyHhaI5zeF1qSltSEIDwfXhZwJNFX42ROLQU+kbaUBCJRAQCimn8xcdTtS36fs4Xx/jaoCzeix9Qf2tJu8HvqTXSSDTi3zOJjT98KOwK6UlSQgBAORmLRABCUkGqthT0R5EeBCa30e3ZTXgHiEVIVrzdaplL2kpJhDu35Pm8jwKfjByVuLLOaue0LVB83r4UqPV6OS0/xEZQlOxvuKc/+EnJOa46vgHc/h/SgX4kI6x0GAfxbajLUvvbT2YIqB8AafwpfxVrY9pCygvWGk1TtUmfKjgEO0p7vlvpAsJiWfErGtGLaShxzMPIREtpG+qmQhIBFQIelHF/4i/tHA4olp7o3r6Ar9KZ3S65oVkO4SGN69i8kHR6hL+IMRhd5JT2zLxUaHfNjpGvkxntghIBJQRTanSP0sNBA3NMYOrSwN8eZG/Mos+hnQSepRf6B2rkHxwTxANHJVlm5tI1OWEDfgDNi3djNaDqUTEFNbklxsaDqqxUV2NIsd/1+LLBsI4jZGRuvqa8H4w++qyCEki5Izcl5MsNOqqdOCa0eB+BB3M12f5HGcyMlaMaRiPMZpWLN/hnYyaIcL5oaJg1YNGWb7YIJ4L6Ge5xkLzq5l1OBemSPy1CARkjKQszhBR+QUfyjv4UC6o0M8O7VUR3saon2E5tBs4pjFX7BUrTt4UCnzvK+K1NKEGi3q//k5Ay/RoVi+QN4KxNAjj/tqyN/dqKGzEB2lQhvUwwzBP64MKNcmGWyivwEyx7nls/wp/QMoZHfgDd4JMk+r0AUEb+iUdlQ81kH+nEMAcfC7LehSsjqaj/BYLyXdJB6J/z1hILDzP8iul2YH3oFcCrm8kyFIPZvURUCP+QqLA8JgG/hLuSkd3vrJrjuNh3A3qlJAvhDqyJLYjXYdOZGh9qGTfrIB9Py7gXt7fwNcJjXaxHszqc0IjeoI+O4Op1je0Y7VPnttewEjKNpZ9+B+OibDvb7ndNfRjzC1z4ulOh/sxJJLT6UjOFyiLQJQJuT+T89ge/ZamN+D1onHag/7FbC1PSPUAM9CX5aFJlCMwb32h5TcNw+jPgpP6c/q4MHt9izK7psbU2u7l54Lykx/RUVsoUBn/twR9nohcjpFmUF0mGH5R/5xgAh3JX+5CmpQh+/ZIanupvCZoF90a6BqgiSIP5hIL/Xzgh3ukjj8KR9BXlJQM8QNIuD/Ug1ldBLQoodpPCvDpfEgfSW2AB/TCNF8JTBVMlsBMrrVL+L7Xp2kER/kUnhv5Vcjp6VTHY7clKV+UgM8PGt8ZJF0kt+rBrDIfEH4l0ez9yQSTEJyXT/H1uToc5/v0Q+xJ0xQ5S59YSLp7i0T3OWWq5c6paUEzsSsFEzn6WZjjDsfybL7vcdREpxTRlMFYot5Wws6FRfL5XEyn+skkY7XjqCKAgJ7mA/XThF8LsqBR6Lh5kZzLzXisfjSP+tIpvC7v23L6kZDoiBqsefTTrEWtrIXV1F0to2kFLWsCCW0CCW1Fke8DClLRgH6gyz/L8HNCegcSJ48m4SOhEe11P0ttIAKqLgJKaQ/44j6e4GtpzYcaSZSHlvA8zWk+QdqTaNbk+ZdRo5zH19kk92klIJpMZh0qzW+38umZjaZoiFIiIrc7iRxJosiKv8ViuiiIgKqLgIw+ENjhSNm/P8HXg45/cCyjIfs1RSQcJPFtTO0H0pmE05REg1akiMa1o/bViqZP8zRNCSQ0g6bbB5QlRSbG5/mZ7lTkY2dDJ0pnmpUbULPpxdd21BLH0zweS19XRpYRAVUfAQHIrIXT8k/89fw2odd0DM2xQbUwQfAQY7rEjvTTNCaR4FcaDfC/slAuMMUKqzFbi5pAJz6g8AX1JFEtpdbyAjW42hIHrvkAkvBXdbh/jfle4bNCVLADiaUT/+5IsunAZan0AFzHLGo36As9mffsfasZrZ0XREDVSUDArlTf8cuOXst/oVmRNCAidpCxujoP0w15NkP5qzyeZPBaPV07SK8/tZZteE4UZj5k+Q9QPJta7G4Fku4GJFyQVu80TS/VJGw6CRevqZE8MymzqNGlNLuvi3VDREDVDZgTI6kB4eH9GR/SJAEEOo6/vJlC2vDfoHkX5qUP43WXA+BP+jFJCBGiNjm2P5L+pXz8XiAWRJ5QGf8pCXceTTeYrCPop4F21qKhboDC02pIZlS1YZLNpl/jGv5aJgWIQCF0/rqt3gUQDxnGxmxf5tewC30mO2dYfwRNm9NzHKcVtaSv6LNCPx+U3mxqZTgZRQ+mCCgdLfkr+0/+Yn5EMhps5V/Y2Yla0L+spmn+zjQzmyeESHH/77aa0copHEy/yzk59u/Dz2wGiap9uV+wHkwRUCZ0pZr+PH0VcNA+TVPmQAth4HJDXz58qX449yWIfNI1mHvS/v8Z7//ZeXxe8NcgL6hdUi5WD6Zasubrq0C0aBBNmb70o8ym1oEwM6ZlIPluKuUra5jo2o4kSvi2trDS5gmVCvfQ5IKz+VwLHStztZ1Frg0ysQdagibIygldPSim/d+EPoXefN2EERX8Cq+bdi5oTXMoc+kEXZL2upAktZTLFnKf+ZSFlBn8dc83UnWI1TQx+x0JKSkYSn/QHhaysQ+nkzpXMAH3F6H5MUn6UoqAREDFBqIvyCVZ22rySdbma6p0oTW3g6nQlBpWqqShDde1t9UjciAh5Ju8YyGE/nfL3Lsa4fa7LNR3XU4NYmWZfz4n0N+zA//fxfLr2YSQOnJxkNMzTQQkVDMBFRNNSVLtSGbd+LBtRVNjDWo68I/EFXdiG+TYIG8FZRLoCfSPMjNRcI2Y83UsSRg5Qsi72ZbkmQ+QA/UyCXxJkj5gEZAIKKnAw7YXfSQbWqg/iktE7E7/CMzEsdSsoEWhFu4Vyz8BsJgAccKXti9NVyRDohgWLTueoBlWSGIkMrknUHNMVDKpCEgElHQ0pZYD7WH3LGYh+s9gvhiynq+2EMXblvvBkY5e0pMsONOL6Txfy2pqpfqQCBdRY0HTeaQ4oDQGjvujubxQICjwBsl1bpI+PBGQCKgSAJMMSYjwNc3Jsh20DQw4PJCmGLoSIuepp9UUVW5KDQWaBJztcIbP5HGXUWNaEtHEWlmN36oTSSe1/0JqXCC2dy3k6bQl2ZzGfdG/GiUlS2t5/SjreJXve5EISChXTaFS8SVfO+UgIJhoqBvbmqbb89R8UK6AfsqPxOwDgkBBZjur6QEEsmlNTWkZSQp+pdkkqzgSQOHndhYSBI/iPjdQG/umjtePyOOCpJGPIA2oUjDQQp+jdgWaTxh6iES/I/gQY6oEImvP0qdSV3/KeiQdmIb7pZ0D1ewPWPEcxiMt+MMGJO2DkwYkAqoEoFwEjtjaTkZtzH334YPcm6YTwv1vW0i0RBc/hLhn2artOdpRS2pLQuvOV3RX7EZNB6SDXB5kKU8vwecK0w7RwAtFQIIIqH4BAkCIHbPhRxfpmB2oTYDU4BvamGTSkWQVBxR+IhP8E76CvF7mayk7JCJREZNOeljdegOJgAQRUC0AnwoiXF2tfnJgQHipRMql1Ia+sfppwxpnQiIh8zqaYYmDCEgElHQgU/glklA1ARoZSkw+pdmYxGZyIqAqQuMKvS6EzV+rss9yexIvsr8PSir5CCKgSsA8q2krWuloTlMLmdOI+u3B6xcEEVADAbk8B1bBZ4dWsoh2obsh2rhiqslifa0FEVDD4g8WwueHV+C1oUsA8pQQSUNnR7RXRdb2vfo6C0lDpWZCI0/n5y53WshYxqz3JHs2Udox0EJh6kHUctBKBBnTU/U1FpKKRhV+fcNdrrdQWoHiziQ1IUNhLCJZqIJH1jR8WvDxYFTSI5VsaikKJgKqJCALGT2r0RER/hI0JMP014/L6D2m5tCjRAMtRAbwfaPrI8pA0CYELTnmV8OXUgQkAqpEICv4OAt+IQzkQwX6cxYqxuFPQffAOSV+D8im7kpyAeGgFQeyqjehOYz3hFD6y3yF5rai2r6UIiARUKXjBxamiCJ3ZmuSAjCTRJQawYwarVkUVLansptRYoEM67W4X6p1LF7Xtpp2s6nxxd14jtTwQ/TnmUR5h0Qz0TK3khUBCSKgCkZrq5nXjtcuaeSBXtZtrGZCaXTIIRL+UoWoqLqfTcKaTUHrVxStYmb65xTl6YiABMf/CzAAml94Vf9aOp8AAAAASUVORK5CYII='); + 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 0000000..c947fea Binary files /dev/null and b/app-saas-src/icon/icon150x150.png differ diff --git a/app-saas-src/image/about.png b/app-saas-src/image/about.png new file mode 100644 index 0000000..8f8d9f0 Binary files /dev/null and b/app-saas-src/image/about.png differ 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 0000000..81cb5e7 Binary files /dev/null and b/app-saas-src/image/add.png differ diff --git a/app-saas-src/image/alarm-keeper-icon.png b/app-saas-src/image/alarm-keeper-icon.png new file mode 100644 index 0000000..2f368d7 Binary files /dev/null and b/app-saas-src/image/alarm-keeper-icon.png differ diff --git a/app-saas-src/image/album.png b/app-saas-src/image/album.png new file mode 100644 index 0000000..d88d65a Binary files /dev/null and b/app-saas-src/image/album.png differ diff --git a/app-saas-src/image/arrow-bottom.png b/app-saas-src/image/arrow-bottom.png new file mode 100644 index 0000000..0851feb Binary files /dev/null and b/app-saas-src/image/arrow-bottom.png differ diff --git a/app-saas-src/image/arrow-right.png b/app-saas-src/image/arrow-right.png new file mode 100644 index 0000000..4056b03 Binary files /dev/null and b/app-saas-src/image/arrow-right.png differ diff --git a/app-saas-src/image/arrow.png b/app-saas-src/image/arrow.png new file mode 100644 index 0000000..6360c0e Binary files /dev/null and b/app-saas-src/image/arrow.png differ diff --git a/app-saas-src/image/avatar.png b/app-saas-src/image/avatar.png new file mode 100644 index 0000000..91fcd59 Binary files /dev/null and b/app-saas-src/image/avatar.png differ diff --git a/app-saas-src/image/avatar.svg b/app-saas-src/image/avatar.svg new file mode 100644 index 0000000..bc1cc1c --- /dev/null +++ b/app-saas-src/image/avatar.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + diff --git a/app-saas-src/image/back.png b/app-saas-src/image/back.png new file mode 100644 index 0000000..156739a Binary files /dev/null and b/app-saas-src/image/back.png differ diff --git a/app-saas-src/image/bee-icon-prev.png b/app-saas-src/image/bee-icon-prev.png new file mode 100644 index 0000000..4ab1344 Binary files /dev/null and b/app-saas-src/image/bee-icon-prev.png differ diff --git a/app-saas-src/image/bee-icon.png b/app-saas-src/image/bee-icon.png new file mode 100644 index 0000000..85b250f Binary files /dev/null and b/app-saas-src/image/bee-icon.png differ 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 0000000..e07c6fb Binary files /dev/null and b/app-saas-src/image/black-pr-icon.png differ diff --git a/app-saas-src/image/camera.png b/app-saas-src/image/camera.png new file mode 100644 index 0000000..d719092 Binary files /dev/null and b/app-saas-src/image/camera.png differ diff --git a/app-saas-src/image/chang-pwd.png b/app-saas-src/image/chang-pwd.png new file mode 100644 index 0000000..23638c9 Binary files /dev/null and b/app-saas-src/image/chang-pwd.png differ 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 0000000..0476ede Binary files /dev/null and b/app-saas-src/image/clear.png differ 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 0000000..d505145 Binary files /dev/null and b/app-saas-src/image/close.png differ diff --git a/app-saas-src/image/contact-active.png b/app-saas-src/image/contact-active.png new file mode 100644 index 0000000..312f554 Binary files /dev/null and b/app-saas-src/image/contact-active.png differ diff --git a/app-saas-src/image/contact-active.svg b/app-saas-src/image/contact-active.svg new file mode 100644 index 0000000..a09cf49 --- /dev/null +++ b/app-saas-src/image/contact-active.svg @@ -0,0 +1,19 @@ + + + + + + + + + + diff --git a/app-saas-src/image/contact-normal.png b/app-saas-src/image/contact-normal.png new file mode 100644 index 0000000..b02cacf Binary files /dev/null and b/app-saas-src/image/contact-normal.png differ diff --git a/app-saas-src/image/contact-normal.svg b/app-saas-src/image/contact-normal.svg new file mode 100644 index 0000000..4079910 --- /dev/null +++ b/app-saas-src/image/contact-normal.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + diff --git a/app-saas-src/image/drop-down.png b/app-saas-src/image/drop-down.png new file mode 100644 index 0000000..214dd82 Binary files /dev/null and b/app-saas-src/image/drop-down.png differ diff --git a/app-saas-src/image/empty-tips.png b/app-saas-src/image/empty-tips.png new file mode 100644 index 0000000..32b75f6 Binary files /dev/null and b/app-saas-src/image/empty-tips.png differ diff --git a/app-saas-src/image/error-dark.svg b/app-saas-src/image/error-dark.svg new file mode 100644 index 0000000..6695f2e --- /dev/null +++ b/app-saas-src/image/error-dark.svg @@ -0,0 +1 @@ + \ 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 0000000..96f320b Binary files /dev/null and b/app-saas-src/image/feature-active.png differ 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 0000000..1b39184 Binary files /dev/null and b/app-saas-src/image/feature-normal.png differ 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 0000000..d69849f Binary files /dev/null and b/app-saas-src/image/img-error.png differ 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 0000000..29be063 Binary files /dev/null and b/app-saas-src/image/inspect-keeper-icon.png differ 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 0000000..f7194f5 Binary files /dev/null and b/app-saas-src/image/left-bg0.png differ 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 0000000..781a597 Binary files /dev/null and b/app-saas-src/image/left-panel-logo-prev-1.png differ diff --git a/app-saas-src/image/left-panel-logo-prev.png b/app-saas-src/image/left-panel-logo-prev.png new file mode 100644 index 0000000..1f6286a Binary files /dev/null and b/app-saas-src/image/left-panel-logo-prev.png differ 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 0000000..06eb358 Binary files /dev/null and b/app-saas-src/image/left-panel-logo.png differ 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 0000000..01b9c76 Binary files /dev/null and b/app-saas-src/image/logo-prev-1.png differ diff --git a/app-saas-src/image/logo-prev.png b/app-saas-src/image/logo-prev.png new file mode 100644 index 0000000..53e09ee Binary files /dev/null and b/app-saas-src/image/logo-prev.png differ diff --git a/app-saas-src/image/logo.png b/app-saas-src/image/logo.png new file mode 100644 index 0000000..c10d895 Binary files /dev/null and b/app-saas-src/image/logo.png differ diff --git a/app-saas-src/image/logout.png b/app-saas-src/image/logout.png new file mode 100644 index 0000000..a038d86 Binary files /dev/null and b/app-saas-src/image/logout.png differ diff --git a/app-saas-src/image/logout.svg b/app-saas-src/image/logout.svg new file mode 100644 index 0000000..309b993 --- /dev/null +++ b/app-saas-src/image/logout.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + diff --git a/app-saas-src/image/malfunction.png b/app-saas-src/image/malfunction.png new file mode 100644 index 0000000..0dd7ab8 Binary files /dev/null and b/app-saas-src/image/malfunction.png differ diff --git a/app-saas-src/image/message-active.png b/app-saas-src/image/message-active.png new file mode 100644 index 0000000..1a83c23 Binary files /dev/null and b/app-saas-src/image/message-active.png differ 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 0000000..2d19d81 Binary files /dev/null and b/app-saas-src/image/message-normal.png differ 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 0000000..5b3b618 Binary files /dev/null and b/app-saas-src/image/microphone.png differ diff --git a/app-saas-src/image/more.png b/app-saas-src/image/more.png new file mode 100644 index 0000000..6b3a35a Binary files /dev/null and b/app-saas-src/image/more.png differ diff --git a/app-saas-src/image/oper-ticket-assistantor-icon.png b/app-saas-src/image/oper-ticket-assistantor-icon.png new file mode 100644 index 0000000..1cfbd79 Binary files /dev/null and b/app-saas-src/image/oper-ticket-assistantor-icon.png differ diff --git a/app-saas-src/image/operate-ticket.svg b/app-saas-src/image/operate-ticket.svg new file mode 100644 index 0000000..67d93a8 --- /dev/null +++ b/app-saas-src/image/operate-ticket.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-saas-src/image/picture.png b/app-saas-src/image/picture.png new file mode 100644 index 0000000..1738a95 Binary files /dev/null and b/app-saas-src/image/picture.png differ diff --git a/app-saas-src/image/pre-pic.png b/app-saas-src/image/pre-pic.png new file mode 100644 index 0000000..4cfb338 Binary files /dev/null and b/app-saas-src/image/pre-pic.png differ diff --git a/app-saas-src/image/qrcode.png b/app-saas-src/image/qrcode.png new file mode 100644 index 0000000..f718ed9 Binary files /dev/null and b/app-saas-src/image/qrcode.png differ diff --git a/app-saas-src/image/red-alarm-icon.png b/app-saas-src/image/red-alarm-icon.png new file mode 100644 index 0000000..421954d Binary files /dev/null and b/app-saas-src/image/red-alarm-icon.png differ diff --git a/app-saas-src/image/repair-active.svg b/app-saas-src/image/repair-active.svg new file mode 100644 index 0000000..0555c91 --- /dev/null +++ b/app-saas-src/image/repair-active.svg @@ -0,0 +1 @@ + \ 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 0000000..494a667 Binary files /dev/null and b/app-saas-src/image/repair-keeper-icon.png differ diff --git a/app-saas-src/image/repair-log.svg b/app-saas-src/image/repair-log.svg new file mode 100644 index 0000000..53d51a2 --- /dev/null +++ b/app-saas-src/image/repair-log.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 0000000..0aa6bcd Binary files /dev/null and b/app-saas-src/image/report-keeper-icon.png differ diff --git a/app-saas-src/image/right-bottom-bg.png b/app-saas-src/image/right-bottom-bg.png new file mode 100644 index 0000000..fc2d944 Binary files /dev/null and b/app-saas-src/image/right-bottom-bg.png differ diff --git a/app-saas-src/image/right-middle-bg.png b/app-saas-src/image/right-middle-bg.png new file mode 100644 index 0000000..767dacd Binary files /dev/null and b/app-saas-src/image/right-middle-bg.png differ diff --git a/app-saas-src/image/right-top-bg.png b/app-saas-src/image/right-top-bg.png new file mode 100644 index 0000000..e53a207 Binary files /dev/null and b/app-saas-src/image/right-top-bg.png differ diff --git a/app-saas-src/image/rtAlarm-active.png b/app-saas-src/image/rtAlarm-active.png new file mode 100644 index 0000000..6d1d043 Binary files /dev/null and b/app-saas-src/image/rtAlarm-active.png differ 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 0000000..ef3ff58 Binary files /dev/null and b/app-saas-src/image/rtAlarm-normal.png differ diff --git a/app-saas-src/image/rtAlarm-normal.svg b/app-saas-src/image/rtAlarm-normal.svg new file mode 100644 index 0000000..54a92bb --- /dev/null +++ b/app-saas-src/image/rtAlarm-normal.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app-saas-src/image/scheme.png b/app-saas-src/image/scheme.png new file mode 100644 index 0000000..f16a7f3 Binary files /dev/null and b/app-saas-src/image/scheme.png differ 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 0000000..ff71b09 Binary files /dev/null and b/app-saas-src/image/text-logo.png differ 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 0000000..40ab159 Binary files /dev/null and b/app-saas-src/image/work-ticket-assistantor-icon.png differ diff --git a/app-saas-src/image/work-ticket.svg b/app-saas-src/image/work-ticket.svg new file mode 100644 index 0000000..5d0b639 --- /dev/null +++ b/app-saas-src/image/work-ticket.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 0000000..880a6ae Binary files /dev/null and b/app-saas-src/launch/launch1080x1920.png differ diff --git a/app-saas-src/package-lock.json b/app-saas-src/package-lock.json new file mode 100644 index 0000000..e9c76e9 --- /dev/null +++ b/app-saas-src/package-lock.json @@ -0,0 +1,6900 @@ +{ + "name": "dianwutong_src", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", + "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "dev": true, + "requires": { + "@babel/highlight": "^7.22.5" + } + }, + "@babel/core": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0.tgz", + "integrity": "sha512-nrvxS5u6QUN5gLl1GEakIcmOeoUHT1/gQtdMRq18WFURJ5osn4ppJLVSseMQo4zVWKJfBTF4muIYijXUnKlRLQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.0.0", + "@babel/helpers": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "convert-source-map": "^1.1.0", + "debug": "^3.1.0", + "json5": "^0.5.0", + "lodash": "^4.17.10", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", + "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "dev": true + }, + "@babel/helper-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "dev": true, + "requires": { + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz", + "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "dev": true + }, + "@babel/helpers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.5.tgz", + "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==", + "dev": true, + "requires": { + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, + "@babel/highlight": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", + "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", + "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", + "dev": true + }, + "@babel/template": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, + "@babel/traverse": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", + "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", + "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "to-fast-properties": "^2.0.0" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + }, + "dependencies": { + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + } + } + }, + "align-text": { + "version": "0.1.4", + "resolved": "http://registry.npm.taobao.org/align-text/download/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.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" + } + } + } + }, + "ansi-colors": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/ansi-colors/download/ansi-colors-1.1.0.tgz", + "integrity": "sha1-Y3S03V1HGP884npnGjscrQdxMqk=", + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "http://registry.npm.taobao.org/ansi-wrap/download/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" + }, + "anymatch": { + "version": "1.3.2", + "resolved": "http://registry.npm.taobao.org/anymatch/download/anymatch-1.3.2.tgz", + "integrity": "sha1-VT3Lj5HjyImEXf26NMd3IbkLnXo=", + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.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" + } + }, + "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" + } + }, + "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" + } + } + } + }, + "archive-type": { + "version": "3.2.0", + "resolved": "http://registry.npm.taobao.org/archive-type/download/archive-type-3.2.0.tgz", + "integrity": "sha1-nNnABpV+vpX62tW9YJiUKoE3N/Y=", + "requires": { + "file-type": "^3.1.0" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "http://registry.npm.taobao.org/file-type/download/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" + } + } + }, + "archy": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/archy/download/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "http://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", + "optional": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "http://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/arr-flatten/download/arr-flatten-1.1.0.tgz", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/arr-union/download/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==" + }, + "array-each": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/array-each/download/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/array-find-index/download/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, + "array-slice": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/array-slice/download/array-slice-1.1.0.tgz", + "integrity": "sha1-42jqFfibxwaff/uJrsOmx9SsItQ=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "http://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "http://registry.npm.taobao.org/array-uniq/download/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "http://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "async-each": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/async-each/download/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" + }, + "async-each-series": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/async-each-series/download/async-each-series-1.1.0.tgz", + "integrity": "sha1-9C/YFV048hpbjqB8KOBj7RcAsTg=", + "optional": true + }, + "atob": { + "version": "2.1.2", + "resolved": "http://registry.npm.taobao.org/atob/download/atob-2.1.2.tgz", + "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "http://registry.npm.taobao.org/base/download/base-0.11.2.tgz", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.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" + } + } + } + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha512-3vqtKL1N45I5dV0RdssXZG7X6pCqQrWPNOlBPZPrd+QkE2HEhR57Z04m0KtpbsZH73j+a3F8UD1TQnn+ExTvIA==" + }, + "bin-build": { + "version": "2.2.0", + "resolved": "http://registry.npm.taobao.org/bin-build/download/bin-build-2.2.0.tgz", + "integrity": "sha1-EfjdYfcP/Por3KpbRvXo/t1CIcw=", + "optional": true, + "requires": { + "archive-type": "^3.0.1", + "decompress": "^3.0.0", + "download": "^4.1.2", + "exec-series": "^1.0.0", + "rimraf": "^2.2.6", + "tempfile": "^1.0.0", + "url-regex": "^3.0.0" + }, + "dependencies": { + "tempfile": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/tempfile/download/tempfile-1.1.1.tgz", + "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=", + "optional": true, + "requires": { + "os-tmpdir": "^1.0.0", + "uuid": "^2.0.1" + } + }, + "uuid": { + "version": "2.0.3", + "resolved": "http://registry.npm.taobao.org/uuid/download/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "optional": true + } + } + }, + "bin-check": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/bin-check/download/bin-check-2.0.0.tgz", + "integrity": "sha1-hvjm9CU4k99g3DFpV/WvAqywWTA=", + "optional": true, + "requires": { + "executable": "^1.0.0" + } + }, + "bin-version": { + "version": "1.0.4", + "resolved": "http://registry.npm.taobao.org/bin-version/download/bin-version-1.0.4.tgz", + "integrity": "sha1-nrSY7m/Xb3q5p8FgQ2+JV5Q1144=", + "optional": true, + "requires": { + "find-versions": "^1.0.0" + } + }, + "bin-version-check": { + "version": "2.1.0", + "resolved": "http://registry.npm.taobao.org/bin-version-check/download/bin-version-check-2.1.0.tgz", + "integrity": "sha1-5OXfKQuQaffRETJAMe/BP90RpbA=", + "optional": true, + "requires": { + "bin-version": "^1.0.0", + "minimist": "^1.1.0", + "semver": "^4.0.3", + "semver-truncate": "^1.0.0" + } + }, + "bin-wrapper": { + "version": "3.0.2", + "resolved": "http://registry.npm.taobao.org/bin-wrapper/download/bin-wrapper-3.0.2.tgz", + "integrity": "sha1-Z9MwYmLksaXy+I7iNGT2plVneus=", + "optional": true, + "requires": { + "bin-check": "^2.0.0", + "bin-version-check": "^2.1.0", + "download": "^4.0.0", + "each-async": "^1.1.1", + "lazy-req": "^1.0.0", + "os-filter-obj": "^1.0.0" + } + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "http://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=" + }, + "bl": { + "version": "1.2.2", + "resolved": "http://registry.npm.taobao.org/bl/download/bl-1.2.2.tgz", + "integrity": "sha1-oWCRFxcQPAdBDO9j71Gzl8Alr5w=", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.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" + } + } + } + }, + "body-parser": { + "version": "1.14.2", + "resolved": "http://registry.npm.taobao.org/body-parser/download/body-parser-1.14.2.tgz", + "integrity": "sha1-EBXLH+LEQ4WCWVgdtTMy+NDPUPk=", + "requires": { + "bytes": "2.2.0", + "content-type": "~1.0.1", + "debug": "~2.2.0", + "depd": "~1.1.0", + "http-errors": "~1.3.1", + "iconv-lite": "0.4.13", + "on-finished": "~2.3.0", + "qs": "5.2.0", + "raw-body": "~2.1.5", + "type-is": "~1.6.10" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "http://registry.npm.taobao.org/ms/download/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + }, + "qs": { + "version": "5.2.0", + "resolved": "http://registry.npm.taobao.org/qs/download/qs-5.2.0.tgz", + "integrity": "sha1-qfMRQq9GjLcrJbMBNrokVoNJFr4=" + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "http://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^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" + } + } + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/buffer-alloc/download/buffer-alloc-1.2.0.tgz", + "integrity": "sha1-iQ3ZDZI6hz4I4Q5f1RpX5bfM4Ow=", + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/buffer-alloc-unsafe/download/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha1-vX3CauKXLQ7aJTvgYdupkjScGfA=" + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "http://registry.npm.taobao.org/buffer-crc32/download/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/buffer-fill/download/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" + }, + "buffer-from": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.0.tgz", + "integrity": "sha1-h/yqOimDWOCt5uRCz86EB0DRrQQ=" + }, + "buffer-to-vinyl": { + "version": "1.1.0", + "resolved": "http://registry.npm.taobao.org/buffer-to-vinyl/download/buffer-to-vinyl-1.1.0.tgz", + "integrity": "sha1-APFfruOreh3aLN5tkSG//dB7ImI=", + "requires": { + "file-type": "^3.1.0", + "readable-stream": "^2.0.2", + "uuid": "^2.0.1", + "vinyl": "^1.0.0" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "http://registry.npm.taobao.org/file-type/download/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" + }, + "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" + } + }, + "uuid": { + "version": "2.0.3", + "resolved": "http://registry.npm.taobao.org/uuid/download/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" + }, + "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" + } + } + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/builtin-modules/download/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "bytes": { + "version": "2.2.0", + "resolved": "http://registry.npm.taobao.org/bytes/download/bytes-2.2.0.tgz", + "integrity": "sha1-/TVGSkA/b5EXwt42Cez/nK4ABYg=" + }, + "cache-base": { + "version": "1.0.1", + "resolved": "http://registry.npm.taobao.org/cache-base/download/cache-base-1.0.1.tgz", + "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "http://registry.npm.taobao.org/camelcase/download/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "http://registry.npm.taobao.org/camelcase-keys/download/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/capture-stack-trace/download/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=" + }, + "caw": { + "version": "1.2.0", + "resolved": "http://registry.npm.taobao.org/caw/download/caw-1.2.0.tgz", + "integrity": "sha1-/7Im/n78VHKI3GLuPpcHPCEtEDQ=", + "requires": { + "get-proxy": "^1.0.1", + "is-obj": "^1.0.0", + "object-assign": "^3.0.0", + "tunnel-agent": "^0.4.0" + } + }, + "center-align": { + "version": "0.1.3", + "resolved": "http://registry.npm.taobao.org/center-align/download/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "http://registry.npm.taobao.org/chokidar/download/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^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" + } + } + } + }, + "clap": { + "version": "1.2.3", + "resolved": "http://registry.npm.taobao.org/clap/download/clap-1.2.3.tgz", + "integrity": "sha1-TzZ0WzIAhJJVf0ZBLWbVDLmbzlE=", + "optional": true, + "requires": { + "chalk": "^1.1.3" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "http://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz", + "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.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" + } + } + } + }, + "clean-css": { + "version": "4.1.11", + "resolved": "http://registry.npm.taobao.org/clean-css/download/clean-css-4.1.11.tgz", + "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", + "requires": { + "source-map": "0.5.x" + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "http://registry.npm.taobao.org/cliui/download/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "http://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "http://registry.npm.taobao.org/clone-stats/download/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=" + }, + "co": { + "version": "3.1.0", + "resolved": "http://registry.npm.taobao.org/co/download/co-3.1.0.tgz", + "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=" + }, + "coa": { + "version": "1.0.4", + "resolved": "http://registry.npm.taobao.org/coa/download/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "optional": true, + "requires": { + "q": "^1.1.2" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.2", + "resolved": "http://registry.npm.taobao.org/color-convert/download/color-convert-1.9.2.tgz", + "integrity": "sha1-SYgbj7pn3xKpa98/VsCqueeRMUc=", + "requires": { + "color-name": "1.1.1" + } + }, + "color-name": { + "version": "1.1.1", + "resolved": "http://registry.npm.taobao.org/color-name/download/color-name-1.1.1.tgz", + "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=" + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + }, + "colors": { + "version": "1.1.2", + "resolved": "http://registry.npm.taobao.org/colors/download/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "optional": true + }, + "commander": { + "version": "2.8.1", + "resolved": "http://registry.npm.taobao.org/commander/download/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "requires": { + "graceful-readlink": ">= 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 0000000..03c06f7 Binary files /dev/null and b/app-saas-src/res/raw/horse.mp3 differ diff --git a/app-saas-src/resource/isNew.txt b/app-saas-src/resource/isNew.txt new file mode 100644 index 0000000..c227083 --- /dev/null +++ b/app-saas-src/resource/isNew.txt @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/app-saas-src/resource/version.txt b/app-saas-src/resource/version.txt new file mode 100644 index 0000000..3eefcb9 --- /dev/null +++ b/app-saas-src/resource/version.txt @@ -0,0 +1 @@ +1.0.0 diff --git a/app-saas-src/script/about.js b/app-saas-src/script/about.js new file mode 100644 index 0000000..cbded14 --- /dev/null +++ b/app-saas-src/script/about.js @@ -0,0 +1,142 @@ +var lbGrade; +var logoIcon; +var deviceInfoContianer; +var blackMask; + +function UiModeToString(uiMode) { + switch (uiMode) { + case "pad": + return "平板电脑"; + case "phone": + return "智能手机"; + case "tv": + return "智能电视"; + case "car": + return "车载终端"; + case "desk": + return "桌面电脑"; + case "watch": + return "智能手表"; + default: + return "未知"; + } +} + +function ConnectionTypeToString(connectionType) { + switch (connectionType) { + case "unknown": + return "未知"; + case "ethernet": + return "以太网"; + case "wifi": + return "Wi-Fi"; + case "2g": + return "2G"; + case "3g": + return "3G"; + case "4G": + return "4G"; + case "none": + return "无网络"; + default: + return "未知"; + } +} + +function showDeviceInfo() { + if (blackMask.hasClass("hidden")) { + blackMask.removeClass("hidden"); + } +} + +function hideDeviceInfo() { + if (!blackMask.hasClass("hidden")) { + blackMask.addClass("hidden"); + } +} + +function initDeviceInfo() { + var deviceInfo = ""; + deviceInfo += ("APP" + lbVersion.html() + "
"); + 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