新增大屏显示,优化WMS首页数据展示,后端数据推送接口新加库存差异比较
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | .DS_Store |
| | | node_modules |
| | | /dist |
| | | |
| | | # local env files |
| | | .env.local |
| | | .env.*.local |
| | | |
| | | # Log files |
| | | npm-debug.log* |
| | | yarn-debug.log* |
| | | yarn-error.log* |
| | | |
| | | # Editor directories and files |
| | | .idea |
| | | .vscode |
| | | *.suo |
| | | *.ntvs* |
| | | *.njsproj |
| | | *.sln |
| | | *.sw? |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | Apache License |
| | | Version 2.0, January 2004 |
| | | http://www.apache.org/licenses/ |
| | | |
| | | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION |
| | | |
| | | 1. Definitions. |
| | | |
| | | "License" shall mean the terms and conditions for use, reproduction, |
| | | and distribution as defined by Sections 1 through 9 of this document. |
| | | |
| | | "Licensor" shall mean the copyright owner or entity authorized by |
| | | the copyright owner that is granting the License. |
| | | |
| | | "Legal Entity" shall mean the union of the acting entity and all |
| | | other entities that control, are controlled by, or are under common |
| | | control with that entity. For the purposes of this definition, |
| | | "control" means (i) the power, direct or indirect, to cause the |
| | | direction or management of such entity, whether by contract or |
| | | otherwise, or (ii) ownership of fifty percent (50%) or more of the |
| | | outstanding shares, or (iii) beneficial ownership of such entity. |
| | | |
| | | "You" (or "Your") shall mean an individual or Legal Entity |
| | | exercising permissions granted by this License. |
| | | |
| | | "Source" form shall mean the preferred form for making modifications, |
| | | including but not limited to software source code, documentation |
| | | source, and configuration files. |
| | | |
| | | "Object" form shall mean any form resulting from mechanical |
| | | transformation or translation of a Source form, including but |
| | | not limited to compiled object code, generated documentation, |
| | | and conversions to other media types. |
| | | |
| | | "Work" shall mean the work of authorship, whether in Source or |
| | | Object form, made available under the License, as indicated by a |
| | | copyright notice that is included in or attached to the work |
| | | (an example is provided in the Appendix below). |
| | | |
| | | "Derivative Works" shall mean any work, whether in Source or Object |
| | | form, that is based on (or derived from) the Work and for which the |
| | | editorial revisions, annotations, elaborations, or other modifications |
| | | represent, as a whole, an original work of authorship. For the purposes |
| | | of this License, Derivative Works shall not include works that remain |
| | | separable from, or merely link (or bind by name) to the interfaces of, |
| | | the Work and Derivative Works thereof. |
| | | |
| | | "Contribution" shall mean any work of authorship, including |
| | | the original version of the Work and any modifications or additions |
| | | to that Work or Derivative Works thereof, that is intentionally |
| | | submitted to Licensor for inclusion in the Work by the copyright owner |
| | | or by an individual or Legal Entity authorized to submit on behalf of |
| | | the copyright owner. For the purposes of this definition, "submitted" |
| | | means any form of electronic, verbal, or written communication sent |
| | | to the Licensor or its representatives, including but not limited to |
| | | communication on electronic mailing lists, source code control systems, |
| | | and issue tracking systems that are managed by, or on behalf of, the |
| | | Licensor for the purpose of discussing and improving the Work, but |
| | | excluding communication that is conspicuously marked or otherwise |
| | | designated in writing by the copyright owner as "Not a Contribution." |
| | | |
| | | "Contributor" shall mean Licensor and any individual or Legal Entity |
| | | on behalf of whom a Contribution has been received by Licensor and |
| | | subsequently incorporated within the Work. |
| | | |
| | | 2. Grant of Copyright License. Subject to the terms and conditions of |
| | | this License, each Contributor hereby grants to You a perpetual, |
| | | worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
| | | copyright license to reproduce, prepare Derivative Works of, |
| | | publicly display, publicly perform, sublicense, and distribute the |
| | | Work and such Derivative Works in Source or Object form. |
| | | |
| | | 3. Grant of Patent License. Subject to the terms and conditions of |
| | | this License, each Contributor hereby grants to You a perpetual, |
| | | worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
| | | (except as stated in this section) patent license to make, have made, |
| | | use, offer to sell, sell, import, and otherwise transfer the Work, |
| | | where such license applies only to those patent claims licensable |
| | | by such Contributor that are necessarily infringed by their |
| | | Contribution(s) alone or by combination of their Contribution(s) |
| | | with the Work to which such Contribution(s) was submitted. If You |
| | | institute patent litigation against any entity (including a |
| | | cross-claim or counterclaim in a lawsuit) alleging that the Work |
| | | or a Contribution incorporated within the Work constitutes direct |
| | | or contributory patent infringement, then any patent licenses |
| | | granted to You under this License for that Work shall terminate |
| | | as of the date such litigation is filed. |
| | | |
| | | 4. Redistribution. You may reproduce and distribute copies of the |
| | | Work or Derivative Works thereof in any medium, with or without |
| | | modifications, and in Source or Object form, provided that You |
| | | meet the following conditions: |
| | | |
| | | (a) You must give any other recipients of the Work or |
| | | Derivative Works a copy of this License; and |
| | | |
| | | (b) You must cause any modified files to carry prominent notices |
| | | stating that You changed the files; and |
| | | |
| | | (c) You must retain, in the Source form of any Derivative Works |
| | | that You distribute, all copyright, patent, trademark, and |
| | | attribution notices from the Source form of the Work, |
| | | excluding those notices that do not pertain to any part of |
| | | the Derivative Works; and |
| | | |
| | | (d) If the Work includes a "NOTICE" text file as part of its |
| | | distribution, then any Derivative Works that You distribute must |
| | | include a readable copy of the attribution notices contained |
| | | within such NOTICE file, excluding those notices that do not |
| | | pertain to any part of the Derivative Works, in at least one |
| | | of the following places: within a NOTICE text file distributed |
| | | as part of the Derivative Works; within the Source form or |
| | | documentation, if provided along with the Derivative Works; or, |
| | | within a display generated by the Derivative Works, if and |
| | | wherever such third-party notices normally appear. The contents |
| | | of the NOTICE file are for informational purposes only and |
| | | do not modify the License. You may add Your own attribution |
| | | notices within Derivative Works that You distribute, alongside |
| | | or as an addendum to the NOTICE text from the Work, provided |
| | | that such additional attribution notices cannot be construed |
| | | as modifying the License. |
| | | |
| | | You may add Your own copyright statement to Your modifications and |
| | | may provide additional or different license terms and conditions |
| | | for use, reproduction, or distribution of Your modifications, or |
| | | for any such Derivative Works as a whole, provided Your use, |
| | | reproduction, and distribution of the Work otherwise complies with |
| | | the conditions stated in this License. |
| | | |
| | | 5. Submission of Contributions. Unless You explicitly state otherwise, |
| | | any Contribution intentionally submitted for inclusion in the Work |
| | | by You to the Licensor shall be under the terms and conditions of |
| | | this License, without any additional terms or conditions. |
| | | Notwithstanding the above, nothing herein shall supersede or modify |
| | | the terms of any separate license agreement you may have executed |
| | | with Licensor regarding such Contributions. |
| | | |
| | | 6. Trademarks. This License does not grant permission to use the trade |
| | | names, trademarks, service marks, or product names of the Licensor, |
| | | except as required for reasonable and customary use in describing the |
| | | origin of the Work and reproducing the content of the NOTICE file. |
| | | |
| | | 7. Disclaimer of Warranty. Unless required by applicable law or |
| | | agreed to in writing, Licensor provides the Work (and each |
| | | Contributor provides its Contributions) on an "AS IS" BASIS, |
| | | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
| | | implied, including, without limitation, any warranties or conditions |
| | | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A |
| | | PARTICULAR PURPOSE. You are solely responsible for determining the |
| | | appropriateness of using or redistributing the Work and assume any |
| | | risks associated with Your exercise of permissions under this License. |
| | | |
| | | 8. Limitation of Liability. In no event and under no legal theory, |
| | | whether in tort (including negligence), contract, or otherwise, |
| | | unless required by applicable law (such as deliberate and grossly |
| | | negligent acts) or agreed to in writing, shall any Contributor be |
| | | liable to You for damages, including any direct, indirect, special, |
| | | incidental, or consequential damages of any character arising as a |
| | | result of this License or out of the use or inability to use the |
| | | Work (including but not limited to damages for loss of goodwill, |
| | | work stoppage, computer failure or malfunction, or any and all |
| | | other commercial damages or losses), even if such Contributor |
| | | has been advised of the possibility of such damages. |
| | | |
| | | 9. Accepting Warranty or Additional Liability. While redistributing |
| | | the Work or Derivative Works thereof, You may choose to offer, |
| | | and charge a fee for, acceptance of support, warranty, indemnity, |
| | | or other liability obligations and/or rights consistent with this |
| | | License. However, in accepting such obligations, You may act only |
| | | on Your own behalf and on Your sole responsibility, not on behalf |
| | | of any other Contributor, and only if You agree to indemnify, |
| | | defend, and hold each Contributor harmless for any liability |
| | | incurred by, or claims asserted against, such Contributor by reason |
| | | of your accepting any such warranty or additional liability. |
| | | |
| | | END OF TERMS AND CONDITIONS |
| | | |
| | | APPENDIX: How to apply the Apache License to your work. |
| | | |
| | | To apply the Apache License to your work, attach the following |
| | | boilerplate notice, with the fields enclosed by brackets "[]" |
| | | replaced with your own identifying information. (Don't include |
| | | the brackets!) The text should be enclosed in the appropriate |
| | | comment syntax for the file format. We also recommend that a |
| | | file or class name and description of purpose be included on the |
| | | same "printed page" as the copyright notice for easier |
| | | identification within third-party archives. |
| | | |
| | | Copyright [yyyy] [name of copyright owner] |
| | | |
| | | Licensed under the Apache License, Version 2.0 (the "License"); |
| | | you may not use this file except in compliance with the License. |
| | | You may obtain a copy of the License at |
| | | |
| | | http://www.apache.org/licenses/LICENSE-2.0 |
| | | |
| | | Unless required by applicable law or agreed to in writing, software |
| | | distributed under the License is distributed on an "AS IS" BASIS, |
| | | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | See the License for the specific language governing permissions and |
| | | limitations under the License. |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | **QQ交æµç¾¤ï¼ 713105837 弿ºé¡¹ç®Vue/Vue3/React-big-screen交æµç¾¤** |
| | | |
| | | QQ群äºç»´ç ï¼ |
| | | |
| | |  |
| | | |
| | | ## ä¸ãé¡¹ç®æè¿° |
| | | |
| | | - ä¸ä¸ªåºäº VueãDatavãEchart æ¡æ¶ç " **æ°æ®å¤§å±é¡¹ç®** "ï¼éè¿ Vue ç»ä»¶å®ç°æ°æ®å¨æå·æ°æ¸²æï¼å
é¨å¾è¡¨å¯å®ç°èªç±æ¿æ¢ãé¨åå¾è¡¨ä½¿ç¨ DataV èªå¸¦ç»ä»¶ï¼å¯è¿è¡æ´æ¹ï¼è¯¦æ
请ç¹å»ä¸æ¹ DataV ææ¡£ã |
| | | |
| | | - [**Vue3 çæ¬è¯·ç¹å»è¿éæ¥çï¼ä½¿ç¨ Hooks+TypeScript å®ç°ï¼å
¨æ°å
容çä½ æ¢ç´¢!**](https://gitee.com/MTrun/vue-big-screen-plugin) |
| | | - [**React çæ¬è¯·ç¹å»è¿éæ¥çï¼å
¨æ°çé¢è¶
级好çï¼ï¼ï¼**](https://gitee.com/MTrun/react-big-screen) |
| | | - 项ç®éè¦å
¨å±å±ç¤ºï¼æ F11ï¼ã |
| | | - 项ç®é¨ååºå使ç¨äºå
¨å±æ³¨åæ¹å¼ï¼å¢å äºæå
ä½ç§¯ï¼å¨å®é
è¿ç¨ä¸è¯·ä½¿ç¨ **æéå¼å
¥**ã |
| | | - æå项ç®ä¹åï¼å»ºè®®æç
§èªå·±çåè½åºåéå½åæä»¶ï¼ç°ä»¥ç®åçä½ç½®è¿è¡åºåã |
| | | - 项ç®ç¯å¢ï¼Vue-cli-3.0ãDataV-2.7.3ãEcharts-4.6.0(妿5.xçæ¬æé®é¢ï¼è¯·åæ¢å°4.xçæ¬)ãWebpack-4.0ãNpm-6.13ãNode-v12.16ã |
| | | - 请æå master 忝ç代ç ï¼å
¶ä½åæ¯æ¯å¼å忝ã |
| | | - éè¦å
¶å®å°å¾æ°æ®çï¼è¯·æ¥çæçå
¶å®é¡¹ç®ï¼æä¸ä¸ªå°å¾åéï¼ |
| | | |
| | | åæ
龿¥ï¼ |
| | | |
| | | 1. [Vue 宿¹ææ¡£](https://cn.vuejs.org/v2/guide/instance.html) |
| | | 2. [DataV 宿¹ææ¡£](http://datav.jiaminghi.com/guide/) |
| | | 3. [echarts å®ä¾](https://echarts.apache.org/examples/zh/index.html)ï¼[echarts API ææ¡£](https://echarts.apache.org/zh/api.html#echarts) |
| | | 4. [é¡¹ç® gitee å°åï¼å½å
é度快ï¼](https://gitee.com/MTrun/big-screen-vue-datav) |
| | | |
| | | 项ç®å±ç¤º |
| | |  |
| | | |
| | | ## äºãä¸»è¦æä»¶ä»ç» |
| | | |
| | | | æä»¶ | ä½ç¨/åè½ | |
| | | | ------------------- | --------------------------------------------------------------------- | |
| | | | main.js | 主ç®å½æä»¶ï¼å¼å
¥ Echart/DataV çæä»¶ | |
| | | | utils | å·¥å
·å½æ°ä¸ mixins 彿°ç | |
| | | | views/ index.vue | 项ç®ä¸»ç»æ | |
| | | | views/å
¶ä½æä»¶ | çé¢å个åºåç»ä»¶ï¼æç
§ä½ç½®æ¥å½åï¼ | |
| | | | assets | éæèµæºç®å½ï¼æ¾ç½® logo ä¸èæ¯å¾ç | |
| | | | assets / style.scss | éç¨ CSS æä»¶ï¼å
¨å±é¡¹ç®å¿«æ·æ ·å¼è°è | |
| | | | assets / index.scss | Index çé¢ç CSS æä»¶ | |
| | | | components/echart | ææ echart å¾è¡¨ï¼æç
§ä½ç½®æ¥å½åï¼ | |
| | | | common/... | å
¨å±å°è£
ç ECharts å flexible æä»¶ä»£ç ï¼éé
å±å¹å°ºå¯¸ï¼å¯å®å¶åä¿®æ¹ï¼ | |
| | | |
| | | ## ä¸ã使ç¨ä»ç» |
| | | |
| | | ### å¯å¨é¡¹ç® |
| | | |
| | | éè¦æåå®è£
好 `nodejs` ä¸ `yarn`,ä¸è½½é¡¹ç®åå¨é¡¹ç®ä¸»ç®å½ä¸è¿è¡ `yarn` æåä¾èµå
ãå®è£
å®ä¾èµå
ä¹åç¶åä½¿ç¨ `vue-cli` æè
ç´æ¥ä½¿ç¨å½ä»¤`npm run serve`ï¼å°±å¯ä»¥å¯å¨é¡¹ç®ï¼å¯å¨é¡¹ç®åéè¦æå¨å
¨å±ï¼æ F11ï¼ã妿ç¼è¯é¡¹ç®çæ¶åæç¤ºæ²¡æ DataV æ¡æ¶çä¾èµï¼è¾å
¥ `npm install @jiaminghi/data-view` æè
`yarn add @jiaminghi/data-view` è¿è¡æå¨å®è£
ã |
| | | |
| | | ### å°è£
ç»ä»¶æ¸²æå¾è¡¨ |
| | | |
| | | ææç ECharts å¾è¡¨é½æ¯åºäº `common/echart/index.vue` å°è£
ç»ä»¶å建çï¼å·²ç»å¯¹æ°æ®åå±å¹æ¹å¨è¿è¡äºçå¬ï¼è½å¤å¨ææ¸²æå¾è¡¨æ°æ®å大å°ãå¨çå¬çªå£å°å¤§ç模åï¼ä½¿ç¨äºé²æå½æ°æ¥æ§å¶æ´æ°é¢çï¼è约æµè§å¨æ§è½ã |
| | | |
| | | 项ç®é
ç½®äºé»è®¤ç ECharts å¾è¡¨æ ·å¼ï¼æä»¶å°åï¼`common/echart/theme.json`ã |
| | | |
| | | å°è£
çæ¸²æå¾è¡¨ç»ä»¶æ¯æä¼ å
¥ä»¥ä¸åæ°ï¼å¯æ ¹æ®ä¸å¡éæ±èªè¡æ·»å /å é¤ã |
| | | |
| | | åæ°åç§° | ç±»å | ä½ç¨/åè½ | |
| | | | -------------------| --------- | ------------------------------| |
| | | | id | String | å¯ä¸ idï¼æ¸²æå¾è¡¨çèç¹ï¼éå¿
å¡«ï¼ä½¿ç¨äº $elï¼| |
| | | | className | String | classæ ·å¼åç§°ï¼éå¿
å¡«ï¼ | |
| | | | options | Object | ECharts é
ç½®ï¼å¿
å¡«ï¼ | |
| | | | height | String | å¾è¡¨é«åº¦ï¼å»ºè®®å¡«ï¼ | |
| | | | width | String | å¾è¡¨å®½åº¦ï¼å»ºè®®å¡«ï¼ | |
| | | |
| | | ### å¨ææ¸²æå¾è¡¨ |
| | | |
| | | å¨ææ¸²æå¾è¡¨æ¡ä¾ä¸º `components` ç®å½ä¸å个å¾è¡¨ç»ä»¶ï¼index æä»¶è´è´£æ°æ®è·ååå¤çï¼chart æä»¶è´è´£çå¬åæ°æ®æ¸²æã |
| | | |
| | | chart æä»¶ç主è¦é»è¾ä¸ºï¼ |
| | | |
| | | ```html |
| | | <template> |
| | | <div> |
| | | <Echart :options="options" id="id" height="height" width="width" ></Echart> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | // å¼å
¥å°è£
ç»ä»¶ |
| | | import Echart from '@/common/echart' |
| | | export default { |
| | | // å®ä¹é
ç½®æ°æ® |
| | | data(){ return { options: {}}}, |
| | | // 声æç»ä»¶ |
| | | components: { Echart}, |
| | | // æ¥æ¶æ°æ® |
| | | props: { |
| | | cdata: { |
| | | type: Object, |
| | | default: () => ({}) |
| | | }, |
| | | }, |
| | | // è¿è¡çå¬ï¼ä¹å¯ä»¥ä½¿ç¨ computed 计ç®å±æ§å®ç°æ¤åè½ |
| | | watch: { |
| | | cdata: { |
| | | handler (newData) { |
| | | this.options ={ |
| | | // è¿éç¼å ECharts é
ç½® |
| | | } |
| | | }, |
| | | // ç«å³çå¬ |
| | | immediate: true, |
| | | // 深度çå¬ |
| | | deep: true |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | ``` |
| | | |
| | | ### å¤ç¨å¾è¡¨ç»ä»¶ |
| | | |
| | | å¤ç¨å¾è¡¨ç»ä»¶æ¡ä¾ä¸ºä¸é´é¨åç `ä»»å¡éè¿çä¸ä»»å¡è¾¾æ ç` 模åï¼ä¸¤ä¸ªå¾è¡¨ç±»ä¼¼ï¼åºå«å¨äºé¢è²åä¸»è¦æ¸²ææ°æ®ãåªéè¦ä¼ å
¥å¯¹åºçå¯ä¸ id åæ ·å¼ï¼ç¶åå¨å¤ç¨çç»ä»¶ `components/echart/center/centerChartRate` éè¿è¡æ¥æ¶å¹¶å¨å¯¹åºä½ç½®èµå¼å³å¯ã |
| | | |
| | | å¦ï¼å¨è°ç¨å¤ `views/center.vue` éå»å®ä¹å¥½æ°æ®å¹¶ä¼ å
¥ç»ä»¶ |
| | | |
| | | ```js |
| | | //ç»ä»¶è°ç¨ |
| | | <span>仿¥ä»»å¡éè¿ç</span> |
| | | <centerChart :id="rate[0].id" :tips="rate[0].tips" :colorObj="rate[0].colorData" /> |
| | | |
| | | <span>仿¥ä»»å¡è¾¾æ ç</span> |
| | | <centerChart :id="rate[1].id" :tips="rate[1].tips" :colorObj="rate[1].colorData" /> |
| | | |
| | | ... |
| | | import centerChart from "@/components/echart/center/centerChartRate"; |
| | | |
| | | data() { |
| | | return { |
| | | rate: [ |
| | | { |
| | | id: "centerRate1", |
| | | tips: 60, |
| | | ... |
| | | }, |
| | | { |
| | | id: "centerRate2", |
| | | tips: 40, |
| | | colorData: { |
| | | ... |
| | | } |
| | | } |
| | | ] |
| | | } |
| | | } |
| | | ``` |
| | | |
| | | ### æ´æ¢è¾¹æ¡ |
| | | |
| | | è¾¹æ¡æ¯ä½¿ç¨äº DataV èªå¸¦çç»ä»¶ï¼åªéè¦å» views ç®å½ä¸å»å¯»æ¾å¯¹åºçä½ç½®å»æ¥æ¾å¹¶æ¿æ¢å°±å¯ä»¥ï¼å
·ä½çç§ç±»è¯·å» DavaV å®ç½æ¥ç |
| | | å¦ï¼ |
| | | |
| | | ```html |
| | | <dv-border-box-1></dv-border-box-1> |
| | | <dv-border-box-2></dv-border-box-2> |
| | | <dv-border-box-3></dv-border-box-3> |
| | | ``` |
| | | |
| | | ### æ´æ¢å¾è¡¨ |
| | | |
| | | ç´æ¥è¿å
¥ `components/echart` ä¸çæä»¶ä¿®æ¹æä½ è¦ç echarts æ¨¡æ ·ï¼å¯ä»¥å»[echarts 宿¹ç¤¾åº](https://gallery.echartsjs.com/explore.html#sort=rank~timeframe=all~author=all)é颿¥çæ¡ä¾ã |
| | | |
| | | ### Mixins è§£å³èªéåºéé
åè½ |
| | | |
| | | ä½¿ç¨ mixins 注å
¥è§£å³äºçé¢å¤§å°åå¨å¾è¡¨èªéåºéé
çåè½ï¼å½æ°å¨ `utils/resizeMixins.js` ä¸ï¼åºç¨å¨ `common/echart/index.vue` çå°è£
渲æç»ä»¶ï¼ä¸»è¦æ¯å¯¹ `this.chart` è¿è¡äºåè½æ³¨å
¥ã |
| | | |
| | | ### å±å¹éé
|
| | | |
| | | 1.5 çæ¬é¡¹ç®æ¾å¼äº flexible æä»¶æ¹æ¡ï¼å° rem æ¹åpxï¼ä½¿ç¨æ´æµç¨éç¨ç `css3ï¼scale` ç¼©æ¾æ¹æ¡ï¼éè¿ `ref` æå `views/index`ï¼å±å¹æ¹åæ¶ç¼©æ¾å
容ã项ç®çåºåå°ºå¯¸æ¯ `1920px*1080px`ï¼æä»¥æ¯æåæ¯ä¾å±å¹ 100% å¡«å
ï¼å¦æé忝ä¾åä¼èªå¨è®¡ç®æ¯ä¾å±
ä¸å¡«å
ï¼ä¸è¶³çé¨ååçç½ãå®ç°ä»£ç å¨ `src/utils/userDraw` ï¼å¦ææå
¶å®çéé
æ¹æ¡ï¼æ¬¢è¿äº¤æµã |
| | | |
| | | ### è¯·æ±æ°æ® |
| | | |
| | | ç°å¨çé¡¹ç®æªä½¿ç¨ååç«¯æ°æ®è¯·æ±ï¼å»ºè®®ä½¿ç¨ axios è¿è¡æ°æ®è¯·æ±ï¼å¨ main.js ä½ç½®è¿è¡å
¨å±é
ç½®ã |
| | | |
| | | - axios ç main.js é
ç½®åèèä¾ï¼å 人èå¼ï¼ |
| | | |
| | | ```js |
| | | import axios from 'axios'; |
| | | |
| | | //ææ¹æ³æ¾å°vueçååä¸ï¼è¿æ ·å°±å¯ä»¥å
¨å±ä½¿ç¨äº |
| | | Vue.prototype.$http = axios.create({ |
| | | //设置20ç§è¶
æ¶æ¶é´ |
| | | timeout: 20000, |
| | | baseURL: 'http://172.0.0.1:80080', //è¿éåå端å°å |
| | | }); |
| | | ``` |
| | | |
| | | ## åãæ´æ°æ
åµ |
| | | |
| | | 1. å¢å äº Echart ç»ä»¶å¤ç¨çåè½ï¼å¦ï¼ä¸é´ä»»å¡è¾¾æ çç两个ç¾åæ¯å¾ä½¿ç¨çæ¯åä¸ä¸ªç»ä»¶ã |
| | | 2. ä¿®å¤äºå¤´é¨å³ä¾§ç徿¡æ¡ä¸å¯¹ç§°çé®é¢ã |
| | | 3. ä½¿ç¨ Mixins 注å
¥å¾è¡¨ååºå¼ä»£ç ï¼scaleæ¹æ¡ä¹åæ é使ç¨ï¼ã |
| | | 4. vue-awesome æ¹ææéå¼å
¥çæ¹å¼ã |
| | | 5. å°è£
渲æå½æ°ï¼æ½ç¦»äºæ°æ®ä½¿é»è¾æ´å æ¸
æ°ã |
| | | 6. æ°å¢å°å¾ç»ä»¶ï¼å¹¶æ·»å èªå¨è½®æåè½ |
| | | 7. å°éé
æ¹æ¡ä» rem æ¹æ scale |
| | | ## äºãå
¶ä½ |
| | | |
| | | è¿ä¸ªé¡¹ç®æ¯ä¸ªäººçä½åï¼é¾å
伿é®é¢å BUGï¼å¦ææé®é¢è¯·è¿è¡è¯è®ºï¼æä¹ä¼å°½å廿´æ°ï¼èªå·±ä¹å¨å端å¦ä¹ çè·¯ä¸ï¼æ¬¢è¿äº¤æµï¼é常æè°¢ï¼ |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | module.exports = { |
| | | presets: [ |
| | | '@vue/cli-plugin-babel/preset' |
| | | ] |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | "name": "big-screen-vue-datav", |
| | | "version": "1.5.1", |
| | | "private": true, |
| | | "scripts": { |
| | | "serve": "vue-cli-service serve", |
| | | "build": "vue-cli-service build", |
| | | "lint": "vue-cli-service lint" |
| | | }, |
| | | "dependencies": { |
| | | "@jiaminghi/data-view": "^2.7.3", |
| | | "@types/echarts": "^4.4.3", |
| | | "@vue/cli-plugin-babel": "^5.0.4", |
| | | "@vue/cli-plugin-eslint": "^5.0.4", |
| | | "@vue/composition-api": "^1.4.9", |
| | | "@vue/shared": "^3.2.33", |
| | | "axios": "^0.26.1", |
| | | "babel-loader": "^8.2.5", |
| | | "cache-loader": "^4.1.0", |
| | | "core-js": "^3.6.4", |
| | | "echarts": "^4.6.0", |
| | | "element-plus": "^2.1.10", |
| | | "element-ui": "^2.15.8", |
| | | "vue": "^2.6.11", |
| | | "vue-awesome": "^4.0.2", |
| | | "vue-axios": "^3.4.1", |
| | | "vue-loader": "^17.0.0", |
| | | "vue-resource": "^1.5.3", |
| | | "vue-router": "^3.1.5", |
| | | "vuex": "^3.1.2", |
| | | "yarn": "^1.22.18" |
| | | }, |
| | | "devDependencies": { |
| | | "@vue/cli-plugin-babel": "^4.2.0", |
| | | "@vue/cli-plugin-eslint": "^4.2.0", |
| | | "@vue/cli-service": "^4.2.0", |
| | | "babel-eslint": "^10.0.3", |
| | | "eslint": "^6.7.2", |
| | | "eslint-plugin-vue": "^6.1.2", |
| | | "sass": "^1.25.0", |
| | | "sass-loader": "^8.0.2", |
| | | "vue-template-compiler": "^2.6.11" |
| | | }, |
| | | "eslintConfig": { |
| | | "root": true, |
| | | "env": { |
| | | "node": true |
| | | }, |
| | | "extends": [ |
| | | "plugin:vue/essential", |
| | | "eslint:recommended" |
| | | ], |
| | | "parserOptions": { |
| | | "parser": "babel-eslint" |
| | | }, |
| | | "rules": { |
| | | "vue/no-unused-components": "off", |
| | | "no-unused-vars": "off" |
| | | } |
| | | }, |
| | | "browserslist": [ |
| | | "> 1%", |
| | | "last 2 versions" |
| | | ] |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <!DOCTYPE html> |
| | | <html lang="en"> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| | | <!-- <meta name="viewport" content="width=device-width,initial-scale=1.0"> --> |
| | | <meta name="viewport" content="width=device-width,user-scalable=yes, initial-scale=0.4, maxmum-scale=1.0, minimum-scale=0.4"> |
| | | <link rel="icon" href="<%= BASE_URL %>favicon.ico"> |
| | | <title><%= htmlWebpackPlugin.options.title %></title> |
| | | </head> |
| | | <body> |
| | | <noscript> |
| | | <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> |
| | | </noscript> |
| | | <div id="app"></div> |
| | | <!-- built files will be auto injected --> |
| | | </body> |
| | | </html> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div id="app"> |
| | | <router-view /> |
| | | </div> |
| | | </template> |
| | | |
| | | <style lang="scss" scoped> |
| | | #app { |
| | | width: 100vw; |
| | | height: 100vh; |
| | | background-color: #020308; |
| | | overflow: hidden; |
| | | } |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | // è¿ä¸ªæ¶axiosçé
ç½® |
| | | import axios from 'axios'; |
| | | // import { config } from 'vue/types/umd'; |
| | | axios.defaults.baseURL = 'http://localhost:5000';//'http://192.168.2.110:8098';// |
| | | // é误信æ¯å¤ç |
| | | const errorHandle = (status, other) => { |
| | | switch (status) { |
| | | case 400: |
| | | console.log('ä¿¡æ¯éªè¯å¤±è´¥'); |
| | | break; |
| | | case 401: |
| | | console.log('认è¯å¤±è´¥'); |
| | | break; |
| | | case 403: |
| | | localStorage.removeItem("token"); |
| | | console.log('tokenæ ¡éªå¤±è´¥'); |
| | | break; |
| | | case 404: |
| | | console.log('请æ±èµæºä¸åå¨'); |
| | | break; |
| | | default : |
| | | console.log(other); |
| | | break; |
| | | } |
| | | } |
| | | // æ·»å è¯·æ±æ¦æªå¨ |
| | | axios.interceptors.request.use(function (config) { |
| | | // å¨åé请æ±ä¹ååäºä»ä¹ |
| | | // console.log(config); |
| | | if(localStorage.elementToken){ |
| | | config.headers.Authorization=localStorage.elementToken; |
| | | } |
| | | // console.log(config); |
| | | return config; |
| | | }, function (error) { |
| | | // 对请æ±é误åäºä»ä¹ |
| | | return Promise.reject(error); |
| | | }); |
| | | |
| | | // æ·»å ååºæ¦æªå¨ |
| | | axios.interceptors.response.use(function (response) { |
| | | // 对ååºæ°æ®åç¹ä»ä¹ |
| | | // console.log(); |
| | | // console.log(response.data.token); |
| | | // response.headers['Authorization'] = response.data.token; |
| | | return response.status=== 200 ? Promise.resolve(response): Promise.reject(response); |
| | | }, function (error) { |
| | | // 对ååºé误åç¹ä»ä¹ |
| | | const {response}=error; |
| | | if(response){ |
| | | errorHandle(response.status,response.data.message) |
| | | return Promise.reject(response.data); |
| | | }else{ |
| | | console.log('æäº'); |
| | | } |
| | | }); |
| | | export default axios; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | import axios from './ajax'; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | // é¢è² |
| | | $colors: ( |
| | | "primary": #1A5CD7, |
| | | "info-1": #4394e4, |
| | | "info": #4b67af, |
| | | "white": #ffffff, |
| | | "light": #f9f9f9, |
| | | "grey-1": #999999, |
| | | "grey": #666666, |
| | | "dark-1": #5f5f5f, |
| | | "dark": #222222, |
| | | "black-1": #171823, |
| | | "black": #000000, |
| | | "icon": #5cd9e8 |
| | | ); |
| | | |
| | | // åä½å¤§å° |
| | | $base-font-size: 0.2rem; |
| | | $font-sizes: ( |
| | | xxs: 0.1, |
| | | //8px |
| | | xs: 0.125, |
| | | //10px |
| | | sm: 0.2875, |
| | | //12px |
| | | md: 0.1625, |
| | | //13px |
| | | lg: 0.175, |
| | | //14px |
| | | xl: 0.2, |
| | | //16px |
| | | xxl: 0.225, |
| | | //18px |
| | | xxxl: 0.25 //20px,,,, |
| | | ); |
| | | |
| | | // å®½é« |
| | | .w-100 { |
| | | width: 100%; |
| | | } |
| | | .h-100 { |
| | | height: 100%; |
| | | } |
| | | |
| | | //flex |
| | | .d-flex { |
| | | display: flex; |
| | | } |
| | | .flex-column { |
| | | flex-direction: column; |
| | | } |
| | | .flex-wrap { |
| | | flex-wrap: wrap; |
| | | } |
| | | .flex-nowrap { |
| | | flex-wrap: nowrap; |
| | | } |
| | | $flex-jc: ( |
| | | start: flex-start, |
| | | end: flex-end, |
| | | center: center, |
| | | between: space-between, |
| | | around: space-around, |
| | | evenly: space-evenly, |
| | | ); |
| | | |
| | | $flex-ai: ( |
| | | start: flex-start, |
| | | end: flex-end, |
| | | center: center, |
| | | stretch: stretch, |
| | | ); |
| | | |
| | | .flex-1 { |
| | | flex: 1; |
| | | } |
| | | |
| | | //.mt-1 => margin top |
| | | //spacing |
| | | $spacing-types: ( |
| | | m: margin, |
| | | p: padding, |
| | | ); |
| | | $spacing-directions: ( |
| | | t: top, |
| | | r: right, |
| | | b: bottom, |
| | | l: left, |
| | | ); |
| | | $spacing-base-size: 0.5rem; |
| | | $spacing-sizes: ( |
| | | 0: 0, |
| | | 1: 0.5, |
| | | 2: 1, |
| | | 3: 1.5, |
| | | 4: 2, |
| | | 5: 2.5, |
| | | ); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | #index { |
| | | color: #d3d6dd; |
| | | width: 1920px; |
| | | height: 1080px; |
| | | position: absolute; |
| | | top: 50%; |
| | | left: 50%; |
| | | transform: translate(-50%, -50%); |
| | | transform-origin: left top; |
| | | overflow: hidden; |
| | | |
| | | .bg { |
| | | width: 100%; |
| | | height: 100%; |
| | | padding: 25px 16px 0 16px; |
| | | background-image: url("../assets/bg5.jpg"); |
| | | // url("../assets/bg5.jpg"); |
| | | background-size: cover; |
| | | background-position: center center; |
| | | } |
| | | |
| | | .host-body { |
| | | .dv-dec-10, |
| | | .dv-dec-10-s { |
| | | width: 133.3%; |
| | | height: 5px; |
| | | } |
| | | .dv-dec-10-s { |
| | | transform: rotateY(180deg); |
| | | } |
| | | .dv-dec-8 { |
| | | width: 200px; |
| | | height: 50px; |
| | | } |
| | | .title { |
| | | position: relative; |
| | | width: 500px; |
| | | text-align: center; |
| | | background-size: cover; |
| | | background-repeat: no-repeat; |
| | | |
| | | .title-text { |
| | | font-size: 25px; |
| | | position: absolute; |
| | | padding-top: 10px; |
| | | left: 30%; |
| | | transform: translate(-50%); |
| | | } |
| | | |
| | | .dv-dec-6 { |
| | | position: absolute; |
| | | bottom: -30px; |
| | | left: 30%; |
| | | width: 250px; |
| | | height: 8px; |
| | | transform: translate(-50%); |
| | | } |
| | | } |
| | | |
| | | // 第äºè¡ |
| | | .aside-width { |
| | | width: 40%; |
| | | } |
| | | .react-r-s, |
| | | .react-l-s { |
| | | background-color: #0f1325; |
| | | } |
| | | |
| | | // å¹³è¡å边形 |
| | | .react-right { |
| | | &.react-l-s { |
| | | text-align: right; |
| | | width: 500px; |
| | | } |
| | | font-size: 18px; |
| | | width: 300px; |
| | | line-height: 30px; |
| | | text-align: center; |
| | | transform: skewX(-45deg); |
| | | |
| | | .react-after { |
| | | position: absolute; |
| | | right: -25px; |
| | | top: 0; |
| | | height: 50px; |
| | | width: 50px; |
| | | background-color: #0f1325; |
| | | transform: skewX(45deg); |
| | | } |
| | | |
| | | .text { |
| | | padding-left: 80px; |
| | | display: inline-block; |
| | | transform: skewX(45deg); |
| | | } |
| | | } |
| | | |
| | | .react-left { |
| | | &.react-l-s { |
| | | width: 500px; |
| | | text-align: left; |
| | | } |
| | | font-size: 18px; |
| | | width: 300px; |
| | | height: 50px; |
| | | line-height: 50px; |
| | | text-align: center; |
| | | transform: skewX(45deg); |
| | | background-color: #0f1325; |
| | | |
| | | .react-before { |
| | | position: absolute; |
| | | left: -25px; |
| | | top: 0; |
| | | height: 50px; |
| | | width: 50px; |
| | | background-color: #0f1325; |
| | | transform: skewX(-45deg); |
| | | } |
| | | |
| | | .text { |
| | | display: inline-block; |
| | | transform: skewX(-45deg); |
| | | } |
| | | } |
| | | |
| | | .body-box { |
| | | margin-top: 1px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | //䏿¹åºåçå¸å± |
| | | .content-box { |
| | | display: grid; |
| | | grid-template-columns:35% 65%; |
| | | } |
| | | |
| | | // åºé¨æ°æ® |
| | | .bototm-box { |
| | | margin-top: 1px; |
| | | display: grid; |
| | | grid-template-columns: 35% 35% 30%; |
| | | } |
| | | } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | @import "./variables"; |
| | | |
| | | // å
¨å±æ ·å¼ |
| | | * { |
| | | margin: 0; |
| | | padding: 0; |
| | | list-style-type: none; |
| | | outline: none; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | html { |
| | | margin: 0; |
| | | padding: 0; |
| | | } |
| | | |
| | | body { |
| | | font-family: Arial, Helvetica, sans-serif; |
| | | line-height: 1.2em; |
| | | background-color: #f1f1f1; |
| | | margin: 0; |
| | | padding: 0; |
| | | } |
| | | |
| | | a { |
| | | color: #343440; |
| | | text-decoration: none; |
| | | } |
| | | |
| | | .clearfix { |
| | | &::after { |
| | | content: ""; |
| | | display: table; |
| | | height: 0; |
| | | line-height: 0; |
| | | visibility: hidden; |
| | | clear: both; |
| | | } |
| | | } |
| | | |
| | | //æµ®å¨ |
| | | .float-r { |
| | | float: right; |
| | | } |
| | | |
| | | //æµ®å¨ |
| | | .float-l { |
| | | float: left; |
| | | } |
| | | |
| | | // åä½å ç² |
| | | .fw-b { |
| | | font-weight: bold; |
| | | } |
| | | |
| | | //æç« ä¸è¡æ¾ç¤ºï¼å¤ä½çç¥å·æ¾ç¤º |
| | | .title-item { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | white-space: nowrap; |
| | | } |
| | | |
| | | .bg-color-black { |
| | | background-color: rgba(19, 25, 47, 0.6); |
| | | } |
| | | |
| | | .bg-color-blue { |
| | | background-color: #1a5cd7; |
| | | } |
| | | |
| | | .colorBlack { |
| | | color: #272727 !important; |
| | | |
| | | &:hover { |
| | | color: #272727 !important; |
| | | } |
| | | } |
| | | |
| | | .colorGrass { |
| | | color: #33cea0; |
| | | |
| | | &:hover { |
| | | color: #33cea0 !important; |
| | | } |
| | | } |
| | | |
| | | .colorRed { |
| | | color: #ff5722; |
| | | |
| | | &:hover { |
| | | color: #ff5722 !important; |
| | | } |
| | | } |
| | | |
| | | .colorText { |
| | | color: #d3d6dd !important; |
| | | |
| | | &:hover { |
| | | color: #d3d6dd !important; |
| | | } |
| | | } |
| | | |
| | | .colorBlue { |
| | | color: #257dff !important; |
| | | |
| | | &:hover { |
| | | color: #257dff !important; |
| | | } |
| | | } |
| | | |
| | | //é¢è² |
| | | @each $colorkey, $color in $colors { |
| | | .text-#{$colorkey} { |
| | | color: $color; |
| | | } |
| | | |
| | | .bg-#{$colorkey} { |
| | | background-color: $color; |
| | | } |
| | | } |
| | | |
| | | //å¯¹é½ |
| | | @each $var in (left, center, right) { |
| | | .text-#{$var} { |
| | | text-align: $var !important; |
| | | } |
| | | } |
| | | |
| | | //flex |
| | | @each $key, $value in $flex-jc { |
| | | .jc-#{$key} { |
| | | justify-content: $value; |
| | | } |
| | | } |
| | | |
| | | @each $key, $value in $flex-ai { |
| | | .ai-#{$key} { |
| | | align-items: $value; |
| | | } |
| | | } |
| | | |
| | | //åä½ |
| | | @each $fontkey, $fontvalue in $font-sizes { |
| | | .fs-#{$fontkey} { |
| | | font-size: $fontvalue * $base-font-size; |
| | | } |
| | | } |
| | | |
| | | //.mt-1 => margin top |
| | | //spacing |
| | | |
| | | @each $typekey, $type in $spacing-types { |
| | | //.m-1 |
| | | @each $sizekey, $size in $spacing-sizes { |
| | | .#{$typekey}-#{$sizekey} { |
| | | #{$type}: $size * $spacing-base-size; |
| | | } |
| | | } |
| | | |
| | | //.mx-1 |
| | | @each $sizekey, $size in $spacing-sizes { |
| | | .#{$typekey}x-#{$sizekey} { |
| | | #{$type}-left: $size * $spacing-base-size; |
| | | #{$type}-right: $size * $spacing-base-size; |
| | | } |
| | | |
| | | .#{$typekey}y-#{$sizekey} { |
| | | #{$type}-top: $size * $spacing-base-size; |
| | | #{$type}-bottom: $size * $spacing-base-size; |
| | | } |
| | | } |
| | | |
| | | //.mt-1 |
| | | @each $directionkey, $direction in $spacing-directions { |
| | | @each $sizekey, $size in $spacing-sizes { |
| | | .#{$typekey}#{$directionkey}-#{$sizekey} { |
| | | #{$type}-#{$direction}: $size * $spacing-base-size; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .#{$typekey} { |
| | | #{$type}: 0; |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div :id="id" :class="className" :style="{ height: height, width: width }" /> |
| | | </template> |
| | | |
| | | <script> |
| | | import tdTheme from './theme.json' // å¼å
¥é»è®¤ä¸»é¢ |
| | | import '../map/fujian.js' |
| | | |
| | | export default { |
| | | name: 'echart', |
| | | props: { |
| | | className: { |
| | | type: String, |
| | | default: 'chart' |
| | | }, |
| | | id: { |
| | | type: String, |
| | | default: 'chart' |
| | | }, |
| | | width: { |
| | | type: String, |
| | | default: '100%' |
| | | }, |
| | | height: { |
| | | type: String, |
| | | default: '2.5rem' |
| | | }, |
| | | options: { |
| | | type: Object, |
| | | default: ()=>({}) |
| | | } |
| | | }, |
| | | data () { |
| | | return { |
| | | chart: null |
| | | } |
| | | }, |
| | | watch: { |
| | | options: { |
| | | handler (options) { |
| | | // 设置trueæ¸
空echartç¼å |
| | | this.chart.setOption(options, true) |
| | | }, |
| | | deep: true |
| | | } |
| | | }, |
| | | mounted () { |
| | | this.$echarts.registerTheme('tdTheme', tdTheme); // è¦çé»è®¤ä¸»é¢ |
| | | this.initChart(); |
| | | }, |
| | | beforeDestroy () { |
| | | this.chart.dispose() |
| | | this.chart = null |
| | | }, |
| | | methods: { |
| | | initChart () { |
| | | // åå§åechart |
| | | this.chart = this.$echarts.init(this.$el, 'tdTheme') |
| | | this.chart.setOption(this.options, true) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | "color": [ |
| | | "#2d8cf0", |
| | | "#19be6b", |
| | | "#ff9900", |
| | | "#E46CBB", |
| | | "#9A66E4", |
| | | "#ed3f14" |
| | | ], |
| | | "backgroundColor": "rgba(0,0,0,0)", |
| | | "textStyle": {}, |
| | | "title": { |
| | | "textStyle": { |
| | | "color": "#516b91" |
| | | }, |
| | | "subtextStyle": { |
| | | "color": "#93b7e3" |
| | | } |
| | | }, |
| | | "line": { |
| | | "itemStyle": { |
| | | "normal": { |
| | | "borderWidth": "2" |
| | | } |
| | | }, |
| | | "lineStyle": { |
| | | "normal": { |
| | | "width": "2" |
| | | } |
| | | }, |
| | | "symbolSize": "6", |
| | | "symbol": "emptyCircle", |
| | | "smooth": true |
| | | }, |
| | | "radar": { |
| | | "itemStyle": { |
| | | "normal": { |
| | | "borderWidth": "2" |
| | | } |
| | | }, |
| | | "lineStyle": { |
| | | "normal": { |
| | | "width": "2" |
| | | } |
| | | }, |
| | | "symbolSize": "6", |
| | | "symbol": "emptyCircle", |
| | | "smooth": true |
| | | }, |
| | | "bar": { |
| | | "itemStyle": { |
| | | "normal": { |
| | | "barBorderWidth": 0, |
| | | "barBorderColor": "#ccc" |
| | | }, |
| | | "emphasis": { |
| | | "barBorderWidth": 0, |
| | | "barBorderColor": "#ccc" |
| | | } |
| | | } |
| | | }, |
| | | "pie": { |
| | | "itemStyle": { |
| | | "normal": { |
| | | "borderWidth": 0, |
| | | "borderColor": "#ccc" |
| | | }, |
| | | "emphasis": { |
| | | "borderWidth": 0, |
| | | "borderColor": "#ccc" |
| | | } |
| | | } |
| | | }, |
| | | "scatter": { |
| | | "itemStyle": { |
| | | "normal": { |
| | | "borderWidth": 0, |
| | | "borderColor": "#ccc" |
| | | }, |
| | | "emphasis": { |
| | | "borderWidth": 0, |
| | | "borderColor": "#ccc" |
| | | } |
| | | } |
| | | }, |
| | | "boxplot": { |
| | | "itemStyle": { |
| | | "normal": { |
| | | "borderWidth": 0, |
| | | "borderColor": "#ccc" |
| | | }, |
| | | "emphasis": { |
| | | "borderWidth": 0, |
| | | "borderColor": "#ccc" |
| | | } |
| | | } |
| | | }, |
| | | "parallel": { |
| | | "itemStyle": { |
| | | "normal": { |
| | | "borderWidth": 0, |
| | | "borderColor": "#ccc" |
| | | }, |
| | | "emphasis": { |
| | | "borderWidth": 0, |
| | | "borderColor": "#ccc" |
| | | } |
| | | } |
| | | }, |
| | | "sankey": { |
| | | "itemStyle": { |
| | | "normal": { |
| | | "borderWidth": 0, |
| | | "borderColor": "#ccc" |
| | | }, |
| | | "emphasis": { |
| | | "borderWidth": 0, |
| | | "borderColor": "#ccc" |
| | | } |
| | | } |
| | | }, |
| | | "funnel": { |
| | | "itemStyle": { |
| | | "normal": { |
| | | "borderWidth": 0, |
| | | "borderColor": "#ccc" |
| | | }, |
| | | "emphasis": { |
| | | "borderWidth": 0, |
| | | "borderColor": "#ccc" |
| | | } |
| | | } |
| | | }, |
| | | "gauge": { |
| | | "itemStyle": { |
| | | "normal": { |
| | | "borderWidth": 0, |
| | | "borderColor": "#ccc" |
| | | }, |
| | | "emphasis": { |
| | | "borderWidth": 0, |
| | | "borderColor": "#ccc" |
| | | } |
| | | } |
| | | }, |
| | | "candlestick": { |
| | | "itemStyle": { |
| | | "normal": { |
| | | "color": "#edafda", |
| | | "color0": "transparent", |
| | | "borderColor": "#d680bc", |
| | | "borderColor0": "#8fd3e8", |
| | | "borderWidth": "2" |
| | | } |
| | | } |
| | | }, |
| | | "graph": { |
| | | "itemStyle": { |
| | | "normal": { |
| | | "borderWidth": 0, |
| | | "borderColor": "#ccc" |
| | | } |
| | | }, |
| | | "lineStyle": { |
| | | "normal": { |
| | | "width": 1, |
| | | "color": "#aaa" |
| | | } |
| | | }, |
| | | "symbolSize": "6", |
| | | "symbol": "emptyCircle", |
| | | "smooth": true, |
| | | "color": [ |
| | | "#2d8cf0", |
| | | "#19be6b", |
| | | "#f5ae4a", |
| | | "#9189d5", |
| | | "#56cae2", |
| | | "#cbb0e3" |
| | | ], |
| | | "label": { |
| | | "normal": { |
| | | "textStyle": { |
| | | "color": "#eee" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "map": { |
| | | "itemStyle": { |
| | | "normal": { |
| | | "areaColor": "#f3f3f3", |
| | | "borderColor": "#516b91", |
| | | "borderWidth": 0.5 |
| | | }, |
| | | "emphasis": { |
| | | "areaColor": "rgba(165,231,240,1)", |
| | | "borderColor": "#516b91", |
| | | "borderWidth": 1 |
| | | } |
| | | }, |
| | | "label": { |
| | | "normal": { |
| | | "textStyle": { |
| | | "color": "#000" |
| | | } |
| | | }, |
| | | "emphasis": { |
| | | "textStyle": { |
| | | "color": "rgb(81,107,145)" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "geo": { |
| | | "itemStyle": { |
| | | "normal": { |
| | | "areaColor": "#f3f3f3", |
| | | "borderColor": "#516b91", |
| | | "borderWidth": 0.5 |
| | | }, |
| | | "emphasis": { |
| | | "areaColor": "rgba(165,231,240,1)", |
| | | "borderColor": "#516b91", |
| | | "borderWidth": 1 |
| | | } |
| | | }, |
| | | "label": { |
| | | "normal": { |
| | | "textStyle": { |
| | | "color": "#000" |
| | | } |
| | | }, |
| | | "emphasis": { |
| | | "textStyle": { |
| | | "color": "rgb(81,107,145)" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "categoryAxis": { |
| | | "axisLine": { |
| | | "show": true, |
| | | "lineStyle": { |
| | | "color": "#cccccc" |
| | | } |
| | | }, |
| | | "axisTick": { |
| | | "show": false, |
| | | "lineStyle": { |
| | | "color": "#333" |
| | | } |
| | | }, |
| | | "axisLabel": { |
| | | "show": true, |
| | | "textStyle": { |
| | | "color": "#fff" |
| | | } |
| | | }, |
| | | "splitLine": { |
| | | "show": false, |
| | | "lineStyle": { |
| | | "color": [ |
| | | "#eeeeee" |
| | | ] |
| | | } |
| | | }, |
| | | "splitArea": { |
| | | "show": false, |
| | | "areaStyle": { |
| | | "color": [ |
| | | "rgba(250,250,250,0.05)", |
| | | "rgba(200,200,200,0.02)" |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | "valueAxis": { |
| | | "axisLine": { |
| | | "show": true, |
| | | "lineStyle": { |
| | | "color": "#cccccc" |
| | | } |
| | | }, |
| | | "axisTick": { |
| | | "show": false, |
| | | "lineStyle": { |
| | | "color": "#333" |
| | | } |
| | | }, |
| | | "axisLabel": { |
| | | "show": true, |
| | | "textStyle": { |
| | | "color": "#fff" |
| | | } |
| | | }, |
| | | "splitLine": { |
| | | "show": false, |
| | | "lineStyle": { |
| | | "color": [ |
| | | "#eeeeee" |
| | | ] |
| | | } |
| | | }, |
| | | "splitArea": { |
| | | "show": false, |
| | | "areaStyle": { |
| | | "color": [ |
| | | "rgba(250,250,250,0.05)", |
| | | "rgba(200,200,200,0.02)" |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | "logAxis": { |
| | | "axisLine": { |
| | | "show": true, |
| | | "lineStyle": { |
| | | "color": "#cccccc" |
| | | } |
| | | }, |
| | | "axisTick": { |
| | | "show": false, |
| | | "lineStyle": { |
| | | "color": "#333" |
| | | } |
| | | }, |
| | | "axisLabel": { |
| | | "show": true, |
| | | "textStyle": { |
| | | "color": "#999999" |
| | | } |
| | | }, |
| | | "splitLine": { |
| | | "show": true, |
| | | "lineStyle": { |
| | | "color": [ |
| | | "#eeeeee" |
| | | ] |
| | | } |
| | | }, |
| | | "splitArea": { |
| | | "show": false, |
| | | "areaStyle": { |
| | | "color": [ |
| | | "rgba(250,250,250,0.05)", |
| | | "rgba(200,200,200,0.02)" |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | "timeAxis": { |
| | | "axisLine": { |
| | | "show": true, |
| | | "lineStyle": { |
| | | "color": "#cccccc" |
| | | } |
| | | }, |
| | | "axisTick": { |
| | | "show": false, |
| | | "lineStyle": { |
| | | "color": "#333" |
| | | } |
| | | }, |
| | | "axisLabel": { |
| | | "show": true, |
| | | "textStyle": { |
| | | "color": "#999999" |
| | | } |
| | | }, |
| | | "splitLine": { |
| | | "show": true, |
| | | "lineStyle": { |
| | | "color": [ |
| | | "#eeeeee" |
| | | ] |
| | | } |
| | | }, |
| | | "splitArea": { |
| | | "show": false, |
| | | "areaStyle": { |
| | | "color": [ |
| | | "rgba(250,250,250,0.05)", |
| | | "rgba(200,200,200,0.02)" |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | "toolbox": { |
| | | "iconStyle": { |
| | | "normal": { |
| | | "borderColor": "#999" |
| | | }, |
| | | "emphasis": { |
| | | "borderColor": "#666" |
| | | } |
| | | } |
| | | }, |
| | | "legend": { |
| | | "textStyle": { |
| | | "color": "#fff" |
| | | } |
| | | }, |
| | | "tooltip": { |
| | | "axisPointer": { |
| | | "lineStyle": { |
| | | "color": "#ccc", |
| | | "width": 1 |
| | | }, |
| | | "crossStyle": { |
| | | "color": "#ccc", |
| | | "width": 1 |
| | | } |
| | | } |
| | | }, |
| | | "timeline": { |
| | | "lineStyle": { |
| | | "color": "#8fd3e8", |
| | | "width": 1 |
| | | }, |
| | | "itemStyle": { |
| | | "normal": { |
| | | "color": "#8fd3e8", |
| | | "borderWidth": 1 |
| | | }, |
| | | "emphasis": { |
| | | "color": "#8fd3e8" |
| | | } |
| | | }, |
| | | "controlStyle": { |
| | | "normal": { |
| | | "color": "#8fd3e8", |
| | | "borderColor": "#8fd3e8", |
| | | "borderWidth": 0.5 |
| | | }, |
| | | "emphasis": { |
| | | "color": "#8fd3e8", |
| | | "borderColor": "#8fd3e8", |
| | | "borderWidth": 0.5 |
| | | } |
| | | }, |
| | | "checkpointStyle": { |
| | | "color": "#8fd3e8", |
| | | "borderColor": "rgba(138,124,168,0.37)" |
| | | }, |
| | | "label": { |
| | | "normal": { |
| | | "textStyle": { |
| | | "color": "#8fd3e8" |
| | | } |
| | | }, |
| | | "emphasis": { |
| | | "textStyle": { |
| | | "color": "#8fd3e8" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "visualMap": { |
| | | "color": [ |
| | | "#516b91", |
| | | "#59c4e6", |
| | | "#a5e7f0" |
| | | ] |
| | | }, |
| | | "dataZoom": { |
| | | "backgroundColor": "rgba(0,0,0,0)", |
| | | "dataBackgroundColor": "rgba(255,255,255,0.3)", |
| | | "fillerColor": "rgba(167,183,204,0.4)", |
| | | "handleColor": "#a7b7cc", |
| | | "handleSize": "100%", |
| | | "textStyle": { |
| | | "color": "#333" |
| | | } |
| | | }, |
| | | "markPoint": { |
| | | "label": { |
| | | "normal": { |
| | | "textStyle": { |
| | | "color": "#eee" |
| | | } |
| | | }, |
| | | "emphasis": { |
| | | "textStyle": { |
| | | "color": "#eee" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Licensed to the Apache Software Foundation (ASF) under one |
| | | * or more contributor license agreements. See the NOTICE file |
| | | * distributed with this work for additional information |
| | | * regarding copyright ownership. The ASF licenses this file |
| | | * to you under the Apache License, Version 2.0 (the |
| | | * "License"); you may not use this file except in compliance |
| | | * with the License. You may obtain a copy of the License at |
| | | * |
| | | * http://www.apache.org/licenses/LICENSE-2.0 |
| | | * |
| | | * Unless required by applicable law or agreed to in writing, |
| | | * software distributed under the License is distributed on an |
| | | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| | | * KIND, either express or implied. See the License for the |
| | | * specific language governing permissions and limitations |
| | | * under the License. |
| | | */ |
| | | |
| | | (function (root, factory) { |
| | | // eslint-disable-next-line |
| | | if (typeof define === 'function' && define.amd) { |
| | | // AMD. Register as an anonymous module. |
| | | // eslint-disable-next-line |
| | | define(['exports', 'echarts'], factory); |
| | | } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') { |
| | | // CommonJS |
| | | factory(exports, require('echarts')); |
| | | } else { |
| | | // Browser globals |
| | | factory({}, root.echarts); |
| | | } |
| | | }(this, function (exports, echarts) { |
| | | var log = function (msg) { |
| | | if (typeof console !== 'undefined') { |
| | | console && console.error && console.error(msg); |
| | | } |
| | | } |
| | | if (!echarts) { |
| | | log('ECharts is not Loaded'); |
| | | return; |
| | | } |
| | | if (!echarts.registerMap) { |
| | | log('ECharts Map is not loaded') |
| | | return; |
| | | } |
| | | echarts.registerMap('ç¦å»º', {"type":"FeatureCollection","features":[{"id":"350100","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@K@KLDBLBBIHCAA"],["@@CBABCD@FJFCFBDHFFBB@FM@CCEBCCEMC"],["@@ACCBBDDA"],["@@@CC@@DD@"],["@@B@A@"],["@@MCKEO@ICCCAEAKBKAAIAC@AVFPCRBBFBNHNBVXJ@DADCHAB@@GBCL@B@BCCIEEBC@CHCACG@ABKPA@CC"],["@@@A@B"],["@@A@CDC@WH@FLXCB@DFDATBFH@HELA@CCACI@AFAD@BA@AH@DED@FDBHHHJDT@JC@AEOECGKC@EDOQIACBG@CC@CKC"],["@@B@BCE@BD"],["@@J@BA@AAAI@ABBD"],["@@B@@ACABD"],["@@B@@AA@@B"],["@@B@AC@@@D"],["@@BAA@@B"],["@@@A@B"],["@@BAA@ABB@"],["@@DA@CCB@D"],["@@MDFFAFBH@BCFCDBN@BHFDJJHFBDCDMCCE@AA@EHOD@HDDABC@ECCGDCEGAGACC@G@A"],["@@B@@AA@@B"],["@@B@@AA@@B"],["@@B@A@"],["@@B@A@"],["@@B@AC@B@B"],["@@BA@AAB@B"],["@@BA@CC@ABCCC@@BDDHB"],["@@BKCEEAEF@HBDHDDA"],["@@E@AFCBC@CCABACA@AACFB@@BADQAALDDAB@JBFADLADGAC@@PBHF@@DCAAAECEJCDDAFBDCDBLDBBA@AAADAAADA@ADBDACGDACADCAADEGKE@AA"],["@@ABBBAFEBQBEDQBABCJOLEHD^NF\\BLGFMH@FKD@LBPENB@A@CM@CAAE@CBA@CE@A@@ABA@EDAAKE@MEC@"],["@@@HCBEAEJAH@BDDL@DCFDNBB@@CFBDEEEGGG@A@BCEEEA"],["@@ABFLAB@DJDFNDDJ@BCDAFHBBFC@CGEBCKEA@BEIC@CCBADIIA@ACC@"],["@@FD@A@CAC@ACABFAD"],["@@C@@BDDD@@FBB@DAB@B@BB@BA@AF@@CFEIEIC"],["@@BDHBB@CGBGEADAACCCEACCC@@DE@@DHDBFHJ"],["@@@AA@BB"],["@@FFB@@CACC@AB"],["@@ABD@@BB@HACCABE@"],["@@BBJ@DBDAAEA@CAABC@ACCH"],["@@ABBBF@AACA"],["@@@DFJDBFFHDB@@ECCEGEACEE@"],["@@DHDBD@FADCCEFAFBB@HKBECCEDC@A@CF@@AGEECCCGABABABCAEBAABCAAA@GH@DDDAFF@BBADGBECABARA@CGCECBABBFAFJD@HBBD@JABCDC@EAI@AF@FBF@@F"],["@@CBD@BAA@"],["@@B@@AA@@B"],["@@DBBACAAB"],["@@DFDAACA@AEA@@F"],["@@DB@CC@ABB@"],["@@FNFAFFFACGA@ACC@EEE@@B"],["@@@DBBF@AECAAB"],["@@BDB@@CBAEEA@BH"],["@@BBD@@ACCDAE@@D@B"],["@@JB@@AAE@CA@BB@"],["@@BDDBBAAC@CC@ACA@BH"],["@@DD@CD@ACC@AD"],["@@FDH@GEEB"],["@@C@ADHBBF@@DAFBCEIE"],["@@BCAEBA@IECABBJEHID@FMFBBBBBFD@FFD@D@@HBBF@RADCBE@CGCEBAAGG@CBC"],["@@B@@BD@@CAAAA@BAD@@"],["@@BDAE@B"],["@@CFDDD@DAJ@D@BAACBACC@EAACBABKH"],["@@BB@AA@"],["@@DBBGAAA@CA@BDFAB"],["@@@BDFDBB@CGEA"],["@@@BB@@AA@"],["@@EDBDB@FA@EC@"],["@@CF@DADDFB@BA@CBBHBBABAD@ACAABEAAEAIB"],["@@@@@A@B"],["@@BBBA@ACB"],["@@DB@CA@AB"],["@@DDB@@ABACCABAB"],["@@ABBBD@@CD@@ACACD"],["@@BBDAAEE@BF"],["@@@BB@AA@@"],["@@JFB@CEG@"],["@@@DFBAEC@"],["@@@DD@ACA@"],["@@ABFB@CC@"],["@@B@B@AAAB"],["@@BDB@ACA@"],["@@B@@@A@"],["@@JHB@ACGCA@"],["@@DDHFBBDCFDD@JHDA@@KKCAACEBEGGCABBDCD"],["@@DFNJHBJOJEBACGIACCK@CACBCCC@CDADDP"],["@@ADBBHAAABCAAED"],["@@@BBA@AAB"],["@@HBBCAEGF@B"],["@@HHB@GIAB"],["@@P@@A@CECM@@DDF"],["@@IKGACD@FNLHJHB@EGM"],["@@A@CDG@CBC@EFIDBBAD@BDDFA@FDFD@BICKDAD@JNDBBJAB@BPH@BJJF@FDAHHDF@DAJDBDB@@GCA@CBCCMIKBCE@CA@GECE@IEE@@ABACGIEC@"],["@@BA@ACBBB"],["@@BCAAAAC@DHB@"],["@@DB@CBAE@@D"],["@@@@@@"],["@@FAB@BCAAE@CDBD"],["@@JNPJF@DABAAI@ADAVHZFFBHJJDF@DA@EEI@EFG@C@A@KAEECEAC@GBIJC@IGQA@BC@GEEBE@GCABADMJC@@BAHBD"],["@@DDBA@CCAAB@B"],["@@BAAB"],["@@DBBA@CC@AD"],["@@JFBCDA@AACIACD@D"],["@@@BDAC@"],["@@B@BAA@AB"],["@@BBDBAEAAA@@D"],["@@@DHBBMCG@AAAC@AFBN"],["@@BBBCA@AB"],["@@@BBB@CA@"],["@@@DD@AEC@BB"],["@@BBBAACC@BD"],["@@BBB@@C@AG@DD"],["@@@BB@@CAB"],["@@BBBCC@@B"],["@@BBB@ACAB"],["@@@B@A"],["@@B@@AAB"],["@@BDF@CECB"],["@@ABDBBCC@"],["@@ABDBDEA@CB"],["@@@BBBDAAAC@"],["@@D@AAAB"],["@@E@@FB@@ADA@A"],["@@@BF@DEC@ED"],["@@DDD@@ACAC@"],["@@B@B@AAAB"],["@@HHDAAACEE@@B"],["@@B@AA@B"],["@@BDB@BCCAAB"],["@@FBAAC@@@"],["@@B@AAA@BB"],["@@BBF@B@@EEACB@D"],["@@BDB@@EC@@B"],["@@CDBBDAAC"],["@@CD@F@BDAHA@CD@@E@AC@GD"],["@@FFB@@ACGA@AD"],["@@ADB@BCA@"],["@@@BF@AAC@"],["@@@DBCA@"],["@@@AAAADD@"],["@@DIF@ACCBCAC@@DCBALA@@DF@FG"],["@@BDD@CI@@AF"],["@@@@@@"],["@@@BB@@AA@"],["@@BHBBFA@AAABCCCBCAAA@ABC@@FBB"],["@@CB@BF@@AAA"],["@@ADBDB@FMC@CF"],["@@ADBBDEC@"],["@@@BBAA@"],["@@ADD@@CA@"],["@@AB@BBC@@"],["@@B@@AAB"],["@@@B@A"],["@@@BDAC@"],["@@@BBDFADB@CE@ACCA@D"],["@@J@BCCCG@@H"],["@@A@@DBC@@"],["@@@EAACFAAAFBBBCF@"],["@@EDADD@DABBD@@EEA"],["@@@BBFCBC@A@ERBBJ@FBF@EFE@@DDBN@HED@FBCFFBBDD@JC@CEEBCAANCBCB@@CKEEEOAGCADE@ME"],["@@@BBBF@@CAAEB"],["@@@BBBBECA@D"],["@@ABBBDCCA@B"],["@@GDDFHABAACCA"],["@@BDB@DA@CAAA@CD"],["@@DB@CAAAD"],["@@ABBBHACAC@"],["@@DHH@BA@EFBBA@ICCACCBE@@FEF@D"],["@@DFHDBAACCCCACB"],["@@@DFBD@@CAAGA@B"],["@@B@@AA@@B"],["@@@DF@ACDCAGA@@FCF"],["@@@DDBDCBAAAE@AB"],["@@@BDAC@"],["@@DBBAEAABB@"],["@@ABBBBAAA"],["@@DBB@AAC@"],["@@@BB@@CA@@B"],["@@B@AA@B"],["@@@@@@@@"],["@@ADDADDDB@GEEE@BF"],["@@ADFBFBDA@ACACECBAB"],["@@BFFGCAA@AD"],["@@AB@BDCA@"],["@@B@@CE@AD@@F@"],["@@CDM@@BDBAFFBBDBB@FFDRFLDAK@ICEHKACGACBABC@K@"],["@@DBDA@CEAAB@D"],["@@DDAEA@@B"],["@@CCA@DLB@DCBCE@"],["@@BBBCCAABBB"],["@@BBBAAAAB"],["@@@BDJDBDDDACEBCDAHCBAEACDQ@"],["@@@DDAAAA@"],["@@AB@BFCA@A@"],["@@@BB@AA"],["@@@AAB@@B@"],["@@DBCA"],["@@@BB@@CAB"],["@@ADD@@CA@"],["@@AB@DDCAA"],["@@AAABD@"],["@@fÂf¯BGEOBGBCLKbqBEBOBCRORQBAIKAEBEVEZ@\\HjRXJ\\@FA@COeCEe_aUGEAOEEKAIAmDQEG@A@CRCDGFSDG@Â
]GGBILENADC@EAIEIYWIACBMLOPIFI@Â_YCYAmGECGG@KDGRQBE@EAGUMAC@UAIEEoM]_YISKAM@MFILIFcFKBCNEPARM@ECEJYR@BWHMJyH]BEFAHBdNH@F@NERGLODMAiCUIaYÂOuCIGCSC{CMCICEEEGGWGeAeD{DÂHMBCH@DOAGCEQKEIEEMGCCEOCAAEEA@EJCBGFC@AQcQIUAÂJaAÂSAKMEKBGEAE@IHMDUAIBA`BNMFAJFF@^EFBHJJ@FCBGAQFM@GACQSACDKJ@REVBTCJDJDPNJBL@DAHMEQ@ATOFQHC@GAGHWBKCGKKAKDWFELKJM@E@EGG@GBADAJ@FDTVLDDABA@]BAlJHV@BEB@HHFBFVHFPDDTFREF@JDBD@DSHABDLCH@F@DH@@V@LKXELcPALIJAH@JJHH@BJLLBHXND@FAD@DBBPDHHFTJXFTLBH@@HAjZF@FAFG@KCEYa@C@GDOJMDAJA\\HLAD@HIFCH@PKPGFG@ECCECCIIK@ADCH@PMhKN@ZLH@DA@EE[GKYUKEGAI@CDGPGDIBiSGECCEUAWDODGBCXCDCDIDEBANDDBB@JCDIPHBDB@FEAKBIKS@KEEK@EBABCLCFAB[FGAECCEKCEBIAKIKCc[IAGACCEO@MHCN@FCLAFC@GMC@KEABCACE@EBCAAB@DA@GCE@SPCHAHGDCFSBIFKAKPKDW@C@@B@DVD@FAHEBAEM@CBEHGDCD@DNR@FG@CAC@IL@D{OAA@GCKCIYMG@CC@CHEPADAH@BBBHD@D@JILA@FAHBHF@F@FBFCDE@SDI@AEG@MEAIBGA@KAC@EJ[DC@MDA@AGEBEAAA@GHC@SMQCKE@CDAVBTHHHF@BA@CCMGIECEG_IWBABMBEAMIIAEBCHKN@HDBLBQXIV@LBFJLDRCFAPIDCH@LHJCDIFADDH@NCJGFMAEAEECEBEGUHIFADADE@IBAH@DBDEDKDI@AGEMECIAEACIEGBECAKEABG@CEEIAMEE@@JDF@D@HEBEBO@KAGIQEEQC@QHCD@JJP^XDD@HENQVGFGBCDBNJfCFGDE@GA]BCACIGOQSG[EACDBTCJON@DPJTT@HIFA@AHDVBFHHJ^AFGDMBI@OSAAEAiHEDATEFsVIFIDIAEIGUKsAODOJYJO@EBQAICCI@CECBCDGHO@IGG[IEIDM@OASBWTOJKVA`JZJRHFGDMEIBEF@TA@o]AIO@EAEJA@GACBADFJ@DELCD@DDBLANCD@LVBFENB@JCF@DDDBDDAHFP@FGNMT@PIJAPIGGCQOIGCCADAHIBIFICGBCBKRMDCRSTBBBBJBFGFCB@BHCPEB@EAAC@C@DN@DADEBIB@HBB@BBDGDALMFGFMR@HAH@JJTFPFJANFBHAJ@BBCFIBIJETBDNBDBBDCHADGAAHADEBI@@HIAAABAEC@BCB@A@AABBHHFPNJDJHLT@DABIDG@EBEBGHMGEHkDEAKGAACBCLA@CAEGGCKDCD@HEC@EgGMK_BSIACmAIGKDMAEEEIMCCCAGOGANDTDHBFCPEF@D@HDDF@DB@DADCBC@MG@GGGG@ICIOMMAKIACAQCGECBCGCCCEKGIIEAEEC@ABHL@FGBCCO@OGC@MDADEBG@QLEHADW@EBEGOI@AHABAMSUMWIICMBIDMNCBCA@CBEBGCGIGMAIMEEE@GBADL`@NCBUOI@EGCAKF@HA@CCIFAJSAMBED@BBBHFON]FO@EAI@ECACAOICEBIHIDAJABC@CA@EDMCAEDCA@CBOAGEAGAADELABGACA@MCGCAGPEBEAAC@CJIGEC@INUKIFOMCGDEEEGCYAEBCLKJGLGFC@IJKJALUPAJWFMJGJA@CBKEGBIFQRGV@LBBARCHIHCH@JG`EJSHGFKRMCEF@FVXDP@NDLD@LEHDLNF@HF@DEJIZABKFADBDJBCLDFN@BDCJV\\LNHC\\ULOFAFCBCI{BAJHP@FHBZCFAHAFC@AFBDJHHBPINALCP@JO@AACD@HB@BKPCJEBHHALBFNRDJAFG@AFDTHLAHDFKLBDDFDFEF@FEDJTBHCXGF@L@BH@ETBFJJBZIPAHAHBB\\CpBnHJ@XSRFONBHJHFNCBGCGBAFE^CBEFAN@LAFFHFLAFDD@FCBSGG@GFGNA`FL@LCFBD@LD@PGDBDDITDJDHBDCFBDABBB@BF@FDBB@DBB\\BTKFLIHKTEFPLFHDAhANINGLANJD@HCBDDLFHBDCDHB@F@NK`BHABHJVJDDCJH@D@@DD@BADCF@DBBD@DABKDBZDDNJFFHDHHR\\|AFABA@ENE\\EFB\\RHDDVDJBJEHQLE@EBCDGLIHDHEFGFQBEDAFDF@JJBELJPEDSH]PGFHNBFCRDJ@RBFHFD@HJRHBHAHIBBLCDEB@B@HDHVAFBD@DCHAT@FEFIEKBAJAPENEDG@]OK@CXSDEACC@@E@KFKJGJAL@XHbTJNBLPHDD@J@D\\HDDHDbJLAVBF@PSHEN@LHH\\ALEFOAEFAHDLPNDVFJLFRH`BFAJGF@DBBDFB@DEHBDFF@DOP@DDDFDD@LEHF@BCJBDJJ@DE@AD@HHBBDBNFBJED@@DANHD`CJ@DBNND@DADENIFEFE@EACIAKGEGAEDCRGL@PDB@DCDAJBBB@LDBD@@GDCAEFGACAAJADEBCFCAIFG@CDCHBFABB@DDBT@DAHGBBBHHBF@FCHBDAD@BFJJD@H@NFDDJNHDFJDBNEDENYHG@SDCNSFAD@ZHJJJZDFHAVIJGBCJCDDHÂHRVXFBF@VA@GFABAAIE@CE@CB@HD@CFCBFFBB@DAHDFH@FJFJAFFAFED@B@DBBH@DC@LDAH@DCDAVDFFJP@NBFPBNAJCJADAH@JDAHYJABBBH@BB@DDBLANOFANBVDNFT@HADCF@FB@DFBTKLC@EXBDCJKAC@INQJCBILELQ@AKIPUDCN@^KBC@EECDCDAJDFANKRBHGF@HFF@NEFCDC@EFA@CB@NABAAE@ADAF@RFNHDAHBPEJ@FBBH@DDHF@FENF@DPpDDFBJ@NJVEH@FAXKJDTPDBGF@DDBLA\\DJATMJCDGTKBGJM"]],"encodeOffsets":[[[121678,27068]],[[122867,26893]],[[123104,26891]],[[123102,26881]],[[122918,26872]],[[122887,26845]],[[122899,26847]],[[122808,26762]],[[123295,26793]],[[122500,26759]],[[122597,26600]],[[122653,26290]],[[122432,26267]],[[122495,26224]],[[122330,26023]],[[122337,25968]],[[122386,25960]],[[122568,25912]],[[122491,25946]],[[122489,25944]],[[122479,25933]],[[122477,25932]],[[122575,25918]],[[122572,25914]],[[122600,25884]],[[122600,25866]],[[122778,26197]],[[122515,26757]],[[122816,26587]],[[122847,26569]],[[122779,27057]],[[122762,27045]],[[122794,27053]],[[122756,27019]],[[122755,26998]],[[122828,27009]],[[122848,27000]],[[122971,27014]],[[123107,26964]],[[123388,27005]],[[122776,26927]],[[122780,26924]],[[122774,26924]],[[122896,26865]],[[122900,26866]],[[122880,26870]],[[122857,26818]],[[122855,26792]],[[122703,26916]],[[122688,26897]],[[122685,26889]],[[122705,26880]],[[122597,26897]],[[122598,26867]],[[122549,26752]],[[122532,26772]],[[122538,26773]],[[122508,26742]],[[122877,26603]],[[122846,26566]],[[122564,26378]],[[122535,26397]],[[122528,26369]],[[122546,26375]],[[122686,26379]],[[122731,26321]],[[122734,26322]],[[122700,26282]],[[122700,26286]],[[122708,26284]],[[122643,26330]],[[122631,26281]],[[122600,26328]],[[122566,26286]],[[122561,26282]],[[122575,26281]],[[122577,26283]],[[122534,26303]],[[122539,26306]],[[122511,26289]],[[122521,26281]],[[122483,26327]],[[122477,26331]],[[122496,26319]],[[122487,26291]],[[122494,26291]],[[122458,26284]],[[122450,26243]],[[122414,26223]],[[122416,26230]],[[122478,26197]],[[122483,26194]],[[122473,26208]],[[122535,26263]],[[122567,26229]],[[122588,26246]],[[122671,26268]],[[122676,26263]],[[122686,26264]],[[122691,26237]],[[122726,26231]],[[122737,26209]],[[122786,26210]],[[122722,26189]],[[122715,26193]],[[122751,26184]],[[122716,26129]],[[122701,26140]],[[122691,26129]],[[122691,26122]],[[122699,26124]],[[122696,26122]],[[122542,26118]],[[122578,26154]],[[122582,26156]],[[122583,26146]],[[122580,26168]],[[122590,26165]],[[122580,26144]],[[122571,26142]],[[122568,26189]],[[122479,26187]],[[122495,26125]],[[122497,26125]],[[122499,26129]],[[122500,26143]],[[122545,26107]],[[122532,26091]],[[122519,26069]],[[122539,26058]],[[122556,26069]],[[122511,26041]],[[122587,26026]],[[122681,26067]],[[122677,26060]],[[122686,26053]],[[122695,26033]],[[122691,26034]],[[122693,26038]],[[122818,26043]],[[122753,26083]],[[122747,26086]],[[122725,26100]],[[122643,26003]],[[122650,26004]],[[122634,25999]],[[122631,26000]],[[122628,26000]],[[122620,26011]],[[122548,26022]],[[122539,26005]],[[122542,26007]],[[122602,25961]],[[122588,25985]],[[122578,25962]],[[122579,25943]],[[122579,25951]],[[122570,25955]],[[122565,25953]],[[122556,25945]],[[122648,25899]],[[122646,25905]],[[122632,25906]],[[122619,25901]],[[122600,25885]],[[122442,26033]],[[122436,26036]],[[122438,26056]],[[122438,25999]],[[122455,26007]],[[122420,25975]],[[122403,25968]],[[122376,25971]],[[122375,25972]],[[122375,25975]],[[122470,25938]],[[122346,25914]],[[122355,25916]],[[122358,25920]],[[122351,25932]],[[122342,25940]],[[122331,25960]],[[122336,25979]],[[122230,26022]],[[122230,26020]],[[122245,26043]],[[122256,26046]],[[122280,26060]],[[122299,26064]],[[122846,26708]],[[122684,26856]],[[122684,26858]],[[122686,26859]],[[122689,26858]],[[122586,25928]],[[122556,26196]],[[122676,27184]]]},"properties":{"cp":[119.206239,26.075302],"name":"ç¦å·å¸","childNum":197}},{"id":"350200","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@C@@DJ@@AEA"],["@@QDKHAHJPLBJIFCDCBE@GCCGA"],["@@BFF@@CCACA@B"],["@@JDFFJ@HCFDDABAAAC@AEMAC@GCGBCF"],["@@FDJC@AEBECAGA@AACB@BHDAF"],["@@FcAIO[ÂÂ
MOMKQAcDUFaNIJKTMNAFCP@HHNFjTxBHJXJNHHXNfHJDNBFAFEJQFC^ClQNKFIDOB["],["@@iDoCEBSHKREDQBEDONKTCLHV@@CBABHHBHAJBBG`E@AFOHCHCBEAEBADCPEHKHCBO@GD@LBJBDGHAFDRFF@HEHEDMHMLMHADJFDJ@J@FALDBBBNCPDRADBTfJHNFLLJDDDDNDH@DAJLDDF@FCNK\\CNBLABMFCFIhARFLDTDHJDFBALHJDLBNAXALGNF@DBBF@FABAFDJAFFTIFCBSCG@EBWbMHQLBJBDFDH@H@DCJGFKBAXJTEHIHQHEDGDAHHF@ZLLDBBONAD@DLNL@RCDBBFCHOJSDGF@FDFHBZMHADDBPFBXGLBFADEAQDGLKHMFEHAFDHNH@DABE@SDMFAPTrXBAF@LTLHTLFBLEN@LB@FJDN@JADADEDAD@DDJCNBRUAAKAEM@EFGTKLCHGTGBIACEEBELODIDAFAH@FBDLHBF@DGFBDADCF@FBHHTDH@JERCFCHWFCHMLEHEHACGHEAEGIBCRMD@BFDDDBFCDE@KA@CBCBCACE@EFEESCCC@CDSAEE@EDCFUDANADCJMAG]iAEDCHGXM@EAGBC\\QA_OMHWCQEEIAEOCCEE@CDIDBFBJNB@BC@GCQLGLEBEBKBAJ@DW@]IUEGOGkGÂGsMkGÂl]ZgZOZIJKNICOGaOQMMUOGGIIOIKUÂO}AEQSGSEu"]],"encodeOffsets":[[[120993,25143]],[[120906,25022]],[[121027,25035]],[[121218,25145]],[[121249,25142]],[[121042,25093]],[[120883,25005]]]},"properties":{"cp":[118.11022,24.690474],"name":"å¦é¨å¸","childNum":7}},{"id":"350300","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@ABG@DFAFHDDH@B@BF@@CHBBCAAHCAGDC@CE@GBMC"],["@@@FAAGDBNDFD@@EBA@CBCB@DBDAGGA@CC"],["@@F@@ACAAD"],["@@EBMLCF@FHBLEDEDG@CAAAA"],["@@B@A@@@"],["@@BBB@ACAB"],["@@BDD@CCA@"],["@@BBB@ACAB"],["@@DBFAFCCCE@ED@D"],["@@KDADDBDADDHCBA@CGA"],["@@T@BA@AECC@KFG@@DB@FA"],["@@@BDFBCDDDABCACMB"],["@@@BBBF@BAJAACB@@ACCKAGDABBDDB"],["@@FD@BD@@GI@A@BB"],["@@@FBBH@BA@IF@@EBCC@CDAACDAAC@AFBD"],["@@AEEBCCEAADDJA@A@@FB@FAF@@BBBFGAC"],["@@FBDAAAC@C@@B"],["@@CD@BFBBHH@B@AC@AJ@CCBA@ACCA@CDIA"],["@@HDBCGAAB@@"],["@@FHADDBDIAGEACF"],["@@@BEBAFDBJLBAAGH@@CEEAMGB@DBD"],["@@OJ@FJAZK@AAEC@MF"],["@@ADBFFDHABEAAEIA@E@BDAB"],["@@BHFBBBD@BEACGCDC@AA@GF@B"],["@@ADCBBBD@BC@AAA"],["@@BAACABBD"],["@@@BBDAFDBDBBDPI@C@CGEIAGF"],["@@RDDAACCACEE@ACAHIFBBFA"],["@@YDI@SFETDJFFBFOR@D@HDDD@JEHADDBHDHDDD@JADB@HBJFHFBJEDEBIAECA@CBAFCFBBBABBDDBJAHCDEAQBSDIJER@BGDEbKL@BDDHDFDABEBAHBDED@FBFHHDPAFABC@CECA@AAFGEEEAIAIBEFCACEDQ@AMDCC@CNSCGDC@AICGAW@QGA@ABBHADCDGFODAB@FCD@DDFABKDG@GDIDGAGHSJ"],["@@FJFFFBH@LCJHnBBDTJ`ANLhH@FFD@GDCLCHDFHDBB@DKDABBLHNBdCFGNHHGFAFAH@JCBAAGIOIGICOMGEAEBC@DDA@AFDABBBJB@GJ@FABCBGHBBCDGACCAMAACFSJIJADEAAI@GBEABMEIEOIS@IBG@GNQHENEBKHCAC@AAA@GJAFABC@CCMD@D@BB@FFADOAGA@EDEHIAAAAATSDQNCLQDAHAJDJEJADKDDJHRPHDJHBOJI@ONSHM@EEOBGAAECCCE@IDA@FMAEKUC@MDKBCC@ADCFK@CEIBCDAHBB@FIMIuSqYEGOUKkAaBELCJBNFD@HE@MDCpMPAFDDBXEHKBC@IFCBCAKBGPS@OJG@EDAFAFBBJCZBDD@F@HATIHATBJBFBPAFCXgnkHGVEN@HIVGH@PHF@BAEIAIAKBMACCCYIIEIA]BGACE@IEAQDMHGBKEC@EFI@EAAEFI@CAC@EFKBKDKJMNEDGCCGAEEIMCAC@ADEAYQGMOEEB@JED@DDFADqVIFEBWCWOSEQ@ODGFOHEDEJcZGJCHBLAHEDMCEGEIMECC@EGGAIAAEB@CJYLOR@NIN@DCDGAMGECBAABEFCHEF@B@JHN@FCDGCeBG@EK_@KAKIAIKKECAAI@KHMEEAEBCL@BC@GAAGAAGGCAGGICUICFKAE@@K@C@@HBJALGDEFKBCDBDHD@BCHCBODOLADFDJ@ZIHBDDDD@DO\\EHBDDDJ@HPLFJJFBTBDB@DAFIFG@©FMQSFSNGNUHKJM\\AVBLANDPDDFFB@TIRCJBHJPXBJBbDHLHBHU\\_EI@GAIIEASBIAACCOAEEEOIKAKDICE@AFBNQREH@JDHHJFDBH@LBJHHDNDBLGFGBEBAHALDFHDDDHAHEHKBMAOFIBGCIIC@Q@IBK@GDG@CCCGCAiSGAKDI@MIGMIE[CUBACICBKAGGGQAECGIC@ADDH@FOBE@BGCACAIAEASBICGBKCEBBHMEGCQECCEKDQ@AAAMAKBEAGEQEICGBEKWYCBM@IIEGGC@ASAA@AEC@BHC@DJCFBJOFEHEBCNDNKJ@BBFFBL@DFHDBFFF@B@BECAFG@@EAA@RAHBBF@@FEFBBHFBD@BCBADAH@DJRLF@BYREFGCGGCAK@ABCBEQA@CFIFAHGBBHFFTDFFBJFHKPDHMDSEG@MFEAMOEACBI@EBIJA@CAAEA@KNA@OEI@IDCC@CE@A@@GCB@ADGAEC@AFIB]@ACCAEF@BS@BLGNAHFHFL@FELCBECCECIGKA@G@ADAHBFFFDJDDN@ABIFBZJJDD@HQJ@JAFCBUNGLEBK@AD@FJRADSFEP@VADCBICMBA@AJILERADDHNTFNJBBDDP@HADC@KCC@CB@BJDDDBFADOFBLEF@JJH@DGB@BJLJFJPLNLLBBCD@DFFJDZNBR@DABBJjpBLLFBHLFADADFFHPEF[LCBABJLRL@DADEFFFCFDHPNJEVLJMD@HFIJ@DBDFBFAHODBDH@NDBHBBAFKBCHBFBBHAP@DDBFCDBCN@FDBD@BABIJCJGFAJDBPDFdD^EDCLIGEAA@AFCNATBBIJEDDB@@GJCF@FHL@TPDA@MK_BCHAF@FFJNNBJHDHAHAF@DDBDANMJCNAJDXJVNNTABGB@BPJFHFAX@BCFGRKH@FABCNCD@PHP@DDHA@EGKBAD@FFFBJJLHDFDDDHDAHFRDDBJBBLNNJPJDH@HH@HFDLDDABC@CCAE@CC@G@CFEDOAECGCSBMPHBHDDND"]],"encodeOffsets":[[[122386,25872]],[[122237,25718]],[[121933,25635]],[[122329,25582]],[[122027,26000]],[[122033,25986]],[[122061,25979]],[[122434,25772]],[[122266,25758]],[[122516,25833]],[[122474,25841]],[[122480,25849]],[[122461,25848]],[[122461,25821]],[[122449,25855]],[[122450,25871]],[[122423,25772]],[[122463,25792]],[[122389,25759]],[[122350,25860]],[[122207,25920]],[[122233,25935]],[[122120,25960]],[[122130,25957]],[[122231,25718]],[[122143,25765]],[[121875,25778]],[[121906,25704]],[[122339,25802]],[[121825,26342]]]},"properties":{"cp":[119.007558,25.431011],"name":"èç°å¸","childNum":30}},{"id":"350400","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@A@CFUPGBQAQKC@EDCbADKF@FARCHIFEBIAEIK]IEK@O@GHIXEDCAOOEAGFGNI@IAIIGIAGLSBECEECIAIDMAEECIKCGEGEOLIJIHM@EEEKKGQCOBGF@JFF@HCBODOJIBMMGCO@QBKEQEEGE@IDOKKCQBGAAG@GHCHCBCBEAEICKGKMIGE@EDEHGHC@MCG@EFEHABC@CAAGWCAA@EFCBKJAFEBCLGDIIMCD@HADGIEACCCMIE@IEOAC@CHC@CCIBOEGAMOEE@GBGFC@AAAEAOAAEDE@@A@GBCJC@IDGFEDE@GBCNBFA@AGGBCHEDIBALRD@FA@IMgAMEGECWAKGC@M@WCEC@ABCACK@EDG@ACHE@AKCEECCCM@CBAH@NHJ@BECEHQFDFALD@AFCAGH@HG@CCCJADEF@AEDEFAAAC@BCB@BCB@FNDEPAPHTDJNLCLBDABADMBOAGBECOCICCGCAEDKGEAA@MACOGOMCEQGACMSYGCE@KAGBAD@DAACCACBKLULK@IEICI@EKIACKGCQEEBCAEEAAYAA@@ECAYBSGC@MBUMIAEBIFUdMJEFK@SOCAIDO@CCBKBQNMDEBGACC@GBKFMNIHINC@EEEBCNEFI@SEMDEDADFB@DABQAIBCCABICC@KFCFQGCEGR@XBHFJDPFPBBH@HHRKLKHAD@JPRPJNJlAJG@CEMBcGKLK\\U\\YVMHGNGTKTQJOBECG@GC_UOIKAI@GBGJKVBFLJAHOPIPCBKBI@ODOHEFCPKTEFE@GGG@QGKIKSGCA@@HIH@NGNBFPLBHABQGGBCNEBG@GEOCO@CC@CHEFDHCFC@CAECCKEOISoKgIG{M]@EHBJTdDJANCN@TEjEHACBSAGAASNCVGPBBJFDDATEDGf]FM@KICQBMAQYEWI]OQCM@MAWKKMASECAKMOMYLGZFPBJALQBIEMg[SQaQCMAQGKEIMIIWMECC@IQU\\AACCAKCCEIEIFQ\\EBGAACEEEAGBBRDN@TSbYXGLCXOPwNQAAAGAKAK@CPKP@BDBHCF@BLG@AD@FABG@@HE@KCCBEB@DTNBZ@FOZCBA@A@DOCAQRADBDPFFHLB@FMV@D@FJFBD@DADKLBLBF@HENQRW`KhC^GPOHOBWCUCQGKGeGGJSFKJQBOAWIWYO[CCOGGKM_IGODMEOGcGUNMPg\\INF\\FPJRLNAFIDSA[OQGOLGjA`CJIJOHQFYTMDUBMVEDKAOPU@GBCFAZDLCJGF@VFRDFAFBDFFEBK@ABDHSNKDGkIKGCKAGDGFKDGBMOIEQHgJ]NG@IEMM[Q[WK@GFGLCPB`CLIJOHwFWFOD]PIHFLCPDBLDTJDFBRDDFBTNPFTPJLLBDF^RLLFFBPANCHADIH@JDHGJ@FDJAF@DEBEHBDABB@IFO@CGC@CCC@EA@CB@AAEACBWKQAGBCCADBDHFGHCAGOE@C@ADCFUDIH@DDFHFAFBFBLFD@BE@AFDDABEACD@DB@JB@BGFBF@@EBAACCF@@AAAG@IFHDD@FNCNGNCNVN@D@FAFEF@BDJHHAJDFFDbHDDDL@JSN^DBBPLBBD\\JHFB@@DDJFFJFRLHPFN@DFPJL@HDBDCFGDFL@PBJFBLAHHBJ@LFNHD^CBE@IVGJBFDDE@GHO@MIYDA^LL@FA@CDAFANJNBFBBJNNDTMXBHALBDDBAJBHHLFFFFNDFDDFBJ@JBHFFFDBDAJDL@DMAUBSCMNCAIB@BHNEBMDCFNJFJ@FCDK@ADED@HQDBJ@JCFMFONIFQHIFGDAFADDNDDH@NLLjFrFN@PHNEP_BIRIFGJadGLGdFZNNRHNJBHXVLRFNANINKVGZBbHhRXHFPHllNFJLh~X^``VZh`NFRLTHLDLBPATBXGHEPEPbRLRFvLRFJARAhMTD^TJL\\LTB^@RCRYHFJRDNX`RRÂfXJPBZFZPLDDDB@DFPLF@B@BGAGJGPCNCHDFJDLDBD@JCNINMHAHBJFPDPNFDN@DFD@HKPGFEFCDEFSHIHORWJEN@JGRCHCDCVGDQDCF@JDDBFJFPBBPFNNJ@BB@RDJBFAPGNDJLHBDAVCFG@EAEEG@@FDTBFFDFBJ@`SNEHAFAL@FAJMPGNCFEBCNHL@JBPAHCLBFEBIGK@KCEBK@ADADBRCFC@CBGNOLANNPBLJHBF@DA@CEGQQEE@CBCHCJLFBHCDCDUBEGK@ALEBACMFMHCF@NNZHDHFFDDHC@CGQ@AdAFBBFLDBAAGLCFGFCLDDABCACBERBHEBAEGAEOEAG@KAEASAAEC_EGCCECIAQBE@IBCJILCRLFBJ@PGD@D@HNFBN@HKFCF@LHHADCF[LaJC@CBAHAHCX[B@HBDAHMLI@CAIFGBGBEPKNQFMJK\\S@CGE@QHIBGIKIEIICI@KCIEGGOKEOCCAIMAESDEAEECKKSAAI@ACAEDEFCP@HC@C@CKIBCJCLAJIDFNENAJC@IHGICCBA@@ABCHADG^ATBDA@EAEMGBGHOD@TFDLDBZEFPHJNHNDH@HDFDJAFEB@BBAHDDDADAFKD@TFF@TKHNLHFBDAP@XJPAFED@FHDALERFJLTHHADABED@IEDEEEAEAACAACVK@BCF@BF@BABCAICEECAKLEBGRCFCACGIO@GEGBCGHEDYNCDCBKGQ@AFANBBCDGBGEIJSDDHJXJHD@@@EBGB@FFDBDABKBAXARJNTB@B@LEHMLFPCLFB@NIJJBD@FGJBDD@FCJBF@DAJIHAN@BA@AKIU[@KCC@EXQDC@UEI@ED@DED@NFF@DEXHF@D@JEDEAEAACDA@GMC@@AJQIAECAC@IHUDCDAFJDFFBFBFANGAKBEPMCCEC@ICA@CBELEBQDCB@HDD@HEL@@EHKBGEI@CBCFC@IJ@JDHGFALB@GFEEG@GJ@FCR@D@DE@OBAB@d\\F@FCB@DDH@BB@NFDHBHCFBLG@CFCHBHFJBHDDFHBHFAN@JNFF@DEFCRAJ@EM@A`CNL@JEDAFBDHLHJX@DALKDAVJBF@FGJ@DTLDADKZATPD@@@@CESICECCE@KDGFCL@FDL@@FFHB@BCFSDCDANDBEB@NJDHVIFKDCLEJ@V@FFPBf@DCHADBBJBDDBH@@CCEHOAICCCCC@OPCDE@IGGI@OBKFEFIDCBGFEPCFCDQDCZNFFJDBFTHRNHDFADGDALANMBGPWFBR@DHDBNBNAPKBEEK@CHEDAPFdABCGIDGFCBEFGHCFDD@JGBEDQJBLCHBBADO@GBGJIDEZ@DCLQRWAEEECKACGDC@MIKBMHMJgBCBEGOKFELSJGEKSL]CAEECE@@AAABAACDEACCGCIJSCCCAOHC@@KACDE@KEKB_HMHEH@THDA@ECCBEEKEGBE@KBMFEDAF]BEHAHDDAEMIGAGPMQEWTI@mGoA[DAABGBGJOAYIIAEFSG@@A@KHEDWAGISFC@EFECECEACLKCEBGGKCSBEH@BECIMQAEBKGGFADILO@AGAC@BD@BIPO@KDMBOJGAIGACBED@BEBGDEAYEGO@IGABJ|ADEDEBKP[VGDKMU[DIACM@CE"],"encodeOffsets":[[121252,26511]]},"properties":{"cp":[117.435001,26.265444],"name":"䏿å¸","childNum":1}},{"id":"350500","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@D@ACC@BD"],["@@DAJBAEEAG@AFDB"],["@@CB@F@DDBBDH@BAAGEGC@"],["@@BAAAEBBBD@"],["@@HBDAACG@A@@D"],["@@@AABB@"],["@@DDDACCC@@B"],["@@@A@B"],["@@DA@AEAADDB"],["@@B@@AA@@B"],["@@F@B@GA@B@@"],["@@MHIBEF@BJFBDBFCJ@FFFN@DZDJHDR@BBBDFBDBDAPKVIAKCG@MEKAAI@ABADE@IGBECGICGDC@EAIMEA"],["@@BAAAE@@BFB"],["@@H@AEBGHAFBD@AEICGFE@BFEHDD"],["@@B@DCJ@CCGACDC@@DDB"],["@@ACA@@BDB"],["@@BA@AC@@BBB"],["@@GAADLJH@@EDCAAK@"],["@@BBB@ACAB"],["@@@BDAAAAB"],["@@BBBACA@B"],["@@FB@CC@AB"],["@@DBDACAC@@B"],["@@@BBA@AAB"],["@@BBBAAAAB"],["@@BB@AAA@B"],["@@BBFBACCCAB@B"],["@@DDFB@CAAEAAB"],["@@DBAAA@"],["@@@@BAAA@D"],["@@BDBAACAB"],["@@BBB@ACAB"],["@@D@@@AAAB"],["@@BBBAAAAB"],["@@BB@AAA@B"],["@@D@@AA@AB"],["@@@BB@BCC@@B"],["@@B@BA@@CB"],["@@DBBA@CC@AD"],["@@BA@AGABFD@"],["@@@AABB@"],["@@@AA@@BB@"],["@@HC@AC@CD@B"],["@@@BBBBC@ECB@D"],["@@AACAAEEAAIC@AJBDDBBADJBFFBD@@AAABAAC"],["@@@AA@BB"],["@@@A@ACB@BD@"],["@@ABBBF@@ABDD@AGIB"],["@@B@BGAECCAD@HDF"],["@@@B@BD@DA@C@@GB"],["@@@AC@BDBA"],["@@DB@CAAAD"],["@@B@BAC@@B"],["@@EDBBFA@CA@"],["@@@FAB@DCDBDBBBAF@BA@EBCHA@AGGGBAB"],["@@@BB@AA"],["@@A@@BBA"],["@@ACCAEB@BNF@AAA"],["@@BAAAE@ABHB"],["@@AB@BD@DA@CAACD"],["@@BAAACB@BD@"],["@@BAAAC@BDB@"],["@@AB@BBABBBAAAA@"],["@@ADDAAA"],["@@@BB@@AA@"],["@@DBB@AAC@"],["@@D@AAAB"],["@@DBB@@AAACB"],["@@DAA@AB"],["@@B@BACB"],["@@BBBACA@B"],["@@@BAA@BD@@AA@"],["@@BBBAC@"],["@@D@AAAB"],["@@@DF@@CCAAB"],["@@@DDACA"],["@@@@D@AAAB"],["@@BAAB"],["@@FDD@@AECCB"],["@@BBD@BAG@"],["@@BNCHBDD@BEFCB@@DHBH@DCDBBACCFGBKFEDAZAFA@AAI@EBCFABCBOHIDAHDHA@CIMAG@MFMDEH@FC@E@GCEEAC@@BABAACEEABEBAFIGGC@CBCAAABG@AEEQGC@MGUACFBDHDJ@BDADIHSBKDKHKFY@gCWKOICE[sGGGAG@MBWPOBAHGF@FWNAD@DDDN@DB@DEHBDHBd@@BC`I\\CHCDKFABAJDLNJTFBHFBLEDCl]NEdIJCNBPLDJAJMNBBJAF@BFLFBFAFEB@BBB@FCN@FRBRH"],["@@D@A@A@"],["@@@DD@@CC@"],["@@AB@BH@@CAACB"],["@@BBBAA@A@"],["@@@DB@@CA@"],["@@@BBAA@"],["@@BBBAAAAB"],["@@AAABDB@A"],["@@DDJARBBA@CEABCFCNCTFJ@FEDMFAFFD@JMJGNMLEHAD@BDAHCFMNARALDDP@JCDBTPL@FENIVcJEFAJBVNNAD@THZADB@FB@ZBBBFFDBFARFHDDLJBFLJ@JDJFL@VKLKDADBBDIDBH@LDFZHNTBDRHDFPNPHBD@NBBHFCLBFHDDDDJDPAFBHAPCNABCBKAKDIMSCOGOBCFEMA@ADA@ADD@BBEBCFBFE@CFIBDD@DGHG@BHED@BKCEBECGRDFAFI@MGG@AB@DDNDDFFLD@BGFBDH@FCL@BDAD@BFDXDN@D@LHXBFDFHBNNh@JEBC@KQABCJGFADHH@BEBMAAD@HCFEFCH@JIDAD@H@BF@FCBBBPBFBBD@HEHAF@PFBNFHAPDJ@DGD@DBDFP@JJFDNDDFBHJBC@GDCJNCJKHADEFIBALED@FBBXDBHDBD@BAFGFEH@NDD@HGFGFCF@JHLNLHJDBFAFADGDGD@HBHHBRALDPLJCF@FHRFLFRAP@HDNNJAPIPCDA@GEE@IHEPARDLHFLFFN@JGJIPKHFHFLDDJFFNBJCJBFDDFAFKTBHHJJJJBJ@HMHEFBPPDBFCJWHGP@L@JFL^FJJBFAJEDGBQ@ELEBCDaFCD@RLRBHAVODEB@DKIA@GLEBAJYFI@CGEE@KMGCKFC@CK@MCOUW@EFENDLQHETGFIH_@IDGJGDGBQAA@KHURQJEHALFDAB@HINIXEBIVOBKLIJID@HEHKLIDGBC^@HDDCDE@CQKIKBADA\\KFEGOEEBCBCKEAGKEAKioAIBA@CAQYMICEE@CDCAAKKKMIOIEEECGHA@CIG@E@CFEAKPEBCAECCIC@ADAD@LDD@BC@GCOACIAEMMSCGBCFQJKBIB@NAJDDABC@UFOTEBCIQ@EBCL@FAHKVMDABE@IRI@GCCIIAYJEBAM@CCCIGI@ABGDCF@B@HLDJDFFDDADGBIEKEGBGHMAKT@@AFEDBBD^@JABED@BFCH@BDA@HB@F@@DDDJCJ@PFB@LMB@BFDBB@JIFAJ@DAFBNPFBNEH@TFNCCGLOEGAIEEEAMAEEAGHABGJEFGBBDRDABAL@DBHHHDFETMFEKEGMAGDKDA@AACGEAAFE@EE@AABG@QBB@FH@BEFD@A@AEEAEGCCEK@EAAE@ALICMDMFAFGPEAIDECID@AGD@BFB@TB@BHDFHJJN@DAXZFLHAJDRFHFFBLANBBB@BCRBFHJhPAGFAHDLAJDTAFBJBHDAHF@PA@ECGBCD@HJFDRBHHBHALJDBDPADAZBNCLFDCJADKRCJIRCBGEE@EDEDAHGF@bFHADOBCVG@mBKEAKIGCOKYAAE@MBSBIFANBFGRCBCAEMGYIEEICSIG@KDUAEE_GM@qST]FGJGJ@TBJALEHMAYHKVKJAF@JFHBHAPIHAL@HBLHJ\\BFDBP@DBLJRJH@JIJ@BC@CIMIKIE@QEEAMHG@CCAI@@CDCBCGAKAEFG@EKAGBMLUNID@HDDADE@OD@PJFBDCL@JAACBC[UII_C_KCD@BFBABGBÂ\\G@GAIE]cAEBIDGLADADQBCDARBFCJKDCHAJBHDPDP@NGBABMHIBCCEWGaEKCA@DDABA@CCC@ABADCBGAE@KGIASF]FMFGJIB]FWAGCEEEAMKS@AKCCRCDCAACAAGEEIAGLKJIHMDMAIGCCWOÂUGI@WCGCCCAGBEFATAHCBYDYDKHAJHV@DGDC@CAMSIEUIkGECCU@GJgFEJAHCFIHCHCJ@FBRJXIRBHF@DCJ@BHNJDV@DEBCGSBODKDGJEHANANBBAFBHENBJABAHBH@@CEE@CDCEIDE@CCCGYEEIAGEAE@C@EAAIABEGGGCABKJGCCGDANBBCQOC@@CEABKB@FBBAEGAEA@KCAGCACBADAAAADABCEG@ECAK@EGGACEGEUEM@IDGFIPCJMEKGCGE_DiDIFIHCJ@FLBHDBLBBA@CF@@FBBDABCBmIQ@MGUCGIGQAMGCGBMBIAAG@EBIAKI@COGKOA@CBC@GSCGIEMEYCUMCAIDCDE@KAEBADRRC`AF]NEFALDHHFJBDBBF@FCFytSPMDÂN_BeAMGYUEC_IÂcMIEEACCTI@ABALAFKFKHDR@HADA@IMEACACJ@DFFDDFPJBFFDRGXPNB`[RADBH@FWNGHCDBF^jBHINCDMBCBEVCD@FFFTBDCD@DDFTEF@FDFDBDADAB@@JCHCDEACCAEC@QNADHJBFGFDHGBGFKFGNEDGXEDQDIFG@SCGGEAE@CDCBEACHE@GACKEAG@EBCBCJKPAFFFBDAJSHGHKDSLEH@FFNLBBBQVMAIDCCC@CBCFCBIBM@IC@EKAM@KFEASKKGKSE@ABqWOSEBCN@TAFCBG@GMECGBEFGNKLCHBRCFEBKAWHEAAOCCGBYNGACE@EHETCPIDGAECAQDK@KM@CBCPMAAKCYKE@GGCBCHGFGRGJSFWIABELIHCDG@G@ECACAKI@GHIBIJAFBHCFIJIDAABIAAEIGEAE@ICCCBKLMAGEEAKDULG@IEGGHOIIDC@CIECGCAIDKB@DCD@LEFE@AACICECAQIE@IJBF@BCRADC@ICEDIDAHEBOBKFE@OCOIGGEMCCECYGMEGGEAMBIJEBOCINKAC@IJGFGBOAENIHAFBD@FCJ@J@FBBRJFJHHBVCDW@ODGF@JEN@LJJJPJHfNHDFFXL@DCJBJ@FFBR@JDHALIHIF@JDDD@HJNJBPAF@FXDFHBZPFF@JAFYLLPADGN@VEJCDE@KGGKC@QVGFO@SNGHCNA\\BXABMJUHa@ADCJCBIGKTAFDH@LMFK@IBIFCHMDI@EDON@BDDADEDO@ECEBEF@FDZEJPLFFD@F@@FHFBHFBFAPGF@B@DA@EB@LCB@DDJAF@FFJVDLCNGJKJOHDf@HELCD@DLJT@HBTPRFVLLJFRHNJJ\\LFD@FIFBFNDLR@JCPDRON@HPRFJBHHJOZ@JDL@HDFDDLDDFBNFNHHLBFDGJELALFPBN"]],"encodeOffsets":[[[121802,25820]],[[121740,25685]],[[121899,25675]],[[121684,25454]],[[121623,25425]],[[121623,25333]],[[121555,25259]],[[121539,25232]],[[121508,25224]],[[121270,25180]],[[121098,25050]],[[121068,24987]],[[121114,25038]],[[121002,24979]],[[120996,24966]],[[121182,24971]],[[121184,24974]],[[121622,25426]],[[121505,25152]],[[121225,25095]],[[121247,25105]],[[121281,25132]],[[121310,25121]],[[121294,25099]],[[121308,25078]],[[121313,25080]],[[121224,25052]],[[121217,25047]],[[121312,25017]],[[121314,25021]],[[121048,25070]],[[121078,25061]],[[121087,25044]],[[121071,25039]],[[121068,25037]],[[121054,25036]],[[121052,25033]],[[121055,25030]],[[121034,25014]],[[121843,25475]],[[121818,25469]],[[121820,25470]],[[121739,25478]],[[121837,25804]],[[121861,25787]],[[121838,25757]],[[121820,25703]],[[121800,25650]],[[121798,25647]],[[121880,25681]],[[121897,25672]],[[121871,25658]],[[121870,25623]],[[121876,25629]],[[121885,25631]],[[121885,25580]],[[121891,25561]],[[121897,25564]],[[121836,25535]],[[121815,25501]],[[121685,25431]],[[121692,25439]],[[121642,25448]],[[121650,25451]],[[121624,25406]],[[121606,25376]],[[121609,25377]],[[121549,25420]],[[121535,25397]],[[121552,25256]],[[121505,25148]],[[121483,25130]],[[121401,25127]],[[121359,25192]],[[121301,25152]],[[121289,25160]],[[121259,25116]],[[121278,25108]],[[121282,25109]],[[121304,24997]],[[121255,25103]],[[121040,25021]],[[121071,24986]],[[121034,24979]],[[121012,24979]],[[121005,24963]],[[120979,24957]],[[120982,24961]],[[120987,24961]],[[120544,26125]]]},"properties":{"cp":[118.289421,25.108853],"name":"æ³å·å¸","childNum":90}},{"id":"350600","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@@BBDH@ACGA"],["@@@DD@DA@CAAC@AD"],["@@@@B@BAAAAD"],["@@BBBAAAAB"],["@@AABB@@"],["@@ADBBHADGA@EDC@"],["@@@DBA@AA@"],["@@@DDABDD@ACCCCB@@"],["@@ABD@AA"],["@@CB@DD@DA@ECB"],["@@A@CDBBDE"],["@@B@BAA@AB"],["@@@BDACA@B"],["@@AFB@BCAA@@"],["@@PHDAACECC@EAAB@B"],["@@AACBHFAC@A"],["@@BAAABAACEBCBC@ADBBFAHB"],["@@BBB@AEA@@D"],["@@CDAHFABBF@BCFBFABAB@DAAEBAA@IFCGIAA@@FAB"],["@@AB@BB@DBHCCGEDAB"],["@@FCFDBIFC@EGBCFEDC@@HB@"],["@@D@@AA@AB"],["@@@DAF@LBDB@BADG@IDAACDA@AACCACDCF"],["@@BBD@EC@@@B"],["@@BACA@DB@"],["@@B@DA@E@AGF@DB@"],["@@RKNGXaFAH@TDDAJEESBECIBEBA@EAECAE@HMBKBWAMCKGIBKEAICCGCSEKBQJgDENEBAAKDML[DM@ECEKCBI@CCGCMCCICKKMEIGSeCAQBOCMDAACABK@E@ICIIEBCNGNKNGFCFG@GEECQBEHGACAI@KHCP@DALGFGDOBCFAFBDADGPGBEF@H_AABIAGGGBADA@@GUDKLSPMFCRAFCLQZIpDXAVAÂODC@EGiBQCKEGGEAEBCJEJDTBVAJAPMDEBUFABC@]B@XGJGDICQ@GTSHKBOAMCIEEKEGAcBA@AaAEECGCQAÂEKCIGMSGEGEcKKAM@EI_a@mIKIG_QWQa[UWOUAEC[FaBSCMQ]EOIIUKSCs@ICWcmeeeIUS}IMeWMAÂ
BqDYAWIMK[uMÂBGDGJKDGAMCGgeWe]ÂIOMGK@I@UJULqHMCcSc@CAO[GU@IBEHAFADCFO@QCGMIKAiAICGIEI@aBKPOBUACSUWGM@OBIAWKyWM@G@SFI@OA_G_CM@QBGHGJEXiIÃGAÃBJCHIFEAIBICGHK@GDKJMRIEADC@CAG@OIAAERKVKBUAIHIAABEJKLEPEFE@GCQFEDCJ@NBFEF@DBJCFAFDFAJBF@DCJ@XCJILE^EHENSPIJBFCL@BRPEPCVEJAHABEDAHABYHIFIBICEIQ@OFEFEJBBDDDBZACFBFBJFD@BABIBAB@DDFCH]LADDFBD@HAFEDCHBDHBFAJBLHFHBNFFBNCJHNORCF@FBJAFBDBNLLBFIJMFGAKGKHAD@DDN@FKJGHGBCF@DBBLBDBBFBJALDBBFGBMEG@ABCNIHADBHC^BLCJAJBFHLFZBHJJDFJBDBHNHFJLFDR@DBBHHHRHDDDJJJBDAFGJWLGJCBKAGJCJOJ@HU@EAQFANDJF@@@BRAFELDNAVFF@F@FA@C@@B@DDF@DGFIBQEC@GFCnBJLNCFMHADAXYT@FBLRZ@DELL@NATDFBNPJpFTBRIbEPQXEPM^GVC^DJRLN[D@BBHP@JGN`Xv@NA`GTHVXJRBX@TDP@PS\\BXHDdELNFRBT@BMVML@DFJBJDD@PCDUB@LCHMLL~@`AZBLHL^TJ@HHFJA\\BNFJNDJGBGDSCY@IBIFENCTJBDJBLBzIN@NLNbHLXRFHB^BT@NBRHJVLDJF@LHFL@DGB@NKBCDGT@HCJBHZGR@JANUDCJAFBFJPTAPHNBFDDF@BPCFUB@JDFlNTJNLJPNFLGBEMO@EDANHL@LOHAHDBAD@HF\\HLHPCLENCNBFDNNLFTGP@fCDBFCHELMNMHC^ARB^AHBJFFRIÂBNJJFPHJFNBbBLFhOfkXEF@HJNBd@ZDDNCDB@LDFPDVAHDLHHHBZFFBBLMLED@BFIX@FBDF@N@FICY@EFEFAFDP@FCBCCC@APMFCJ@NCDGJEJAL@NE@KCGBELSJHDADIBCb@VGNIBAAWB[DMHGTMP@HERUD@HLLHF@DCFI@UHMBCKOZKBE@IEEYOGACEEWE@OBIAIM@GCCICE@GJKJGBICQ@EA@EAIDI@CWKEEGCeMIGIOII@KFM@IHEPCX@DCAUGGEIQIAA@E@IDI@EACBEJGFMPBHAHEJID@LBJMPDFAJINAFBHHNFZHFDDDFNHHPJPDF@LEPAFABGJCFCJDD@BCDQ@AAEJIF@RJDBDFDJBBF@FE@KDC@CLAJCDBDHJF@DCDJJGPHHJFH@VKLCFBHFNBLKDADD@JBFHFFJBBAJBBJCJIDEAGBEJIJAHGJB"],["@@JE@EA@AAA@BHED@B@@"],["@@DDFBBBB@@EECC@CCABBD"],["@@BDD@@CAAC@@B"],["@@BDB@DCEAAB"],["@@C@@FCFBBCFDB@BAFA@AF@DBBD@LGBEDAACEA@CBCB@@ADCCCE@AA"]],"encodeOffsets":[[[120963,24945]],[[120535,24416]],[[120559,24424]],[[120918,24768]],[[120921,24767]],[[120968,24911]],[[120975,24931]],[[120916,24946]],[[120923,24946]],[[120861,24766]],[[120641,24511]],[[120694,24484]],[[120562,24394]],[[120570,24387]],[[120585,24385]],[[120560,24355]],[[120557,24362]],[[120543,24340]],[[120537,24344]],[[120521,24355]],[[120509,24356]],[[120498,24353]],[[120494,24362]],[[120517,24095]],[[120494,24116]],[[120293,24163]],[[120743,25468]],[[120278,24145]],[[120239,24127]],[[120243,24135]],[[121075,24739]],[[120987,24903]]]},"properties":{"cp":[117.561801,24.310897],"name":"æ¼³å·å¸","childNum":32}},{"id":"350700","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@NCDCHMHE@GCIEGCMACSCSUECKAGEU_@KBAR@HDPHJ@VGJGDIBMEYEMDOAIDCSIGKCAC@QBKAEAEECQKEKDMGAACICAEGCGMGGKI@@A@]BGJCPODIAEIOES@SFGHKCCBGCYBELEbeBKH@N@LCBAZEhQBGECAC@AdC@CEGJK@C@OJKFCFAKKBKNEDI@GEEAEAMCCCCROBGBCCEFQFGLGBE@OFKBECAE@ICECFKCENEDEJ@BABOJKJSL]DAHAFCJMJKJBF@AIHI@CAEG@UBM@CAAGJKBEAECEGE@EBCHI@EBELKPIHMJKBIEKDCBAAMFCJ@DABCAIGEAMCIBGGGBE@M@KFEHCCEQCGECMIQMIYEKUGAEK@GBAJEFBNDBBFCBKAA@CBAFA@CCCDCLDDGDG@KCC@CBEJBHEJSAIFCFAX@DBJ@NBD@FADGVEJKFDJVAFADCBNJH@PFNAHDBHAFDF@DEFEDCD@FPJHGHEN@XDHAFGLEPSFCD@DFVGBKRKDBLJF@FAHKHAD@HDDFFDJHNFLJPCHCFGFSACO@ICBCHEDC@CCKAIAG@ANIF@HDD@LAFE@GDAHDDBJEFBFDFEB@J@JFD@JENEFGJBJADDFDJAPGZDFEBBJD@RFDBABE@I@EFDHDHAFAAEAMDOFMJIHGBOMSKEM@CC@MDM@EICEA@GAEECAEDG@KBGUBECAIAAA@KFCAGEM]DE@EAGEA@WBKDKACG@C@BCHCBGFAF@D@LSTONHH@BABEDBLIDDFA@AACAELEDILGBCEKEGAIC@ABAJIBCCE@ACCAAD@HCFEBEEABGHBNAD@HGDGAKFI@GHE@C@CE@GG_UGIAKFCEDCCE@K@K@M@GEI@C@AF@LBHADEDIAKIaAGBCJEJ@RGFCBEEEAGGAIICBEHMFCCEAE@GCOCECAOFGACCCEBECUGSDKAAABSBCJIFYACaE@LEDAB@FCDE@C@AD@JADMDKJAJDH@HCDWBGDABEA@BC@ECC@ADAAACG@AFBHA@IIA@CHIFE@AA@GIBEAYBECIIIBGHEGE@CBAFGBCJNRDLOJCFDTGhCHEDKAE@SJQ@IBMDGHE@ECGG@CFC@AAG@AD@LFAIMY@KFAJ@JBFDAM@MT@@KDEACCAIQGCSDGFAHC@I@AAAEAKGGCEQEGEIWAMQMGKIKCICOCKSQCAEGKFEBECIIAKBGFEAKGCCCDG@CWKIGQEWCQMEGBMAKGGKCU@QFQAMBYNGAOMKEIAODIHEH@LKHSAEEMYFIf]J]DEHI@CEAAK@IAGMKHSCCGKOEIBIEIBGDYCEEBEACC@G@UAAAIWDENIFGFGBI@GGiEEI@CACEDE@ECEAOGIKUAI@[CGKG@IES@MC@GDC@ECEDC@KOCKDEKIEIACDCJGVAPGDADM@EKMBKCQEME@CGBG@EEMHQ@GEO@KCIBOCI@ECCDGFILEJAHADAFBLHLAD@FE@EMOFM@IYmHW@IEIGMEGE@C@AJC@GGWIKEECEGCEAEBIAEIGBAJCFEDGAIAEIEEKGAGG@K@AAABQDA@GVGDC@OAUBAJADDBFDDPAFBDHAFFBDC@CEM@GDCJC@KCGL@FDNPDBD@HHFBJALMFCRCTMLCLG@CCEFOSMCEFEFIBCAGFKHGBEBOCOFGAGNeAG@EAAE@MTKRCDGBOAOPAH@HCRA@KAGDIACRAFIHC@ECIFELILHJADcBOECBGF@DFLAFOLMBMACACGQ@EAOXAHMNKBCBCHCBICQMSGAEICEEYMCDCREDODEFAHCDEJEFAL@PHJJHF@DCPOD@DDDDBJGPDF@DG@CAACAICAGBCDe@OAEEU@I@KFCDELUJCGMIA@AFMCCBCDETADA@EG@EK@ECK@EDCH@LDFFDJDFT@D@@C@SOYBCLCBSK@CHI@EAEUICBKLCBW@GIGKACBEFC@IMK_D@BFNI@QBEDCFE@ME@IBMGEGACEGCIAGEGAED@DKHEAGDGAEC@MAAG@CCA@EDE@c[A@AB@PCFC@Q@EDI@@HFHEF@HKAEBGHICI@@JEDAD@DFJAHGL@FK@GFC@GCA@CDARKFAF@DDB@JFDDDONAFBLMHEBEAEACEEICBCDGV@JBDFDJBIR@BD@HNB@DCBBBFCFIFC@E@WGCFE@MEC@CFC@@FFJ@VCDWR@FDD@LV\\LJ@BABM@GBIJCBE@IAEDC@ACHI@EACIIMJA@KEODKEGNKFA@A@MSQIWBABALCBCAEEA@AH@F@@GCWIGICCITFJAHCHADMAEB@BHRALCDMDCZGFDHHAHFP@HJBDEDQDAHKFBLFDDFBJADABE@@ADE@AULBDDBBBBFFFCFJFC@AFCBGBSGIKQEKFCBEGC@EFOBWIO@CBEAKGGMSLE@SEC@ELCBCBCCBGAAA@EFIBECGCG@MCMGGIEOYFCACKSEC@GPAHNHBF@FCBSA]BCHGBAD@BB@DAJDGH@JIDMBMFCEIJKBIDADLJ@D@DGDO@EDCFBFBDJ@BBLTDLFFFBTCBFJNDBPDLFHPFHDJ@LDJJJJFJLAHGJ@RHF@D[TILENMROLAFAHEHBJ@DKJGNCBGAA@W\\GDGBAB@DIDKbE\\CDGBKGE@EDGLM@EAGMC@C@OHI@EAQKKDIJAD@JAFBRDJDFHD`FFDBBBTBF@LBHPFBFFHABGFQAAFBDADCBKCEDEHKDBHABKCAEEAcB@BHR@DGDCCEECGYGMME@GDENDNABKF@BHLAFCVCDGDEAIKGDAD@DFFRRFH@DCBE@GAKIOAMMKBMPAH@DEDQDCACB@BALDF@LHLAJEFKAGDOBIAK@MGADEFMDOHINEBK@EBGBMF_TI@EAECAECS@EH@FFFBH@DEBUACKGCIHMBOAECI@QAAI@MMOEAAEOEICAICE@CDCRUHCDGDQDIHM@IFQXGPGJETCFEDEFOHGLC@CEM@ECOMOCIEGAGBMNMJIDC@CACKEIGCMDODEDCDBLCDE@OKCEA@EX@JADEHET@NDPFHRJDNTX`PDFDJR^HDHGXHDFDLJDFJVNFLNHBDCJLL@RDDHDHAFF@LFDCHDFFRCDG@GBCDGNM@IAQDBJJP@FCHU@]LGCA@IHGLAFFZCPFRADEJAHNF@RBF`NFHDDBJHVBFMRAdCBIAMJCDBNCD@DFNIHCD@FBJJLFBCFEBAJCHEDALB`APEHOFEJBJINCDCBICEMMGIOGECAGNE@MCIFG@GBMHGJAHFPJjEHAHCDIDAB@DHJ@BOLEJEFDDFDBFJEDBFNFJCTLPPHHJFBL@JDPCLILOPM@CAEBG`]DAF@JFLFABCBAF@JHBDDSdKJ@@HTLH@JJBHJFDJ@BCJAFGLDL@PGJBfQRFFFN@JDNA@@AF@HBPCH@HBJFHFBJANFNBN@LCFBJPFDFBNCFDBNFJJJLDBDGV@FDJD@LGV@JPHHBF@FQb@DD\\HfCHONO@GBGDADF^DHCD@DDBDABCFAJFN@HDLJ@LJJHLHBH@DAJGDCBIBICMBECE@GB@HCHGNBFBDD@JJLPXXLNCHDLJT@PHFH`\\BJDDDBFBHDHPHDFJNDD@DE@CDCJABEB@HALRl`FDDJDZVPNBDA@KFEVGN@FCHCDGFCBEGQDMHGHCHNLHNGCMDA@SDKAECG@GBCBANGFOHGFECYBGBCFA@AFCV@FEvQLITGHKHQNID@JHD@HCB@FDHJHBBAFKJGHOTMHIFCHAF@BBJLPJFVJPJFFFL@DDJTJLBDAFEDCJBNFJDLCJAJBFDBNDHFBJHFJDJPLFXFJFZPDFJNFBDADCDIDANJJBTHFBRCHFR@@HJJFJPFH@FFHHHBF@VGDADGFCH@ZHLHFHDPPPDALSHDH@DAF@NLRBD@FCFKFAB@DBDBN@HDNEFEBODCVCL@JBDB@FIXDPAF@JBLFFLHDNFAHEPAH@JHBDALCHIJARJF@FTL@DDDN@LDJFNGTALCLGL@HDB@FEF@LFJHDBFAVFXRLNTMFBVRPHN@HDPCdPFAJCLDVAF@BEDAXFFHBLALFJBHEJ@NFFRF@BADILADBJGLBBBHRFPLDDIP@HBPADCBSBKFUCMFIZKDQLIL@FLHdRB@JAFLFFBDAJBBRBJD@FHJNJD@DCRDJH@DHFNBBFBBJFJBRNJ@FDB@BIGQFEDQHBDA@EEEBAT@BCII@A@EHBDEHCHABAF@DCLFLCHFNKJEHNND@FDF@BGAABBB@FC@CHGD@@DHBLBDHBFHD@RSHAXB`HBB@L@F@DBBTGXFLCTBHCFILKBEEIBMJENFZAD@HHNBNZN@JFF@JIJCJ@LBNPPZHVLPHBHAHFH@HAFCLKDE@KCIAG@KZEBE@O\\[RG\\GHE^@"],"encodeOffsets":[[121647,28921]]},"properties":{"cp":[118.178459,27.335627],"name":"åå¹³å¸","childNum":1}},{"id":"350800","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@JG^OPCXExEPGJIDKA_DOHKHEL@\\X\\RNNJFH@^MhIRGJFNPHALCHEHCLBHDJLHlLCTMCGBAL@FAEEACBECEEQ@UHEDICKBYDEHAV@POLBFCNUVANCZSREPGJIDIB_HiPKRH\\PTBJCBEKMIQEOE[JMh[NOVMdHPHNFPCJHN`HLPHDDP\\XZXJPBRALITEHIfHLHRHVDXDPAPGHOD]LgX_RQFM@GAEAKLKBC@CACIE@E@CNU@EKAEGOEACBCRQDBCPB@B@DAPY@EAYSM@CFADALDF@@GH@BA@EBCH@AKE@GDCA@ALODOL@LBHBBBRBxMPODWHKZWTa@SCMAQHAFBFFBDHBFAR[JEJFDFLDDBBD[BRV@JDDNFJXNJFJHLBRDNbRTRh\\FNAJKRIBOAYEKHNZNPBLFDBTLNXLNBN@RD^PXJZFBRANBJBHLJN@^EHeFCBSCCIEAAHODUTMBBBHATBDFGFi@SDMBMCIScAIFG^@|NJHLhTpPJLFDDBF@DEDGDECGF@DDDP@PDHFH@FADMHARHBAAGOKAEHM@MJG@GB@HDLTLJRHH@HHF@FELSDOFEPGPCJ@LADAJOPOBGKIAELUHIHAJ@LBPJ`VHDH@FDPARILSHSHMNGZUV[L[LKdHNAFFF@@A@QGaIMQOIOC@GBKLQLGGG@AAEOCOEIA_HQDFRHDELED@JDBAAMEOBKFKHIECKAGGEMAMCEKCEGAICK@EBGNUGIAGEIOQ@GPMCQDO@IKQMCAEJE@EEC[KIIGMEQKIUKQESOGAS@KI@CDCFK@GCePGLIHIDMCKIUEEE@IBCCA@KDA@@FCBA@E@OHEBEAAGGE@EE@C@EEOKS@AC@EJWAEC@KFKNAAEEAYGGKGGCUBOCCE@KCAMDCC@YAcIM@GFElWPeEgAKAaEMGIEOIIAMJÂEQIEGA]BQA]BGDMNKNGFEDCAeDO@SHKEMMECMAMDKFODKG[GGEC@ABGCGBKPK@MGCB@FNPAFKHMEIOMKSIkMCE@IVADEAOE@CCAEGMBOOSEIEAIBCDMVIBQ@YHAGDI@GHSDCLA@MHA@CEKKGE@CIUKGIAQ@MASA]EGWQGKMaMKM@yJKAIAACSIMDEFAJ@JDZE\\IHMCEIAMB[EIGGI@]SGKAKBY@_K}NKDG@KVADC@OCCAIEI@CNKNU@AASEQKMcFGCAWT[@OCO@SAWIQKMIISG_HMBu@_WHM@IGOAAC@M\\QKCID]HUN]FORWFOJaAQESIoMOEASCMBK@FK@CCEKXURCLE@EAKGCHCF@TIBABKVCFOHABO^@DHFCLBBTCBBLHDF@DMPIROPOT[SKEA@@D@BHH@B_NIHORINGN@FBLCBM@[XCH@JBDHFNHIXEHBFjjDHFHBHPJDDDDCRBJFDFBFFJDBBDREJCLQZIBIASDGAQQMKQS@@MHGJAFCBM@I@KEKDGAI@CCAEAEECUHICQBQ@UEEAAEC@QAEEG@CGAGA@CBKBEHGDEAE@SNGBGIAKIMSGIEAE@EAEQCAEIACAACSAKEOGG@KLIDIFGLHHAHFL@JBF@DHFBHCFGBAJIJCFCHAV@FDH@LCFSVEPGFE@GEQD[KI@IBGFCLANCHEDI@AHABQDEDAFDFHBIJ@BFHF@CH@DOPIFCFCJCNADC@KGE@I@EFBJMLAFFRAHHHFDJBFDJ@NHXJFF@DILI@ALMAEBEFAHDNIHDDHB@DAB_@ECC@@ABGACI@GFGCOSGEBE@GCM@MCKGGI@CACGC@@JIGSIGIOGIKGAYEY@MB[MK@IDOJ@DBHJNNNJD@H@DGDKBMCECCAMHABAXADADIDELCDODIPGXGBMEGKWUGEQSGAOAIF_DIDGCIBC@CCEDG@CABIGKA@GFBFALCFA@WBAEEAEPCDI@KDCFEHDHABABGEE@@BDBBDCBAPCFQNMPGFGBA@SQA@KAMHG@C@CNCDAH@FC@A@ICA@CFAEEAGD@BMFCCEBCCAFCBI@I@GBI@UHG@EAABAFADQPABGAKRCJGDG@EBEL@RDHVJDADGJCFODAF@JFZKH@FBBBAHMTedaFCDBHIFAFAF@NAHLJRCDFBJJBBFBDDBDAFHPDLGDDFJH@DFADKJAD@HO@@FFDAHHFEFEJIHMFKBW@EBAFBPFHOLCFAD@NDDLAJFDHAJCNEBCDALCDC@OEGBEHKAADAHAHBBPD@DCDGFCHJD@DAXBFC^PLHNFAHCDGDAPFBAHDVZRDPEBBHDLDDBDLHJFPJH@FJJBNEPALFLDBF@JCLIJ@DBFD@NBBDBF@HEDIB@HHJHLNDNHP@DEDIB@DHDBD@LEHCFQD@@BHLDDNOZ@HFJZ\\AFIX@HBBDDT@JHDD@HAD@HDLADIJ@HIRBPFLFJABMGGFAFDTCBAFJHFHFTHBVDLHCHBD@DAPBTDLBBDBPCLBDBBHHHDJ@DKLBJGJ@^CJIFGBED@FNTGFCNDBP@BDDLFFFBDAFGD@BDBTKHAHIJ@DJH@DCHBHH@@B@BQLHN@LFBBABIFBATBFDBFGHBLKD@D@HHNAF@PHDB@HAN@RJNFBDDCLBFHLJJBFDHP@FBBBJCDFH@JFJBH@B@BCEIBI@KHCLFBbDJFL@DEDCJCDGBAFCFCDGBCBDPCHUNMBCD@FEFGECD@RADAF@ZDFAJXNBDBFBBRJRDNAHN@FHNZNPATDJHVFD@DAJMFALDLBNCFBDBFPHFFBZ@LHF@H@NFDBDNFHJHHBHFHTBHDDT@LHLBbAFBDDBBEVEPIR@FBD@HHJJ@FBAJLLLZBB`D"],"encodeOffsets":[[119194,26658]]},"properties":{"cp":[116.72978,25.191603],"name":"é¾å²©å¸","childNum":1}},{"id":"350900","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@KBWJOLYXEJAFDRFHHHXLLDRARGPKJKFUDI\\KDEBEACEAUDC@]SIA"],["@@MFEFM^@RJXDHPLHDH@PKTGjEZHTJ\\HRCLGBOIOÂosKuC"],["@@I@IHIHEJAJPLLFFHFNTTHJFDHBJ@LGFE@I@MI_CAKBOEAIBGSMIC"],["@@E@IH@JBBJDBDBFDH@BEFBDNDFDJBRGDLDDFBF@DCDC@CASEICMGECAEDO@AAAEEES@"],["@@DMA@K@IBIHABNHFEL@"],["@@BBH@DDD@AGKCA@AF"],["@@NLFBPBDBDAACEIE@EAAAIBIEAB@D"],["@@BFF@DBB@BCHB@GDA@AKAE@BCH@@ACCC@@ADA@CEACAID@FFBABBDABCB@BFDAB"],["@@CFHB@FBABBDCD@D@BADBFEE@EEB@BBDACC@AIA@ACC@ACAC@ABBFBB@DCD@B"],["@@ADD@DEE@@B"],["@@ADDAAA"],["@@@FBBBGDEAAA@ABAF"],["@@JDBBD@B@BEAAC@M@@B"],["@@BBDCD@DDDACGE@EAA@AFBD"],["@@BBD@FEFFJAJABCCAGBKEC@AAA@AB@FCBAD"],["@@JBABBBN@RC@CACF@DFB@BCAA@AD@BCEACDEA@AC@@CCABECAIBEAADEAADG@EAOHEFBDDBHAPF"],["@@H@@AB@HBBACCEAKFBB"],["@@D@DEJADHDALBBBD@@CGAKIEC@AD@D@JBD@@E@AE@AIA@ADCACBEAAAE@AEG@@D@HJHGDBFAHBD"],["@@ILDHRJL@@AECBC@CDACEKGG@"],["@@FBJ@NBD@EEI@CCK@EA@DDD"],["@@HBHCD@DB@FNDDAACFEAAGCEAIBCAKAGF@BDD"],["@@C@CB@DG@IDEH@DF@BDB@BCD@BAFDDABEH@BCAEEE"],["@@JBDHHDB@DCB@BCH@@CFABA@EAAM@CCG@KGCA@F@FEAEBBFABBDDDB@@C@@"],["@@@DJJJABCDABEBAHDFCEC@ECAIDAF@@ICCDEAAF"],["@@HHJ@@CF@ACAAKCCAA@AB@B@D"],["@@DDL@@AHB@@CEKAGD"],["@@HBFD@HD@B@BGDCDCCCBAAAGBGAE@GB@DB@BD"],["@@BDFADBDFCLJBFFBA@EBCHEDGIACGWBED"],["@@AB@DPBHHD@BEAC@CEEEGIAAF@DAD"],["@@CPBBF@DABAEIFBFA@C@CECAGGGI@ABBDBBHP"],["@@FDD@DIQBDD"],["@@H@@CACC@BDC@@D"],["@@BBJ@HBF@FAT@JBFDBBTCDC@AKIE@@ABCACCC@GEE@ALGFI@AAAKBEBEJA@ECG@ABBFCNQACFKDAFGB@BFDADBD"],["@@IFIHBDADN@FAHEF@DCD@BA@A@AHDD@@EF@CEEACEEAEAC@AD@@DD@DGDE@"],["@@A@AFDLDFJDNC@CBCAC[K"],["@@CH@FBBLDHDLBL@dLDADERCNIBCACIGEGC@GDOBAEGEYEEEC@AFEBG@CDCDCJ"],["@@FJHBJKEECAEBEAAD@D"],["@@BBFBFARHB@EE@ADACEBCAEEBE@@BG@AFCBAD"],["@@A@BCCCIDGEJOJ@HGH@DCBKACDEHEAIBCFAP@HCDGJCAEDCDCJABM@INFFC@EIGKMPEDMDEH@HEN@D@DGCG@CBEHEH@JAHGAEKGILCBA@AEBU@ACE@CDAB@F@JCTCDDDLD@^KHKLCDB@HDBFA@ABANDLCDBFNKBIJPRFDFADEHEDCHDJCN@BAAAMG@CDANBBAAGDCFD@HBHHABCB@BF@FB@JEHBF@BHDDHBD@D@H@LIDBADDBNAHBHAPCBDCLG@ADDDCF@BJHABI@ABDDL@DBDF@DFHRJDDFH@DABOEADBHHDVDRFP@BB@JLFVEFABG@ONBFKPO@GAEDCP@TGN@BLDFL@JVDDHBFFDLLBNNJ@FDAVDDRHVDHAFABEFAJBFHBJCJEFCHBFFFPFdDF@BBFABCJ@LEBBF@VNH@LBD@LKFCHADDFABDJBDHPDRLDJD@XMDE@G@OGECE@EDELKNWDAH@HDJJJDFANGJ@DFBCHABBAHDJ@H@BFDHCBC@CGEBANEH@RHLIHKDGEMGI@ABECCACDGRGBE@AEK@ELIBERKJADAHKJUJI\\UDYJOLIFCZUAGCEICGDEHI@QKGIBEVMHG@AGOIG@CDEKEDAJ@BA@CGEJIBGEE@ARADGNGBCCEDIRIDE@GBAHBFAbeuoQMoUAI@MACOKY@kH_D]ACDCJCBE@[KCAIBSLC@GCAEBKLKBEAIEOHOPUBG@CGC@I@CAAEDAXAJCDGBEDUAKCIFIBGCICCaCGIKG@EFMIGCKAOCKBAFBBAAK@OEEMIISC@MBDJC@O@KFeECBMJEB_@QEIBGHC@MMECEBGJCBK@CCACACBQHS@I@EGIMIMKMAQ@QAGCIIEAIA]DKAIECKBOJ]BEFEJApARAhHFECCKEEGFWJOHAD@LFNBB@FEHAPFD@BICG]QOaOQ@CPQL@LCnPDBJ@DE@EACIGAC@CTBDAFC@QGMCASMkGKCMKIICEBCDCDQHMCMBEHCNDHBB@@CIGAEBG@@JBJDJAFC@A@ECEIGÂ
cKKGA]FIDCDING@ÂgoYSCIAQBSFMDUESKIQGG@AFCAADKFCHA@CAAEAACICAOEEYAUIEGIECCBEEIKQSGQ@KAYDQDQBGDELGDAFBBDPAFBFLP@HAPBDPLDF@JEJ@BFNLLFD`NPJJLRDTPD@D@VED@LDNALBF@FGBIBCDADBBDATDDLDJR@HEFAJFHT@DDCN@HBDHHFFAFKJAFAFBHNJNNDBFLJTNH^DJDBLAHBBRJFHBBP@ddFFBJAJGLCBGBgGo@QAUCYKI@GBAB@FDH@FEDGAGGG@IDM@UIECGIAENONY@OEGGUc[IMGQKIDOFGBIEE@EBEHADC@EGEKAIGKCGIUGG@IBEBEHAH@J@DLV@BAFUPeRMA[GECmNG@ÂMW@Q@SFaT}|CHI^G@BGBI@EBIFEJE@GGYEIOCMFEDCAECCCBGNM@EMQK@IgGOQIQGUOKDA@OMBIrqLGLENBLJLBHHrPHFFHFBR@JCLITA^DVDT@JEFEPQDETIP@fOHMBEEGACJOJGDMAEINAHSLCHIDSNIB[CKBCA@CHECASOICWLEBG@UFMII@EACCOo@CMEEFE@CG@CAGEAI@OFGACBMGQEE@CB@BBFABMBA@@DEB@FCDEDMFE@GEE@GHQAMLEBICCBCDFD@FAD]LM@CDOVLJ@BKRKFAJIDMR@JBDILCDWA@FKDSLEA@CEAE@CDGBS@MEUCMAEBMPKBCA@CAAG@AABAZIBGICG@CBIBIDMBOAAE@MIOEEUCCBCDG@CB@KCDG@AA@C@AFCBEEEIBIE@EEGGCCBA@EAAEED@DGCA@@DDFF@BJABEB@HUBE@EAUWGQGÂ
CCIDADIHUJGBCEIYII]GEBQX@TGHMZCFMFCAEIGCIMCCMEG@C@IIAEC@CBGAEDE@GAAGAAGHEBQ@CA@CAAO@AD@DEHBJEDADCFIBBBBDEHBFCD@HC@CA@KAAIACBCDA@OCK@QHCDBFFHLHJBBD@FEFEFMJCFCBC@MMCAI@_DGCBMACKFEAAMACGA@EBEF@@CIIACDI@AGEKFC@ECCC@CPO@CEEACFG@AECACCAE@IHEBS@KAQGKEEICUOMCKBGFEPBFEBKG[GECAM@CDSVE@UAKBaIGCCC[G@C@ICCOGAKIMaSUGCNBBGDAJOCFEMGCJ@L@FD@BDCFWT@DPL@^CHMFOFIBABFLEJEFS@GBCDC@EAUBCG@G@AFADCAKJABGAGQGGIC@GEAE@QCIDQAEGMHE^OTGFCIOFKIA@ICEBEFCRAHEFECGJGHKDCFAF@RKFGAICICUGC[QEA[FMF@FABEB{BQ[GGGCEEMICCAYLCBA@CACCAE@CDABC@@CC@G@DICCUIGICFDPAPAFGHELBHADEJEFDFTNEPDF@DKHKDSNQDEDKNIBEAGGC@CAMOECK@DH@LIDCD@HFN@DCDEABECGEAOBCCAECCIBABBV@PCDUH@HCB@HAJBB@B@LHHHBFLJFBFBJCHEFID@DHFBFAJBFJNRJXJHHD@BID@F@JLJT@JGXZn@JENNP@FEFC@KBKGEACBGBIBKFEJCHDD@FDJAPDJ@LFP@HGRFN@FAHDHF@FNDRALLN@FCNCBOHUBIHCDBDFJLJCFDLLPD@FCFDD@HCD@@NFT@JLHDH@\\BJLVHJBPDF@FCFDFDBJ@FFHj@HAJEHEHMJCFJXBBVBH@D@BDAFFFZDHCJAJFJAPFHLDDGTNLBH@JBLFB@DGJCFI^e^EJHPLPTBLG@KFGJGPCJBLFPNHBZMNARBREV@LDHHBLANFHRNXDRFJHXL@DCHDDHDBLEFAHBLJJFDFALEFHDBTRDLDPDJJLHLRNBNJXHFRFDFHHBLBFBBJ@D@BGHETCHDJRDBBDCF@LS@@NBNECIAI@EB@LNZBJKEC@@BBH@BED@DHHFDF@HGNCJAR@TIF@LBFCDGHgCSDEPICKMQDIHABEDAF@FHHGJAJJFDZAFBJA@HBBF@JEDGB@JJB@AGBEH@BDBBBCD@FDD@@AFBBAHCXADC@GCGBILINCBC@IBCD@F@DC@EBAFC@KbFBDEZIJADATBBLBTCVHFDFADDBDEHBPFDPDHDF@FBDDNEFGDAJJHBBHFFAFEDQHI@IFADBHJbBLCJCFGBKAE@@B@DFJ@H@N@L@LDFCDDFLEJBVHH`@HDFD@F@HGJ@LEHBHC@GBCAMHGBAFFFADE@GBCDBBDF@DDJABIBAD@BJFHFJAFKHCJKFBFBD@BEBCCKJCAAFABG@MGSPKTC@E@EBAHGDADD@H@BDCLAL@XFBBH@FCFN^HFDBLEB@BBBJFDVAAH@LCHBFFDBF@HFBJD@FCN@NDDN@LFNR@BAPGHIJCDCPAPDNLBBBDJLPBF@DNdNH~ZLHNDLHFHD@AHHBAHEB@F@JCBFHJHTTVPLFfJl@LEJK@IDMHKJIPFLDJHTTRZDL@RLTDNE^N\\XRBD@BENBHCHFFAFD\\@JN@FHFAFCFAFDBDBJBDVCFBDH@FELBFH@DGHABI@A@ABAHBDAD@HFHCBBLFDFB@DAFEDALALDDJB@PFD@NAFBFCBC\\CDCF@HE@EIQBEPQ@ACIECCG@EAAGDAAGEC@ECAKDGFE@ECE@GDGBWFCLBJEH@vGDGIM@OC@C@ACEKEGCIHCDCACD@JFPBFADB@FBBDEHACCBCVQACDKHAFC@EIGAOBALC@GBGGC@EBCFB@A@CEADGEIHMMIDGCC@KIEEA"]],"encodeOffsets":[[[123250,27563]],[[122541,27268]],[[123020,27189]],[[122916,27125]],[[121678,27068]],[[123398,27612]],[[123294,27747]],[[123611,27636]],[[123592,27651]],[[123587,27574]],[[123587,27576]],[[123438,27501]],[[123358,27630]],[[123380,27622]],[[123263,27607]],[[123185,27583]],[[123137,27586]],[[123136,27581]],[[123105,27518]],[[123002,27474]],[[123025,27443]],[[123021,27325]],[[123237,27343]],[[123240,27281]],[[123209,27290]],[[122984,27247]],[[123034,27193]],[[123016,27168]],[[123017,27126]],[[122884,27182]],[[122850,27191]],[[122865,27137]],[[122785,27331]],[[122683,27314]],[[122653,27317]],[[122636,27252]],[[122672,27239]],[[122677,27206]],[[122569,28102]]]},"properties":{"cp":[119.527082,26.95924],"name":"å®å¾·å¸","childNum":39}}],"UTF8Encoding":true}); |
| | | })); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | import Vue from 'vue'; |
| | | import App from './App.vue'; |
| | | import router from './router'; |
| | | import store from './store'; |
| | | import dataV from '@jiaminghi/data-view'; |
| | | // å¼å
¥å
¨å±css |
| | | import './assets/scss/style.scss'; |
| | | // æéå¼å
¥vue-awesome徿 |
| | | import Icon from 'vue-awesome/components/Icon'; |
| | | import 'vue-awesome/icons/chart-bar.js'; |
| | | import 'vue-awesome/icons/chart-area.js'; |
| | | import 'vue-awesome/icons/chart-pie.js'; |
| | | import 'vue-awesome/icons/chart-line.js'; |
| | | import 'vue-awesome/icons/align-left.js'; |
| | | import ElementUI from 'element-ui'; |
| | | import axios from 'axios'; |
| | | import VueAxios from 'vue-axios'; |
| | | |
| | | //å¼å
¥echart |
| | | //4.x å¼ç¨æ¹å¼ |
| | | import echarts from 'echarts' |
| | | //5.x å¼ç¨æ¹å¼ä¸ºæéå¼ç¨ |
| | | //å¸æä½¿ç¨5.xçæ¬çè¯,éè¦å¨package.json䏿´æ°çæ¬å·,并忢å¼ç¨æ¹å¼ |
| | | //import * as echarts from 'echarts' |
| | | Vue.prototype.$echarts = echarts |
| | | Vue.config.productionTip = false; |
| | | Vue.use(VueAxios, axios) |
| | | // å
¨å±æ³¨å |
| | | Vue.component('icon', Icon); |
| | | Vue.use(dataV); |
| | | Vue.use(ElementUI) |
| | | |
| | | new Vue({ |
| | | router, |
| | | store, |
| | | render: (h) => h(App), |
| | | }).$mount('#app'); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | import Vue from 'vue' |
| | | import VueRouter from 'vue-router' |
| | | |
| | | Vue.use(VueRouter) |
| | | |
| | | const routes = [{ |
| | | path: '/', |
| | | name: 'index', |
| | | component: () => import('../views/index.vue') |
| | | }] |
| | | const router = new VueRouter({ |
| | | routes |
| | | }) |
| | | |
| | | export default router |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | import Vue from 'vue' |
| | | import Vuex from 'vuex' |
| | | |
| | | Vue.use(Vuex) |
| | | |
| | | export default new Vuex.Store({ |
| | | state: { |
| | | }, |
| | | mutations: { |
| | | }, |
| | | actions: { |
| | | }, |
| | | modules: { |
| | | } |
| | | }) |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | // å±å¹éé
mixin 彿° |
| | | |
| | | // * é»è®¤ç¼©æ¾å¼ |
| | | const scale = { |
| | | width: '1', |
| | | height: '1', |
| | | } |
| | | |
| | | // * 设计稿尺寸ï¼pxï¼ |
| | | const baseWidth = 1920 |
| | | const baseHeight = 1080 |
| | | |
| | | // * éä¿æçæ¯ä¾ï¼é»è®¤1.77778ï¼ |
| | | const baseProportion = parseFloat((baseWidth / baseHeight).toFixed(5)) |
| | | |
| | | export default { |
| | | data() { |
| | | return { |
| | | // * 宿¶å½æ° |
| | | drawTiming: null |
| | | } |
| | | }, |
| | | mounted () { |
| | | this.calcRate() |
| | | window.addEventListener('resize', this.resize) |
| | | }, |
| | | beforeDestroy () { |
| | | window.removeEventListener('resize', this.resize) |
| | | }, |
| | | methods: { |
| | | calcRate () { |
| | | const appRef = this.$refs["appRef"] |
| | | if (!appRef) return |
| | | // å½å宽髿¯ |
| | | const currentRate = parseFloat((window.innerWidth / window.innerHeight).toFixed(5)) |
| | | if (appRef) { |
| | | if (currentRate > baseProportion) { |
| | | // 表示æ´å®½ |
| | | scale.width = ((window.innerHeight * baseProportion) / baseWidth).toFixed(5) |
| | | scale.height = (window.innerHeight / baseHeight).toFixed(5) |
| | | appRef.style.transform = `scale(${scale.width}, ${scale.height}) translate(-50%, -50%)` |
| | | } else { |
| | | // 表示æ´é« |
| | | scale.height = ((window.innerWidth / baseProportion) / baseHeight).toFixed(5) |
| | | scale.width = (window.innerWidth / baseWidth).toFixed(5) |
| | | appRef.style.transform = `scale(${scale.width}, ${scale.height}) translate(-50%, -50%)` |
| | | } |
| | | } |
| | | }, |
| | | resize () { |
| | | clearTimeout(this.drawTiming) |
| | | this.drawTiming = setTimeout(() => { |
| | | this.calcRate() |
| | | }, 200) |
| | | } |
| | | }, |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | /** |
| | | * @param {Function} fn 鲿彿° |
| | | * @param {Number} delay å»¶è¿æ¶é´ |
| | | */ |
| | | export function debounce(fn, delay) { |
| | | var timer; |
| | | return function () { |
| | | var context = this; |
| | | var args = arguments; |
| | | clearTimeout(timer); |
| | | timer = setTimeout(function () { |
| | | fn.apply(context, args); |
| | | }, delay); |
| | | }; |
| | | } |
| | | |
| | | /** |
| | | * @param {date} time éè¦è½¬æ¢çæ¶é´ |
| | | * @param {String} fmt éè¦è½¬æ¢çæ ¼å¼ å¦ yyyy-MM-ddãyyyy-MM-dd HH:mm:ss |
| | | */ |
| | | export function formatTime(time, fmt) { |
| | | if (!time) return ''; |
| | | else { |
| | | const date = new Date(time); |
| | | const o = { |
| | | 'M+': date.getMonth() + 1, |
| | | 'd+': date.getDate(), |
| | | 'H+': date.getHours(), |
| | | 'm+': date.getMinutes(), |
| | | 's+': date.getSeconds(), |
| | | 'q+': Math.floor((date.getMonth() + 3) / 3), |
| | | S: date.getMilliseconds(), |
| | | }; |
| | | if (/(y+)/.test(fmt)) |
| | | fmt = fmt.replace( |
| | | RegExp.$1, |
| | | (date.getFullYear() + '').substr(4 - RegExp.$1.length) |
| | | ); |
| | | for (const k in o) { |
| | | if (new RegExp('(' + k + ')').test(fmt)) { |
| | | fmt = fmt.replace( |
| | | RegExp.$1, |
| | | RegExp.$1.length === 1 |
| | | ? o[k] |
| | | : ('00' + o[k]).substr(('' + o[k]).length) |
| | | ); |
| | | } |
| | | } |
| | | return fmt; |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | // æ··å
¥ä»£ç resize-mixins.js |
| | | import { debounce } from '@/utils'; |
| | | const resizeChartMethod = '$__resizeChartMethod'; |
| | | |
| | | export default { |
| | | data() { |
| | | // å¨ç»ä»¶å
é¨å°å¾è¡¨ init çå¼ç¨æ å°å° chart 屿§ä¸ |
| | | return { |
| | | chart: null, |
| | | }; |
| | | }, |
| | | created() { |
| | | window.addEventListener('resize', this[resizeChartMethod], false); |
| | | }, |
| | | activated() { |
| | | // 鲿¢ keep-alive ä¹åå¾è¡¨åå½¢ |
| | | if (this.chart) { |
| | | this.chart.resize() |
| | | } |
| | | }, |
| | | beforeDestroy() { |
| | | window.removeEventListener('reisze', this[resizeChartMethod]); |
| | | }, |
| | | methods: { |
| | | // 鲿彿°æ¥æ§å¶ resize çé¢ç |
| | | [resizeChartMethod]: debounce(function() { |
| | | if (this.chart) { |
| | | this.chart.resize(); |
| | | } |
| | | }, 300), |
| | | }, |
| | | }; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="screen-container"> |
| | | <div id="index" class="dashboard-screen"> |
| | | <div class="bg"> |
| | | <!-- 顶鍿 颿 --> |
| | | <div class="screen-header"> |
| | | <div class="header-content"> |
| | | <h1 class="main-title"> |
| | | <i class="el-icon-monitor title-icon"></i> |
| | | æåæºè½ä»å¨æ°æ®å¤§å± |
| | | </h1> |
| | | <div class="header-info"> |
| | | <div class="current-time">{{ currentTime }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- æ°æ®æ»è§é¨å --> |
| | | <div class="screen-section"> |
| | | <div class="section-title"> |
| | | <div class="title-decoration"></div> |
| | | <h2>æ°æ®æ»è§</h2> |
| | | <div class="title-decoration"></div> |
| | | </div> |
| | | <div class="metrics-grid-large"> |
| | | <div class="metric-card-large" v-for="(item, index) in dataMetrics" :key="`metric-${index}-${refreshKey}`" |
| | | :class="getMetricCardClass(item.name)"> |
| | | <div class="metric-glow"></div> |
| | | <div class="metric-content"> |
| | | <div class="metric-icon-large"> |
| | | <i :class="getMetricIcon(item.name)"></i> |
| | | </div> |
| | | <div class="metric-info-large"> |
| | | <div class="metric-name-large">{{ item.name }}</div> |
| | | <div class="metric-value-large">{{ formatNumber(item.value) }}</div> |
| | | <div class="metric-compare-large" v-if="item.compare !== undefined"> |
| | | <span :class="getCompareClass(item.compare)"> |
| | | <i :class="getCompareIcon(item.compare)"></i> |
| | | {{ formatCompareValue(item.compare) }} |
| | | </span> |
| | | <span class="compare-label">è¾æ¨æ¥</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="metric-wave"> |
| | | <div class="wave"></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- ä¸é´å
容åºå --> |
| | | <div class="screen-main"> |
| | | <!-- 左侧å¾è¡¨ --> |
| | | <div class="main-left"> |
| | | <div class="chart-container-large"> |
| | | <div class="chart-header-large"> |
| | | <h3 class="chart-title-large"> |
| | | <i class="el-icon-trend-charts"></i> |
| | | åºåºéè¶å¿ |
| | | </h3> |
| | | <div class="chart-subtitle-large">è¿7æ¥åºåºç»è®¡</div> |
| | | </div> |
| | | <div class="chart-content-large"> |
| | | <div v-if="loading" class="chart-loading-large"> |
| | | <i class="el-icon-loading"></i> |
| | | <span>æ°æ®å è½½ä¸...</span> |
| | | </div> |
| | | <div v-else-if="error" class="chart-error-large"> |
| | | <i class="el-icon-warning"></i> |
| | | <span>æ°æ®å 载失败</span> |
| | | </div> |
| | | <div v-else-if="!chartData.outbound.values.length" class="chart-no-data-large"> |
| | | <i class="el-icon-data-line"></i> |
| | | <span>ææ åºåºæ°æ®</span> |
| | | </div> |
| | | <div v-else ref="outboundChart" class="chart-large"></div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="chart-container-large"> |
| | | <div class="chart-header-large"> |
| | | <h3 class="chart-title-large"> |
| | | <i class="el-icon-trend-charts"></i> |
| | | å
¥åºéè¶å¿ |
| | | </h3> |
| | | <div class="chart-subtitle-large">è¿7æ¥å
¥åºç»è®¡</div> |
| | | </div> |
| | | <div class="chart-content-large"> |
| | | <div v-if="loading" class="chart-loading-large"> |
| | | <i class="el-icon-loading"></i> |
| | | <span>æ°æ®å è½½ä¸...</span> |
| | | </div> |
| | | <div v-else-if="error" class="chart-error-large"> |
| | | <i class="el-icon-warning"></i> |
| | | <span>æ°æ®å 载失败</span> |
| | | </div> |
| | | <div v-else-if="!chartData.inbound.values.length" class="chart-no-data-large"> |
| | | <i class="el-icon-data-line"></i> |
| | | <span>ææ å
¥åºæ°æ®</span> |
| | | </div> |
| | | <div v-else ref="inboundChart" class="chart-large"></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- ä¸é´ä»»å¡çæ¿ --> |
| | | <div class="main-center"> |
| | | <div class="task-board-large"> |
| | | <div class="board-header-large"> |
| | | <div class="header-title"> |
| | | <i class="el-icon-s-management"></i> |
| | | <span>å½åç产任å¡</span> |
| | | </div> |
| | | <div class="task-count-large"> |
| | | <span class="count-number">{{ tableData.length }}</span> |
| | | <span class="count-label">个任å¡</span> |
| | | </div> |
| | | </div> |
| | | <div class="board-body-large"> |
| | | <div class="scroll-table-container-large" @mouseenter="pauseScroll" @mouseleave="resumeScroll"> |
| | | <div class="table-body-container-large" ref="tableBody"> |
| | | <div class="table-body-wrapper-large" :style="{ transform: `translateY(-${scrollPosition}px)` }"> |
| | | <table class="body-table-large"> |
| | | <tbody> |
| | | <tr v-for="(row, index) in tableData" :key="`task-${index}-${refreshKey}`" |
| | | :class="getRowClass(index)"> |
| | | <td class="cell-index">{{ index + 1 }}</td> |
| | | <td class="cell-pallet">{{ row.palletCode || 'æ ' }}</td> |
| | | <td class="cell-address">{{ row.sourceAddress || 'æ ' }}</td> |
| | | <td class="cell-address">{{ row.targetAddress || 'æ ' }}</td> |
| | | <td class="cell-type">{{ row.taskType || 'æ ' }}</td> |
| | | <td class="cell-status"> |
| | | <span class="status-tag-large" :class="getStatusClass(row.taskState)"> |
| | | {{ row.taskState || 'æ ' }} |
| | | </span> |
| | | </td> |
| | | <td class="cell-time">{{ formatDateTime(row.createDate) || 'æ ' }}</td> |
| | | </tr> |
| | | </tbody> |
| | | </table> |
| | | |
| | | <table class="body-table-large" v-if="tableData.length > rowNum"> |
| | | <tbody> |
| | | <tr v-for="(row, index) in tableData" :key="`task-copy-${index}-${refreshKey}`" |
| | | :class="getRowClass(index)"> |
| | | <td class="cell-index">{{ index + tableData.length + 1 }}</td> |
| | | <td class="cell-pallet">{{ row.palletCode || 'æ ' }}</td> |
| | | <td class="cell-address">{{ row.sourceAddress || 'æ ' }}</td> |
| | | <td class="cell-address">{{ row.targetAddress || 'æ ' }}</td> |
| | | <td class="cell-type">{{ row.taskType || 'æ ' }}</td> |
| | | <td class="cell-status"> |
| | | <span class="status-tag-large" :class="getStatusClass(row.taskState)"> |
| | | {{ row.taskState || 'æ ' }} |
| | | </span> |
| | | </td> |
| | | <td class="cell-time">{{ formatDateTime(row.createDate) || 'æ ' }}</td> |
| | | </tr> |
| | | </tbody> |
| | | </table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div v-if="tableData.length === 0" class="no-data-board-large"> |
| | | <i class="el-icon-document"></i> |
| | | <span>ææ çäº§ä»»å¡æ°æ®</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- å³ä¾§å¾è¡¨ --> |
| | | <div class="main-right"> |
| | | <div class="chart-container-full"> |
| | | <div class="chart-header-large"> |
| | | <h3 class="chart-title-large"> |
| | | <i class="el-icon-data-line"></i> |
| | | æåº¦åºå
¥åºå¯¹æ¯ |
| | | </h3> |
| | | <div class="chart-subtitle-large">æ¬ææ¯æ¥åºå
¥åºéç»è®¡</div> |
| | | </div> |
| | | <div class="chart-content-full"> |
| | | <div v-if="loading" class="chart-loading-large"> |
| | | <i class="el-icon-loading"></i> |
| | | <span>æ°æ®å è½½ä¸...</span> |
| | | </div> |
| | | <div v-else-if="error" class="chart-error-large"> |
| | | <i class="el-icon-warning"></i> |
| | | <span>æ°æ®å 载失败</span> |
| | | </div> |
| | | <div v-else-if="!chartData.monthData.inValue.length || !chartData.monthData.outValue.length" |
| | | class="chart-no-data-large"> |
| | | <i class="el-icon-data-line"></i> |
| | | <span>ææ åºå
¥åºæ°æ®</span> |
| | | </div> |
| | | <div v-else ref="monthDataChart" class="chart-full"></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- èæ¯è£
饰å
ç´ --> |
| | | <div class="decoration-corner top-left"></div> |
| | | <div class="decoration-corner top-right"></div> |
| | | <div class="decoration-corner bottom-left"></div> |
| | | <div class="decoration-corner bottom-right"></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import http from '../api/ajax.js'; |
| | | import * as echarts from 'echarts'; |
| | | |
| | | export default { |
| | | name: 'DashboardScreen', |
| | | |
| | | data() { |
| | | return { |
| | | // ååºå¼æ°æ® |
| | | dataMetrics: [], |
| | | tableData: [], |
| | | chartData: { |
| | | outbound: { dates: [], values: [] }, |
| | | inbound: { dates: [], values: [] }, |
| | | monthData: { dates: [], inValue: [], outValue: [] } |
| | | }, |
| | | loading: true, |
| | | error: false, |
| | | refreshing: false, |
| | | refreshKey: 0, |
| | | |
| | | // æ»å¨ç¸å
³ |
| | | scrollPosition: 0, |
| | | isScrolling: true, |
| | | scrollInterval: null, |
| | | rowNum: 6, |
| | | rowHeight: 60, |
| | | |
| | | // å½åæ¶é´ |
| | | currentTime: '', |
| | | |
| | | // å¾è¡¨å®ä¾ |
| | | outboundInstance: null, |
| | | inboundInstance: null, |
| | | monthDataInstance: null, |
| | | |
| | | // ç¼©æ¾æ§å¶ |
| | | scaleRatio: 1, |
| | | |
| | | // 徿 å¼ç¨ |
| | | refreshIcon: 'el-icon-refresh' |
| | | }; |
| | | }, |
| | | |
| | | mounted() { |
| | | this.updateScale(); |
| | | this.fetchData(); |
| | | this.timeInterval = setInterval(this.updateCurrentTime, 1000); |
| | | this.dataInterval = setInterval(this.fetchData, 300000); // 5åé |
| | | |
| | | // æ·»å çªå£è°æ´çå¬ |
| | | window.addEventListener('resize', this.handleResize); |
| | | window.addEventListener('resize', this.updateScale); |
| | | }, |
| | | |
| | | beforeDestroy() { |
| | | clearInterval(this.timeInterval); |
| | | clearInterval(this.dataInterval); |
| | | this.pauseScroll(); |
| | | |
| | | // æ¸
çå¾è¡¨å®ä¾ |
| | | [this.outboundInstance, this.inboundInstance, this.monthDataInstance].forEach(instance => { |
| | | if (instance) instance.dispose(); |
| | | }); |
| | | |
| | | // ç§»é¤çªå£è°æ´çå¬ |
| | | window.removeEventListener('resize', this.handleResize); |
| | | window.removeEventListener('resize', this.updateScale); |
| | | }, |
| | | |
| | | methods: { |
| | | // å¨æç¼©æ¾å½æ° |
| | | updateScale() { |
| | | const baseWidth = 1920; |
| | | const baseHeight = 1080; |
| | | |
| | | const windowWidth = window.innerWidth; |
| | | const windowHeight = window.innerHeight; |
| | | |
| | | // 计ç®å®½é«æ¯ä¾ |
| | | const widthRatio = windowWidth / baseWidth; |
| | | const heightRatio = windowHeight / baseHeight; |
| | | |
| | | // æ ¹æ®å®½é«æ¯å³å®ç¼©æ¾çç¥ |
| | | let scale; |
| | | if (windowWidth / windowHeight > baseWidth / baseHeight) { |
| | | // 宽å±ï¼æé«åº¦ç¼©æ¾ |
| | | scale = heightRatio; |
| | | } else { |
| | | // é«å±ï¼æå®½åº¦ç¼©æ¾ |
| | | scale = widthRatio; |
| | | } |
| | | |
| | | // éå¶ç¼©æ¾èå´ |
| | | scale = Math.max(0.5, Math.min(scale, 2)); |
| | | |
| | | this.scaleRatio = scale; |
| | | |
| | | // åºç¨ç¼©æ¾ |
| | | const screenElement = document.getElementById('index'); |
| | | if (screenElement) { |
| | | screenElement.style.transform = `translate(-50%, -50%) scale(${scale})`; |
| | | } |
| | | |
| | | console.log(`çªå£å°ºå¯¸: ${windowWidth}x${windowHeight}, ç¼©æ¾æ¯ä¾: ${scale.toFixed(3)}`); |
| | | }, |
| | | |
| | | // æ ¼å¼å彿° |
| | | formatNumber(num) { |
| | | if (num === undefined || num === null) return '0'; |
| | | return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); |
| | | }, |
| | | |
| | | formatCompareValue(value) { |
| | | if (value === 0) return '0'; |
| | | return value > 0 ? `+${this.formatNumber(value)}` : this.formatNumber(value); |
| | | }, |
| | | |
| | | formatDateTime(dateString) { |
| | | if (!dateString) return ''; |
| | | try { |
| | | const date = new Date(dateString); |
| | | return date.toLocaleString('zh-CN', { |
| | | month: '2-digit', |
| | | day: '2-digit', |
| | | hour: '2-digit', |
| | | minute: '2-digit' |
| | | }); |
| | | } catch { |
| | | return dateString; |
| | | } |
| | | }, |
| | | |
| | | // æ ·å¼ç±»å½æ° |
| | | getCompareClass(compare) { |
| | | if (compare > 0) return 'compare-positive'; |
| | | if (compare < 0) return 'compare-negative'; |
| | | return 'compare-zero'; |
| | | }, |
| | | |
| | | getCompareIcon(compare) { |
| | | if (compare > 0) return 'el-icon-top'; |
| | | if (compare < 0) return 'el-icon-bottom'; |
| | | return 'el-icon-minus'; |
| | | }, |
| | | |
| | | getMetricCardClass(name) { |
| | | const classMap = { |
| | | '仿¥è¿åºé': 'metric-inbound-today', |
| | | '仿¥åºåºé': 'metric-outbound-today', |
| | | 'æ¬æè¿åºé': 'metric-inbound-month', |
| | | 'æ¬æåºåºé': 'metric-outbound-month', |
| | | 'åºåæ»é': 'metric-total' |
| | | }; |
| | | return classMap[name] || ''; |
| | | }, |
| | | |
| | | getMetricIcon(type) { |
| | | const iconMap = { |
| | | '仿¥è¿åºé': 'el-icon-download', |
| | | '仿¥åºåºé': 'el-icon-upload2', |
| | | 'æ¬æè¿åºé': 'el-icon-download', |
| | | 'æ¬æåºåºé': 'el-icon-upload2', |
| | | 'åºåæ»é': 'el-icon-box', |
| | | }; |
| | | return iconMap[type] || 'el-icon-data-board'; |
| | | }, |
| | | |
| | | getStatusClass(status) { |
| | | const statusMap = { |
| | | 'è¿è¡ä¸': 'status-primary', |
| | | '已宿': 'status-success', |
| | | '已忶': 'status-info', |
| | | 'å¼å¸¸': 'status-danger', |
| | | 'å¾
æ§è¡': 'status-warning' |
| | | }; |
| | | return statusMap[status] || 'status-primary'; |
| | | }, |
| | | |
| | | getRowClass(index) { |
| | | return index % 2 === 0 ? 'even-row' : 'odd-row'; |
| | | }, |
| | | |
| | | // æ¶é´æ´æ° |
| | | updateCurrentTime() { |
| | | const now = new Date(); |
| | | this.currentTime = now.toLocaleString('zh-CN', { |
| | | year: 'numeric', |
| | | month: '2-digit', |
| | | day: '2-digit', |
| | | hour: '2-digit', |
| | | minute: '2-digit', |
| | | second: '2-digit' |
| | | }); |
| | | }, |
| | | |
| | | // æ»å¨æ§å¶ |
| | | startScrolling() { |
| | | if (this.tableData.length <= this.rowNum) { |
| | | this.isScrolling = false; |
| | | return; |
| | | } |
| | | |
| | | this.isScrolling = true; |
| | | const totalHeight = this.tableData.length * this.rowHeight; |
| | | |
| | | this.scrollInterval = setInterval(() => { |
| | | this.scrollPosition += 1; |
| | | if (this.scrollPosition >= totalHeight) { |
| | | this.scrollPosition = 0; |
| | | } |
| | | }, 40); |
| | | }, |
| | | |
| | | pauseScroll() { |
| | | if (this.scrollInterval) { |
| | | clearInterval(this.scrollInterval); |
| | | this.scrollInterval = null; |
| | | } |
| | | this.isScrolling = false; |
| | | }, |
| | | |
| | | resumeScroll() { |
| | | if (this.tableData.length > this.rowNum) { |
| | | this.startScrolling(); |
| | | } |
| | | }, |
| | | |
| | | // å¾è¡¨åå§å |
| | | initCharts() { |
| | | console.log('åå§åå¾è¡¨...'); |
| | | console.log('outboundæ°æ®:', this.chartData.outbound); |
| | | console.log('inboundæ°æ®:', this.chartData.inbound); |
| | | console.log('monthDataæ°æ®:', this.chartData.monthData); |
| | | |
| | | if (!this.$refs.outboundChart || !this.$refs.inboundChart || !this.$refs.monthDataChart) { |
| | | console.log('å¾è¡¨å®¹å¨æªæ¾å°'); |
| | | return; |
| | | } |
| | | |
| | | // æ¸
çæ§å®ä¾ |
| | | [this.outboundInstance, this.inboundInstance, this.monthDataInstance].forEach(instance => { |
| | | if (instance) { |
| | | instance.dispose(); |
| | | } |
| | | }); |
| | | |
| | | try { |
| | | this.outboundInstance = echarts.init(this.$refs.outboundChart); |
| | | this.inboundInstance = echarts.init(this.$refs.inboundChart); |
| | | this.monthDataInstance = echarts.init(this.$refs.monthDataChart); |
| | | |
| | | // 大å±å¾è¡¨é
ç½® |
| | | const chartOptions = { |
| | | backgroundColor: 'transparent', |
| | | grid: { |
| | | left: '3%', |
| | | right: '3%', |
| | | bottom: '10%', |
| | | top: '15%', |
| | | containLabel: true |
| | | }, |
| | | textStyle: { |
| | | color: '#fff', |
| | | fontSize: 14 |
| | | } |
| | | }; |
| | | |
| | | // åºåºéå¾è¡¨é
ç½® |
| | | const outboundOption = { |
| | | ...chartOptions, |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | axisPointer: { |
| | | type: 'shadow' |
| | | }, |
| | | formatter: function (params) { |
| | | const data = params[0]; |
| | | return ` |
| | | <div style="font-weight: 600; margin-bottom: 8px; color: #303133;">${data.name}</div> |
| | | <div style="display: flex; align-items: center; font-size: 14px;"> |
| | | <span style="display: inline-block; width: 8px; height: 8px; background: ${data.color}; border-radius: 50%; margin-right: 8px;"></span> |
| | | <span style="color: #606266;">åºåºé: </span> |
| | | <span style="font-weight: 600; margin-left: 8px; color: #303133;">${data.value}</span> |
| | | </div> |
| | | `; |
| | | }, |
| | | backgroundColor: 'rgba(255, 255, 255, 0.95)', |
| | | borderColor: '#e4e7ed', |
| | | borderWidth: 1, |
| | | textStyle: { |
| | | color: '#303133' |
| | | } |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: this.chartData.outbound.dates, |
| | | axisLine: { lineStyle: { color: 'rgba(255,255,255,0.3)' } }, |
| | | axisLabel: { color: 'rgba(255,255,255,0.7)', rotate: 45, fontSize: 12 } |
| | | }, |
| | | yAxis: { |
| | | type: 'value', |
| | | axisLine: { lineStyle: { color: 'rgba(255,255,255,0.3)' } }, |
| | | axisLabel: { color: 'rgba(255,255,255,0.7)', fontSize: 12 }, |
| | | splitLine: { lineStyle: { color: 'rgba(255,255,255,0.1)', type: 'dashed' } } |
| | | }, |
| | | series: [{ |
| | | name: 'åºåºé', |
| | | data: this.chartData.outbound.values, |
| | | type: 'bar', |
| | | itemStyle: { |
| | | color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ |
| | | { offset: 0, color: '#ff7b7b' }, |
| | | { offset: 1, color: '#ff3b3b' } |
| | | ]) |
| | | }, |
| | | barWidth: '40%' |
| | | }] |
| | | }; |
| | | |
| | | // å
¥åºéå¾è¡¨é
ç½® |
| | | const inboundOption = { |
| | | ...chartOptions, |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | axisPointer: { |
| | | type: 'line' |
| | | }, |
| | | formatter: function (params) { |
| | | const data = params[0]; |
| | | return ` |
| | | <div style="font-weight: 600; margin-bottom: 8px; color: #303133;">${data.name}</div> |
| | | <div style="display: flex; align-items: center; font-size: 14px;"> |
| | | <span style="display: inline-block; width: 8px; height: 8px; background: ${data.color}; border-radius: 50%; margin-right: 8px;"></span> |
| | | <span style="color: #606266;">å
¥åºé: </span> |
| | | <span style="font-weight: 600; margin-left: 8px; color: #303133;">${data.value}</span> |
| | | </div> |
| | | `; |
| | | }, |
| | | backgroundColor: 'rgba(255, 255, 255, 0.95)', |
| | | borderColor: '#e4e7ed', |
| | | borderWidth: 1, |
| | | textStyle: { |
| | | color: '#303133' |
| | | } |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: this.chartData.inbound.dates, |
| | | axisLine: { lineStyle: { color: 'rgba(255,255,255,0.3)' } }, |
| | | axisLabel: { color: 'rgba(255,255,255,0.7)', rotate: 45, fontSize: 12 } |
| | | }, |
| | | yAxis: { |
| | | type: 'value', |
| | | axisLine: { lineStyle: { color: 'rgba(255,255,255,0.3)' } }, |
| | | axisLabel: { color: 'rgba(255,255,255,0.7)', fontSize: 12 }, |
| | | splitLine: { lineStyle: { color: 'rgba(255,255,255,0.1)', type: 'dashed' } } |
| | | }, |
| | | series: [{ |
| | | name: 'å
¥åºé', |
| | | data: this.chartData.inbound.values, |
| | | type: 'line', |
| | | smooth: true, |
| | | lineStyle: { color: '#36a3ff', width: 3 }, |
| | | itemStyle: { color: '#36a3ff' }, |
| | | areaStyle: { |
| | | color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ |
| | | { offset: 0, color: 'rgba(54, 163, 255, 0.5)' }, |
| | | { offset: 1, color: 'rgba(54, 163, 255, 0.1)' } |
| | | ]) |
| | | } |
| | | }] |
| | | }; |
| | | |
| | | // æåº¦æ°æ®å¾è¡¨é
ç½® |
| | | const monthDataOption = { |
| | | ...chartOptions, |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | axisPointer: { |
| | | type: 'cross' |
| | | }, |
| | | formatter: function (params) { |
| | | let html = `<div style="font-weight: 600; margin-bottom: 8px; color: #303133;">${params[0].name}</div>`; |
| | | params.forEach(param => { |
| | | html += ` |
| | | <div style="display: flex; align-items: center; margin: 4px 0; font-size: 14px;"> |
| | | <span style="display: inline-block; width: 8px; height: 8px; background: ${param.color}; border-radius: 50%; margin-right: 8px;"></span> |
| | | <span style="color: #606266;">${param.seriesName}: </span> |
| | | <span style="font-weight: 600; margin-left: 8px; color: #303133;">${param.value}</span> |
| | | </div> |
| | | `; |
| | | }); |
| | | return html; |
| | | }, |
| | | backgroundColor: 'rgba(255, 255, 255, 0.95)', |
| | | borderColor: '#e4e7ed', |
| | | borderWidth: 1, |
| | | textStyle: { |
| | | color: '#303133' |
| | | } |
| | | }, |
| | | legend: { |
| | | data: ['å
¥åºé', 'åºåºé'], |
| | | bottom: 10, |
| | | textStyle: { color: 'rgba(255,255,255,0.7)', fontSize: 12 } |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: this.chartData.monthData.dates, |
| | | axisLine: { lineStyle: { color: 'rgba(255,255,255,0.3)' } }, |
| | | axisLabel: { color: 'rgba(255,255,255,0.7)', rotate: 45, fontSize: 12 } |
| | | }, |
| | | yAxis: { |
| | | type: 'value', |
| | | axisLine: { lineStyle: { color: 'rgba(255,255,255,0.3)' } }, |
| | | axisLabel: { color: 'rgba(255,255,255,0.7)', fontSize: 12 }, |
| | | splitLine: { lineStyle: { color: 'rgba(255,255,255,0.1)', type: 'dashed' } } |
| | | }, |
| | | series: [ |
| | | { |
| | | name: 'å
¥åºé', |
| | | data: this.chartData.monthData.inValue, |
| | | type: 'line', |
| | | smooth: true, |
| | | lineStyle: { color: '#36a3ff', width: 3 }, |
| | | itemStyle: { color: '#36a3ff' } |
| | | }, |
| | | { |
| | | name: 'åºåºé', |
| | | data: this.chartData.monthData.outValue, |
| | | type: 'line', |
| | | smooth: true, |
| | | lineStyle: { color: '#ff6b6b', width: 3 }, |
| | | itemStyle: { color: '#ff6b6b' } |
| | | } |
| | | ] |
| | | }; |
| | | |
| | | // 设置å¾è¡¨é项 |
| | | this.outboundInstance.setOption(outboundOption); |
| | | this.inboundInstance.setOption(inboundOption); |
| | | this.monthDataInstance.setOption(monthDataOption); |
| | | |
| | | console.log('å¾è¡¨åå§å宿'); |
| | | } catch (error) { |
| | | console.error('å¾è¡¨åå§å失败:', error); |
| | | } |
| | | }, |
| | | |
| | | // çªå£è°æ´ |
| | | handleResize() { |
| | | [this.outboundInstance, this.inboundInstance, this.monthDataInstance].forEach(instance => { |
| | | if (instance) { |
| | | try { |
| | | instance.resize(); |
| | | } catch (error) { |
| | | console.error('å¾è¡¨è°æ´å¤§å°å¤±è´¥:', error); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | // æ°æ®å¤ç |
| | | handleDataUpdate(data) { |
| | | console.log('å¤çæ°æ®æ´æ°:', data); |
| | | |
| | | // å¤çææ æ°æ® |
| | | if (data.metrics && Array.isArray(data.metrics)) { |
| | | this.dataMetrics = data.metrics.map(item => ({ |
| | | name: item.name || 'æªç¥ææ ', |
| | | value: item.value != null ? item.value : 0, |
| | | compare: item.compare != null ? item.compare : 0 |
| | | })); |
| | | } |
| | | |
| | | // å¤çåºåºæ°æ® |
| | | if (data.outbound) { |
| | | this.chartData.outbound.dates = data.outbound.dates || []; |
| | | this.chartData.outbound.values = data.outbound.values || []; |
| | | } |
| | | |
| | | // å¤çå
¥åºæ°æ® |
| | | if (data.inbound) { |
| | | this.chartData.inbound.dates = data.inbound.dates || []; |
| | | this.chartData.inbound.values = data.inbound.values || []; |
| | | } |
| | | |
| | | // å¤çæåº¦æ°æ® |
| | | if (data.monthData) { |
| | | this.chartData.monthData.dates = data.monthData.dates || []; |
| | | this.chartData.monthData.inValue = data.monthData.inValue || []; |
| | | this.chartData.monthData.outValue = data.monthData.outValue || []; |
| | | } |
| | | |
| | | // å¤ç任塿°æ® |
| | | if (data.newTask && Array.isArray(data.newTask)) { |
| | | this.tableData = data.newTask.map(task => ({ |
| | | palletCode: task.palletCode || 'æ ', |
| | | sourceAddress: task.sourceAddress || 'æ ', |
| | | targetAddress: task.targetAddress || 'æ ', |
| | | taskType: task.taskType || 'æ ', |
| | | taskState: task.taskState || 'æ ', |
| | | createDate: task.createDate || 'æ ', |
| | | })); |
| | | |
| | | this.$nextTick(() => { |
| | | this.pauseScroll(); |
| | | this.startScrolling(); |
| | | }); |
| | | } else { |
| | | this.tableData = []; |
| | | this.pauseScroll(); |
| | | } |
| | | |
| | | console.log('å¤çåçå¾è¡¨æ°æ®:', this.chartData); |
| | | |
| | | this.refreshKey++; |
| | | |
| | | // å»¶è¿åå§åå¾è¡¨ï¼ç¡®ä¿DOMå·²æ´æ° |
| | | this.$nextTick(() => { |
| | | setTimeout(() => { |
| | | this.initCharts(); |
| | | }, 100); |
| | | }); |
| | | }, |
| | | |
| | | // æ°æ®è·å |
| | | async fetchData() { |
| | | try { |
| | | this.loading = true; |
| | | this.refreshing = true; |
| | | |
| | | console.log('å¼å§è·åæ°æ®...'); |
| | | const response = await http.post("api/StockInfo/GetStockData", {}); |
| | | console.log('APIååº:', response); |
| | | |
| | | if (response.data && response.data.data) { |
| | | this.handleDataUpdate(response.data.data); |
| | | this.error = false; |
| | | } else { |
| | | throw new Error('APIè¿åæ°æ®æ ¼å¼é误'); |
| | | } |
| | | } catch (err) { |
| | | console.error('API请æ±å¤±è´¥:', err); |
| | | this.error = true; |
| | | } finally { |
| | | this.loading = false; |
| | | this.refreshing = false; |
| | | this.updateCurrentTime(); |
| | | } |
| | | }, |
| | | |
| | | handleRefresh() { |
| | | this.fetchData(); |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped lang="css"> |
| | | /* å
¨å±æ ·å¼éç½® */ |
| | | :global(html), |
| | | :global(body) { |
| | | margin: 0; |
| | | padding: 0; |
| | | overflow: hidden; |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | /* å¤å±å®¹å¨ - å
¨å±æ§å¶ */ |
| | | .screen-container { |
| | | width: 100vw; |
| | | height: 100vh; |
| | | overflow: hidden; |
| | | background: #000; |
| | | position: relative; |
| | | } |
| | | |
| | | /* 大å±å
容 - åºå®1920x1080尺寸 */ |
| | | #index { |
| | | color: #d3d6dd; |
| | | width: 1920px; |
| | | height: 1080px; |
| | | position: absolute; |
| | | top: 50%; |
| | | left: 50%; |
| | | transform: translate(-50%, -50%); |
| | | transform-origin: center center; |
| | | overflow: hidden; |
| | | min-width: 1920px; |
| | | min-height: 1080px; |
| | | transition: transform 0.2s ease; |
| | | /* 鲿¢ç¼©æ¾æ¨¡ç³ */ |
| | | -webkit-font-smoothing: antialiased; |
| | | -moz-osx-font-smoothing: grayscale; |
| | | } |
| | | |
| | | .bg { |
| | | width: 100%; |
| | | height: 100%; |
| | | padding: 25px 16px 0 16px; |
| | | background-image: url("../assets/bg5.jpg"); |
| | | background-size: cover; |
| | | background-position: center center; |
| | | background-repeat: no-repeat; |
| | | } |
| | | |
| | | .dashboard-screen { |
| | | width: 100%; |
| | | height: 100%; |
| | | color: #fff; |
| | | position: relative; |
| | | overflow: hidden; |
| | | font-family: 'Microsoft YaHei', Arial, sans-serif; |
| | | } |
| | | |
| | | /* 顶鍿 颿 */ |
| | | .screen-header { |
| | | background: rgba(16, 36, 71, 0.8); |
| | | border-bottom: 1px solid rgba(64, 158, 255, 0.3); |
| | | padding: 15px 30px; |
| | | backdrop-filter: blur(10px); |
| | | border-radius: 10px; |
| | | margin-bottom: 20px; |
| | | } |
| | | |
| | | .header-content { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | } |
| | | |
| | | .main-title { |
| | | font-size: 32px; |
| | | font-weight: 700; |
| | | background: linear-gradient(135deg, #409eff, #79bbff); |
| | | background-clip: text; |
| | | margin: 0; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .title-icon { |
| | | font-size: 36px; |
| | | margin-right: 15px; |
| | | } |
| | | |
| | | .header-info { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 20px; |
| | | } |
| | | |
| | | .current-time { |
| | | font-size: 18px; |
| | | color: rgba(255, 255, 255, 0.8); |
| | | } |
| | | |
| | | .refresh-btn { |
| | | background: linear-gradient(135deg, #409eff, #79bbff); |
| | | border: none; |
| | | border-radius: 25px; |
| | | padding: 12px 24px; |
| | | font-size: 16px; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | /* åºåæ é¢ */ |
| | | .screen-section { |
| | | padding: 0 16px 20px; |
| | | } |
| | | |
| | | .section-title { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | gap: 20px; |
| | | margin-bottom: 25px; |
| | | } |
| | | |
| | | .section-title h2 { |
| | | font-size: 24px; |
| | | font-weight: 600; |
| | | color: #fff; |
| | | margin: 0; |
| | | } |
| | | |
| | | .title-decoration { |
| | | flex: 1; |
| | | height: 2px; |
| | | background: linear-gradient(90deg, transparent, #409eff, transparent); |
| | | } |
| | | |
| | | /* æ°æ®å¡çç½æ ¼ */ |
| | | .metrics-grid-large { |
| | | display: grid; |
| | | grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); |
| | | gap: 20px; |
| | | margin-bottom: 20px; |
| | | } |
| | | |
| | | .metric-card-large { |
| | | background: rgba(16, 36, 71, 0.6); |
| | | border: 1px solid rgba(64, 158, 255, 0.3); |
| | | border-radius: 15px; |
| | | padding: 25px; |
| | | position: relative; |
| | | overflow: hidden; |
| | | transition: all 0.3s ease; |
| | | backdrop-filter: blur(10px); |
| | | } |
| | | |
| | | .metric-card-large:hover { |
| | | transform: translateY(-5px); |
| | | box-shadow: 0 10px 30px rgba(64, 158, 255, 0.2); |
| | | border-color: rgba(64, 158, 255, 0.6); |
| | | } |
| | | |
| | | .metric-glow { |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | right: 0; |
| | | height: 3px; |
| | | background: linear-gradient(90deg, #409eff, #79bbff); |
| | | opacity: 0.7; |
| | | } |
| | | |
| | | .metric-content { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 20px; |
| | | } |
| | | |
| | | .metric-icon-large { |
| | | width: 70px; |
| | | height: 70px; |
| | | border-radius: 15px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | font-size: 32px; |
| | | background: rgba(255, 255, 255, 0.1); |
| | | } |
| | | |
| | | .metric-inbound-today .metric-icon-large { |
| | | color: #67c23a; |
| | | } |
| | | |
| | | .metric-outbound-today .metric-icon-large { |
| | | color: #e6a23c; |
| | | } |
| | | |
| | | .metric-inbound-month .metric-icon-large { |
| | | color: #409eff; |
| | | } |
| | | |
| | | .metric-outbound-month .metric-icon-large { |
| | | color: #f56c6c; |
| | | } |
| | | |
| | | .metric-total .metric-icon-large { |
| | | color: #909399; |
| | | } |
| | | |
| | | .metric-info-large { |
| | | flex: 1; |
| | | } |
| | | |
| | | .metric-name-large { |
| | | font-size: 16px; |
| | | color: rgba(255, 255, 255, 0.8); |
| | | margin-bottom: 10px; |
| | | } |
| | | |
| | | .metric-value-large { |
| | | font-size: 36px; |
| | | font-weight: 800; |
| | | color: #fff; |
| | | margin-bottom: 8px; |
| | | text-shadow: 0 2px 10px rgba(0, 0, 0, 0.3); |
| | | } |
| | | |
| | | .metric-compare-large { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 8px; |
| | | font-size: 14px; |
| | | } |
| | | |
| | | .compare-positive { |
| | | color: #f56c6c; |
| | | } |
| | | |
| | | .compare-negative { |
| | | color: #67c23a; |
| | | } |
| | | |
| | | .compare-zero { |
| | | color: rgba(255, 255, 255, 0.6); |
| | | } |
| | | |
| | | .metric-wave { |
| | | position: absolute; |
| | | bottom: 0; |
| | | left: 0; |
| | | right: 0; |
| | | height: 20px; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .wave { |
| | | width: 200%; |
| | | height: 100%; |
| | | background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent); |
| | | animation: wave 3s linear infinite; |
| | | } |
| | | |
| | | @keyframes wave { |
| | | 0% { |
| | | transform: translateX(-50%); |
| | | } |
| | | |
| | | 100% { |
| | | transform: translateX(0); |
| | | } |
| | | } |
| | | |
| | | /* 主å
容åºå */ |
| | | .screen-main { |
| | | display: grid; |
| | | grid-template-columns: 1fr 1.2fr 1fr; |
| | | gap: 20px; |
| | | padding: 0 16px 20px; |
| | | height: 450px; |
| | | } |
| | | |
| | | /* å¾è¡¨å®¹å¨ */ |
| | | .chart-container-large, |
| | | .chart-container-full { |
| | | background: rgba(16, 36, 71, 0.6); |
| | | border: 1px solid rgba(64, 158, 255, 0.3); |
| | | border-radius: 15px; |
| | | padding: 20px; |
| | | backdrop-filter: blur(10px); |
| | | } |
| | | |
| | | .chart-container-large { |
| | | height: 350px; |
| | | } |
| | | |
| | | .chart-container-full { |
| | | height: 100%; |
| | | } |
| | | |
| | | .chart-header-large { |
| | | margin-bottom: 15px; |
| | | } |
| | | |
| | | .chart-title-large { |
| | | font-size: 18px; |
| | | font-weight: 600; |
| | | color: #fff; |
| | | margin: 0 0 5px 0; |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 8px; |
| | | } |
| | | |
| | | .chart-subtitle-large { |
| | | font-size: 14px; |
| | | color: rgba(255, 255, 255, 0.6); |
| | | } |
| | | |
| | | .chart-content-large, |
| | | .chart-content-full { |
| | | height: calc(100% - 60px); |
| | | position: relative; |
| | | } |
| | | |
| | | .chart-large, |
| | | .chart-full { |
| | | height: 100%; |
| | | width: 100%; |
| | | min-height: 300px; |
| | | } |
| | | |
| | | /* ä»»å¡çæ¿ */ |
| | | .task-board-large { |
| | | background: rgba(16, 36, 71, 0.6); |
| | | border: 1px solid rgba(64, 158, 255, 0.3); |
| | | border-radius: 15px; |
| | | height: 100%; |
| | | backdrop-filter: blur(10px); |
| | | } |
| | | |
| | | .board-header-large { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding: 20px; |
| | | border-bottom: 1px solid rgba(255, 255, 255, 0.1); |
| | | } |
| | | |
| | | .header-title { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 10px; |
| | | font-size: 18px; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .task-count-large { |
| | | display: flex; |
| | | align-items: baseline; |
| | | gap: 5px; |
| | | } |
| | | |
| | | .count-number { |
| | | font-size: 28px; |
| | | font-weight: 800; |
| | | color: #409eff; |
| | | } |
| | | |
| | | .count-label { |
| | | font-size: 14px; |
| | | color: rgba(255, 255, 255, 0.6); |
| | | } |
| | | |
| | | .board-body-large { |
| | | height: calc(100% - 80px); |
| | | position: relative; |
| | | } |
| | | |
| | | .scroll-table-container-large { |
| | | height: 100%; |
| | | overflow: hidden; |
| | | position: relative; |
| | | } |
| | | |
| | | .table-body-container-large { |
| | | height: 100%; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .table-body-wrapper-large { |
| | | transition: transform 0.5s ease; |
| | | } |
| | | |
| | | .body-table-large { |
| | | width: 100%; |
| | | border-collapse: collapse; |
| | | } |
| | | |
| | | .body-table-large td { |
| | | padding: 15px 10px; |
| | | border-bottom: 1px solid rgba(255, 255, 255, 0.1); |
| | | font-size: 14px; |
| | | height: 60px; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .cell-index { |
| | | width: 60px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .cell-pallet { |
| | | width: 100px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .cell-address { |
| | | width: 120px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .cell-type { |
| | | width: 100px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .cell-status { |
| | | width: 100px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .cell-time { |
| | | width: 140px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .even-row { |
| | | background: rgba(255, 255, 255, 0.05); |
| | | } |
| | | |
| | | .odd-row { |
| | | background: rgba(255, 255, 255, 0.02); |
| | | } |
| | | |
| | | .body-table-large tr:hover { |
| | | background: rgba(64, 158, 255, 0.1) !important; |
| | | } |
| | | |
| | | .status-tag-large { |
| | | padding: 4px 12px; |
| | | border-radius: 12px; |
| | | font-size: 12px; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .status-primary { |
| | | background: rgba(64, 158, 255, 0.2); |
| | | color: #409eff; |
| | | } |
| | | |
| | | .status-success { |
| | | background: rgba(103, 194, 58, 0.2); |
| | | color: #67c23a; |
| | | } |
| | | |
| | | .status-warning { |
| | | background: rgba(230, 162, 60, 0.2); |
| | | color: #e6a23c; |
| | | } |
| | | |
| | | .status-danger { |
| | | background: rgba(245, 108, 108, 0.2); |
| | | color: #f56c6c; |
| | | } |
| | | |
| | | .status-info { |
| | | background: rgba(144, 147, 153, 0.2); |
| | | color: #909399; |
| | | } |
| | | |
| | | .no-data-board-large { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | height: 100%; |
| | | color: rgba(255, 255, 255, 0.6); |
| | | font-size: 16px; |
| | | gap: 10px; |
| | | } |
| | | |
| | | .no-data-board-large i { |
| | | font-size: 48px; |
| | | } |
| | | |
| | | /* è£
é¥°è§ */ |
| | | .decoration-corner { |
| | | position: absolute; |
| | | width: 80px; |
| | | height: 80px; |
| | | border: 2px solid rgba(64, 158, 255, 0.5); |
| | | } |
| | | |
| | | .top-left { |
| | | top: 0; |
| | | left: 0; |
| | | border-right: none; |
| | | border-bottom: none; |
| | | } |
| | | |
| | | .top-right { |
| | | top: 0; |
| | | right: 0; |
| | | border-left: none; |
| | | border-bottom: none; |
| | | } |
| | | |
| | | .bottom-left { |
| | | bottom: 0; |
| | | left: 0; |
| | | border-right: none; |
| | | border-top: none; |
| | | } |
| | | |
| | | .bottom-right { |
| | | bottom: 0; |
| | | right: 0; |
| | | border-left: none; |
| | | border-top: none; |
| | | } |
| | | |
| | | /* å è½½åéè¯¯ç¶æ */ |
| | | .chart-loading-large, |
| | | .chart-error-large, |
| | | .chart-no-data-large { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | height: 100%; |
| | | color: rgba(255, 255, 255, 0.6); |
| | | font-size: 16px; |
| | | gap: 10px; |
| | | } |
| | | |
| | | .chart-loading-large i, |
| | | .chart-error-large i, |
| | | .chart-no-data-large i { |
| | | font-size: 48px; |
| | | } |
| | | |
| | | .chart-loading-large { |
| | | color: #409eff; |
| | | } |
| | | |
| | | .chart-error-large { |
| | | color: #f56c6c; |
| | | } |
| | | |
| | | /* ååºå¼è®¾è®¡ - ç§»é¤åæçåªä½æ¥è¯¢ï¼ç±JSå¨æç¼©æ¾å¤ç */ |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | const path = require('path') |
| | | const resolve = dir => { |
| | | return path.join(__dirname, dir) |
| | | } |
| | | module.exports = { |
| | | publicPath: './', |
| | | devServer:{ |
| | | host:'0.0.0.0', |
| | | port:8090 |
| | | }, |
| | | chainWebpack: config => { |
| | | config.resolve.alias |
| | | .set('_c', resolve('src/components')) // key,valueèªè¡å®ä¹ï¼æ¯å¦.set('@@', resolve('src/components')) |
| | | }, |
| | | lintOnSave: false |
| | | } |
| | |
| | | "WorkspaceRootPath": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\", |
| | | "Documents": [ |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\agv\\agvsignal.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\agv\\agvsignal.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|solutionrelative:wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\agv\\commonagvjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\agv\\commonagvjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\stackercranejob\\commonstackercranejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\stackercranejob\\commonstackercranejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}", |
| | | "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\agv\\commonagvjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\agv\\commonagvjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|solutionrelative:wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\agv\\agvsignal.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\agv\\agvsignal.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\elevatorjob\\commonelevatorjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\elevatorjob\\commonelevatorjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | } |
| | | ], |
| | | "DocumentGroupContainers": [ |
| | |
| | | "DocumentGroups": [ |
| | | { |
| | | "DockedWidth": 200, |
| | | "SelectedChildIndex": 4, |
| | | "SelectedChildIndex": 6, |
| | | "Children": [ |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 3, |
| | | "DocumentIndex": 6, |
| | | "Title": "appsettings.json", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\appsettings.json", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Server\\appsettings.json", |
| | |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\appsettings.json", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAADwvxsAAAAaAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|", |
| | | "WhenOpened": "2025-11-13T02:26:06.738Z", |
| | | "EditorCaption": "" |
| | | "WhenOpened": "2025-11-13T02:26:06.738Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 2, |
| | | "DocumentIndex": 5, |
| | | "Title": "Program.cs", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Program.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Program.cs", |
| | |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\Program.cs", |
| | | "ViewState": "AgIAAAMAAAAAAAAAAAAAABYAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-11-13T02:24:58.44Z", |
| | | "EditorCaption": "" |
| | | "WhenOpened": "2025-11-13T02:24:58.44Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 7, |
| | | "Title": "CommonElevatorJob.cs", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ElevatorJob\\CommonElevatorJob.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\ElevatorJob\\CommonElevatorJob.cs", |
| | | "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ElevatorJob\\CommonElevatorJob.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\ElevatorJob\\CommonElevatorJob.cs", |
| | | "ViewState": "AgIAACYAAAAAAAAAAAAAwGkAAAAQAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-10-09T12:12:52.995Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 5, |
| | | "DocumentIndex": 1, |
| | | "Title": "TaskService.cs", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\TaskService.cs", |
| | | "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_TaskInfoService\\TaskService.cs", |
| | | "ViewState": "AgIAAGkAAAAAAAAAAAAQwNMAAABbAAAAAAAAAA==", |
| | | "ViewState": "AgIAABUCAAAAAAAAAAAYwCYCAAAhAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-09-25T03:21:17.498Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 0, |
| | | "DocumentIndex": 3, |
| | | "Title": "CommonStackerCraneJob.cs", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs", |
| | | "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs", |
| | | "ViewState": "AgIAAE0AAAAAAAAAAAAewIQAAAAIAAAAAAAAAA==", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAAIQAAAAIAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-10-08T02:55:34.719Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 1, |
| | | "DocumentIndex": 4, |
| | | "Title": "CommonConveyorLineJob.cs", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs", |
| | |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\ConveyorLineJob\\CommonConveyorLineJob.cs", |
| | | "ViewState": "AgIAAFsAAAAAAAAAAAAowIIAAABDAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-10-09T03:25:18.917Z", |
| | | "EditorCaption": "" |
| | | "WhenOpened": "2025-10-09T03:25:18.917Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 4, |
| | | "DocumentIndex": 2, |
| | | "Title": "CommonAGVJob.cs", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\AGV\\CommonAGVJob.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\AGV\\CommonAGVJob.cs", |
| | | "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\AGV\\CommonAGVJob.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\AGV\\CommonAGVJob.cs", |
| | | "ViewState": "AgIAABkAAAAAAAAAAAAAACIAAAB0AAAAAAAAAA==", |
| | | "ViewState": "AgIAAB0AAAAAAAAAAAAwwDEAAAAoAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-10-09T05:11:29.775Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 6, |
| | | "DocumentIndex": 0, |
| | | "Title": "AGVSignal.cs", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\AGV\\AGVSignal.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\AGV\\AGVSignal.cs", |
| | | "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\AGV\\AGVSignal.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\AGV\\AGVSignal.cs", |
| | | "ViewState": "AgIAAFIAAAAAAAAAAAAhwH0AAAAUAAAAAAAAAA==", |
| | | "ViewState": "AgIAAGUAAAAAAAAAAAAYwG4AAABYAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-10-13T01:17:34.312Z" |
| | | "WhenOpened": "2025-10-13T01:17:34.312Z", |
| | | "EditorCaption": "" |
| | | } |
| | | ] |
| | | } |
| | |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\Program.cs", |
| | | "ViewState": "AgIAAAMAAAAAAAAAAAAAABYAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-11-13T02:24:58.44Z" |
| | | "WhenOpened": "2025-11-13T02:24:58.44Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | |
| | | <template> |
| | | <div class="dashboard-container"> |
| | | <!-- æ°æ®æ»è§é¨å --> |
| | | <div class="overview-section"> |
| | | <el-row :gutter="20"> |
| | | <el-col :lg="24"> |
| | | <div class="data-overview"> |
| | | <h3 class="title">æ°æ®æ»è§</h3> |
| | | <div class="metrics"> |
| | | <div class="metric-item" v-for="(item, index) in dataMetrics" :key="index"> |
| | | <div style="display: flex;align-items: center; margin-left: 80px;"> |
| | | <div class="metric-icon"> |
| | | <div class="overview-header"> |
| | | <div class="header-left"> |
| | | <h3 class="title"> |
| | | <i class="el-icon-data-analysis header-icon"></i> |
| | | æ°æ®æ»è§ |
| | | </h3> |
| | | </div> |
| | | <div class="header-right"> |
| | | <div class="time-range">æ°æ®æ´æ°äº: {{ currentTime }}</div> |
| | | <div> |
| | | <el-button type="primary" size="small" :icon="Refresh" @click="handleRefresh" :loading="refreshing" |
| | | class="refresh-btn"> |
| | | å·æ°æ°æ® |
| | | </el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="metrics-grid"> |
| | | <div class="metric-card" v-for="(item, index) in dataMetrics" :key="`metric-${index}-${refreshKey}`" |
| | | :class="getMetricCardClass(item.name)"> |
| | | <div class="metric-content"> |
| | | <div class="metric-icon-wrapper"> |
| | | <i :class="getMetricIcon(item.name)"></i> |
| | | </div> |
| | | <div class="metric-name">{{ item.name }}</div> |
| | | <div class="metric-info"> |
| | | <div class="metric-name">{{ item.name }}</div> |
| | | <div class="metric-value">{{ formatNumber(item.value) }}</div> |
| | | <div class="metric-compare" v-if="item.compare !== undefined"> |
| | | <span :class="getCompareClass(item.compare)"> |
| | | <i :class="getCompareIcon(item.compare)"></i> |
| | | {{ formatCompareValue(item.compare) }} |
| | | </span> |
| | | <span class="compare-label">è¾æ¨æ¥</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="metric-value">{{ item.value }}</div> |
| | | <div class="metric-trend" v-if="item.compare !== undefined"> |
| | | <div class="trend-chart"> |
| | | <div class="trend-bar" :style="{ height: getTrendHeight(item) }"></div> |
| | | </div> |
| | | </div> |
| | | <div class="metric-decoration"> |
| | | <div class="decoration-circle"></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | |
| | | <!-- ç产任å¡çæ¿ --> |
| | | <div class="overview-section"> |
| | | <el-row :gutter="20"> |
| | | <el-col :lg="24"> |
| | | <div class="bg-color-black task-board-container"> |
| | | <div class="d-flex pt-2 pl-2"> |
| | | <div class="d-flex"> |
| | | <span class="fs-xl text mx-2 title">å½åç产任å¡</span> |
| | | <div class="task-board-container"> |
| | | <div class="board-header"> |
| | | <div class="header-left"> |
| | | <i class="el-icon-s-management board-icon"></i> |
| | | <span class="board-title">å½åç产任å¡</span> |
| | | </div> |
| | | <div class="header-right"> |
| | | <span class="task-count">å
± {{ tableData.length }} 个任å¡</span> |
| | | </div> |
| | | </div> |
| | | <div class="body-box"> |
| | | <div class="board-body"> |
| | | <div class="scroll-table-container" @mouseenter="pauseScroll" @mouseleave="resumeScroll"> |
| | | <!-- 表头 --> |
| | | <div class="table-header" ref="tableHeader"> |
| | | <table class="header-table"> |
| | | <thead> |
| | | <tr> |
| | | <th style="width: 60px;font-size: 18px;">åºå·</th> |
| | | <th style="width: 100px;font-size: 18px;">æçç </th> |
| | | <th style="width: 120px;font-size: 18px;">èµ·å§å°å</th> |
| | | <th style="width: 120px;font-size: 18px;">ç®æ å°å</th> |
| | | <th style="width: 120px;font-size: 18px;">ä»»å¡ç±»å</th> |
| | | <th style="width: 120px;font-size: 18px;">ä»»å¡ç¶æ</th> |
| | | <th style="width: 160px;font-size: 18px;">å建æ¶é´</th> |
| | | <th>åºå·</th> |
| | | <th>æçç </th> |
| | | <th>èµ·å§å°å</th> |
| | | <th>ç®æ å°å</th> |
| | | <th>ä»»å¡ç±»å</th> |
| | | <th>ä»»å¡ç¶æ</th> |
| | | <th>å建æ¶é´</th> |
| | | </tr> |
| | | </thead> |
| | | </table> |
| | |
| | | <!-- åå§æ°æ® --> |
| | | <table class="body-table"> |
| | | <tbody> |
| | | <tr v-for="(row, index) in tableData" :key="index" |
| | | <tr v-for="(row, index) in tableData" :key="`task-${index}-${refreshKey}`" |
| | | :class="index % 2 === 0 ? 'even-row' : 'odd-row'"> |
| | | <td style="width: 60px; text-align: center;font-size: 16px;">{{ index + 1 }}</td> |
| | | <td style="width: 100px; text-align: center;font-size: 16px;">{{ row.palletCode || 'æ ' }}</td> |
| | | <td style="width: 120px; text-align: center;font-size: 16px;">{{ row.sourceAddress || 'æ ' }} |
| | | </td> |
| | | <td style="width: 120px; text-align: center;font-size: 16px;">{{ row.targetAddress || 'æ ' }} |
| | | </td> |
| | | <td style="width: 120px; text-align: center;font-size: 16px;">{{ row.taskType || 'æ ' }}</td> |
| | | <td style="width: 120px; text-align: center;font-size: 16px;"> |
| | | <el-tag :type="getStatusType(row.taskState)" size="small"> |
| | | <td>{{ index + 1 }}</td> |
| | | <td>{{ row.palletCode || 'æ ' }}</td> |
| | | <td>{{ row.sourceAddress || 'æ ' }}</td> |
| | | <td>{{ row.targetAddress || 'æ ' }}</td> |
| | | <td>{{ row.taskType || 'æ ' }}</td> |
| | | <td> |
| | | <el-tag :type="getStatusType(row.taskState)" size="small" class="status-tag"> |
| | | {{ row.taskState || 'æ ' }} |
| | | </el-tag> |
| | | </td> |
| | | <td style="width: 160px; text-align: center;font-size: 18px;">{{ row.createDate || 'æ ' }}</td> |
| | | <td>{{ formatDateTime(row.createDate) || 'æ ' }}</td> |
| | | </tr> |
| | | </tbody> |
| | | </table> |
| | |
| | | <!-- å¤å¶ä¸ä»½æ°æ®ç¨äºæ ç¼æ»å¨ --> |
| | | <table class="body-table" v-if="tableData.length > rowNum"> |
| | | <tbody> |
| | | <tr v-for="(row, index) in tableData" :key="`copy-${index}`" |
| | | <tr v-for="(row, index) in tableData" :key="`task-copy-${index}-${refreshKey}`" |
| | | :class="index % 2 === 0 ? 'even-row' : 'odd-row'"> |
| | | <td style="width: 60px; text-align: center;">{{ index + tableData.length + 1 }}</td> |
| | | <td style="width: 100px; text-align: center;">{{ row.palletCode || 'æ ' }}</td> |
| | | <td style="width: 120px; text-align: center;">{{ row.sourceAddress || 'æ ' }}</td> |
| | | <td style="width: 120px; text-align: center;">{{ row.targetAddress || 'æ ' }}</td> |
| | | <td style="width: 120px; text-align: center;">{{ row.taskType || 'æ ' }}</td> |
| | | <td style="width: 120px; text-align: center;"> |
| | | <el-tag :type="getStatusType(row.taskState)" size="small"> |
| | | <td>{{ index + tableData.length + 1 }}</td> |
| | | <td>{{ row.palletCode || 'æ ' }}</td> |
| | | <td>{{ row.sourceAddress || 'æ ' }}</td> |
| | | <td>{{ row.targetAddress || 'æ ' }}</td> |
| | | <td>{{ row.taskType || 'æ ' }}</td> |
| | | <td> |
| | | <el-tag :type="getStatusType(row.taskState)" size="small" class="status-tag"> |
| | | {{ row.taskState || 'æ ' }} |
| | | </el-tag> |
| | | </td> |
| | | <td style="width: 160px; text-align: center;">{{ row.createDate || 'æ ' }}</td> |
| | | <td>{{ formatDateTime(row.createDate) || 'æ ' }}</td> |
| | | </tr> |
| | | </tbody> |
| | | </table> |
| | |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | |
| | | <!-- å¾è¡¨é¨å --> |
| | | <div class="charts-section"> |
| | | <el-row :gutter="20"> |
| | | <el-col :lg="12"> |
| | | <div class="chart-container"> |
| | | <h3 class="title">åºåºé</h3> |
| | | <div v-if="loading" class="loading">å è½½ä¸...</div> |
| | | <div v-else-if="error" class="error">æ°æ®å 载失败</div> |
| | | <div v-else-if="!chartData.outbound.values.length" class="no-data">ææ åºåºæ°æ®</div> |
| | | <div v-else ref="outboundChart" class="chart"></div> |
| | | <div class="chart-card"> |
| | | <div class="chart-header"> |
| | | <h3 class="chart-title"> |
| | | <i class="el-icon-trend-charts chart-icon"></i> |
| | | åºåºéè¶å¿ |
| | | </h3> |
| | | <div class="chart-subtitle">è¿7æ¥åºåºç»è®¡</div> |
| | | </div> |
| | | <div class="chart-content"> |
| | | <div v-if="loading" class="chart-loading"> |
| | | <i class="el-icon-loading"></i> |
| | | <span>æ°æ®å è½½ä¸...</span> |
| | | </div> |
| | | <div v-else-if="error" class="chart-error"> |
| | | <i class="el-icon-warning"></i> |
| | | <span>æ°æ®å 载失败</span> |
| | | <el-button type="text" @click="fetchData" class="retry-btn">éè¯</el-button> |
| | | </div> |
| | | <div v-else-if="!chartData.outbound.values.length" class="chart-no-data"> |
| | | <i class="el-icon-data-line"></i> |
| | | <span>ææ åºåºæ°æ®</span> |
| | | </div> |
| | | <div v-else ref="outboundChart" class="chart" :key="`outbound-${refreshKey}`"></div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :lg="12"> |
| | | <div class="chart-container"> |
| | | <h3 class="title">å
¥åºé</h3> |
| | | <div v-if="loading" class="loading">å è½½ä¸...</div> |
| | | <div v-else-if="error" class="error">æ°æ®å 载失败</div> |
| | | <div v-else-if="!chartData.inbound.values.length" class="no-data">ææ å
¥åºæ°æ®</div> |
| | | <div v-else ref="inboundChart" class="chart"></div> |
| | | <div class="chart-card"> |
| | | <div class="chart-header"> |
| | | <h3 class="chart-title"> |
| | | <i class="el-icon-trend-charts chart-icon"></i> |
| | | å
¥åºéè¶å¿ |
| | | </h3> |
| | | <div class="chart-subtitle">è¿7æ¥å
¥åºç»è®¡</div> |
| | | </div> |
| | | <div class="chart-content"> |
| | | <div v-if="loading" class="chart-loading"> |
| | | <i class="el-icon-loading"></i> |
| | | <span>æ°æ®å è½½ä¸...</span> |
| | | </div> |
| | | <div v-else-if="error" class="chart-error"> |
| | | <i class="el-icon-warning"></i> |
| | | <span>æ°æ®å 载失败</span> |
| | | <el-button type="text" @click="fetchData" class="retry-btn">éè¯</el-button> |
| | | </div> |
| | | <div v-else-if="!chartData.inbound.values.length" class="chart-no-data"> |
| | | <i class="el-icon-data-line"></i> |
| | | <span>ææ å
¥åºæ°æ®</span> |
| | | </div> |
| | | <div v-else ref="inboundChart" class="chart" :key="`inbound-${refreshKey}`"></div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div style="margin-top: 20px;"></div> |
| | | |
| | | <!-- æåº¦æ°æ®å¾è¡¨ --> |
| | | <div class="charts-section"> |
| | | <el-row :gutter="20"> |
| | | <el-col :lg="24"> |
| | | <div class="chart-container"> |
| | | <h3 class="title">æåºå
¥åºé</h3> |
| | | <div v-if="loading" class="loading">å è½½ä¸...</div> |
| | | <div v-else-if="error" class="error">æ°æ®å 载失败</div> |
| | | <div v-else-if="!chartData.monthData.inValue.length || !chartData.monthData.outValue.length" class="no-data"> |
| | | ææ åºå
¥åºæ°æ®</div> |
| | | <div v-else ref="monthDataChart" class="chart1"></div> |
| | | <div class="chart-card"> |
| | | <div class="chart-header"> |
| | | <h3 class="chart-title"> |
| | | <i class="el-icon-data-line chart-icon"></i> |
| | | æåº¦åºå
¥åºå¯¹æ¯ |
| | | </h3> |
| | | <div class="chart-subtitle">æ¬ææ¯æ¥åºå
¥åºéç»è®¡</div> |
| | | </div> |
| | | <div class="chart-content"> |
| | | <div v-if="loading" class="chart-loading"> |
| | | <i class="el-icon-loading"></i> |
| | | <span>æ°æ®å è½½ä¸...</span> |
| | | </div> |
| | | <div v-else-if="error" class="chart-error"> |
| | | <i class="el-icon-warning"></i> |
| | | <span>æ°æ®å 载失败</span> |
| | | <el-button type="text" @click="fetchData" class="retry-btn">éè¯</el-button> |
| | | </div> |
| | | <div v-else-if="!chartData.monthData.inValue.length || !chartData.monthData.outValue.length" |
| | | class="chart-no-data"> |
| | | <i class="el-icon-data-line"></i> |
| | | <span>ææ åºå
¥åºæ°æ®</span> |
| | | </div> |
| | | <div v-else ref="monthDataChart" class="chart-large" :key="`month-${refreshKey}`"></div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | |
| | | <script setup> |
| | | import http from '../api/http.js'; |
| | | import { ref, reactive, onMounted, onUnmounted, nextTick, computed } from 'vue'; |
| | | import { ref, reactive, onMounted, onUnmounted, nextTick } from 'vue'; |
| | | import * as echarts from 'echarts'; |
| | | // import { TrendCharts } from '@element-plus/icons-vue'; |
| | | import { Refresh } from '@element-plus/icons-vue'; |
| | | |
| | | // ååºå¼æ°æ® |
| | | const dataMetrics = ref([]); |
| | |
| | | }); |
| | | const loading = ref(true); |
| | | const error = ref(false); |
| | | const refreshing = ref(false); |
| | | const refreshKey = ref(0); // ç¨äºå¼ºå¶éæ°æ¸²æ |
| | | |
| | | // æ»å¨ç¸å
³ |
| | | const tableHeader = ref(null); |
| | |
| | | const isScrolling = ref(true); |
| | | let scrollInterval = null; |
| | | const rowNum = 7; // æ¾ç¤ºçè¡æ° |
| | | const rowHeight = 40; // æ¯è¡é«åº¦ |
| | | const rowHeight = 48; // æ¯è¡é«åº¦ |
| | | |
| | | // å½åæ¶é´ |
| | | const currentTime = ref(''); |
| | | |
| | | const getMetricIcon = (type) => { |
| | | const iconMap = { |
| | | '仿¥è¿åºé': 'iconfont icon-cangpeitubiao_huanhuorukutuihuoruku', |
| | | '仿¥åºåºé': 'el-icon-takeaway-box', |
| | | 'æ¬æè¿åºé': 'iconfont icon-cangpeitubiao_huanhuorukutuihuoruku', |
| | | 'æ¬æåºåºé': 'el-icon-takeaway-box', |
| | | 'åºåæ»é': 'el-icon-goods', |
| | | }; |
| | | return iconMap[type] || 'el-icon-data-board'; |
| | | }; |
| | | // å¾è¡¨å¼ç¨åå®ä¾ |
| | | const outboundChart = ref(null); |
| | | const inboundChart = ref(null); |
| | |
| | | const inboundInstance = ref(null); |
| | | const monthDataInstance = ref(null); |
| | | const charts = ref([]); |
| | | |
| | | // æ ¼å¼åæ°å |
| | | const formatNumber = (num) => { |
| | | if (num === undefined || num === null) return '0'; |
| | | return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); |
| | | }; |
| | | |
| | | // æ ¼å¼åæ¯è¾å¼ |
| | | const formatCompareValue = (value) => { |
| | | if (value === 0) return '0'; |
| | | return value > 0 ? `+${formatNumber(value)}` : formatNumber(value); |
| | | }; |
| | | |
| | | // æ ¼å¼åæ¥ææ¶é´ |
| | | const formatDateTime = (dateString) => { |
| | | if (!dateString) return ''; |
| | | try { |
| | | const date = new Date(dateString); |
| | | return date.toLocaleString('zh-CN', { |
| | | month: '2-digit', |
| | | day: '2-digit', |
| | | hour: '2-digit', |
| | | minute: '2-digit' |
| | | }); |
| | | } catch { |
| | | return dateString; |
| | | } |
| | | }; |
| | | |
| | | // è·åæ¯è¾å¼æ ·å¼ç±» |
| | | const getCompareClass = (compare) => { |
| | | if (compare > 0) return 'compare-positive'; |
| | | if (compare < 0) return 'compare-negative'; |
| | | return 'compare-zero'; |
| | | }; |
| | | |
| | | // è·åæ¯è¾å¼å¾æ |
| | | const getCompareIcon = (compare) => { |
| | | if (compare > 0) return 'el-icon-top'; |
| | | if (compare < 0) return 'el-icon-bottom'; |
| | | return 'el-icon-minus'; |
| | | }; |
| | | |
| | | // è·åè¶å¿é«åº¦ |
| | | const getTrendHeight = (item) => { |
| | | if (item.compare === undefined || item.value === 0) return '0%'; |
| | | |
| | | const maxValue = Math.max(Math.abs(item.value), Math.abs(item.compare)); |
| | | if (maxValue === 0) return '0%'; |
| | | |
| | | const percentage = (Math.abs(item.compare) / maxValue) * 100; |
| | | return `${Math.min(percentage, 100)}%`; |
| | | }; |
| | | |
| | | // è·åææ å¡çæ ·å¼ç±» |
| | | const getMetricCardClass = (name) => { |
| | | const classMap = { |
| | | '仿¥è¿åºé': 'metric-inbound-today', |
| | | '仿¥åºåºé': 'metric-outbound-today', |
| | | 'æ¬æè¿åºé': 'metric-inbound-month', |
| | | 'æ¬æåºåºé': 'metric-outbound-month', |
| | | 'åºåæ»é': 'metric-total' |
| | | }; |
| | | return classMap[name] || ''; |
| | | }; |
| | | |
| | | const getMetricIcon = (type) => { |
| | | const iconMap = { |
| | | '仿¥è¿åºé': 'el-icon-download', |
| | | '仿¥åºåºé': 'el-icon-upload2', |
| | | 'æ¬æè¿åºé': 'el-icon-download', |
| | | 'æ¬æåºåºé': 'el-icon-upload2', |
| | | 'åºåæ»é': 'el-icon-box', |
| | | }; |
| | | return iconMap[type] || 'el-icon-data-board'; |
| | | }; |
| | | |
| | | // ç¶ææ ç¾ç±»å |
| | | const getStatusType = (status) => { |
| | | const statusMap = { |
| | | 'è¿è¡ä¸': 'primary', |
| | | '已宿': 'success', |
| | | '已忶': 'info', |
| | | 'å¼å¸¸': 'danger', |
| | | 'å¾
æ§è¡': 'warning' |
| | | }; |
| | | return statusMap[status] || 'primary'; |
| | | }; |
| | | |
| | | // æ´æ°å½åæ¶é´ |
| | | const updateCurrentTime = () => { |
| | | const now = new Date(); |
| | | currentTime.value = now.toLocaleString('zh-CN', { |
| | | year: 'numeric', |
| | | month: '2-digit', |
| | | day: '2-digit', |
| | | hour: '2-digit', |
| | | minute: '2-digit', |
| | | second: '2-digit' |
| | | }); |
| | | }; |
| | | |
| | | // å¯å¨æ»å¨ |
| | | const startScrolling = () => { |
| | |
| | | if (scrollPosition.value >= totalHeight) { |
| | | scrollPosition.value = 0; |
| | | } |
| | | }, 20); // è°æ´æ»å¨é度 |
| | | }, 30); // è°æ´æ»å¨é度 |
| | | }; |
| | | |
| | | // æåæ»å¨ |
| | |
| | | } |
| | | }; |
| | | |
| | | // ç¶ææ ç¾ç±»å |
| | | const getStatusType = (status) => { |
| | | const statusMap = { |
| | | }; |
| | | return statusMap[status] || 'primary'; |
| | | }; |
| | | |
| | | // åå§åå¾è¡¨ |
| | | const initCharts = () => { |
| | | // æ¸
çæ§çå¾è¡¨å®ä¾ |
| | | if (outboundInstance.value) { |
| | | outboundInstance.value.dispose(); |
| | | } |
| | | if (inboundInstance.value) { |
| | | inboundInstance.value.dispose(); |
| | | } |
| | | if (monthDataInstance.value) { |
| | | monthDataInstance.value.dispose(); |
| | | } |
| | | |
| | | if (!outboundChart.value || !inboundChart.value || !monthDataChart.value) { |
| | | console.log('å¾è¡¨å®¹å¨æªæ¾å°ï¼å»¶è¿åå§å'); |
| | | return; |
| | |
| | | formatter: function (params) { |
| | | const data = params[0]; |
| | | return ` |
| | | <div style="font-weight: bold; margin-bottom: 5px;">${data.name}</div> |
| | | <div style="display: flex; align-items: center;"> |
| | | <span style="display: inline-block; width: 10px; height: 10px; background: ${data.color}; border-radius: 50%; margin-right: 5px;"></span> |
| | | <span>${data.seriesName}: </span> |
| | | <span style="font-weight: bold; margin-left: 5px;">${data.value}</span> |
| | | <div style="font-weight: 600; margin-bottom: 8px; color: #303133;">${data.name}</div> |
| | | <div style="display: flex; align-items: center; font-size: 14px;"> |
| | | <span style="display: inline-block; width: 8px; height: 8px; background: ${data.color}; border-radius: 50%; margin-right: 8px;"></span> |
| | | <span style="color: #606266;">${data.seriesName}: </span> |
| | | <span style="font-weight: 600; margin-left: 8px; color: #303133;">${data.value}</span> |
| | | </div> |
| | | `; |
| | | }, |
| | | backgroundColor: 'rgba(255, 255, 255, 0.9)', |
| | | borderColor: '#ddd', |
| | | backgroundColor: 'rgba(255, 255, 255, 0.95)', |
| | | borderColor: '#e4e7ed', |
| | | borderWidth: 1, |
| | | textStyle: { |
| | | color: '#333' |
| | | } |
| | | color: '#303133' |
| | | }, |
| | | padding: [8, 12], |
| | | borderRadius: 6, |
| | | shadowColor: 'rgba(0, 0, 0, 0.1)', |
| | | shadowBlur: 8 |
| | | }, |
| | | grid: { |
| | | left: '3%', |
| | | right: '4%', |
| | | right: '3%', |
| | | bottom: '3%', |
| | | top: '15%', |
| | | containLabel: true |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: chartData.outbound.dates, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: '#e4e7ed' |
| | | } |
| | | }, |
| | | axisLabel: { |
| | | color: '#606266', |
| | | rotate: 45 |
| | | } |
| | | }, |
| | | yAxis: { |
| | | type: 'value', |
| | | name: 'æ°é' |
| | | name: 'æ°é', |
| | | nameTextStyle: { |
| | | color: '#909399' |
| | | }, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: '#e4e7ed' |
| | | } |
| | | }, |
| | | axisLabel: { |
| | | color: '#606266' |
| | | }, |
| | | splitLine: { |
| | | lineStyle: { |
| | | color: '#f0f2f5', |
| | | type: 'dashed' |
| | | } |
| | | } |
| | | }, |
| | | series: [{ |
| | | name: 'åºåºé', |
| | | data: chartData.outbound.values, |
| | | type: 'bar', |
| | | itemStyle: { |
| | | color: '#e06e6e' |
| | | color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ |
| | | { offset: 0, color: '#ff9f7f' }, |
| | | { offset: 1, color: '#ff6b6b' } |
| | | ]), |
| | | borderRadius: [4, 4, 0, 0] |
| | | }, |
| | | barWidth: '60%', |
| | | animation: true, |
| | |
| | | show: true, |
| | | position: 'top', |
| | | formatter: '{c}', |
| | | color: '#e06e6e' |
| | | color: '#ff6b6b', |
| | | fontWeight: 'bold' |
| | | } |
| | | }] |
| | | }; |
| | |
| | | formatter: function (params) { |
| | | const data = params[0]; |
| | | return ` |
| | | <div style="font-weight: bold; margin-bottom: 5px;">${data.name}</div> |
| | | <div style="display: flex; align-items: center;"> |
| | | <span style="display: inline-block; width: 10px; height: 10px; background: ${data.color}; border-radius: 50%; margin-right: 5px;"></span> |
| | | <span>${data.seriesName}: </span> |
| | | <span style="font-weight: bold; margin-left: 5px;">${data.value}</span> |
| | | <div style="font-weight: 600; margin-bottom: 8px; color: #303133;">${data.name}</div> |
| | | <div style="display: flex; align-items: center; font-size: 14px;"> |
| | | <span style="display: inline-block; width: 8px; height: 8px; background: ${data.color}; border-radius: 50%; margin-right: 8px;"></span> |
| | | <span style="color: #606266;">${data.seriesName}: </span> |
| | | <span style="font-weight: 600; margin-left: 8px; color: #303133;">${data.value}</span> |
| | | </div> |
| | | `; |
| | | }, |
| | | backgroundColor: 'rgba(255, 255, 255, 0.9)', |
| | | borderColor: '#ddd', |
| | | backgroundColor: 'rgba(255, 255, 255, 0.95)', |
| | | borderColor: '#e4e7ed', |
| | | borderWidth: 1, |
| | | textStyle: { |
| | | color: '#333' |
| | | } |
| | | color: '#303133' |
| | | }, |
| | | padding: [8, 12], |
| | | borderRadius: 6, |
| | | shadowColor: 'rgba(0, 0, 0, 0.1)', |
| | | shadowBlur: 8 |
| | | }, |
| | | grid: { |
| | | left: '3%', |
| | | right: '4%', |
| | | right: '3%', |
| | | bottom: '3%', |
| | | top: '15%', |
| | | containLabel: true |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: chartData.inbound.dates, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: '#e4e7ed' |
| | | } |
| | | }, |
| | | axisLabel: { |
| | | color: '#606266', |
| | | rotate: 45 |
| | | } |
| | | }, |
| | | yAxis: { |
| | | type: 'value', |
| | | name: 'æ°é' |
| | | name: 'æ°é', |
| | | nameTextStyle: { |
| | | color: '#909399' |
| | | }, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: '#e4e7ed' |
| | | } |
| | | }, |
| | | axisLabel: { |
| | | color: '#606266' |
| | | }, |
| | | splitLine: { |
| | | lineStyle: { |
| | | color: '#f0f2f5', |
| | | type: 'dashed' |
| | | } |
| | | } |
| | | }, |
| | | series: [{ |
| | | name: 'å
¥åºé', |
| | | data: chartData.inbound.values, |
| | | type: 'line', |
| | | smooth: true, |
| | | symbol: 'circle', |
| | | symbolSize: 8, |
| | | itemStyle: { |
| | | color: '#4a7bff' |
| | | color: '#409eff', |
| | | borderColor: '#fff', |
| | | borderWidth: 2 |
| | | }, |
| | | lineStyle: { |
| | | width: 3 |
| | | width: 3, |
| | | color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [ |
| | | { offset: 0, color: '#409eff' }, |
| | | { offset: 1, color: '#67c23a' } |
| | | ]) |
| | | }, |
| | | smooth: true, |
| | | areaStyle: { |
| | | color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ |
| | | { offset: 0, color: 'rgba(64, 158, 255, 0.3)' }, |
| | | { offset: 1, color: 'rgba(64, 158, 255, 0.1)' } |
| | | ]) |
| | | }, |
| | | animation: true, |
| | | label: { |
| | | show: true, |
| | | position: 'top', |
| | | formatter: '{c}', |
| | | color: '#4a7bff' |
| | | color: '#409eff', |
| | | fontWeight: 'bold' |
| | | } |
| | | }] |
| | | }; |
| | |
| | | } |
| | | }, |
| | | formatter: function (params) { |
| | | let html = `<div style="font-weight: bold; margin-bottom: 5px;">${params[0].name}</div>`; |
| | | let html = `<div style="font-weight: 600; margin-bottom: 8px; color: #303133;">${params[0].name}</div>`; |
| | | params.forEach(param => { |
| | | html += ` |
| | | <div style="display: flex; align-items: center; margin: 2px 0;"> |
| | | <span style="display: inline-block; width: 10px; height: 10px; background: ${param.color}; border-radius: 50%; margin-right: 5px;"></span> |
| | | <span>${param.seriesName}: </span> |
| | | <span style="font-weight: bold; margin-left: 5px;">${param.value}</span> |
| | | <div style="display: flex; align-items: center; margin: 4px 0; font-size: 14px;"> |
| | | <span style="display: inline-block; width: 8px; height: 8px; background: ${param.color}; border-radius: 50%; margin-right: 8px;"></span> |
| | | <span style="color: #606266;">${param.seriesName}: </span> |
| | | <span style="font-weight: 600; margin-left: 8px; color: #303133;">${param.value}</span> |
| | | </div> |
| | | `; |
| | | }); |
| | | return html; |
| | | }, |
| | | backgroundColor: 'rgba(255, 255, 255, 0.9)', |
| | | borderColor: '#ddd', |
| | | backgroundColor: 'rgba(255, 255, 255, 0.95)', |
| | | borderColor: '#e4e7ed', |
| | | borderWidth: 1, |
| | | textStyle: { |
| | | color: '#333' |
| | | } |
| | | color: '#303133' |
| | | }, |
| | | padding: [12, 16], |
| | | borderRadius: 6, |
| | | shadowColor: 'rgba(0, 0, 0, 0.1)', |
| | | shadowBlur: 8 |
| | | }, |
| | | legend: { |
| | | data: ['å
¥åºé', 'åºåºé'], |
| | | bottom: 0 |
| | | bottom: 10, |
| | | textStyle: { |
| | | color: '#606266' |
| | | }, |
| | | itemWidth: 12, |
| | | itemHeight: 12 |
| | | }, |
| | | grid: { |
| | | left: '3%', |
| | | right: '4%', |
| | | bottom: '10%', |
| | | right: '3%', |
| | | bottom: '12%', |
| | | top: '15%', |
| | | containLabel: true |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: chartData.monthData.dates, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: '#e4e7ed' |
| | | } |
| | | }, |
| | | axisLabel: { |
| | | color: '#606266', |
| | | rotate: 45 |
| | | }, |
| | | axisPointer: { |
| | |
| | | }, |
| | | yAxis: { |
| | | type: 'value', |
| | | name: 'æ°é' |
| | | name: 'æ°é', |
| | | nameTextStyle: { |
| | | color: '#909399' |
| | | }, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: '#e4e7ed' |
| | | } |
| | | }, |
| | | axisLabel: { |
| | | color: '#606266' |
| | | }, |
| | | splitLine: { |
| | | lineStyle: { |
| | | color: '#f0f2f5', |
| | | type: 'dashed' |
| | | } |
| | | } |
| | | }, |
| | | series: [ |
| | | { |
| | | name: 'å
¥åºé', |
| | | data: chartData.monthData.inValue, |
| | | type: 'line', |
| | | smooth: true, |
| | | symbol: 'circle', |
| | | symbolSize: 6, |
| | | itemStyle: { |
| | | color: '#4a7bff' |
| | | color: '#409eff' |
| | | }, |
| | | lineStyle: { |
| | | width: 3 |
| | | }, |
| | | smooth: true, |
| | | animation: true, |
| | | label: { |
| | | show: true, |
| | | position: 'top', |
| | | formatter: '{c}', |
| | | color: '#4a7bff' |
| | | color: '#409eff', |
| | | fontWeight: 'bold' |
| | | } |
| | | }, |
| | | { |
| | | name: 'åºåºé', |
| | | data: chartData.monthData.outValue, |
| | | type: 'line', |
| | | smooth: true, |
| | | symbol: 'circle', |
| | | symbolSize: 6, |
| | | itemStyle: { |
| | | color: '#e06e6e' |
| | | color: '#ff6b6b' |
| | | }, |
| | | lineStyle: { |
| | | width: 3 |
| | | }, |
| | | smooth: true, |
| | | animation: true, |
| | | label: { |
| | | show: true, |
| | | position: 'top', |
| | | formatter: '{c}', |
| | | color: '#e06e6e' |
| | | color: '#ff6b6b', |
| | | fontWeight: 'bold' |
| | | } |
| | | } |
| | | ] |
| | |
| | | // æ´æ°å¾è¡¨æ°æ® |
| | | const updateCharts = () => { |
| | | nextTick(() => { |
| | | if (outboundInstance.value && chartData.outbound.values.length > 0) { |
| | | outboundInstance.value.setOption({ |
| | | xAxis: { data: chartData.outbound.dates }, |
| | | series: [{ data: chartData.outbound.values }] |
| | | }); |
| | | // å
鿝æ§çå¾è¡¨å®ä¾ |
| | | if (outboundInstance.value) { |
| | | outboundInstance.value.dispose(); |
| | | } |
| | | if (inboundInstance.value) { |
| | | inboundInstance.value.dispose(); |
| | | } |
| | | if (monthDataInstance.value) { |
| | | monthDataInstance.value.dispose(); |
| | | } |
| | | |
| | | if (inboundInstance.value && chartData.inbound.values.length > 0) { |
| | | inboundInstance.value.setOption({ |
| | | xAxis: { data: chartData.inbound.dates }, |
| | | series: [{ data: chartData.inbound.values }] |
| | | }); |
| | | } |
| | | |
| | | if (monthDataInstance.value && chartData.monthData.dates.length > 0) { |
| | | monthDataInstance.value.setOption({ |
| | | xAxis: { data: chartData.monthData.dates }, |
| | | series: [ |
| | | { data: chartData.monthData.inValue }, |
| | | { data: chartData.monthData.outValue } |
| | | ] |
| | | }); |
| | | } |
| | | // éæ°åå§åå¾è¡¨ |
| | | initCharts(); |
| | | }); |
| | | }; |
| | | |
| | |
| | | const handleDataUpdate = (data) => { |
| | | console.log('APIååºæ°æ®:', data); |
| | | |
| | | // æ´æ°æ°æ®ææ |
| | | // ä½¿ç¨ Object.assign ç¡®ä¿ååºå¼æ´æ° |
| | | if (data.metrics && Array.isArray(data.metrics)) { |
| | | dataMetrics.value = data.metrics.map(item => ({ |
| | | name: item.name || item.Name || 'æªç¥ææ ', |
| | | value: item.value != null ? item.value : item.Value || 0 |
| | | value: item.value != null ? item.value : item.Value || 0, |
| | | compare: item.compare != null ? item.compare : 0 |
| | | })); |
| | | } |
| | | |
| | |
| | | pauseScroll(); |
| | | } |
| | | |
| | | // å¼ºå¶æ´æ° refreshKey 触åéæ°æ¸²æ |
| | | refreshKey.value++; |
| | | |
| | | // å»¶è¿åå§åå¾è¡¨ï¼ç¡®ä¿æ°æ®å·²æ´æ° |
| | | nextTick(() => { |
| | | if (!outboundInstance.value || !inboundInstance.value || !monthDataInstance.value) { |
| | | initCharts(); |
| | | } else { |
| | | updateCharts(); |
| | | } |
| | | updateCharts(); |
| | | }); |
| | | }; |
| | | |
| | |
| | | try { |
| | | loading.value = true; |
| | | error.value = false; |
| | | refreshing.value = true; |
| | | |
| | | const response = await http.post("api/StockInfo/GetStockData", {}); |
| | | console.log('APIååº:', response); |
| | | |
| | | if (response.data && response.data.success !== false) { |
| | | handleDataUpdate(response.data); |
| | | error.value = false; |
| | | } else { |
| | | throw new Error('APIè¿åæ°æ®æ ¼å¼é误'); |
| | | } |
| | | loading.value = false; |
| | | } catch (err) { |
| | | console.error('API请æ±å¤±è´¥:', err); |
| | | loading.value = false; |
| | | error.value = true; |
| | | } finally { |
| | | loading.value = false; |
| | | refreshing.value = false; |
| | | updateCurrentTime(); |
| | | } |
| | | }; |
| | | |
| | | // å·æ°å¤ç |
| | | const handleRefresh = () => { |
| | | fetchData(); |
| | | }; |
| | | |
| | | const intervalId = ref(null); |
| | | const timeIntervalId = ref(null); |
| | | |
| | | const startPolling = () => { |
| | | fetchData(); |
| | | |
| | | // è®¾ç½®å®æ¶æ´æ°å½åæ¶é´ |
| | | timeIntervalId.value = setInterval(updateCurrentTime, 1000); |
| | | |
| | | // è®¾ç½®å®æ¶è·åæ°æ® |
| | | intervalId.value = setInterval(fetchData, 5 * 60 * 1000); // 5åé轮询 |
| | | }; |
| | | |
| | |
| | | if (intervalId.value) { |
| | | clearInterval(intervalId.value); |
| | | intervalId.value = null; |
| | | } |
| | | if (timeIntervalId.value) { |
| | | clearInterval(timeIntervalId.value); |
| | | timeIntervalId.value = null; |
| | | } |
| | | pauseScroll(); |
| | | }; |
| | |
| | | }); |
| | | </script> |
| | | |
| | | <style scoped lang="less"> |
| | | <style scoped> |
| | | .retry-btn { |
| | | margin-left: 8px; |
| | | color: #409eff; |
| | | } |
| | | |
| | | .chart-error { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | gap: 12px; |
| | | } |
| | | |
| | | .chart-error .el-button { |
| | | margin-top: 8px; |
| | | } |
| | | |
| | | .dashboard-container { |
| | | padding: 20px; |
| | | background-color: #f5f6fa; |
| | | background: linear-gradient(135deg, #f5f7fa 0%, #e4e7ed 100%); |
| | | min-height: 100vh; |
| | | font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', Arial, sans-serif; |
| | | } |
| | | |
| | | .overview-section { |
| | | margin-bottom: 20px; |
| | | margin-bottom: 24px; |
| | | } |
| | | |
| | | .data-overview { |
| | | background: white; |
| | | padding: 16px; |
| | | border-radius: 8px; |
| | | height: 200px; |
| | | box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); |
| | | |
| | | .title { |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | &::before { |
| | | display: block; |
| | | content: ""; |
| | | width: 6px; |
| | | height: 20px; |
| | | background-color: #409eff; |
| | | margin-right: 10px; |
| | | } |
| | | } |
| | | background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%); |
| | | padding: 24px; |
| | | border-radius: 16px; |
| | | box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); |
| | | border: 1px solid rgba(255, 255, 255, 0.8); |
| | | backdrop-filter: blur(10px); |
| | | } |
| | | |
| | | .task-board-container { |
| | | height: 300px; |
| | | border-radius: 8px; |
| | | background-color: white; |
| | | .overview-header { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: flex-start; |
| | | margin-bottom: 24px; |
| | | } |
| | | |
| | | .header-left .title { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 0 8px 0; |
| | | font-size: 20px; |
| | | font-weight: 700; |
| | | color: #303133; |
| | | line-height: 1.2; |
| | | } |
| | | |
| | | .header-icon { |
| | | margin-right: 12px; |
| | | font-size: 24px; |
| | | color: #409eff; |
| | | background: linear-gradient(135deg, #409eff, #79bbff); |
| | | -webkit-background-clip: text; |
| | | -webkit-text-fill-color: transparent; |
| | | background-clip: text; |
| | | } |
| | | |
| | | .subtitle { |
| | | font-size: 14px; |
| | | color: #909399; |
| | | margin: 0; |
| | | } |
| | | |
| | | .header-right { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); |
| | | align-items: flex-end; |
| | | gap: 12px; |
| | | } |
| | | |
| | | .d-flex { |
| | | .time-range { |
| | | font-size: 13px; |
| | | color: #909399; |
| | | background: rgba(64, 158, 255, 0.1); |
| | | padding: 6px 12px; |
| | | border-radius: 20px; |
| | | border: 1px solid rgba(64, 158, 255, 0.2); |
| | | } |
| | | |
| | | .refresh-btn { |
| | | border-radius: 20px; |
| | | padding: 8px 16px; |
| | | font-weight: 500; |
| | | box-shadow: 0 2px 8px rgba(64, 158, 255, 0.3); |
| | | transition: all 0.3s ease; |
| | | } |
| | | |
| | | .refresh-btn:hover { |
| | | transform: translateY(-2px); |
| | | box-shadow: 0 4px 12px rgba(64, 158, 255, 0.4); |
| | | } |
| | | |
| | | .metrics-grid { |
| | | display: grid; |
| | | grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); |
| | | gap: 20px; |
| | | } |
| | | |
| | | .metric-card { |
| | | background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%); |
| | | border-radius: 12px; |
| | | padding: 24px; |
| | | box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06); |
| | | border: 1px solid rgba(255, 255, 255, 0.8); |
| | | transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); |
| | | display: flex; |
| | | |
| | | .title { |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | &::before { |
| | | display: block; |
| | | content: ""; |
| | | width: 6px; |
| | | height: 20px; |
| | | background-color: #409eff; |
| | | margin-right: 10px; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .pt-2 { |
| | | padding-top: 0.5rem; |
| | | } |
| | | |
| | | .pl-2 { |
| | | padding-left: 0.5rem; |
| | | } |
| | | |
| | | .text-icon { |
| | | color: #409eff; |
| | | font-size: 18px; |
| | | } |
| | | |
| | | .fs-xl { |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | } |
| | | |
| | | .text { |
| | | color: #333; |
| | | } |
| | | |
| | | .mx-2 { |
| | | margin-left: 0.5rem; |
| | | margin-right: 0.5rem; |
| | | } |
| | | |
| | | .body-box { |
| | | flex: 1; |
| | | padding: 10px; |
| | | border-radius: 8px; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | position: relative; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .scroll-table-container { |
| | | height: 250px; |
| | | .metric-card:hover { |
| | | transform: translateY(-6px); |
| | | box-shadow: 0 8px 25px rgba(0, 0, 0, 0.12); |
| | | } |
| | | |
| | | .metric-card::before { |
| | | content: ''; |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | right: 0; |
| | | height: 3px; |
| | | background: linear-gradient(90deg, transparent 0%, currentColor 50%, transparent 100%); |
| | | opacity: 0; |
| | | transition: opacity 0.3s ease; |
| | | } |
| | | |
| | | .metric-card:hover::before { |
| | | opacity: 1; |
| | | } |
| | | |
| | | .metric-inbound-today { |
| | | border-left: 4px solid #67c23a; |
| | | color: #67c23a; |
| | | } |
| | | |
| | | .metric-outbound-today { |
| | | border-left: 4px solid #e6a23c; |
| | | color: #e6a23c; |
| | | } |
| | | |
| | | .metric-inbound-month { |
| | | border-left: 4px solid #409eff; |
| | | color: #409eff; |
| | | } |
| | | |
| | | .metric-outbound-month { |
| | | border-left: 4px solid #f56c6c; |
| | | color: #f56c6c; |
| | | } |
| | | |
| | | .metric-total { |
| | | border-left: 4px solid #909399; |
| | | color: #909399; |
| | | } |
| | | |
| | | .metric-content { |
| | | display: flex; |
| | | align-items: flex-start; |
| | | flex: 1; |
| | | z-index: 2; |
| | | } |
| | | |
| | | .metric-icon-wrapper { |
| | | width: 56px; |
| | | height: 56px; |
| | | border-radius: 12px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | margin-right: 16px; |
| | | font-size: 28px; |
| | | transition: all 0.3s ease; |
| | | } |
| | | |
| | | .metric-card:hover .metric-icon-wrapper { |
| | | transform: scale(1.1); |
| | | } |
| | | |
| | | .metric-inbound-today .metric-icon-wrapper { |
| | | background: linear-gradient(135deg, rgba(103, 194, 58, 0.15), rgba(103, 194, 58, 0.05)); |
| | | color: #67c23a; |
| | | } |
| | | |
| | | .metric-outbound-today .metric-icon-wrapper { |
| | | background: linear-gradient(135deg, rgba(230, 162, 60, 0.15), rgba(230, 162, 60, 0.05)); |
| | | color: #e6a23c; |
| | | } |
| | | |
| | | .metric-inbound-month .metric-icon-wrapper { |
| | | background: linear-gradient(135deg, rgba(64, 158, 255, 0.15), rgba(64, 158, 255, 0.05)); |
| | | color: #409eff; |
| | | } |
| | | |
| | | .metric-outbound-month .metric-icon-wrapper { |
| | | background: linear-gradient(135deg, rgba(245, 108, 108, 0.15), rgba(245, 108, 108, 0.05)); |
| | | color: #f56c6c; |
| | | } |
| | | |
| | | .metric-total .metric-icon-wrapper { |
| | | background: linear-gradient(135deg, rgba(144, 147, 153, 0.15), rgba(144, 147, 153, 0.05)); |
| | | color: #909399; |
| | | } |
| | | |
| | | .metric-info { |
| | | flex: 1; |
| | | } |
| | | |
| | | .metric-name { |
| | | font-size: 14px; |
| | | color: #606266; |
| | | margin-bottom: 8px; |
| | | font-weight: 500; |
| | | } |
| | | |
| | | .metric-value { |
| | | font-size: 28px; |
| | | font-weight: 800; |
| | | color: #303133; |
| | | margin-bottom: 8px; |
| | | line-height: 1; |
| | | background: linear-gradient(135deg, currentColor, #303133); |
| | | -webkit-background-clip: text; |
| | | -webkit-text-fill-color: transparent; |
| | | background-clip: text; |
| | | } |
| | | |
| | | .metric-compare { |
| | | display: flex; |
| | | align-items: center; |
| | | font-size: 12px; |
| | | } |
| | | |
| | | .compare-positive { |
| | | color: #f56c6c; |
| | | font-weight: 600; |
| | | display: flex; |
| | | align-items: center; |
| | | margin-right: 8px; |
| | | } |
| | | |
| | | .compare-positive i { |
| | | font-size: 12px; |
| | | margin-right: 4px; |
| | | } |
| | | |
| | | .compare-negative { |
| | | color: #67c23a; |
| | | font-weight: 600; |
| | | display: flex; |
| | | align-items: center; |
| | | margin-right: 8px; |
| | | } |
| | | |
| | | .compare-negative i { |
| | | font-size: 12px; |
| | | margin-right: 4px; |
| | | } |
| | | |
| | | .compare-zero { |
| | | color: #909399; |
| | | font-weight: 600; |
| | | display: flex; |
| | | align-items: center; |
| | | margin-right: 8px; |
| | | } |
| | | |
| | | .compare-zero i { |
| | | font-size: 12px; |
| | | margin-right: 4px; |
| | | } |
| | | |
| | | .compare-label { |
| | | color: #909399; |
| | | font-size: 11px; |
| | | } |
| | | |
| | | .metric-trend { |
| | | width: 44px; |
| | | height: 44px; |
| | | display: flex; |
| | | align-items: flex-end; |
| | | justify-content: center; |
| | | z-index: 2; |
| | | } |
| | | |
| | | .trend-chart { |
| | | width: 6px; |
| | | height: 100%; |
| | | background: rgba(0, 0, 0, 0.06); |
| | | border-radius: 3px; |
| | | position: relative; |
| | | border: 1px solid #e0e0e0; |
| | | border-radius: 4px; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .trend-bar { |
| | | position: absolute; |
| | | bottom: 0; |
| | | left: 0; |
| | | right: 0; |
| | | border-radius: 3px; |
| | | transition: height 0.8s cubic-bezier(0.4, 0, 0.2, 1); |
| | | } |
| | | |
| | | .metric-inbound-today .trend-bar { |
| | | background: linear-gradient(to top, #67c23a, #95d475); |
| | | } |
| | | |
| | | .metric-outbound-today .trend-bar { |
| | | background: linear-gradient(to top, #e6a23c, #eebe77); |
| | | } |
| | | |
| | | .metric-inbound-month .trend-bar { |
| | | background: linear-gradient(to top, #409eff, #79bbff); |
| | | } |
| | | |
| | | .metric-outbound-month .trend-bar { |
| | | background: linear-gradient(to top, #f56c6c, #f89898); |
| | | } |
| | | |
| | | .metric-total .trend-bar { |
| | | background: linear-gradient(to top, #909399, #b1b3b8); |
| | | } |
| | | |
| | | .metric-decoration { |
| | | position: absolute; |
| | | top: -20px; |
| | | right: -20px; |
| | | width: 80px; |
| | | height: 80px; |
| | | opacity: 0.1; |
| | | z-index: 1; |
| | | } |
| | | |
| | | .decoration-circle { |
| | | width: 100%; |
| | | height: 100%; |
| | | border-radius: 50%; |
| | | background: currentColor; |
| | | } |
| | | |
| | | /* ä»»å¡çæ¿æ ·å¼ */ |
| | | .task-board-container { |
| | | background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%); |
| | | border-radius: 16px; |
| | | box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); |
| | | border: 1px solid rgba(255, 255, 255, 0.8); |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .board-header { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding: 20px 24px; |
| | | background: linear-gradient(135deg, #409eff 0%, #79bbff 100%); |
| | | color: white; |
| | | } |
| | | |
| | | .header-left { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .board-icon { |
| | | font-size: 20px; |
| | | margin-right: 12px; |
| | | } |
| | | |
| | | .board-title { |
| | | font-size: 18px; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .task-count { |
| | | font-size: 14px; |
| | | opacity: 0.9; |
| | | background: rgba(255, 255, 255, 0.2); |
| | | padding: 4px 12px; |
| | | border-radius: 12px; |
| | | } |
| | | |
| | | .board-body { |
| | | height: 320px; |
| | | padding: 0; |
| | | } |
| | | |
| | | .scroll-table-container { |
| | | height: 100%; |
| | | position: relative; |
| | | overflow: hidden; |
| | | } |
| | | |
| | |
| | | top: 0; |
| | | left: 0; |
| | | right: 0; |
| | | z-index: 10; |
| | | background: #0066cc; |
| | | z-index: 20; |
| | | background: #f8f9fa; |
| | | border-bottom: 2px solid #e4e7ed; |
| | | } |
| | | |
| | | .header-table { |
| | |
| | | } |
| | | |
| | | .header-table th { |
| | | background: #0066cc; |
| | | color: white; |
| | | font-weight: bold; |
| | | padding: 8px 4px; |
| | | background: #f8f9fa; |
| | | color: #606266; |
| | | font-weight: 600; |
| | | padding: 16px 12px; |
| | | text-align: center; |
| | | border-right: 1px solid #0055aa; |
| | | font-size: 12px; |
| | | border-right: 1px solid #e4e7ed; |
| | | font-size: 14px; |
| | | position: relative; |
| | | } |
| | | |
| | | .header-table th:last-child { |
| | | border-right: none; |
| | | } |
| | | |
| | | .header-table th::after { |
| | | content: ''; |
| | | position: absolute; |
| | | bottom: 0; |
| | | left: 0; |
| | | right: 0; |
| | | height: 2px; |
| | | background: linear-gradient(90deg, #409eff, #79bbff); |
| | | } |
| | | |
| | | .table-body-container { |
| | | position: absolute; |
| | | top: 40px; |
| | | /* 表头é«åº¦ */ |
| | | top: 56px; |
| | | left: 0; |
| | | right: 0; |
| | | bottom: 0; |
| | |
| | | } |
| | | |
| | | .table-body-wrapper { |
| | | transition: transform 0.1s linear; |
| | | transition: transform 0.3s ease; |
| | | } |
| | | |
| | | .body-table { |
| | |
| | | } |
| | | |
| | | .body-table td { |
| | | padding: 8px 4px; |
| | | border-bottom: 1px solid #f0f0f0; |
| | | font-size: 12px; |
| | | height: 40px; |
| | | padding: 14px 12px; |
| | | border-bottom: 1px solid #f0f2f5; |
| | | font-size: 13px; |
| | | height: 48px; |
| | | box-sizing: border-box; |
| | | text-align: center; |
| | | color: #606266; |
| | | } |
| | | |
| | | .even-row { |
| | | background-color: #f8f9fa; |
| | | background-color: #fafbfc; |
| | | } |
| | | |
| | | .odd-row { |
| | |
| | | } |
| | | |
| | | .body-table tr:hover { |
| | | background-color: #e6f7ff !important; |
| | | background-color: #f0f7ff !important; |
| | | transform: scale(1.01); |
| | | transition: all 0.2s ease; |
| | | } |
| | | |
| | | .status-tag { |
| | | border-radius: 12px; |
| | | padding: 4px 12px; |
| | | font-weight: 500; |
| | | border: none; |
| | | } |
| | | |
| | | .no-data-board { |
| | |
| | | align-items: center; |
| | | height: 100%; |
| | | width: 100%; |
| | | background: #f8f9fa; |
| | | } |
| | | |
| | | .metrics { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | margin-top: 15px; |
| | | } |
| | | |
| | | .metric-item { |
| | | text-align: center; |
| | | flex: 1; |
| | | padding: 10px; |
| | | } |
| | | |
| | | .metric-name { |
| | | font-size: 24px; |
| | | color: #666; |
| | | margin-bottom: 8px; |
| | | } |
| | | |
| | | .metric-value { |
| | | font-size: 22px; |
| | | font-weight: bold; |
| | | margin: 20px 0; |
| | | color: #333; |
| | | } |
| | | |
| | | /* å¾è¡¨å¡çæ ·å¼ */ |
| | | .charts-section { |
| | | margin-bottom: 20px; |
| | | margin-bottom: 24px; |
| | | } |
| | | |
| | | .chart-container { |
| | | background: white; |
| | | padding: 16px; |
| | | border-radius: 8px; |
| | | box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); |
| | | .chart-card { |
| | | background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%); |
| | | border-radius: 16px; |
| | | box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); |
| | | border: 1px solid rgba(255, 255, 255, 0.8); |
| | | overflow: hidden; |
| | | height: 400px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | } |
| | | |
| | | .title { |
| | | display: flex; |
| | | align-items: center; |
| | | .chart-header { |
| | | padding: 20px 24px 0; |
| | | background: transparent; |
| | | } |
| | | |
| | | &::before { |
| | | display: block; |
| | | content: ""; |
| | | width: 6px; |
| | | height: 20px; |
| | | background-color: #409eff; |
| | | margin-right: 10px; |
| | | } |
| | | } |
| | | .chart-title { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 0 8px 0; |
| | | font-size: 16px; |
| | | font-weight: 600; |
| | | color: #303133; |
| | | } |
| | | |
| | | .chart-icon { |
| | | margin-right: 8px; |
| | | color: #409eff; |
| | | font-size: 18px; |
| | | } |
| | | |
| | | .chart-subtitle { |
| | | font-size: 13px; |
| | | color: #909399; |
| | | margin: 0; |
| | | } |
| | | |
| | | .chart-content { |
| | | flex: 1; |
| | | padding: 0 12px 20px; |
| | | position: relative; |
| | | } |
| | | |
| | | .chart { |
| | | height: 350px; |
| | | height: 100%; |
| | | width: 100%; |
| | | } |
| | | |
| | | .chart1 { |
| | | height: 350px; |
| | | .chart-large { |
| | | height: 100%; |
| | | width: 100%; |
| | | } |
| | | |
| | | .loading, |
| | | .error, |
| | | .no-data { |
| | | margin-top: 50px; |
| | | height: 500px; |
| | | font-size: 20px; |
| | | } |
| | | |
| | | .loading { |
| | | color: #999; |
| | | } |
| | | |
| | | .error { |
| | | color: #f56c6c; |
| | | } |
| | | |
| | | .metric-icon { |
| | | width: 28px; |
| | | height: 28px; |
| | | border-radius: 8px; |
| | | .chart-loading, |
| | | .chart-error, |
| | | .chart-no-data { |
| | | display: flex; |
| | | align-items: center; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | margin-right: 12px; |
| | | margin-bottom: 6px; |
| | | font-size: 24px; |
| | | background: rgba(255, 255, 255, 0.8); |
| | | align-items: center; |
| | | height: 100%; |
| | | color: #909399; |
| | | font-size: 14px; |
| | | } |
| | | |
| | | .no-data { |
| | | color: #909399; |
| | | .chart-loading i, |
| | | .chart-error i, |
| | | .chart-no-data i { |
| | | font-size: 48px; |
| | | margin-bottom: 16px; |
| | | opacity: 0.6; |
| | | } |
| | | |
| | | .chart-loading { |
| | | color: #409eff; |
| | | } |
| | | |
| | | .chart-error { |
| | | color: #f56c6c; |
| | | } |
| | | |
| | | /* Element Plus æ ç¾æ ·å¼è°æ´ */ |
| | | :deep(.el-tag) { |
| | | border: none; |
| | | font-size: 12px; |
| | | font-weight: 500; |
| | | } |
| | | |
| | | :deep(.el-tag--success) { |
| | | background-color: #f0f9ff; |
| | | background: linear-gradient(135deg, #f0f9ff, #e1f3ff); |
| | | color: #67c23a; |
| | | } |
| | | |
| | | :deep(.el-tag--primary) { |
| | | background-color: #f0f9ff; |
| | | background: linear-gradient(135deg, #f0f9ff, #e1f3ff); |
| | | color: #409eff; |
| | | } |
| | | |
| | | :deep(.el-tag--info) { |
| | | background-color: #f4f4f5; |
| | | background: linear-gradient(135deg, #f4f4f5, #e9e9eb); |
| | | color: #909399; |
| | | } |
| | | |
| | | :deep(.el-tag--warning) { |
| | | background: linear-gradient(135deg, #fdf6ec, #faecd8); |
| | | color: #e6a23c; |
| | | } |
| | | |
| | | :deep(.el-tag--danger) { |
| | | background-color: #fef0f0; |
| | | background: linear-gradient(135deg, #fef0f0, #fde2e2); |
| | | color: #f56c6c; |
| | | } |
| | | |
| | | /* ååºå¼è®¾è®¡ */ |
| | | @media (max-width: 1200px) { |
| | | .metrics-grid { |
| | | grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); |
| | | gap: 16px; |
| | | } |
| | | |
| | | .metric-card { |
| | | padding: 20px; |
| | | } |
| | | |
| | | .metric-value { |
| | | font-size: 24px; |
| | | } |
| | | } |
| | | |
| | | @media (max-width: 768px) { |
| | | .dashboard-container { |
| | | padding: 16px; |
| | | } |
| | | |
| | | .overview-header { |
| | | flex-direction: column; |
| | | gap: 16px; |
| | | } |
| | | |
| | | .header-right { |
| | | align-items: flex-start; |
| | | } |
| | | |
| | | .metrics-grid { |
| | | grid-template-columns: 1fr; |
| | | gap: 12px; |
| | | } |
| | | |
| | | .chart-card { |
| | | height: 350px; |
| | | } |
| | | } |
| | | |
| | | /* æ»å¨æ¡æ ·å¼ä¼å */ |
| | | .scroll-table-container::-webkit-scrollbar { |
| | | width: 6px; |
| | | } |
| | | |
| | | .scroll-table-container::-webkit-scrollbar-track { |
| | | background: #f1f1f1; |
| | | border-radius: 3px; |
| | | } |
| | | |
| | | .scroll-table-container::-webkit-scrollbar-thumb { |
| | | background: #c1c1c1; |
| | | border-radius: 3px; |
| | | } |
| | | |
| | | .scroll-table-container::-webkit-scrollbar-thumb:hover { |
| | | background: #a8a8a8; |
| | | } |
| | | </style> |
| | |
| | | "WorkspaceRootPath": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\", |
| | | "Documents": [ |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|solutionrelative:widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{4BDE58B2-5B2E-480B-932F-D63C2A7D557C}|WIDESEA_StorageBasicServices\\WIDESEA_StorageBasicServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_storagebasicservices\\stock\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{4BDE58B2-5B2E-480B-932F-D63C2A7D557C}|WIDESEA_StorageBasicServices\\WIDESEA_StorageBasicServices.csproj|solutionrelative:widesea_storagebasicservices\\stock\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_core\\enums\\enumhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\enums\\enumhelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}|WIDESEA_IStorageTaskService\\WIDESEA_IStorageTaskServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_istoragetaskservice\\task\\idt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}|WIDESEA_IStorageTaskService\\WIDESEA_IStorageTaskServices.csproj|solutionrelative:widesea_istoragetaskservice\\task\\idt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\basic\\stockinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\basic\\stockinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{B8B1C352-0398-4A54-B202-D774D48367EB}|WIDESEA_IStorageBasicService\\WIDESEA_IStorageBasicServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_istoragebasicservice\\stock\\istockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{B8B1C352-0398-4A54-B202-D774D48367EB}|WIDESEA_IStorageBasicService\\WIDESEA_IStorageBasicServices.csproj|solutionrelative:widesea_istoragebasicservice\\stock\\istockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_dto\\basic\\stockdatadto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\basic\\stockdatadto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}", |
| | | "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|solutionrelative:widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | } |
| | | ], |
| | | "DocumentGroupContainers": [ |
| | |
| | | "DocumentGroups": [ |
| | | { |
| | | "DockedWidth": 200, |
| | | "SelectedChildIndex": 7, |
| | | "SelectedChildIndex": 1, |
| | | "Children": [ |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 2, |
| | | "Title": "EnumHelper.cs", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Enums\\EnumHelper.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_Core\\Enums\\EnumHelper.cs", |
| | | "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Enums\\EnumHelper.cs", |
| | | "RelativeToolTip": "WIDESEA_Core\\Enums\\EnumHelper.cs", |
| | | "ViewState": "AgIAABkAAAAAAAAAAAAAwAUAAAAiAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-11-14T01:01:56.246Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 4, |
| | | "Title": "StockInfoController.cs", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Basic\\StockInfoController.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Basic\\StockInfoController.cs", |
| | | "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Basic\\StockInfoController.cs", |
| | | "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Basic\\StockInfoController.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAAAYAAAAVAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-11-13T07:33:03.01Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 5, |
| | | "Title": "IStockInfoService.cs", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStorageBasicService\\Stock\\IStockInfoService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_IStorageBasicService\\Stock\\IStockInfoService.cs", |
| | | "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStorageBasicService\\Stock\\IStockInfoService.cs", |
| | | "RelativeToolTip": "WIDESEA_IStorageBasicService\\Stock\\IStockInfoService.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAADwvxUAAAAsAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-11-13T07:32:46.496Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 6, |
| | | "Title": "StockDataDTO.cs", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Basic\\StockDataDTO.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_DTO\\Basic\\StockDataDTO.cs", |
| | | "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Basic\\StockDataDTO.cs", |
| | | "RelativeToolTip": "WIDESEA_DTO\\Basic\\StockDataDTO.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAAAdAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-11-13T06:32:51.624Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 3, |
| | | "Title": "IDt_TaskService.cs", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStorageTaskService\\Task\\IDt_TaskService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_IStorageTaskService\\Task\\IDt_TaskService.cs", |
| | | "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStorageTaskService\\Task\\IDt_TaskService.cs", |
| | | "RelativeToolTip": "WIDESEA_IStorageTaskService\\Task\\IDt_TaskService.cs", |
| | | "ViewState": "AgIAACAAAAAAAAAAAAD4vzEAAAAlAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-11-13T00:58:35.278Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 7, |
| | | "DocumentIndex": 1, |
| | | "Title": "appsettings.json", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json", |
| | | "RelativeDocumentMoniker": "WIDESEA_WMSServer\\appsettings.json", |
| | |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 1, |
| | | "DocumentIndex": 0, |
| | | "Title": "StockInfoService.cs", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs", |
| | | "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs", |
| | | "RelativeToolTip": "WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs", |
| | | "ViewState": "AgIAAOkAAAAAAAAAAAAAwMIBAAAmAAAAAAAAAA==", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAALkBAAAEAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-11-09T04:49:28.39Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 0, |
| | | "DocumentIndex": 2, |
| | | "Title": "Dt_TaskService.cs", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs", |
| | | "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs", |
| | | "RelativeToolTip": "WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs", |
| | | "ViewState": "AgIAAGQCAAAAAAAAAAAswMgCAABhAAAAAAAAAA==", |
| | | "ViewState": "AgIAAA0DAAAAAAAAAAAAAEsDAAAtAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-11-09T03:32:47.726Z", |
| | | "EditorCaption": "" |
| | | "WhenOpened": "2025-11-09T03:32:47.726Z" |
| | | } |
| | | ] |
| | | } |
| | |
| | | "RelativeMoniker": "D:0:0:{4BDE58B2-5B2E-480B-932F-D63C2A7D557C}|WIDESEA_StorageBasicServices\\WIDESEA_StorageBasicServices.csproj|solutionrelative:widesea_storagebasicservices\\stock\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|solutionrelative:widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}|WIDESEA_IStorageTaskService\\WIDESEA_IStorageTaskServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_istoragetaskservice\\task\\idt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}|WIDESEA_IStorageTaskService\\WIDESEA_IStorageTaskServices.csproj|solutionrelative:widesea_istoragetaskservice\\task\\idt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\basic\\stockinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\basic\\stockinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{B8B1C352-0398-4A54-B202-D774D48367EB}|WIDESEA_IStorageBasicService\\WIDESEA_IStorageBasicServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_istoragebasicservice\\stock\\istockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{B8B1C352-0398-4A54-B202-D774D48367EB}|WIDESEA_IStorageBasicService\\WIDESEA_IStorageBasicServices.csproj|solutionrelative:widesea_istoragebasicservice\\stock\\istockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_dto\\basic\\stockdatadto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{929DF936-042C-4EEC-8722-A831FC2F0AEA}|WIDESEA_DTO\\WIDESEA_DTO.csproj|solutionrelative:widesea_dto\\basic\\stockdatadto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}", |
| | | "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|e:\\get\\duiduojiliku\\\u9879\u76EE\u4EE3\u7801\\wms\\widesea_wmsserver\\widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|solutionrelative:widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | } |
| | | ], |
| | | "DocumentGroupContainers": [ |
| | |
| | | "DocumentGroups": [ |
| | | { |
| | | "DockedWidth": 200, |
| | | "SelectedChildIndex": 5, |
| | | "SelectedChildIndex": 1, |
| | | "Children": [ |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 3, |
| | | "Title": "StockInfoController.cs", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Basic\\StockInfoController.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Basic\\StockInfoController.cs", |
| | | "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Basic\\StockInfoController.cs", |
| | | "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Basic\\StockInfoController.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAAAYAAAAVAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-11-13T07:33:03.01Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 4, |
| | | "Title": "IStockInfoService.cs", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStorageBasicService\\Stock\\IStockInfoService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_IStorageBasicService\\Stock\\IStockInfoService.cs", |
| | | "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStorageBasicService\\Stock\\IStockInfoService.cs", |
| | | "RelativeToolTip": "WIDESEA_IStorageBasicService\\Stock\\IStockInfoService.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAADwvxUAAAAsAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-11-13T07:32:46.496Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 5, |
| | | "Title": "StockDataDTO.cs", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Basic\\StockDataDTO.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_DTO\\Basic\\StockDataDTO.cs", |
| | | "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Basic\\StockDataDTO.cs", |
| | | "RelativeToolTip": "WIDESEA_DTO\\Basic\\StockDataDTO.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAAAdAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-11-13T06:32:51.624Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 2, |
| | | "Title": "IDt_TaskService.cs", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStorageTaskService\\Task\\IDt_TaskService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_IStorageTaskService\\Task\\IDt_TaskService.cs", |
| | | "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_IStorageTaskService\\Task\\IDt_TaskService.cs", |
| | | "RelativeToolTip": "WIDESEA_IStorageTaskService\\Task\\IDt_TaskService.cs", |
| | | "ViewState": "AgIAACAAAAAAAAAAAAD4vzEAAAAlAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-11-13T00:58:35.278Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 6, |
| | | "DocumentIndex": 1, |
| | | "Title": "appsettings.json", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json", |
| | | "RelativeDocumentMoniker": "WIDESEA_WMSServer\\appsettings.json", |
| | |
| | | "RelativeDocumentMoniker": "WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs", |
| | | "ToolTip": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs", |
| | | "RelativeToolTip": "WIDESEA_StorageBasicServices\\Stock\\StockInfoService.cs", |
| | | "ViewState": "AgIAAOkAAAAAAAAAAAAAwMMBAAAqAAAAAAAAAA==", |
| | | "ViewState": "AgIAAOsBAAAAAAAAAAAowBoCAAA/AAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-11-09T04:49:28.39Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 1, |
| | | "DocumentIndex": 2, |
| | | "Title": "Dt_TaskService.cs", |
| | | "DocumentMoniker": "E:\\GET\\DuiDuoJiLiKu\\\u9879\u76EE\u4EE3\u7801\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs", |
| | |
| | | DateTime firstDayOfMonth = new DateTime(utcNow.Year, utcNow.Month, 1); |
| | | DateTime lastDayOfMonth = firstDayOfMonth.AddMonths(1).AddSeconds(-1); |
| | | |
| | | // 计ç®ä¸ææ¶é´èå´ |
| | | DateTime firstDayOfLastMonth = new DateTime(utcNow.Year, utcNow.Month, 1).AddMonths(-1); |
| | | DateTime lastDayOfLastMonth = firstDayOfLastMonth.AddMonths(1).AddSeconds(-1); |
| | | |
| | | // 计ç®å½å¤©æ¶é´èå´ |
| | | DateTime todayStart = utcNow.Date; |
| | | DateTime todayEnd = todayStart.AddDays(1).AddTicks(-1); |
| | | |
| | | // è®¡ç®æ¨æ¥æ¶é´èå´ |
| | | DateTime startOfPreviousDay = utcNow.AddDays(-1).Date; // åä¸å¤©ç 00:00:00 |
| | | DateTime endOfPreviousDay = startOfPreviousDay.AddDays(1).AddSeconds(-1); |
| | | |
| | | // æ¥è¯¢å½ææ°æ® |
| | | var currentMonthInStocks = stocks.Where(x => x.CreateDate >= firstDayOfMonth && x.CreateDate <= lastDayOfMonth).Sum(x => x.Quantity); |
| | | var currentMonthOutStocks = orderdetail.Where(x => x.CreateDate >= firstDayOfMonth && x.CreateDate <= lastDayOfMonth).Sum(x => x.OutboundQuantity); |
| | | |
| | | // æ¥è¯¢å½æ¥æ°æ® |
| | | //æ¥è¯¢ä¸ææ°æ® |
| | | var currentMonthInStocksLastMonth = stocks.Where(x => x.CreateDate >= firstDayOfLastMonth && x.CreateDate <= lastDayOfLastMonth).Sum(x => x.Quantity); |
| | | var currentMonthOutStocksLastMonth = orderdetail.Where(x => x.CreateDate >= firstDayOfLastMonth && x.CreateDate <= lastDayOfLastMonth).Sum(x => x.OutboundQuantity); |
| | | |
| | | // æ¥è¯¢ä»æ¥æ°æ® |
| | | var currentDayInStocks = stocks.Where(x => x.CreateDate >= todayStart && x.CreateDate <= todayEnd).Sum(x => x.Quantity); |
| | | var currentDayOutStocks = orderdetail.Where(x => x.CreateDate >= todayStart && x.CreateDate <= todayEnd).Sum(x => x.OutboundQuantity); |
| | | |
| | | // æ¥è¯¢æ¨å¤©æ¥æ°æ® |
| | | var currentDayInStocksLast = stocks.Where(x => x.CreateDate >= startOfPreviousDay && x.CreateDate <= endOfPreviousDay).Sum(x => x.Quantity); |
| | | var currentDayOutStocksLast = orderdetail.Where(x => x.CreateDate >= startOfPreviousDay && x.CreateDate <= endOfPreviousDay).Sum(x => x.OutboundQuantity); |
| | | |
| | | // çææè¿7天çåºå
¥åºæ°æ® |
| | | var last7Days = Enumerable.Range(0, 7) |
| | |
| | | var inboundData = last7Days.Select(date => new |
| | | { |
| | | Date = date.ToString("MM-dd"), |
| | | Value = stocks.Where(x => x.CreateDate.Date == date).Sum(x => x.Quantity) |
| | | Value = stocks.Where(x => x.CreateDate.Date == date).Sum(x => x.Quantity), |
| | | }).ToList(); |
| | | |
| | | var outboundData = last7Days.Select(date => new |
| | |
| | | metrics = new List<object>{ |
| | | new { |
| | | name = "仿¥è¿åºé", |
| | | value = currentDayInStocks |
| | | value = currentDayInStocks, |
| | | compare =currentDayInStocks-currentDayInStocksLast, |
| | | }, |
| | | new { |
| | | name = "仿¥åºåºé", |
| | | value = currentDayOutStocks |
| | | value = currentDayOutStocks, |
| | | compare =currentDayOutStocks-currentDayOutStocksLast, |
| | | }, |
| | | new { |
| | | name = "æ¬æè¿åºé", |
| | | value = currentMonthInStocks |
| | | value = currentMonthInStocks, |
| | | compare =currentMonthInStocks-currentMonthInStocksLastMonth, |
| | | }, |
| | | new { |
| | | name = "æ¬æåºåºé", |
| | | value = currentMonthOutStocks |
| | | value = currentMonthOutStocks, |
| | | compare = currentMonthOutStocks - currentMonthOutStocksLastMonth, |
| | | }, |
| | | new { |
| | | name = "åºåæ»é", |
| | |
| | | return content.Error("ç³»ç»é误ï¼è¯·è系管çå"); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | } |