diff --git a/.gitignore b/.gitignore
index f2f05b6..7ce6e50 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,91 +1,21 @@
-# ---> Android
-# Built application files
-*.apk
-*.aar
-*.ap_
-*.aab
-
-# Files for the ART/Dalvik VM
-*.dex
-
-# Java class files
-*.class
-
-# Generated files
-bin/
-gen/
-out/
-# Uncomment the following line in case you need and you don't have the release build type files in your app
-# release/
-
-# Gradle files
-.gradle/
-build/
-
-# Local configuration file (sdk path, etc)
-local.properties
-
-# Proguard folder generated by Eclipse
-proguard/
-
-# Log Files
+# Logs
+logs
*.log
-
-# Android Studio Navigation editor temp files
-.navigation/
-
-# Android Studio captures folder
-captures/
-
-# IntelliJ
-*.iml
-.idea/workspace.xml
-.idea/tasks.xml
-.idea/gradle.xml
-.idea/assetWizardSettings.xml
-.idea/dictionaries
-.idea/libraries
-.idea/jarRepositories.xml
-# Android Studio 3 in .gitignore file.
-.idea/caches
-.idea/modules.xml
-# Comment next line if keeping position of elements in Navigation Editor is relevant for you
-.idea/navEditor.xml
-
-# Keystore files
-# Uncomment the following lines if you do not want to check your keystore files in.
-#*.jks
-#*.keystore
-
-# External native build folder generated in Android Studio 2.2 and later
-.externalNativeBuild
-.cxx/
-
-# Google Services (e.g. APIs or Firebase)
-# google-services.json
-
-# Freeline
-freeline.py
-freeline/
-freeline_project_description.json
-
-# fastlane
-fastlane/report.xml
-fastlane/Preview.html
-fastlane/screenshots
-fastlane/test_output
-fastlane/readme.md
-
-# Version control
-vcs.xml
-
-# lint
-lint/intermediates/
-lint/generated/
-lint/outputs/
-lint/tmp/
-# lint/reports/
-
-# Android Profiling
-*.hprof
-
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+.DS_Store
+dist
+*.local
+
+# Editor directories and files
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
\ No newline at end of file
diff --git a/.hbuilderx/debug.config.json b/.hbuilderx/debug.config.json
new file mode 100644
index 0000000..2d620d9
--- /dev/null
+++ b/.hbuilderx/debug.config.json
@@ -0,0 +1,4 @@
+{
+ "rootPathIndex": 1,
+ "webRoot": "${projectDir}"
+}
diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json
new file mode 100644
index 0000000..8c453cd
--- /dev/null
+++ b/.hbuilderx/launch.json
@@ -0,0 +1,24 @@
+{
+ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+ // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+ "version" : "0.0",
+ "configurations" : [
+ {
+ "app-plus" : {
+ "launchtype" : "local"
+ },
+ "default" : {
+ "launchtype" : "local"
+ },
+ "type" : "uniCloud"
+ },
+ {
+ "openVueDevtools" : true,
+ "type" : "uni-app:h5"
+ },
+ {
+ "playground" : "standard",
+ "type" : "uni-app:app-android"
+ }
+ ]
+}
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..9b03057
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,7 @@
+# 设置基础镜像
+FROM win-nginx
+
+WORKDIR /opt/sfms3.0-uniapp
+COPY nginx.conf /usr/local/nginx/conf/nginx.conf
+# 将dist/build/h5/文件中的内容复制到 /opt/sfms3.0-uniapp 这个目录下面
+COPY dist/build/h5/ /opt/sfms3.0-uniapp
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..6f49f47
--- /dev/null
+++ b/index.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/nginx.conf b/nginx.conf
new file mode 100644
index 0000000..04e4b8a
--- /dev/null
+++ b/nginx.conf
@@ -0,0 +1,53 @@
+user root;
+worker_processes 2;
+
+events {
+ worker_connections 1024;
+}
+
+http {
+ include mime.types;
+ charset utf-8,gbk;
+ default_type application/octet-stream;
+ log_format main '$remote_addr - $remote_user [$time_local] "$request" '
+ '$status $body_bytes_sent "$http_referer" '
+ '"$http_user_agent" "$http_x_forwarded_for" "$request_time $upstream_response_time"';
+
+ proxy_cache_path /opt/nginx_cache/ levels=1:2 keys_zone=my_zone:10m inactive=300s max_size=5g;
+ access_log logs/access.log main;
+ sendfile on;
+ #tcp_nopush on;
+ keepalive_timeout 600s;
+ client_max_body_size 200m;
+ gzip on;
+ gzip_min_length 10k;
+ gzip_comp_level 9;
+ gzip_buffers 4 16k;
+ gzip_types text/plain application/javascript text/css application/xml text/javascript image/jpeg image/gif image/png;
+ gzip_vary on;
+ gzip_disable "MSIE [1-6]\.";
+ upstream sfms3.0 {
+ server localhost:25310 weight=10 max_fails=3 fail_timeout=10s;
+ }
+ server {
+ listen 25302;
+ server_name_in_redirect off;
+ server_name dev.ccwin-in.com;
+ location /api/ {
+ proxy_pass http://sfms3.0/;
+ proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header;
+ proxy_set_header X-Forwared-For $proxy_add_x_forwarded_for;
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $http_x_forwarded_for;
+ }
+ location / {
+ proxy_cache my_zone;
+ proxy_cache_valid 200 304 12h;
+ proxy_cache_key $host$uri$is_args$args;
+ try_files $uri $uri/ /index.html;
+ root /opt/sfms3.0-uniapp;
+ index index.html index.htm;
+ }
+ }
+}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..fe51bfb
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,12051 @@
+{
+ "name": "uni-preset-vue",
+ "version": "0.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "uni-preset-vue",
+ "version": "0.0.0",
+ "dependencies": {
+ "@dcloudio/uni-app": "3.0.0-3090920231225001",
+ "@dcloudio/uni-app-plus": "3.0.0-3090920231225001",
+ "@dcloudio/uni-components": "3.0.0-3090920231225001",
+ "@dcloudio/uni-h5": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-alipay": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-baidu": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-jd": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-kuaishou": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-lark": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-qq": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-toutiao": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-xhs": "3.0.0-3090920231225001",
+ "@dcloudio/uni-quickapp-webview": "3.0.0-3090920231225001",
+ "less": "^4.2.0",
+ "vue": "^3.2.45",
+ "vue-i18n": "^9.1.9",
+ "vuex": "^4.1.0"
+ },
+ "devDependencies": {
+ "@dcloudio/types": "^3.3.2",
+ "@dcloudio/uni-automator": "3.0.0-3090920231225001",
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-stacktracey": "3.0.0-3090920231225001",
+ "@dcloudio/vite-plugin-uni": "3.0.0-3090920231225001",
+ "@vue/runtime-core": "^3.2.45",
+ "axios": "^1.3.4",
+ "decimal.js": "^10.4.3",
+ "jwt-decode": "^3.1.2",
+ "sass": "^1.70.0",
+ "sass-loader": "^14.1.0",
+ "vite": "4.0.3",
+ "vue-clipboard2": "^0.3.3"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+ "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@antfu/utils": {
+ "version": "0.7.7",
+ "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.7.tgz",
+ "integrity": "sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==",
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
+ "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
+ "dependencies": {
+ "@babel/highlight": "^7.23.4",
+ "chalk": "^2.4.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz",
+ "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz",
+ "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==",
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.23.5",
+ "@babel/generator": "^7.23.6",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helpers": "^7.23.9",
+ "@babel/parser": "^7.23.9",
+ "@babel/template": "^7.23.9",
+ "@babel/traverse": "^7.23.9",
+ "@babel/types": "^7.23.9",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
+ "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
+ "dependencies": {
+ "@babel/types": "^7.23.6",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jsesc": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
+ "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz",
+ "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
+ "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
+ "dependencies": {
+ "@babel/compat-data": "^7.23.5",
+ "@babel/helper-validator-option": "^7.23.5",
+ "browserslist": "^4.22.2",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.23.10",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz",
+ "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-member-expression-to-functions": "^7.23.0",
+ "@babel/helper-optimise-call-expression": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.20",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-regexp-features-plugin": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz",
+ "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "regexpu-core": "^5.3.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-define-polyfill-provider": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz",
+ "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+ "dependencies": {
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz",
+ "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.23.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+ "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+ "dependencies": {
+ "@babel/types": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
+ "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-simple-access": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-validator-identifier": "^7.22.20"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
+ "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
+ "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-remap-async-to-generator": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz",
+ "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-wrap-function": "^7.22.20"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz",
+ "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-member-expression-to-functions": "^7.22.15",
+ "@babel/helper-optimise-call-expression": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+ "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
+ "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
+ "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
+ "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-wrap-function": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz",
+ "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-function-name": "^7.22.5",
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.22.19"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz",
+ "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==",
+ "dependencies": {
+ "@babel/template": "^7.23.9",
+ "@babel/traverse": "^7.23.9",
+ "@babel/types": "^7.23.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
+ "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz",
+ "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==",
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz",
+ "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz",
+ "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/plugin-transform-optional-chaining": "^7.23.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.13.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
+ "version": "7.23.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz",
+ "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.21.0-placeholder-for-preset-env.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+ "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-bigint": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
+ "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-class-properties": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.12.13"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-class-static-block": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+ "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-dynamic-import": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-export-namespace-from": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+ "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-assertions": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz",
+ "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-attributes": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz",
+ "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-meta": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz",
+ "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+ "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-numeric-separator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-private-property-in-object": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+ "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-top-level-await": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+ "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz",
+ "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+ "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-arrow-functions": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz",
+ "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-generator-functions": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz",
+ "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-remap-async-to-generator": "^7.22.20",
+ "@babel/plugin-syntax-async-generators": "^7.8.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-to-generator": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz",
+ "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-remap-async-to-generator": "^7.22.20"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz",
+ "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoping": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz",
+ "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-class-properties": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz",
+ "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-class-static-block": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz",
+ "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-classes": {
+ "version": "7.23.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz",
+ "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.20",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-computed-properties": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz",
+ "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/template": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-destructuring": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz",
+ "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dotall-regex": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz",
+ "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-duplicate-keys": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz",
+ "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dynamic-import": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz",
+ "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz",
+ "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-export-namespace-from": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz",
+ "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-for-of": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz",
+ "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-function-name": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz",
+ "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.22.15",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-json-strings": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz",
+ "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-json-strings": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-literals": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz",
+ "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-logical-assignment-operators": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz",
+ "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-member-expression-literals": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz",
+ "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-amd": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz",
+ "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-commonjs": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz",
+ "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-simple-access": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-systemjs": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz",
+ "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.20"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-umd": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz",
+ "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz",
+ "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-new-target": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz",
+ "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz",
+ "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-numeric-separator": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz",
+ "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-rest-spread": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz",
+ "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.23.3",
+ "@babel/helper-compilation-targets": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.23.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-super": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz",
+ "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.20"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-optional-catch-binding": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz",
+ "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-optional-chaining": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz",
+ "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-parameters": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz",
+ "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-private-methods": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz",
+ "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-private-property-in-object": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz",
+ "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-property-literals": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz",
+ "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-regenerator": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz",
+ "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "regenerator-transform": "^0.15.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-reserved-words": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz",
+ "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-shorthand-properties": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz",
+ "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-spread": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz",
+ "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-sticky-regex": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz",
+ "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-template-literals": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz",
+ "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typeof-symbol": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz",
+ "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typescript": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz",
+ "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.23.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-typescript": "^7.23.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-escapes": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz",
+ "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-property-regex": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz",
+ "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-regex": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz",
+ "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-sets-regex": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz",
+ "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/preset-env": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.9.tgz",
+ "integrity": "sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.23.5",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-validator-option": "^7.23.5",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7",
+ "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-class-properties": "^7.12.13",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+ "@babel/plugin-syntax-import-assertions": "^7.23.3",
+ "@babel/plugin-syntax-import-attributes": "^7.23.3",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+ "@babel/plugin-syntax-top-level-await": "^7.14.5",
+ "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+ "@babel/plugin-transform-arrow-functions": "^7.23.3",
+ "@babel/plugin-transform-async-generator-functions": "^7.23.9",
+ "@babel/plugin-transform-async-to-generator": "^7.23.3",
+ "@babel/plugin-transform-block-scoped-functions": "^7.23.3",
+ "@babel/plugin-transform-block-scoping": "^7.23.4",
+ "@babel/plugin-transform-class-properties": "^7.23.3",
+ "@babel/plugin-transform-class-static-block": "^7.23.4",
+ "@babel/plugin-transform-classes": "^7.23.8",
+ "@babel/plugin-transform-computed-properties": "^7.23.3",
+ "@babel/plugin-transform-destructuring": "^7.23.3",
+ "@babel/plugin-transform-dotall-regex": "^7.23.3",
+ "@babel/plugin-transform-duplicate-keys": "^7.23.3",
+ "@babel/plugin-transform-dynamic-import": "^7.23.4",
+ "@babel/plugin-transform-exponentiation-operator": "^7.23.3",
+ "@babel/plugin-transform-export-namespace-from": "^7.23.4",
+ "@babel/plugin-transform-for-of": "^7.23.6",
+ "@babel/plugin-transform-function-name": "^7.23.3",
+ "@babel/plugin-transform-json-strings": "^7.23.4",
+ "@babel/plugin-transform-literals": "^7.23.3",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.23.4",
+ "@babel/plugin-transform-member-expression-literals": "^7.23.3",
+ "@babel/plugin-transform-modules-amd": "^7.23.3",
+ "@babel/plugin-transform-modules-commonjs": "^7.23.3",
+ "@babel/plugin-transform-modules-systemjs": "^7.23.9",
+ "@babel/plugin-transform-modules-umd": "^7.23.3",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
+ "@babel/plugin-transform-new-target": "^7.23.3",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4",
+ "@babel/plugin-transform-numeric-separator": "^7.23.4",
+ "@babel/plugin-transform-object-rest-spread": "^7.23.4",
+ "@babel/plugin-transform-object-super": "^7.23.3",
+ "@babel/plugin-transform-optional-catch-binding": "^7.23.4",
+ "@babel/plugin-transform-optional-chaining": "^7.23.4",
+ "@babel/plugin-transform-parameters": "^7.23.3",
+ "@babel/plugin-transform-private-methods": "^7.23.3",
+ "@babel/plugin-transform-private-property-in-object": "^7.23.4",
+ "@babel/plugin-transform-property-literals": "^7.23.3",
+ "@babel/plugin-transform-regenerator": "^7.23.3",
+ "@babel/plugin-transform-reserved-words": "^7.23.3",
+ "@babel/plugin-transform-shorthand-properties": "^7.23.3",
+ "@babel/plugin-transform-spread": "^7.23.3",
+ "@babel/plugin-transform-sticky-regex": "^7.23.3",
+ "@babel/plugin-transform-template-literals": "^7.23.3",
+ "@babel/plugin-transform-typeof-symbol": "^7.23.3",
+ "@babel/plugin-transform-unicode-escapes": "^7.23.3",
+ "@babel/plugin-transform-unicode-property-regex": "^7.23.3",
+ "@babel/plugin-transform-unicode-regex": "^7.23.3",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.23.3",
+ "@babel/preset-modules": "0.1.6-no-external-plugins",
+ "babel-plugin-polyfill-corejs2": "^0.4.8",
+ "babel-plugin-polyfill-corejs3": "^0.9.0",
+ "babel-plugin-polyfill-regenerator": "^0.5.5",
+ "core-js-compat": "^3.31.0",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-modules": {
+ "version": "0.1.6-no-external-plugins",
+ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
+ "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/types": "^7.4.4",
+ "esutils": "^2.0.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@babel/regjsgen": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
+ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
+ "dev": true
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz",
+ "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/runtime/node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+ },
+ "node_modules/@babel/template": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz",
+ "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==",
+ "dependencies": {
+ "@babel/code-frame": "^7.23.5",
+ "@babel/parser": "^7.23.9",
+ "@babel/types": "^7.23.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz",
+ "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==",
+ "dependencies": {
+ "@babel/code-frame": "^7.23.5",
+ "@babel/generator": "^7.23.6",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.23.9",
+ "@babel/types": "^7.23.9",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz",
+ "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.23.4",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@bcoe/v8-coverage": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
+ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@dcloudio/types": {
+ "version": "3.4.7",
+ "resolved": "https://registry.npmjs.org/@dcloudio/types/-/types-3.4.7.tgz",
+ "integrity": "sha512-RuErDYDAWY3KMlACT5NhJAKPxwjFjdzt7I/n50xCBvCSnH/84CzDPDJHRmmP6c0VOfMDHmV88V+sRBvBQRSp+w=="
+ },
+ "node_modules/@dcloudio/uni-app": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-app/-/uni-app-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-NsGrGjNmHc2zH1c5eqnHwSxuMNse+RknCQWIIWnnz+Q8lqHc1I9zf2mzxYXyNBHy4VhGRY2zblhkUyWLtGRaaA==",
+ "dependencies": {
+ "@dcloudio/uni-cloud": "3.0.0-3090920231225001",
+ "@dcloudio/uni-components": "3.0.0-3090920231225001",
+ "@dcloudio/uni-i18n": "3.0.0-3090920231225001",
+ "@dcloudio/uni-push": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-stat": "3.0.0-3090920231225001",
+ "@vue/shared": "3.2.47"
+ },
+ "peerDependencies": {
+ "@dcloudio/types": "^3.3.2"
+ }
+ },
+ "node_modules/@dcloudio/uni-app-plus": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-app-plus/-/uni-app-plus-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-TCzWHbwuheEBSzpTqpHh/imhj4Rkwdg48m9C7ZLqun5runI056TEUdrpfuLBVuwsttk5NSpqm11ywS7GSSM7Mg==",
+ "dependencies": {
+ "@dcloudio/uni-app-uts": "3.0.0-3090920231225001",
+ "@dcloudio/uni-app-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-app-vue": "3.0.0-3090920231225001",
+ "debug": "^4.3.3",
+ "fs-extra": "^10.0.0",
+ "licia": "^1.29.0",
+ "postcss-selector-parser": "^6.0.6"
+ }
+ },
+ "node_modules/@dcloudio/uni-app-uts": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-app-uts/-/uni-app-uts-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-61At6ZKh9SpHMuewxtZEOuDS1hkwFs5AecqavFAZWovVQR30it2e5zSN4kwq/ZM1An/HFs0TLXV3YBnx9Q07oA==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@babel/types": "^7.20.7",
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-i18n": "3.0.0-3090920231225001",
+ "@dcloudio/uni-nvue-styler": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@jridgewell/gen-mapping": "^0.3.3",
+ "@jridgewell/trace-mapping": "^0.3.19",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "debug": "^4.3.3",
+ "es-module-lexer": "^1.2.1",
+ "estree-walker": "^2.0.2",
+ "fs-extra": "^10.0.0",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2",
+ "unplugin-auto-import": "^0.16.7"
+ }
+ },
+ "node_modules/@dcloudio/uni-app-vite": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-app-vite/-/uni-app-vite-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-MkmI3qzsGYrT787lRMyhb/DdIF9mE/BbhrExwM/RBshnVzl6rjQIKx5lIG94t58WIaP7Jcl/pJw+IPAe1FTQyQ==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-i18n": "3.0.0-3090920231225001",
+ "@dcloudio/uni-nvue-styler": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vitejs/plugin-vue": "^4.2.1",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "debug": "^4.3.3",
+ "fs-extra": "^10.0.0",
+ "picocolors": "^1.0.0"
+ }
+ },
+ "node_modules/@dcloudio/uni-app-vue": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-app-vue/-/uni-app-vue-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-D7I4jGSnpBihSXXeckRSD152Da2N2vKDtGF1sbNe2m1R04W36AkVUtzFGpSOml4MNIedCGtzGWXKaX7rIU+mFA=="
+ },
+ "node_modules/@dcloudio/uni-automator": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-automator/-/uni-automator-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-6PKcEJK6VAARpEtsFUypFEu6DeAminijHJb63x6oK1lIt0VlJFGjXuCTBbFQTf6uLFSsUGMV4wcCmh2NswXxmg==",
+ "dev": true,
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "address": "^1.1.2",
+ "cross-env": "^7.0.3",
+ "debug": "^4.3.3",
+ "default-gateway": "^6.0.3",
+ "fs-extra": "^10.0.0",
+ "jsonc-parser": "^3.2.0",
+ "licia": "^1.29.0",
+ "merge": "^2.1.1",
+ "qrcode-reader": "^1.0.4",
+ "qrcode-terminal": "^0.12.0",
+ "ws": "^8.4.2"
+ },
+ "peerDependencies": {
+ "jest": "27.0.4",
+ "jest-environment-node": "27.5.1"
+ }
+ },
+ "node_modules/@dcloudio/uni-cli-shared": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-cli-shared/-/uni-cli-shared-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-6Pt2nCRI57OwIoqBNctPTQ05oJPTZGlocylmrbpUy8Q5Z2eyQNlnA/jTm9L5tM6nnfJKzBE/yOBMOgJDsVWNYw==",
+ "dependencies": {
+ "@ampproject/remapping": "^2.1.2",
+ "@babel/core": "^7.21.3",
+ "@babel/parser": "^7.16.4",
+ "@babel/types": "^7.20.7",
+ "@dcloudio/uni-i18n": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@intlify/core-base": "9.1.9",
+ "@intlify/shared": "9.1.9",
+ "@intlify/vue-devtools": "9.1.9",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "autoprefixer": "^10.4.14",
+ "base64url": "^3.0.1",
+ "chokidar": "^3.5.3",
+ "compare-versions": "^3.6.0",
+ "debug": "^4.3.3",
+ "es-module-lexer": "^1.2.1",
+ "esbuild": "^0.17.5",
+ "estree-walker": "^2.0.2",
+ "fast-glob": "^3.2.11",
+ "fs-extra": "^10.0.0",
+ "hash-sum": "^2.0.0",
+ "jsonc-parser": "^3.0.0",
+ "magic-string": "^0.30.0",
+ "merge": "^2.1.1",
+ "mime": "^3.0.0",
+ "module-alias": "^2.2.2",
+ "os-locale-s-fix": "^1.0.8-fix-1",
+ "picocolors": "^1.0.0",
+ "postcss-import": "^14.0.2",
+ "postcss-load-config": "^3.1.1",
+ "postcss-modules": "^4.3.0",
+ "postcss-selector-parser": "^6.0.6",
+ "resolve": "^1.22.1",
+ "tapable": "^2.2.0",
+ "xregexp": "3.1.0"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@dcloudio/uni-cloud": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-cloud/-/uni-cloud-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-+k8cnrQZlBYbY01Li9rR5PBcxxvn/i8sHpj+i3rbzJioks4nneR64ZP14Zisu07v5VwLcjuZNdI8Ato7KZjyUA==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-i18n": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/shared": "3.2.47",
+ "fast-glob": "^3.2.11"
+ }
+ },
+ "node_modules/@dcloudio/uni-components": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-components/-/uni-components-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-fyqPOzmEjgfhwrElZH+yTBjqbCzefgZTkbZrgPaQkvXRT8sJpsTpcjF8wNPLo0dB+9XppkNAJDy+c9EkDJGeKQ==",
+ "dependencies": {
+ "@dcloudio/uni-cloud": "3.0.0-3090920231225001",
+ "@dcloudio/uni-h5": "3.0.0-3090920231225001",
+ "@dcloudio/uni-i18n": "3.0.0-3090920231225001"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-h5/-/uni-h5-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-q3YR+wESXb9JdFOJdoX8I7ER2TTOvY23fHFMMq1wZW49WLufMMu/BKM7FUeHtX9uteqMIVJDrzrjknwLgNUJiw==",
+ "dependencies": {
+ "@dcloudio/uni-h5-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-h5-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-i18n": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "debug": "^4.3.3",
+ "localstorage-polyfill": "^1.0.1",
+ "postcss-selector-parser": "^6.0.6",
+ "safe-area-insets": "^1.4.1",
+ "vue-router": "^4.1.6",
+ "xmlhttprequest": "^1.8.0"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vite": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-h5-vite/-/uni-h5-vite-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-gyhFfI77gL2saPef0+3nQ9+mi//Vk/N7PeZCSxq6oRpHIUE3TkpB3xvQrPkciJPG8ivHX5BGcqcOdZt36qgBtA==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "debug": "^4.3.3",
+ "fs-extra": "^10.0.0",
+ "mime": "^3.0.0",
+ "module-alias": "^2.2.2"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vue": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-h5-vue/-/uni-h5-vue-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-v19rnmf+V+2G07ABjViyaLqDcVJReBVuAb0xuSzNiLIezQ3GRFJAf4XEjbk56BrrRfdDRaNJ+6lrWP5j1KI8nw==",
+ "dependencies": {
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/server-renderer": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-i18n": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-i18n/-/uni-i18n-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-GUiyXxeLvunToD2LC1FybqtrLw/cbKmtO/Q3mwue0rEurhaTrabiVoOntP4n1t4QMaL+dFsex06cRbZgafqlIw=="
+ },
+ "node_modules/@dcloudio/uni-mp-alipay": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-alipay/-/uni-mp-alipay-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-zHcwqmFi9NtzW3cW9kAAjdfTbJ1YPrE8LKAbjHyp5XiytSRcTiuSqipBs4HgtVBijur8FPxrZtIYcGIQZQskBw==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-baidu": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-baidu/-/uni-mp-baidu-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-zhS+I+KL7ecmni2lwy6KL5gpCqPQ/7gygkqBqdNIOq9eDB7c4rlPF6w+j7WmeBWeZPZpccYaQnsn9W7swpnmRA==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "jimp": "^0.10.1",
+ "licia": "^1.29.0",
+ "qrcode-reader": "^1.0.4",
+ "qrcode-terminal": "^0.12.0",
+ "ws": "^8.4.2"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-compiler": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-compiler/-/uni-mp-compiler-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-q9pgXG1gtN9VMaEQj4jlmHBkKAwFsKTCsZu4FsH4kpFoQoSgdEFH8VAHTWKA9reaUVLJGInO0Nsd+t9rZJi3EA==",
+ "dependencies": {
+ "@babel/generator": "^7.20.5",
+ "@babel/parser": "^7.16.4",
+ "@babel/types": "^7.20.7",
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "estree-walker": "^2.0.2"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-jd": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-jd/-/uni-mp-jd-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-n+zDI+dRyVgSnp8vcLnflxs7usMEy/sfx2FWB77XswPHiMOi8Wz7SK/CQln/ScKD0pRWDPiXcLh4WXS1u3H0Hg==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-kuaishou": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-kuaishou/-/uni-mp-kuaishou-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-Z3VFtDNDUEGkHOs5hzB+HiOuJWxGsLh6jQYlGLwXFNmWJFYWGaEBsAA+NztWOB4fRB2JeYSoTu78Al3MWFRwzQ==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-lark": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-lark/-/uni-mp-lark-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-LuXWe7vf2fncf1Hj0PpxKYCRWYwqhcz3kKkauNa9nVNjEwiD83UthW5oDxVWMCklIFjKw91mhe+zqq2Oc8bl1w==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-toutiao": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-qq": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-qq/-/uni-mp-qq-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-f114i9LhYxfgHUFpSKcOHWL5ZqOttwbzNeK7vMRaqUSWX8VKxzXhqJ5OOKB2HeKyMZGJ50wxvyYNYiR01dBg+A==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/shared": "3.2.47",
+ "fs-extra": "^10.0.0"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-toutiao": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-toutiao/-/uni-mp-toutiao-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-g6fpZeUS2mBDIalhQEKXnkMAKUP+xGz4poJrjABMRu6L2ayXjOCYHFC0uZEIoagcD5zb3UN4ZrPaQvFtcErqRA==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-vite": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-vite/-/uni-mp-vite-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-kcw5gPzIjMonakkT1PJtBwfr3PA6YKNxB+hJw2+gEnUFHCAVASXAOO1i7AmtWSqJsRI2FigIDDw1rjeMwY/BHg==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-i18n": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "debug": "^4.3.3"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-vue": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-vue/-/uni-mp-vue-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-oSlZ9lynhc6f8q7GRQMecZIzUrxnh0pIByDS9zOaYyXfT8oemA7ai2FSpX+McpSQ43VhJfPHzeJbeK2V7F0Csg==",
+ "dependencies": {
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-weixin": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-weixin/-/uni-mp-weixin-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-XV43ox/P19pTjvjXrDeIrjmbH8VUeV/iUm7ufK77gCwSAEff2yZOd/FlmikQncQItJP1M7Sxv8DnilEbPeLoBA==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/shared": "3.2.47",
+ "jimp": "^0.10.1",
+ "licia": "^1.29.0",
+ "qrcode-reader": "^1.0.4",
+ "qrcode-terminal": "^0.12.0",
+ "ws": "^8.4.2"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-xhs": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-xhs/-/uni-mp-xhs-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-pY/OCLGNLChmTShAG41sb0AGxqJCqsioNu4fIEKcC2dj8JFOUdcFBYS7ZvhrVrVYCErM0H3GcmLla0cJZfUCjQ==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-nvue-styler": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-nvue-styler/-/uni-nvue-styler-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-rUO12CpVcMV1pMof7w9cs6FpCKuLPhA3fU7Tfl19XVJXv0IY//rX2aucZW0kOpw45RVJyAHbPBFuQKz7kEiGlA==",
+ "dependencies": {
+ "@vue/shared": "3.2.47",
+ "parse-css-font": "^4.0.0",
+ "postcss": "^8.4.23"
+ }
+ },
+ "node_modules/@dcloudio/uni-push": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-push/-/uni-push-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-aqUWb1DeF9y9en3fx03eQTZzKLjUCvakJZtmQQFbj69lV2Zh/v/EWKWkF0iOOezPGBTHXJvVDQMWGkdj1ez19Q==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001"
+ }
+ },
+ "node_modules/@dcloudio/uni-quickapp-webview": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-quickapp-webview/-/uni-quickapp-webview-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-sFKH4WboIKvkVNEmxkhLvzE/Wya5YwFXdL/AoM8rxQO7DXP+eNOtMhapWz2NEKXN8XGM3WIVTjwyMINgg5+Ctw==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-shared": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-shared/-/uni-shared-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-OXx/KBMuxAGayThVNshnZ17qZJrxjcdFeGwWJrDeTHmCpg+/Yr5yK+ubCQjN2kc4jttwq2fIkqqNs2xe4QFlSQ==",
+ "dependencies": {
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-stacktracey": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-stacktracey/-/uni-stacktracey-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-UN0qPDt6uTo2M9HxD4WgJHJIrCWLpUkseBOoOseZ2QVqfFCTQvLcH3ZVr7fx4gkoc5FDCp1YI2uiiS2AnjqZtA==",
+ "dev": true
+ },
+ "node_modules/@dcloudio/uni-stat": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-stat/-/uni-stat-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-gac3rONnRtLCSTXn2QhnwjsZJTfVA8uHRFyp5Uf03rQbu82MuNVOzi7p7Q3Y/0uiCHSldZ47hhmwbqtb/qdKOQ==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "debug": "^4.3.3"
+ }
+ },
+ "node_modules/@dcloudio/vite-plugin-uni": {
+ "version": "3.0.0-3090920231225001",
+ "resolved": "https://registry.npmjs.org/@dcloudio/vite-plugin-uni/-/vite-plugin-uni-3.0.0-3090920231225001.tgz",
+ "integrity": "sha512-kV/J7yl5ojsd1NZZ1eMziRDrz+MPbjDMm6rWG3fyW1u8Kzj06jUzzi7HRlkaWiPJHAmeRWGDf/6RFoSd+8fYCg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.21.3",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-transform-typescript": "^7.20.7",
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-shared": "3.0.0-3090920231225001",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vitejs/plugin-legacy": "^4.0.3",
+ "@vitejs/plugin-vue": "^4.2.1",
+ "@vitejs/plugin-vue-jsx": "^3.0.1",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "cac": "6.7.9",
+ "debug": "^4.3.3",
+ "estree-walker": "^2.0.2",
+ "express": "^4.17.1",
+ "fast-glob": "^3.2.11",
+ "fs-extra": "^10.0.0",
+ "hash-sum": "^2.0.0",
+ "jsonc-parser": "^3.0.0",
+ "magic-string": "^0.30.0",
+ "picocolors": "^1.0.0",
+ "terser": "^5.4.0",
+ "unplugin-auto-import": "^0.16.7"
+ },
+ "bin": {
+ "uni": "bin/uni.js"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.0.0"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz",
+ "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz",
+ "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz",
+ "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz",
+ "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz",
+ "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz",
+ "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz",
+ "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz",
+ "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz",
+ "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz",
+ "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz",
+ "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz",
+ "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==",
+ "cpu": [
+ "mips64el"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz",
+ "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz",
+ "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz",
+ "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz",
+ "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz",
+ "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz",
+ "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz",
+ "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz",
+ "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz",
+ "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz",
+ "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@intlify/core-base": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.1.9.tgz",
+ "integrity": "sha512-x5T0p/Ja0S8hs5xs+ImKyYckVkL4CzcEXykVYYV6rcbXxJTe2o58IquSqX9bdncVKbRZP7GlBU1EcRaQEEJ+vw==",
+ "dependencies": {
+ "@intlify/devtools-if": "9.1.9",
+ "@intlify/message-compiler": "9.1.9",
+ "@intlify/message-resolver": "9.1.9",
+ "@intlify/runtime": "9.1.9",
+ "@intlify/shared": "9.1.9",
+ "@intlify/vue-devtools": "9.1.9"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@intlify/devtools-if": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.1.9.tgz",
+ "integrity": "sha512-oKSMKjttG3Ut/1UGEZjSdghuP3fwA15zpDPcjkf/1FjlOIm6uIBGMNS5jXzsZy593u+P/YcnrZD6cD3IVFz9vQ==",
+ "dependencies": {
+ "@intlify/shared": "9.1.9"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@intlify/message-compiler": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.1.9.tgz",
+ "integrity": "sha512-6YgCMF46Xd0IH2hMRLCssZI3gFG4aywidoWQ3QP4RGYQXQYYfFC54DxhSgfIPpVoPLQ+4AD29eoYmhiHZ+qLFQ==",
+ "dependencies": {
+ "@intlify/message-resolver": "9.1.9",
+ "@intlify/shared": "9.1.9",
+ "source-map": "0.6.1"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@intlify/message-resolver": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/message-resolver/-/message-resolver-9.1.9.tgz",
+ "integrity": "sha512-Lx/DBpigeK0sz2BBbzv5mu9/dAlt98HxwbG7xLawC3O2xMF9MNWU5FtOziwYG6TDIjNq0O/3ZbOJAxwITIWXEA==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@intlify/runtime": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/runtime/-/runtime-9.1.9.tgz",
+ "integrity": "sha512-XgPw8+UlHCiie3fI41HPVa/VDJb3/aSH7bLhY1hJvlvNV713PFtb4p4Jo+rlE0gAoMsMCGcsiT982fImolSltg==",
+ "dependencies": {
+ "@intlify/message-compiler": "9.1.9",
+ "@intlify/message-resolver": "9.1.9",
+ "@intlify/shared": "9.1.9"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@intlify/shared": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.1.9.tgz",
+ "integrity": "sha512-xKGM1d0EAxdDFCWedcYXOm6V5Pfw/TMudd6/qCdEb4tv0hk9EKeg7lwQF1azE0dP2phvx0yXxrt7UQK+IZjNdw==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@intlify/vue-devtools": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.1.9.tgz",
+ "integrity": "sha512-YPehH9uL4vZcGXky4Ev5qQIITnHKIvsD2GKGXgqf+05osMUI6WSEQHaN9USRa318Rs8RyyPCiDfmA0hRu3k7og==",
+ "dependencies": {
+ "@intlify/message-resolver": "9.1.9",
+ "@intlify/runtime": "9.1.9",
+ "@intlify/shared": "9.1.9"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
+ "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "camelcase": "^5.3.1",
+ "find-up": "^4.1.0",
+ "get-package-type": "^0.1.0",
+ "js-yaml": "^3.13.1",
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@istanbuljs/schema": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/console": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz",
+ "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "jest-message-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/console/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@jest/console/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@jest/console/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/console/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@jest/console/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/console/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/core": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz",
+ "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/console": "^27.5.1",
+ "@jest/reporters": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "emittery": "^0.8.1",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.9",
+ "jest-changed-files": "^27.5.1",
+ "jest-config": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-resolve-dependencies": "^27.5.1",
+ "jest-runner": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "jest-watcher": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "rimraf": "^3.0.0",
+ "slash": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@jest/core/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@jest/core/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@jest/core/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/core/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@jest/core/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/core/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/environment": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz",
+ "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/fake-timers": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz",
+ "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@sinonjs/fake-timers": "^8.0.1",
+ "@types/node": "*",
+ "jest-message-util": "^27.5.1",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/globals": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz",
+ "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "expect": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/reporters": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz",
+ "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@bcoe/v8-coverage": "^0.2.3",
+ "@jest/console": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "collect-v8-coverage": "^1.0.0",
+ "exit": "^0.1.2",
+ "glob": "^7.1.2",
+ "graceful-fs": "^4.2.9",
+ "istanbul-lib-coverage": "^3.0.0",
+ "istanbul-lib-instrument": "^5.1.0",
+ "istanbul-lib-report": "^3.0.0",
+ "istanbul-lib-source-maps": "^4.0.0",
+ "istanbul-reports": "^3.1.3",
+ "jest-haste-map": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-worker": "^27.5.1",
+ "slash": "^3.0.0",
+ "source-map": "^0.6.0",
+ "string-length": "^4.0.1",
+ "terminal-link": "^2.0.0",
+ "v8-to-istanbul": "^8.1.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@jest/reporters/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/source-map": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz",
+ "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "callsites": "^3.0.0",
+ "graceful-fs": "^4.2.9",
+ "source-map": "^0.6.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/test-result": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz",
+ "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/console": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "collect-v8-coverage": "^1.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/test-sequencer": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz",
+ "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/test-result": "^27.5.1",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-runtime": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/transform": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz",
+ "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/core": "^7.1.0",
+ "@jest/types": "^27.5.1",
+ "babel-plugin-istanbul": "^6.1.1",
+ "chalk": "^4.0.0",
+ "convert-source-map": "^1.4.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "pirates": "^4.0.4",
+ "slash": "^3.0.0",
+ "source-map": "^0.6.1",
+ "write-file-atomic": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@jest/transform/node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@jest/transform/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/types/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@jest/types/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@jest/types/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/types/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@jest/types/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/types/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jimp/bmp": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.10.3.tgz",
+ "integrity": "sha512-keMOc5woiDmONXsB/6aXLR4Z5Q+v8lFq3EY2rcj2FmstbDMhRuGbmcBxlEgOqfRjwvtf/wOtJ3Of37oAWtVfLg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "bmp-js": "^0.1.0",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/core": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.10.3.tgz",
+ "integrity": "sha512-Gd5IpL3U2bFIO57Fh/OA3HCpWm4uW/pU01E75rI03BXfTdz3T+J7TwvyG1XaqsQ7/DSlS99GXtLQPlfFIe28UA==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "any-base": "^1.1.0",
+ "buffer": "^5.2.0",
+ "core-js": "^3.4.1",
+ "exif-parser": "^0.1.12",
+ "file-type": "^9.0.0",
+ "load-bmfont": "^1.3.1",
+ "mkdirp": "^0.5.1",
+ "phin": "^2.9.1",
+ "pixelmatch": "^4.0.2",
+ "tinycolor2": "^1.4.1"
+ }
+ },
+ "node_modules/@jimp/custom": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.10.3.tgz",
+ "integrity": "sha512-nZmSI+jwTi5IRyNLbKSXQovoeqsw+D0Jn0SxW08wYQvdkiWA8bTlDQFgQ7HVwCAKBm8oKkDB/ZEo9qvHJ+1gAQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/core": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "node_modules/@jimp/gif": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.10.3.tgz",
+ "integrity": "sha512-vjlRodSfz1CrUvvrnUuD/DsLK1GHB/yDZXHthVdZu23zYJIW7/WrIiD1IgQ5wOMV7NocfrvPn2iqUfBP81/WWA==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "omggif": "^1.0.9"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/jpeg": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.10.3.tgz",
+ "integrity": "sha512-AAANwgUZOt6f6P7LZxY9lyJ9xclqutYJlsxt3JbriXUGJgrrFAIkcKcqv1nObgmQASSAQKYaMV9KdHjMlWFKlQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "jpeg-js": "^0.3.4"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-blit": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.10.3.tgz",
+ "integrity": "sha512-5zlKlCfx4JWw9qUVC7GI4DzXyxDWyFvgZLaoGFoT00mlXlN75SarlDwc9iZ/2e2kp4bJWxz3cGgG4G/WXrbg3Q==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-blur": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.10.3.tgz",
+ "integrity": "sha512-cTOK3rjh1Yjh23jSfA6EHCHjsPJDEGLC8K2y9gM7dnTUK1y9NNmkFS23uHpyjgsWFIoH9oRh2SpEs3INjCpZhQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-circle": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.10.3.tgz",
+ "integrity": "sha512-51GAPIVelqAcfuUpaM5JWJ0iWl4vEjNXB7p4P7SX5udugK5bxXUjO6KA2qgWmdpHuCKtoNgkzWU9fNSuYp7tCA==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-color": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.10.3.tgz",
+ "integrity": "sha512-RgeHUElmlTH7vpI4WyQrz6u59spiKfVQbsG/XUzfWGamFSixa24ZDwX/yV/Ts+eNaz7pZeIuv533qmKPvw2ujg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "tinycolor2": "^1.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-contain": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.10.3.tgz",
+ "integrity": "sha512-bYJKW9dqzcB0Ihc6u7jSyKa3juStzbLs2LFr6fu8TzA2WkMS/R8h+ddkiO36+F9ILTWHP0CIA3HFe5OdOGcigw==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-blit": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5",
+ "@jimp/plugin-scale": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-cover": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.10.3.tgz",
+ "integrity": "sha512-pOxu0cM0BRPzdV468n4dMocJXoMbTnARDY/EpC3ZW15SpMuc/dr1KhWQHgoQX5kVW1Wt8zgqREAJJCQ5KuPKDA==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-crop": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5",
+ "@jimp/plugin-scale": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-crop": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.10.3.tgz",
+ "integrity": "sha512-nB7HgOjjl9PgdHr076xZ3Sr6qHYzeBYBs9qvs3tfEEUeYMNnvzgCCGtUl6eMakazZFCMk3mhKmcB9zQuHFOvkg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-displace": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.10.3.tgz",
+ "integrity": "sha512-8t3fVKCH5IVqI4lewe4lFFjpxxr69SQCz5/tlpDLQZsrNScNJivHdQ09zljTrVTCSgeCqQJIKgH2Q7Sk/pAZ0w==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-dither": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.10.3.tgz",
+ "integrity": "sha512-JCX/oNSnEg1kGQ8ffZ66bEgQOLCY3Rn+lrd6v1jjLy/mn9YVZTMsxLtGCXpiCDC2wG/KTmi4862ysmP9do9dAQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-fisheye": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.10.3.tgz",
+ "integrity": "sha512-RRZb1wqe+xdocGcFtj2xHU7sF7xmEZmIa6BmrfSchjyA2b32TGPWKnP3qyj7p6LWEsXn+19hRYbjfyzyebPElQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-flip": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.10.3.tgz",
+ "integrity": "sha512-0epbi8XEzp0wmSjoW9IB0iMu0yNF17aZOxLdURCN3Zr+8nWPs5VNIMqSVa1Y62GSyiMDpVpKF/ITiXre+EqrPg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-rotate": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-gaussian": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.10.3.tgz",
+ "integrity": "sha512-25eHlFbHUDnMMGpgRBBeQ2AMI4wsqCg46sue0KklI+c2BaZ+dGXmJA5uT8RTOrt64/K9Wz5E+2n7eBnny4dfpQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-invert": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.10.3.tgz",
+ "integrity": "sha512-effYSApWY/FbtlzqsKXlTLkgloKUiHBKjkQnqh5RL4oQxh/33j6aX+HFdDyQKtsXb8CMd4xd7wyiD2YYabTa0g==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-mask": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.10.3.tgz",
+ "integrity": "sha512-twrg8q8TIhM9Z6Jcu9/5f+OCAPaECb0eKrrbbIajJqJ3bCUlj5zbfgIhiQIzjPJ6KjpnFPSqHQfHkU1Vvk/nVw==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-normalize": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.10.3.tgz",
+ "integrity": "sha512-xkb5eZI/mMlbwKkDN79+1/t/+DBo8bBXZUMsT4gkFgMRKNRZ6NQPxlv1d3QpRzlocsl6UMxrHnhgnXdLAcgrXw==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-print": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.10.3.tgz",
+ "integrity": "sha512-wjRiI6yjXsAgMe6kVjizP+RgleUCLkH256dskjoNvJzmzbEfO7xQw9g6M02VET+emnbY0CO83IkrGm2q43VRyg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "load-bmfont": "^1.4.0"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-blit": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-resize": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.10.3.tgz",
+ "integrity": "sha512-rf8YmEB1d7Sg+g4LpqF0Mp+dfXfb6JFJkwlAIWPUOR7lGsPWALavEwTW91c0etEdnp0+JB9AFpy6zqq7Lwkq6w==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-rotate": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.10.3.tgz",
+ "integrity": "sha512-YXLlRjm18fkW9MOHUaVAxWjvgZM851ofOipytz5FyKp4KZWDLk+dZK1JNmVmK7MyVmAzZ5jsgSLhIgj+GgN0Eg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-blit": ">=0.3.5",
+ "@jimp/plugin-crop": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-scale": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.10.3.tgz",
+ "integrity": "sha512-5DXD7x7WVcX1gUgnlFXQa8F+Q3ThRYwJm+aesgrYvDOY+xzRoRSdQvhmdd4JEEue3lyX44DvBSgCIHPtGcEPaw==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-shadow": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.10.3.tgz",
+ "integrity": "sha512-/nkFXpt2zVcdP4ETdkAUL0fSzyrC5ZFxdcphbYBodqD7fXNqChS/Un1eD4xCXWEpW8cnG9dixZgQgStjywH0Mg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-blur": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-threshold": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.10.3.tgz",
+ "integrity": "sha512-Dzh0Yq2wXP2SOnxcbbiyA4LJ2luwrdf1MghNIt9H+NX7B+IWw/N8qA2GuSm9n4BPGSLluuhdAWJqHcTiREriVA==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-color": ">=0.8.0",
+ "@jimp/plugin-resize": ">=0.8.0"
+ }
+ },
+ "node_modules/@jimp/plugins": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.10.3.tgz",
+ "integrity": "sha512-jTT3/7hOScf0EIKiAXmxwayHhryhc1wWuIe3FrchjDjr9wgIGNN2a7XwCgPl3fML17DXK1x8EzDneCdh261bkw==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/plugin-blit": "^0.10.3",
+ "@jimp/plugin-blur": "^0.10.3",
+ "@jimp/plugin-circle": "^0.10.3",
+ "@jimp/plugin-color": "^0.10.3",
+ "@jimp/plugin-contain": "^0.10.3",
+ "@jimp/plugin-cover": "^0.10.3",
+ "@jimp/plugin-crop": "^0.10.3",
+ "@jimp/plugin-displace": "^0.10.3",
+ "@jimp/plugin-dither": "^0.10.3",
+ "@jimp/plugin-fisheye": "^0.10.3",
+ "@jimp/plugin-flip": "^0.10.3",
+ "@jimp/plugin-gaussian": "^0.10.3",
+ "@jimp/plugin-invert": "^0.10.3",
+ "@jimp/plugin-mask": "^0.10.3",
+ "@jimp/plugin-normalize": "^0.10.3",
+ "@jimp/plugin-print": "^0.10.3",
+ "@jimp/plugin-resize": "^0.10.3",
+ "@jimp/plugin-rotate": "^0.10.3",
+ "@jimp/plugin-scale": "^0.10.3",
+ "@jimp/plugin-shadow": "^0.10.3",
+ "@jimp/plugin-threshold": "^0.10.3",
+ "core-js": "^3.4.1",
+ "timm": "^1.6.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/png": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.10.3.tgz",
+ "integrity": "sha512-YKqk/dkl+nGZxSYIDQrqhmaP8tC3IK8H7dFPnnzFVvbhDnyYunqBZZO3SaZUKTichClRw8k/CjBhbc+hifSGWg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "pngjs": "^3.3.3"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/tiff": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.10.3.tgz",
+ "integrity": "sha512-7EsJzZ5Y/EtinkBGuwX3Bi4S+zgbKouxjt9c82VJTRJOQgLWsE/RHqcyRCOQBhHAZ9QexYmDz34medfLKdoX0g==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "core-js": "^3.4.1",
+ "utif": "^2.0.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/types": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.10.3.tgz",
+ "integrity": "sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/bmp": "^0.10.3",
+ "@jimp/gif": "^0.10.3",
+ "@jimp/jpeg": "^0.10.3",
+ "@jimp/png": "^0.10.3",
+ "@jimp/tiff": "^0.10.3",
+ "core-js": "^3.4.1",
+ "timm": "^1.6.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/utils": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.10.3.tgz",
+ "integrity": "sha512-VcSlQhkil4ReYmg1KkN+WqHyYfZ2XfZxDsKAHSfST1GEz/RQHxKZbX+KhFKtKflnL0F4e6DlNQj3vznMNXCR2w==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "core-js": "^3.4.1",
+ "regenerator-runtime": "^0.13.3"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+ "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
+ "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz",
+ "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==",
+ "devOptional": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.22",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz",
+ "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+ "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+ "dependencies": {
+ "estree-walker": "^2.0.1",
+ "picomatch": "^2.2.2"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
+ "node_modules/@sinonjs/commons": {
+ "version": "1.8.6",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz",
+ "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "type-detect": "4.0.8"
+ }
+ },
+ "node_modules/@sinonjs/fake-timers": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
+ "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@sinonjs/commons": "^1.7.0"
+ }
+ },
+ "node_modules/@tootallnate/once": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
+ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@types/babel__core": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
+ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "node_modules/@types/babel__generator": {
+ "version": "7.6.8",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
+ "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__template": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
+ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__traverse": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz",
+ "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/types": "^7.20.7"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
+ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
+ },
+ "node_modules/@types/graceful-fs": {
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz",
+ "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/istanbul-lib-coverage": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
+ "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@types/istanbul-lib-report": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
+ "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "*"
+ }
+ },
+ "node_modules/@types/istanbul-reports": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
+ "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "20.11.16",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz",
+ "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@types/prettier": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz",
+ "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@types/stack-utils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz",
+ "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@types/yargs-parser": {
+ "version": "21.0.3",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
+ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@vitejs/plugin-legacy": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-4.1.1.tgz",
+ "integrity": "sha512-um3gbVouD2Q/g19C0qpDfHwveXDCAHzs8OC3e9g6aXpKoD1H14himgs7wkMnhAynBJy7QqUoZNAXDuqN8zLR2g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.22.9",
+ "@babel/preset-env": "^7.22.9",
+ "browserslist": "^4.21.9",
+ "core-js": "^3.31.1",
+ "magic-string": "^0.30.1",
+ "regenerator-runtime": "^0.13.11",
+ "systemjs": "^6.14.1"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "peerDependencies": {
+ "terser": "^5.4.0",
+ "vite": "^4.0.0"
+ }
+ },
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz",
+ "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==",
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.0.0 || ^5.0.0",
+ "vue": "^3.2.25"
+ }
+ },
+ "node_modules/@vitejs/plugin-vue-jsx": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.1.0.tgz",
+ "integrity": "sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.23.3",
+ "@babel/plugin-transform-typescript": "^7.23.3",
+ "@vue/babel-plugin-jsx": "^1.1.5"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.0.0 || ^5.0.0",
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/@vue/babel-helper-vue-transform-on": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.1.tgz",
+ "integrity": "sha512-jtEXim+pfyHWwvheYwUwSXm43KwQo8nhOBDyjrUITV6X2tB7lJm6n/+4sqR8137UVZZul5hBzWHdZ2uStYpyRQ==",
+ "dev": true
+ },
+ "node_modules/@vue/babel-plugin-jsx": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.1.tgz",
+ "integrity": "sha512-Yy9qGktktXhB39QE99So/BO2Uwm/ZG+gpL9vMg51ijRRbINvgbuhyJEi4WYmGRMx/MSTfK0xjgZ3/MyY+iLCEg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-jsx": "^7.23.3",
+ "@babel/template": "^7.22.15",
+ "@babel/traverse": "^7.23.7",
+ "@babel/types": "^7.23.6",
+ "@vue/babel-helper-vue-transform-on": "1.2.1",
+ "@vue/babel-plugin-resolve-type": "1.2.1",
+ "camelcase": "^6.3.0",
+ "html-tags": "^3.3.1",
+ "svg-tags": "^1.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.1.tgz",
+ "integrity": "sha512-IOtnI7pHunUzHS/y+EG/yPABIAp0VN8QhQ0UCS09jeMVxgAnI9qdOzO85RXdQGxq+aWCdv8/+k3W0aYO6j/8fQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.23.5",
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/parser": "^7.23.6",
+ "@vue/compiler-sfc": "^3.4.15"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-core": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.15.tgz",
+ "integrity": "sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.23.6",
+ "@vue/shared": "3.4.15",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-dom": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.15.tgz",
+ "integrity": "sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==",
+ "dev": true,
+ "dependencies": {
+ "@vue/compiler-core": "3.4.15",
+ "@vue/shared": "3.4.15"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-sfc": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.15.tgz",
+ "integrity": "sha512-LCn5M6QpkpFsh3GQvs2mJUOAlBQcCco8D60Bcqmf3O3w5a+KWS5GvYbrrJBkgvL1BDnTp+e8q0lXCLgHhKguBA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.23.6",
+ "@vue/compiler-core": "3.4.15",
+ "@vue/compiler-dom": "3.4.15",
+ "@vue/compiler-ssr": "3.4.15",
+ "@vue/shared": "3.4.15",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.5",
+ "postcss": "^8.4.33",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-ssr": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.15.tgz",
+ "integrity": "sha512-1jdeQyiGznr8gjFDadVmOJqZiLNSsMa5ZgqavkPZ8O2wjHv0tVuAEsw5hTdUoUW4232vpBbL/wJhzVW/JwY1Uw==",
+ "dev": true,
+ "dependencies": {
+ "@vue/compiler-dom": "3.4.15",
+ "@vue/shared": "3.4.15"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/shared": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.15.tgz",
+ "integrity": "sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==",
+ "dev": true
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.47.tgz",
+ "integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/shared": "3.2.47",
+ "estree-walker": "^2.0.2",
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz",
+ "integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==",
+ "dependencies": {
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz",
+ "integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-ssr": "3.2.47",
+ "@vue/reactivity-transform": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7",
+ "postcss": "^8.1.10",
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/@vue/compiler-sfc/node_modules/magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz",
+ "integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@vue/devtools-api": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz",
+ "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA=="
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.15.tgz",
+ "integrity": "sha512-55yJh2bsff20K5O84MxSvXKPHHt17I2EomHznvFiJCAZpJTNW8IuLj1xZWMLELRhBK3kkFV/1ErZGHJfah7i7w==",
+ "dev": true,
+ "dependencies": {
+ "@vue/shared": "3.4.15"
+ }
+ },
+ "node_modules/@vue/reactivity-transform": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz",
+ "integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7"
+ }
+ },
+ "node_modules/@vue/reactivity-transform/node_modules/magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "node_modules/@vue/reactivity/node_modules/@vue/shared": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.15.tgz",
+ "integrity": "sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==",
+ "dev": true
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.15.tgz",
+ "integrity": "sha512-6E3by5m6v1AkW0McCeAyhHTw+3y17YCOKG0U0HDKDscV4Hs0kgNT5G+GCHak16jKgcCDHpI9xe5NKb8sdLCLdw==",
+ "dev": true,
+ "dependencies": {
+ "@vue/reactivity": "3.4.15",
+ "@vue/shared": "3.4.15"
+ }
+ },
+ "node_modules/@vue/runtime-core/node_modules/@vue/shared": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.15.tgz",
+ "integrity": "sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==",
+ "dev": true
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz",
+ "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==",
+ "dependencies": {
+ "@vue/runtime-core": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "csstype": "^2.6.8"
+ }
+ },
+ "node_modules/@vue/runtime-dom/node_modules/@vue/reactivity": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.47.tgz",
+ "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==",
+ "dependencies": {
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@vue/runtime-dom/node_modules/@vue/runtime-core": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.47.tgz",
+ "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==",
+ "dependencies": {
+ "@vue/reactivity": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.47.tgz",
+ "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.2.47",
+ "@vue/shared": "3.2.47"
+ },
+ "peerDependencies": {
+ "vue": "3.2.47"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz",
+ "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ=="
+ },
+ "node_modules/abab": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
+ "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
+ "deprecated": "Use your platform's native atob() and btoa() methods instead",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dev": true,
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.11.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
+ "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-globals": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
+ "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "acorn": "^7.1.1",
+ "acorn-walk": "^7.1.1"
+ }
+ },
+ "node_modules/acorn-globals/node_modules/acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true,
+ "peer": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-walk": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
+ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/address": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz",
+ "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/ansi-escapes": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "type-fest": "^0.21.3"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/any-base": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz",
+ "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg=="
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "dev": true
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "dev": true
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.4.17",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz",
+ "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "browserslist": "^4.22.2",
+ "caniuse-lite": "^1.0.30001578",
+ "fraction.js": "^4.3.7",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/axios": {
+ "version": "1.6.7",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz",
+ "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==",
+ "dev": true,
+ "dependencies": {
+ "follow-redirects": "^1.15.4",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/axios/node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dev": true,
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/babel-jest": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz",
+ "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/babel__core": "^7.1.14",
+ "babel-plugin-istanbul": "^6.1.1",
+ "babel-preset-jest": "^27.5.1",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.8.0"
+ }
+ },
+ "node_modules/babel-jest/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/babel-jest/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/babel-jest/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/babel-jest/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/babel-jest/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-jest/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-plugin-istanbul": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
+ "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@istanbuljs/load-nyc-config": "^1.0.0",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-instrument": "^5.0.4",
+ "test-exclude": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-plugin-jest-hoist": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz",
+ "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/template": "^7.3.3",
+ "@babel/types": "^7.3.3",
+ "@types/babel__core": "^7.0.0",
+ "@types/babel__traverse": "^7.0.6"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs2": {
+ "version": "0.4.8",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz",
+ "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-define-polyfill-provider": "^0.5.0",
+ "semver": "^6.3.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs3": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz",
+ "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.5.0",
+ "core-js-compat": "^3.34.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-regenerator": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz",
+ "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.5.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-preset-current-node-syntax": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
+ "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-bigint": "^7.8.3",
+ "@babel/plugin-syntax-class-properties": "^7.8.3",
+ "@babel/plugin-syntax-import-meta": "^7.8.3",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.8.3",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-top-level-await": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/babel-preset-jest": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz",
+ "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "babel-plugin-jest-hoist": "^27.5.1",
+ "babel-preset-current-node-syntax": "^1.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/base64url": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz",
+ "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/bmp-js": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz",
+ "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw=="
+ },
+ "node_modules/body-parser": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
+ "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
+ "dev": true,
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.11.0",
+ "raw-body": "2.5.1",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/body-parser/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/body-parser/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browser-process-hrtime": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
+ "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/browserslist": {
+ "version": "4.22.3",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz",
+ "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001580",
+ "electron-to-chromium": "^1.4.648",
+ "node-releases": "^2.0.14",
+ "update-browserslist-db": "^1.0.13"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/bser": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
+ "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "node-int64": "^0.4.0"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/buffer-equal": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz",
+ "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "devOptional": true
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/cac": {
+ "version": "6.7.9",
+ "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.9.tgz",
+ "integrity": "sha512-XN5qEpfNQCJ8jRaZgitSkkukjMRCGio+X3Ks5KUbGGlPbV+pSem1l9VuzooCBXOiMFshUZgyYqg6rgN8rjkb/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.6.tgz",
+ "integrity": "sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.3",
+ "set-function-length": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001584",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001584.tgz",
+ "integrity": "sha512-LOz7CCQ9M1G7OjJOF9/mzmqmj3jE/7VOmrfw6Mgs0E8cjOsbRXQJHsPBfmBOXDskXKrHLyyW3n7kpDW/4BsfpQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ]
+ },
+ "node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/char-regex": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
+ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
+ "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cjs-module-lexer": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
+ "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/clipboard": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz",
+ "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==",
+ "dev": true,
+ "dependencies": {
+ "good-listener": "^1.2.2",
+ "select": "^1.1.2",
+ "tiny-emitter": "^2.0.0"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "node_modules/co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "iojs": ">= 1.0.0",
+ "node": ">= 0.12.0"
+ }
+ },
+ "node_modules/collect-v8-coverage": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
+ "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "devOptional": true
+ },
+ "node_modules/compare-versions": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz",
+ "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA=="
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
+ },
+ "node_modules/cookie": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "dev": true
+ },
+ "node_modules/copy-anything": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz",
+ "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
+ "dependencies": {
+ "is-what": "^3.14.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mesqueeb"
+ }
+ },
+ "node_modules/core-js": {
+ "version": "3.35.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.35.1.tgz",
+ "integrity": "sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw==",
+ "hasInstallScript": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/core-js-compat": {
+ "version": "3.35.1",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.1.tgz",
+ "integrity": "sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.22.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/cross-env": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
+ "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.1"
+ },
+ "bin": {
+ "cross-env": "src/bin/cross-env.js",
+ "cross-env-shell": "src/bin/cross-env-shell.js"
+ },
+ "engines": {
+ "node": ">=10.14",
+ "npm": ">=6",
+ "yarn": ">=1"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/css-font-size-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz",
+ "integrity": "sha512-Q+svMDbMlelgCfH/RVDKtTDaf5021O486ZThQPIpahnIjUkMUslC+WuOQSWTgGSrNCH08Y7tYNEmmy0hkfMI8Q=="
+ },
+ "node_modules/css-font-stretch-keywords": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/css-font-stretch-keywords/-/css-font-stretch-keywords-1.0.1.tgz",
+ "integrity": "sha512-KmugPO2BNqoyp9zmBIUGwt58UQSfyk1X5DbOlkb2pckDXFSAfjsD5wenb88fNrD6fvS+vu90a/tsPpb9vb0SLg=="
+ },
+ "node_modules/css-font-style-keywords": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/css-font-style-keywords/-/css-font-style-keywords-1.0.1.tgz",
+ "integrity": "sha512-0Fn0aTpcDktnR1RzaBYorIxQily85M2KXRpzmxQPgh8pxUN9Fcn00I8u9I3grNr1QXVgCl9T5Imx0ZwKU973Vg=="
+ },
+ "node_modules/css-font-weight-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz",
+ "integrity": "sha512-5So8/NH+oDD+EzsnF4iaG4ZFHQ3vaViePkL1ZbZ5iC/KrsCY+WHq/lvOgrtmuOQ9pBBZ1ADGpaf+A4lj1Z9eYA=="
+ },
+ "node_modules/css-list-helpers": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/css-list-helpers/-/css-list-helpers-2.0.0.tgz",
+ "integrity": "sha512-9Bj8tZ0jWbAM3u/U6m/boAzAwLPwtjzFvwivr2piSvyVa3K3rChJzQy4RIHkNkKiZCHrEMWDJWtTR8UyVhdDnQ=="
+ },
+ "node_modules/css-system-font-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz",
+ "integrity": "sha512-1umTtVd/fXS25ftfjB71eASCrYhilmEsvDEI6wG/QplnmlfmVM5HkZ/ZX46DT5K3eblFPgLUHt5BRCb0YXkSFA=="
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cssom": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
+ "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/cssstyle": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
+ "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "cssom": "~0.3.6"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cssstyle/node_modules/cssom": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
+ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/csstype": {
+ "version": "2.6.21",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
+ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
+ },
+ "node_modules/data-urls": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
+ "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "abab": "^2.0.3",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decimal.js": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
+ "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
+ "dev": true
+ },
+ "node_modules/dedent": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
+ "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/deepmerge": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/default-gateway": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz",
+ "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==",
+ "dev": true,
+ "dependencies": {
+ "execa": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.2.tgz",
+ "integrity": "sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.2",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/delegate": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
+ "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==",
+ "dev": true
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/detect-newline": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
+ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/diff-sequences": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz",
+ "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/dom-walk": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
+ "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
+ },
+ "node_modules/domexception": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
+ "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
+ "deprecated": "Use your platform's native DOMException instead",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "webidl-conversions": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/domexception/node_modules/webidl-conversions": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
+ "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "dev": true
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.659",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.659.tgz",
+ "integrity": "sha512-sRJ3nV3HowrYpBtPF9bASQV7OW49IgZC01Xiq43WfSE3RTCkK0/JidoCmR73Hyc1mN+l/H4Yqx0eNiomvExFZg=="
+ },
+ "node_modules/emittery": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz",
+ "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/emittery?sponsor=1"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/errno": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
+ "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+ "optional": true,
+ "dependencies": {
+ "prr": "~1.0.1"
+ },
+ "bin": {
+ "errno": "cli.js"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz",
+ "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w=="
+ },
+ "node_modules/esbuild": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz",
+ "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==",
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/android-arm": "0.17.19",
+ "@esbuild/android-arm64": "0.17.19",
+ "@esbuild/android-x64": "0.17.19",
+ "@esbuild/darwin-arm64": "0.17.19",
+ "@esbuild/darwin-x64": "0.17.19",
+ "@esbuild/freebsd-arm64": "0.17.19",
+ "@esbuild/freebsd-x64": "0.17.19",
+ "@esbuild/linux-arm": "0.17.19",
+ "@esbuild/linux-arm64": "0.17.19",
+ "@esbuild/linux-ia32": "0.17.19",
+ "@esbuild/linux-loong64": "0.17.19",
+ "@esbuild/linux-mips64el": "0.17.19",
+ "@esbuild/linux-ppc64": "0.17.19",
+ "@esbuild/linux-riscv64": "0.17.19",
+ "@esbuild/linux-s390x": "0.17.19",
+ "@esbuild/linux-x64": "0.17.19",
+ "@esbuild/netbsd-x64": "0.17.19",
+ "@esbuild/openbsd-x64": "0.17.19",
+ "@esbuild/sunos-x64": "0.17.19",
+ "@esbuild/win32-arm64": "0.17.19",
+ "@esbuild/win32-ia32": "0.17.19",
+ "@esbuild/win32-x64": "0.17.19"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
+ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "dev": true
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "peer": true,
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/exif-parser": {
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz",
+ "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw=="
+ },
+ "node_modules/exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/expect": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz",
+ "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/express": {
+ "version": "4.18.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
+ "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
+ "dev": true,
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.1",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.5.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.2.0",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.11.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.18.0",
+ "serve-static": "1.15.0",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/express/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/express/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/fastq": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fb-watchman": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
+ "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "bser": "2.1.1"
+ }
+ },
+ "node_modules/file-type": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz",
+ "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "2.0.1",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/finalhandler/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/finalhandler/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/form-data": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
+ "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "patreon",
+ "url": "https://github.com/sponsors/rawify"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/generic-names": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz",
+ "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==",
+ "dependencies": {
+ "loader-utils": "^3.2.0"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-package-type": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
+ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/global": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
+ "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
+ "dependencies": {
+ "min-document": "^2.19.0",
+ "process": "^0.11.10"
+ }
+ },
+ "node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/good-listener": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
+ "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==",
+ "dev": true,
+ "dependencies": {
+ "delegate": "^3.1.2"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
+ },
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
+ "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hash-sum": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz",
+ "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg=="
+ },
+ "node_modules/hasown": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/html-encoding-sniffer": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
+ "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "whatwg-encoding": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/html-escaper": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/html-tags": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
+ "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dev": true,
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+ "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@tootallnate/once": "1",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/icss-replace-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
+ "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg=="
+ },
+ "node_modules/icss-utils": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
+ "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/image-size": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
+ "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
+ "optional": true,
+ "bin": {
+ "image-size": "bin/image-size.js"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/immutable": {
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz",
+ "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==",
+ "devOptional": true
+ },
+ "node_modules/import-local": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
+ "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "pkg-dir": "^4.2.0",
+ "resolve-cwd": "^3.0.0"
+ },
+ "bin": {
+ "import-local-fixture": "fixtures/cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/invert-kv": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-3.0.1.tgz",
+ "integrity": "sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/invert-kv?sponsor=1"
+ }
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-function": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz",
+ "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ=="
+ },
+ "node_modules/is-generator-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
+ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-potential-custom-element-name": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/is-what": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
+ "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA=="
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/istanbul-lib-coverage": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
+ "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-instrument": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
+ "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/core": "^7.12.3",
+ "@babel/parser": "^7.14.7",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-coverage": "^3.2.0",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
+ "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^4.0.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-report/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-source-maps": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
+ "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^3.0.0",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-reports": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz",
+ "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest": {
+ "version": "27.0.4",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-27.0.4.tgz",
+ "integrity": "sha512-Px1iKFooXgGSkk1H8dJxxBIrM3tsc5SIuI4kfKYK2J+4rvCvPGr/cXktxh0e9zIPQ5g09kOMNfHQEmusBUf/ZA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/core": "^27.0.4",
+ "import-local": "^3.0.2",
+ "jest-cli": "^27.0.4"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-changed-files": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz",
+ "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "execa": "^5.0.0",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz",
+ "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "co": "^4.6.0",
+ "dedent": "^0.7.0",
+ "expect": "^27.5.1",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-circus/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-circus/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-circus/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-circus/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-cli": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz",
+ "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/core": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.9",
+ "import-local": "^3.0.2",
+ "jest-config": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "prompts": "^2.0.1",
+ "yargs": "^16.2.0"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-cli/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-cli/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-cli/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-cli/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-cli/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-cli/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-config": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz",
+ "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/core": "^7.8.0",
+ "@jest/test-sequencer": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "babel-jest": "^27.5.1",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "deepmerge": "^4.2.2",
+ "glob": "^7.1.1",
+ "graceful-fs": "^4.2.9",
+ "jest-circus": "^27.5.1",
+ "jest-environment-jsdom": "^27.5.1",
+ "jest-environment-node": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-jasmine2": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-runner": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "parse-json": "^5.2.0",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-config/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-config/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-config/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-config/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-config/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-config/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-diff": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz",
+ "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "diff-sequences": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-diff/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-diff/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-diff/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-diff/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-diff/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-diff/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-docblock": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz",
+ "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "detect-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-each": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz",
+ "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-each/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-each/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-each/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-each/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-each/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-each/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-environment-jsdom": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz",
+ "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jsdom": "^16.6.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-node": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz",
+ "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-haste-map": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz",
+ "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/graceful-fs": "^4.1.2",
+ "@types/node": "*",
+ "anymatch": "^3.0.3",
+ "fb-watchman": "^2.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-regex-util": "^27.5.1",
+ "jest-serializer": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-worker": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "walker": "^1.0.7"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "^2.3.2"
+ }
+ },
+ "node_modules/jest-jasmine2": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz",
+ "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/source-map": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "co": "^4.6.0",
+ "expect": "^27.5.1",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-jasmine2/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-leak-detector": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz",
+ "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-matcher-utils": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz",
+ "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "jest-diff": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-matcher-utils/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-message-util/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-mock": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz",
+ "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-pnp-resolver": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
+ "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ },
+ "peerDependencies": {
+ "jest-resolve": "*"
+ },
+ "peerDependenciesMeta": {
+ "jest-resolve": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-regex-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz",
+ "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz",
+ "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-pnp-resolver": "^1.2.2",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "resolve": "^1.20.0",
+ "resolve.exports": "^1.1.0",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve-dependencies": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz",
+ "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-snapshot": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-resolve/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runner": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz",
+ "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/console": "^27.5.1",
+ "@jest/environment": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "emittery": "^0.8.1",
+ "graceful-fs": "^4.2.9",
+ "jest-docblock": "^27.5.1",
+ "jest-environment-jsdom": "^27.5.1",
+ "jest-environment-node": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-leak-detector": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-worker": "^27.5.1",
+ "source-map-support": "^0.5.6",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runner/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-runner/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-runner/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-runner/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-runner/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runner/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runtime": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz",
+ "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/globals": "^27.5.1",
+ "@jest/source-map": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "cjs-module-lexer": "^1.0.0",
+ "collect-v8-coverage": "^1.0.0",
+ "execa": "^5.0.0",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-mock": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "slash": "^3.0.0",
+ "strip-bom": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-runtime/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-serializer": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz",
+ "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/node": "*",
+ "graceful-fs": "^4.2.9"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-snapshot": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz",
+ "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/core": "^7.7.2",
+ "@babel/generator": "^7.7.2",
+ "@babel/plugin-syntax-typescript": "^7.7.2",
+ "@babel/traverse": "^7.7.2",
+ "@babel/types": "^7.0.0",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/babel__traverse": "^7.0.4",
+ "@types/prettier": "^2.1.5",
+ "babel-preset-current-node-syntax": "^1.0.0",
+ "chalk": "^4.0.0",
+ "expect": "^27.5.1",
+ "graceful-fs": "^4.2.9",
+ "jest-diff": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "natural-compare": "^1.4.0",
+ "pretty-format": "^27.5.1",
+ "semver": "^7.3.2"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-snapshot/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-util/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-util/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-util/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-util/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-util/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-util/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-validate": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz",
+ "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "camelcase": "^6.2.0",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^27.5.1",
+ "leven": "^3.1.0",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-validate/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-validate/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-validate/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-validate/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-validate/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-validate/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-watcher": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz",
+ "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "jest-util": "^27.5.1",
+ "string-length": "^4.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-watcher/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-worker": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/jest-worker/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-worker/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/jimp": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.10.3.tgz",
+ "integrity": "sha512-meVWmDMtyUG5uYjFkmzu0zBgnCvvxwWNi27c4cg55vWNVC9ES4Lcwb+ogx+uBBQE3Q+dLKjXaLl0JVW+nUNwbQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/custom": "^0.10.3",
+ "@jimp/plugins": "^0.10.3",
+ "@jimp/types": "^0.10.3",
+ "core-js": "^3.4.1",
+ "regenerator-runtime": "^0.13.3"
+ }
+ },
+ "node_modules/jpeg-js": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.7.tgz",
+ "integrity": "sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ=="
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsdom": {
+ "version": "16.7.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz",
+ "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "abab": "^2.0.5",
+ "acorn": "^8.2.4",
+ "acorn-globals": "^6.0.0",
+ "cssom": "^0.4.4",
+ "cssstyle": "^2.3.0",
+ "data-urls": "^2.0.0",
+ "decimal.js": "^10.2.1",
+ "domexception": "^2.0.1",
+ "escodegen": "^2.0.0",
+ "form-data": "^3.0.0",
+ "html-encoding-sniffer": "^2.0.1",
+ "http-proxy-agent": "^4.0.1",
+ "https-proxy-agent": "^5.0.0",
+ "is-potential-custom-element-name": "^1.0.1",
+ "nwsapi": "^2.2.0",
+ "parse5": "6.0.1",
+ "saxes": "^5.0.1",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^4.0.0",
+ "w3c-hr-time": "^1.0.2",
+ "w3c-xmlserializer": "^2.0.0",
+ "webidl-conversions": "^6.1.0",
+ "whatwg-encoding": "^1.0.5",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.5.0",
+ "ws": "^7.4.6",
+ "xml-name-validator": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "canvas": "^2.5.0"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jsdom/node_modules/ws": {
+ "version": "7.5.9",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
+ "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonc-parser": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz",
+ "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA=="
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/jwt-decode": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz",
+ "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==",
+ "dev": true
+ },
+ "node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/lcid": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-3.1.1.tgz",
+ "integrity": "sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==",
+ "dependencies": {
+ "invert-kv": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/less": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz",
+ "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==",
+ "dependencies": {
+ "copy-anything": "^2.0.1",
+ "parse-node-version": "^1.0.1",
+ "tslib": "^2.3.0"
+ },
+ "bin": {
+ "lessc": "bin/lessc"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "optionalDependencies": {
+ "errno": "^0.1.1",
+ "graceful-fs": "^4.1.2",
+ "image-size": "~0.5.0",
+ "make-dir": "^2.1.0",
+ "mime": "^1.4.1",
+ "needle": "^3.1.0",
+ "source-map": "~0.6.0"
+ }
+ },
+ "node_modules/less/node_modules/make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "optional": true,
+ "dependencies": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/less/node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "optional": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/less/node_modules/pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "optional": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/less/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "optional": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/licia": {
+ "version": "1.39.2",
+ "resolved": "https://registry.npmjs.org/licia/-/licia-1.39.2.tgz",
+ "integrity": "sha512-4pte7gXufSAa3JcsR0iT+2Lj2RX5Qpj+Nc0n84xs0ynNmw7eJmeZzk2oPTEtsQqwHwtT+NiX0arGkL5HPjTs7g=="
+ },
+ "node_modules/lilconfig": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
+ "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/load-bmfont": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz",
+ "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==",
+ "dependencies": {
+ "buffer-equal": "0.0.1",
+ "mime": "^1.3.4",
+ "parse-bmfont-ascii": "^1.0.3",
+ "parse-bmfont-binary": "^1.0.5",
+ "parse-bmfont-xml": "^1.1.4",
+ "phin": "^2.9.1",
+ "xhr": "^2.0.1",
+ "xtend": "^4.0.0"
+ }
+ },
+ "node_modules/load-bmfont/node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/loader-utils": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz",
+ "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==",
+ "engines": {
+ "node": ">= 12.13.0"
+ }
+ },
+ "node_modules/local-pkg": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz",
+ "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==",
+ "dependencies": {
+ "mlly": "^1.4.2",
+ "pkg-types": "^1.0.3"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/localstorage-polyfill": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/localstorage-polyfill/-/localstorage-polyfill-1.0.1.tgz",
+ "integrity": "sha512-m4iHVZxFH5734oQcPKU08025gIz2+4bjWR9lulP8ZYxEJR0BpA0w32oJmkzh8y3UI9ci7xCBehQDc3oA1X+VHw==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
+ },
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "dev": true
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.7",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz",
+ "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.4.15"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
+ "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/make-dir/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/make-dir/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/makeerror": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
+ "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "tmpl": "1.0.5"
+ }
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/merge": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz",
+ "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w=="
+ },
+ "node_modules/merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
+ "dev": true
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/min-document": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
+ "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==",
+ "dependencies": {
+ "dom-walk": "^0.1.0"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "dependencies": {
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/mlly": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.5.0.tgz",
+ "integrity": "sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==",
+ "dependencies": {
+ "acorn": "^8.11.3",
+ "pathe": "^1.1.2",
+ "pkg-types": "^1.0.3",
+ "ufo": "^1.3.2"
+ }
+ },
+ "node_modules/module-alias": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.2.3.tgz",
+ "integrity": "sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q=="
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/needle": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz",
+ "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==",
+ "optional": true,
+ "dependencies": {
+ "iconv-lite": "^0.6.3",
+ "sax": "^1.2.4"
+ },
+ "bin": {
+ "needle": "bin/needle"
+ },
+ "engines": {
+ "node": ">= 4.4.x"
+ }
+ },
+ "node_modules/needle/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "optional": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "dev": true
+ },
+ "node_modules/node-int64": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+ "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw=="
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/nwsapi": {
+ "version": "2.2.7",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz",
+ "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/omggif": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz",
+ "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw=="
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dev": true,
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/os-locale-s-fix": {
+ "version": "1.0.8-fix-1",
+ "resolved": "https://registry.npmjs.org/os-locale-s-fix/-/os-locale-s-fix-1.0.8-fix-1.tgz",
+ "integrity": "sha512-Sv0OvhPiMutICiwORAUefv02DCPb62IelBmo8ZsSrRHyI3FStqIWZvjqDkvtjU+lcujo7UNir+dCwKSqlEQ/5w==",
+ "dependencies": {
+ "lcid": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10",
+ "yarn": "^1.22.4"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
+ },
+ "node_modules/parse-bmfont-ascii": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz",
+ "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA=="
+ },
+ "node_modules/parse-bmfont-binary": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz",
+ "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA=="
+ },
+ "node_modules/parse-bmfont-xml": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz",
+ "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==",
+ "dependencies": {
+ "xml-parse-from-string": "^1.0.0",
+ "xml2js": "^0.4.5"
+ }
+ },
+ "node_modules/parse-css-font": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-css-font/-/parse-css-font-4.0.0.tgz",
+ "integrity": "sha512-lnY7dTUfjRXsSo5G5C639L8RaBBaVSgL+5hacIFKsNHzeCJQ5SFSZv1DZmc7+wZv/22PFGOq2YbaEHLdaCS/mQ==",
+ "dependencies": {
+ "css-font-size-keywords": "^1.0.0",
+ "css-font-stretch-keywords": "^1.0.1",
+ "css-font-style-keywords": "^1.0.1",
+ "css-font-weight-keywords": "^1.0.0",
+ "css-list-helpers": "^2.0.0",
+ "css-system-font-keywords": "^1.0.0",
+ "unquote": "^1.1.1"
+ }
+ },
+ "node_modules/parse-headers": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz",
+ "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA=="
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse-node-version": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
+ "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+ },
+ "node_modules/path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
+ "dev": true
+ },
+ "node_modules/pathe": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
+ "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="
+ },
+ "node_modules/phin": {
+ "version": "2.9.3",
+ "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz",
+ "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA=="
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pirates": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/pixelmatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz",
+ "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==",
+ "dependencies": {
+ "pngjs": "^3.0.0"
+ },
+ "bin": {
+ "pixelmatch": "bin/pixelmatch"
+ }
+ },
+ "node_modules/pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-types": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz",
+ "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==",
+ "dependencies": {
+ "jsonc-parser": "^3.2.0",
+ "mlly": "^1.2.0",
+ "pathe": "^1.1.0"
+ }
+ },
+ "node_modules/pngjs": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
+ "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.34",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.34.tgz",
+ "integrity": "sha512-4eLTO36woPSocqZ1zIrFD2K1v6wH7pY1uBh0JIM2KKfrVtGvPFiAku6aNOP0W1Wr9qwnaCsF0Z+CrVnryB2A8Q==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-import": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
+ "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
+ "dependencies": {
+ "postcss-value-parser": "^4.0.0",
+ "read-cache": "^1.0.0",
+ "resolve": "^1.1.7"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss-load-config": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
+ "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
+ "dependencies": {
+ "lilconfig": "^2.0.5",
+ "yaml": "^1.10.2"
+ },
+ "engines": {
+ "node": ">= 10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": ">=8.0.9",
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ },
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/postcss-modules": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz",
+ "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==",
+ "dependencies": {
+ "generic-names": "^4.0.0",
+ "icss-replace-symbols": "^1.1.0",
+ "lodash.camelcase": "^4.3.0",
+ "postcss-modules-extract-imports": "^3.0.0",
+ "postcss-modules-local-by-default": "^4.0.0",
+ "postcss-modules-scope": "^3.0.0",
+ "postcss-modules-values": "^4.0.0",
+ "string-hash": "^1.1.1"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss-modules-extract-imports": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
+ "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-local-by-default": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz",
+ "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==",
+ "dependencies": {
+ "icss-utils": "^5.0.0",
+ "postcss-selector-parser": "^6.0.2",
+ "postcss-value-parser": "^4.1.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-scope": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz",
+ "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.4"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-values": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
+ "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
+ "dependencies": {
+ "icss-utils": "^5.0.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.0.15",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz",
+ "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
+ },
+ "node_modules/pretty-format": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
+ "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^17.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "dev": true,
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "dev": true
+ },
+ "node_modules/prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
+ "optional": true
+ },
+ "node_modules/psl": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
+ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qrcode-reader": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/qrcode-reader/-/qrcode-reader-1.0.4.tgz",
+ "integrity": "sha512-rRjALGNh9zVqvweg1j5OKIQKNsw3bLC+7qwlnead5K/9cb1cEIAGkwikt/09U0K+2IDWGD9CC6SP7tHAjUeqvQ=="
+ },
+ "node_modules/qrcode-terminal": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz",
+ "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==",
+ "bin": {
+ "qrcode-terminal": "bin/qrcode-terminal.js"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "dev": true,
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+ "dev": true,
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "dependencies": {
+ "pify": "^2.3.0"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/regenerate": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
+ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+ "dev": true
+ },
+ "node_modules/regenerate-unicode-properties": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz",
+ "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==",
+ "dev": true,
+ "dependencies": {
+ "regenerate": "^1.4.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
+ },
+ "node_modules/regenerator-transform": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
+ "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.8.4"
+ }
+ },
+ "node_modules/regexpu-core": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
+ "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/regjsgen": "^0.8.0",
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^10.1.0",
+ "regjsparser": "^0.9.1",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regjsparser": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
+ "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
+ "dev": true,
+ "dependencies": {
+ "jsesc": "~0.5.0"
+ },
+ "bin": {
+ "regjsparser": "bin/parser"
+ }
+ },
+ "node_modules/regjsparser/node_modules/jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/resolve": {
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-cwd": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+ "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve.exports": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz",
+ "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "3.29.4",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
+ "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=14.18.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-area-insets": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/safe-area-insets/-/safe-area-insets-1.4.1.tgz",
+ "integrity": "sha512-r/nRWTjFGhhm3w1Z6Kd/jY11srN+lHt2mNl1E/emQGW8ic7n3Avu4noibklfSM+Y34peNphHD/BSZecav0sXYQ=="
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "devOptional": true
+ },
+ "node_modules/sass": {
+ "version": "1.70.0",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.70.0.tgz",
+ "integrity": "sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==",
+ "devOptional": true,
+ "dependencies": {
+ "chokidar": ">=3.0.0 <4.0.0",
+ "immutable": "^4.0.0",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-loader": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.1.0.tgz",
+ "integrity": "sha512-LS2mLeFWA+orYxHNu+O18Xe4jR0kyamNOOUsE3NyBP4DvIL+8stHpNX0arYTItdPe80kluIiJ7Wfe/9iHSRO0Q==",
+ "dev": true,
+ "dependencies": {
+ "neo-async": "^2.6.2"
+ },
+ "engines": {
+ "node": ">= 18.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "@rspack/core": "0.x || 1.x",
+ "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0",
+ "sass": "^1.3.0",
+ "sass-embedded": "*",
+ "webpack": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@rspack/core": {
+ "optional": true
+ },
+ "node-sass": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "webpack": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/sax": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz",
+ "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
+ },
+ "node_modules/saxes": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
+ "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "xmlchars": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/scule": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz",
+ "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g=="
+ },
+ "node_modules/select": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
+ "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==",
+ "dev": true
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/send/node_modules/debug/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/send/node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/send/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "dev": true,
+ "dependencies": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.18.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz",
+ "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.2",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.3",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "dev": true
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz",
+ "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "devOptional": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+ "deprecated": "Please use @jridgewell/sourcemap-codec instead"
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/stack-utils": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
+ "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "escape-string-regexp": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/stack-utils/node_modules/escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/string-hash": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz",
+ "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A=="
+ },
+ "node_modules/string-length": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
+ "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "char-regex": "^1.0.2",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
+ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/strip-literal": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz",
+ "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==",
+ "dependencies": {
+ "acorn": "^8.10.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/supports-hyperlinks": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz",
+ "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-hyperlinks/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-hyperlinks/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+ "dev": true
+ },
+ "node_modules/symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/systemjs": {
+ "version": "6.14.3",
+ "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.14.3.tgz",
+ "integrity": "sha512-hQv45irdhXudAOr8r6SVSpJSGtogdGZUbJBRKCE5nsIS7tsxxvnIHqT4IOPWj+P+HcSzeWzHlGCGpmhPDIKe+w==",
+ "dev": true
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/terminal-link": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
+ "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-escapes": "^4.2.1",
+ "supports-hyperlinks": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.27.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz",
+ "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==",
+ "devOptional": true,
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.8.2",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/test-exclude": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
+ "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@istanbuljs/schema": "^0.1.2",
+ "glob": "^7.1.4",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/throat": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz",
+ "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/timm": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz",
+ "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw=="
+ },
+ "node_modules/tiny-emitter": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
+ "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==",
+ "dev": true
+ },
+ "node_modules/tinycolor2": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
+ "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="
+ },
+ "node_modules/tmpl": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
+ "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/tough-cookie": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
+ "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.2.0",
+ "url-parse": "^1.5.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tough-cookie/node_modules/universalify": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
+ "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
+ "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "punycode": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/type-detect": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dev": true,
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
+ "node_modules/ufo": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.4.0.tgz",
+ "integrity": "sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ=="
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "devOptional": true,
+ "peer": true
+ },
+ "node_modules/unicode-canonical-property-names-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+ "dev": true,
+ "dependencies": {
+ "unicode-canonical-property-names-ecmascript": "^2.0.0",
+ "unicode-property-aliases-ecmascript": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-value-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-property-aliases-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unimport": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/unimport/-/unimport-3.7.1.tgz",
+ "integrity": "sha512-V9HpXYfsZye5bPPYUgs0Otn3ODS1mDUciaBlXljI4C2fTwfFpvFZRywmlOu943puN9sncxROMZhsZCjNXEpzEQ==",
+ "dependencies": {
+ "@rollup/pluginutils": "^5.1.0",
+ "acorn": "^8.11.2",
+ "escape-string-regexp": "^5.0.0",
+ "estree-walker": "^3.0.3",
+ "fast-glob": "^3.3.2",
+ "local-pkg": "^0.5.0",
+ "magic-string": "^0.30.5",
+ "mlly": "^1.4.2",
+ "pathe": "^1.1.1",
+ "pkg-types": "^1.0.3",
+ "scule": "^1.1.1",
+ "strip-literal": "^1.3.0",
+ "unplugin": "^1.5.1"
+ }
+ },
+ "node_modules/unimport/node_modules/@rollup/pluginutils": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
+ "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unimport/node_modules/@rollup/pluginutils/node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "node_modules/unimport/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/unimport/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/unplugin": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.7.1.tgz",
+ "integrity": "sha512-JqzORDAPxxs8ErLV4x+LL7bk5pk3YlcWqpSNsIkAZj972KzFZLClc/ekppahKkOczGkwIG6ElFgdOgOlK4tXZw==",
+ "dependencies": {
+ "acorn": "^8.11.3",
+ "chokidar": "^3.5.3",
+ "webpack-sources": "^3.2.3",
+ "webpack-virtual-modules": "^0.6.1"
+ }
+ },
+ "node_modules/unplugin-auto-import": {
+ "version": "0.16.7",
+ "resolved": "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-0.16.7.tgz",
+ "integrity": "sha512-w7XmnRlchq6YUFJVFGSvG1T/6j8GrdYN6Em9Wf0Ye+HXgD/22kont+WnuCAA0UaUoxtuvRR1u/mXKy63g/hfqQ==",
+ "dependencies": {
+ "@antfu/utils": "^0.7.6",
+ "@rollup/pluginutils": "^5.0.5",
+ "fast-glob": "^3.3.1",
+ "local-pkg": "^0.5.0",
+ "magic-string": "^0.30.5",
+ "minimatch": "^9.0.3",
+ "unimport": "^3.4.0",
+ "unplugin": "^1.5.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@nuxt/kit": "^3.2.2",
+ "@vueuse/core": "*"
+ },
+ "peerDependenciesMeta": {
+ "@nuxt/kit": {
+ "optional": true
+ },
+ "@vueuse/core": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unplugin-auto-import/node_modules/@rollup/pluginutils": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
+ "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unplugin-auto-import/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/unplugin-auto-import/node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/unquote": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
+ "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg=="
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
+ "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/url-parse": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "node_modules/utif": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz",
+ "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==",
+ "dependencies": {
+ "pako": "^1.0.5"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/v8-to-istanbul": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz",
+ "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.1",
+ "convert-source-map": "^1.6.0",
+ "source-map": "^0.7.3"
+ },
+ "engines": {
+ "node": ">=10.12.0"
+ }
+ },
+ "node_modules/v8-to-istanbul/node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/v8-to-istanbul/node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/vite": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.3.tgz",
+ "integrity": "sha512-HvuNv1RdE7deIfQb8mPk51UKjqptO/4RXZ5yXSAvurd5xOckwS/gg8h9Tky3uSbnjYTgUm0hVCet1cyhKd73ZA==",
+ "dependencies": {
+ "esbuild": "^0.16.3",
+ "postcss": "^8.4.20",
+ "resolve": "^1.22.1",
+ "rollup": "^3.7.0"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ },
+ "peerDependencies": {
+ "@types/node": ">= 14",
+ "less": "*",
+ "sass": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/android-arm": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz",
+ "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/android-arm64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz",
+ "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/android-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz",
+ "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz",
+ "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/darwin-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz",
+ "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz",
+ "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz",
+ "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-arm": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz",
+ "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-arm64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz",
+ "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-ia32": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz",
+ "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-loong64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
+ "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz",
+ "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==",
+ "cpu": [
+ "mips64el"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz",
+ "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz",
+ "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-s390x": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz",
+ "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
+ "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz",
+ "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz",
+ "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/sunos-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz",
+ "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/win32-arm64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz",
+ "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/win32-ia32": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz",
+ "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/win32-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz",
+ "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/esbuild": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz",
+ "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/android-arm": "0.16.17",
+ "@esbuild/android-arm64": "0.16.17",
+ "@esbuild/android-x64": "0.16.17",
+ "@esbuild/darwin-arm64": "0.16.17",
+ "@esbuild/darwin-x64": "0.16.17",
+ "@esbuild/freebsd-arm64": "0.16.17",
+ "@esbuild/freebsd-x64": "0.16.17",
+ "@esbuild/linux-arm": "0.16.17",
+ "@esbuild/linux-arm64": "0.16.17",
+ "@esbuild/linux-ia32": "0.16.17",
+ "@esbuild/linux-loong64": "0.16.17",
+ "@esbuild/linux-mips64el": "0.16.17",
+ "@esbuild/linux-ppc64": "0.16.17",
+ "@esbuild/linux-riscv64": "0.16.17",
+ "@esbuild/linux-s390x": "0.16.17",
+ "@esbuild/linux-x64": "0.16.17",
+ "@esbuild/netbsd-x64": "0.16.17",
+ "@esbuild/openbsd-x64": "0.16.17",
+ "@esbuild/sunos-x64": "0.16.17",
+ "@esbuild/win32-arm64": "0.16.17",
+ "@esbuild/win32-ia32": "0.16.17",
+ "@esbuild/win32-x64": "0.16.17"
+ }
+ },
+ "node_modules/vue": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.47.tgz",
+ "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/runtime-dom": "3.2.47",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/vue-clipboard2": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/vue-clipboard2/-/vue-clipboard2-0.3.3.tgz",
+ "integrity": "sha512-aNWXIL2DKgJyY/1OOeITwAQz1fHaCIGvUFHf9h8UcoQBG5a74MkdhS/xqoYe7DNZdQmZRL+TAdIbtUs9OyVjbw==",
+ "dev": true,
+ "dependencies": {
+ "clipboard": "^2.0.0"
+ }
+ },
+ "node_modules/vue-i18n": {
+ "version": "9.9.1",
+ "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.9.1.tgz",
+ "integrity": "sha512-xyQ4VspLdNSPTKBFBPWa1tvtj+9HuockZwgFeD2OhxxXuC2CWeNvV4seu2o9+vbQOyQbhAM5Ez56oxUrrnTWdw==",
+ "dependencies": {
+ "@intlify/core-base": "9.9.1",
+ "@intlify/shared": "9.9.1",
+ "@vue/devtools-api": "^6.5.0"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/vue-i18n/node_modules/@intlify/core-base": {
+ "version": "9.9.1",
+ "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.9.1.tgz",
+ "integrity": "sha512-qsV15dg7jNX2faBRyKMgZS8UcFJViWEUPLdzZ9UR0kQZpFVeIpc0AG7ZOfeP7pX2T9SQ5jSiorq/tii9nkkafA==",
+ "dependencies": {
+ "@intlify/message-compiler": "9.9.1",
+ "@intlify/shared": "9.9.1"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
+ }
+ },
+ "node_modules/vue-i18n/node_modules/@intlify/message-compiler": {
+ "version": "9.9.1",
+ "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.9.1.tgz",
+ "integrity": "sha512-zTvP6X6HeumHOXuAE1CMMsV6tTX+opKMOxO1OHTCg5N5Sm/F7d8o2jdT6W6L5oHUsJ/vvkGefHIs7Q3hfowmsA==",
+ "dependencies": {
+ "@intlify/shared": "9.9.1",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
+ }
+ },
+ "node_modules/vue-i18n/node_modules/@intlify/shared": {
+ "version": "9.9.1",
+ "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.9.1.tgz",
+ "integrity": "sha512-b3Pta1nwkz5rGq434v0psHwEwHGy1pYCttfcM22IE//K9owbpkEvFptx9VcuRAxjQdrO2If249cmDDjBu5wMDA==",
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/kazupon"
+ }
+ },
+ "node_modules/vue-router": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz",
+ "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.5.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/vuex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz",
+ "integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.0.0-beta.11"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/w3c-hr-time": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
+ "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
+ "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "browser-process-hrtime": "^1.0.0"
+ }
+ },
+ "node_modules/w3c-xmlserializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
+ "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "xml-name-validator": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/walker": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
+ "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "makeerror": "1.0.12"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
+ "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10.4"
+ }
+ },
+ "node_modules/webpack-sources": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack-virtual-modules": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz",
+ "integrity": "sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg=="
+ },
+ "node_modules/whatwg-encoding": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
+ "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "iconv-lite": "0.4.24"
+ }
+ },
+ "node_modules/whatwg-mimetype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
+ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/whatwg-url": {
+ "version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz",
+ "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "lodash": "^4.7.0",
+ "tr46": "^2.1.0",
+ "webidl-conversions": "^6.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/write-file-atomic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ },
+ "node_modules/ws": {
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz",
+ "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/xhr": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz",
+ "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==",
+ "dependencies": {
+ "global": "~4.4.0",
+ "is-function": "^1.0.1",
+ "parse-headers": "^2.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "node_modules/xml-name-validator": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
+ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/xml-parse-from-string": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz",
+ "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g=="
+ },
+ "node_modules/xml2js": {
+ "version": "0.4.23",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
+ "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+ "dependencies": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/xmlbuilder": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/xmlchars": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/xmlhttprequest": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
+ "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/xregexp": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-3.1.0.tgz",
+ "integrity": "sha512-4Y1x6DyB8xRoxosooa6PlGWqmmSKatbzhrftZ7Purmm4B8R4qIEJG1A2hZsdz5DhmIqS0msC0I7KEq93GphEVg=="
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+ },
+ "node_modules/yaml": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..38bd551
--- /dev/null
+++ b/package.json
@@ -0,0 +1,46 @@
+{
+ "name": "uni-preset-vue",
+ "version": "0.0.0",
+ "scripts": {
+ "dev:app": "uni -p app",
+ "dev:app-android": "uni -p app-android",
+ "dev:app-ios": "uni -p app-ios",
+ "dev:custom": "uni -p",
+ "dev": "uni",
+ "dev:h5:ssr": "uni --ssr",
+ "dev:mp-weixin": "uni -p mp-weixin",
+ "build:app": "uni build -p app",
+ "build:app-android": "uni build -p app-android",
+ "build:app-ios": "uni build -p app-ios",
+ "build:custom": "uni build -p",
+ "test": "uni build",
+ "build:h5:ssr": "uni build --ssr",
+ "build:mp-weixin": "uni build -p mp-weixin"
+ },
+ "dependencies": {
+ "@dcloudio/uni-app": "3.0.0-3090920231225001",
+ "@dcloudio/uni-app-plus": "3.0.0-3090920231225001",
+ "@dcloudio/uni-components": "3.0.0-3090920231225001",
+ "@dcloudio/uni-h5": "3.0.0-3090920231225001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-3090920231225001",
+ "less": "^4.2.0",
+ "vue": "^3.2.45",
+ "vue-i18n": "^9.1.9",
+ "vuex": "^4.1.0"
+ },
+ "devDependencies": {
+ "@dcloudio/types": "^3.3.2",
+ "@dcloudio/uni-automator": "3.0.0-3090920231225001",
+ "@dcloudio/uni-cli-shared": "3.0.0-3090920231225001",
+ "@dcloudio/uni-stacktracey": "3.0.0-3090920231225001",
+ "@dcloudio/vite-plugin-uni": "3.0.0-3090920231225001",
+ "@vue/runtime-core": "^3.2.45",
+ "axios": "^1.3.4",
+ "decimal.js": "^10.4.3",
+ "jwt-decode": "^3.1.2",
+ "sass": "^1.70.0",
+ "sass-loader": "^14.1.0",
+ "vite": "4.0.3",
+ "vue-clipboard2": "^0.3.3"
+ }
+}
diff --git a/password.txt b/password.txt
new file mode 100644
index 0000000..b79b823
--- /dev/null
+++ b/password.txt
@@ -0,0 +1,2 @@
+别名:testalias
+密码: wms3.0
\ No newline at end of file
diff --git a/shims-uni.d.ts b/shims-uni.d.ts
new file mode 100644
index 0000000..ed4adcf
--- /dev/null
+++ b/shims-uni.d.ts
@@ -0,0 +1,10 @@
+///
+import 'vue'
+
+declare module '@vue/runtime-core' {
+ type Hooks = App.AppInstance & Page.PageInstance;
+
+ interface ComponentCustomOptions extends Hooks {
+
+ }
+}
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..9128a34
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,62 @@
+
+
+
\ No newline at end of file
diff --git a/src/api/httpRequest3.js b/src/api/httpRequest3.js
new file mode 100644
index 0000000..e3e374f
--- /dev/null
+++ b/src/api/httpRequest3.js
@@ -0,0 +1,67 @@
+
+import storage from '../common/utils/storage'
+import config from '../static/config.js'
+
+function service(options = {}) {
+ var token = storage.getStorage(storage.constant.token)
+ var tenantId = 1
+ // if(getApp()!=undefined){
+ // tenantId = getApp().globalData.tenantId
+ // }
+
+ // if(getApp()!=undefined){
+ // requestUrl = getApp().globalData.request_url
+ // }
+ var requestUrl = ""
+ requestUrl =config.request_url
+
+ options.header = {
+ "content-type": "application/json",
+ "Authorization": "Bearer "+token,
+ "dataType":"json",
+ "tenant-id":tenantId
+ };
+ options.timeout = 10000
+
+ options.url = requestUrl+options.url
+
+ return new Promise((resolve, reject) => {
+ options.success = (res) => {
+ if (res ) {
+ if(res.statusCode == 200){
+ if(res.data.code==0){
+ resolve(res.data);
+ }else {
+ reject("系统异常:"+res.data.msg)
+ console.log("系统异常",res.data.msg)
+ }
+
+ }else {
+ reject("系统异常:"+ res.data.msg)
+ console.log("系统异常",res.data.msg)
+ }
+
+ } else {
+ reject("系统异常:"+res.data.msg)
+ console.log("系统异常",res.data.msg)
+ }
+ };
+ options.fail = (error) => {
+ var message = error.errMsg
+ if (message === 'Network Error') {
+ message = '接口连接异常'
+ } else if (message.includes('timeout')) {
+ message = '接口请求超时'
+ } else if (message.includes('Request failed with status code')) {
+ message = '接口' + message.substr(message.length - 3) + '异常'
+ }
+ reject("系统异常:"+message);
+ console.log("系统异常",message)
+ };
+ uni.request(options);
+ });
+ }
+
+
+
+ export default service;
diff --git a/src/api/request2.js b/src/api/request2.js
new file mode 100644
index 0000000..de9c0af
--- /dev/null
+++ b/src/api/request2.js
@@ -0,0 +1,3834 @@
+import request from './httpRequest3.js'
+import storage from '../common/utils/storage.js'
+import config from '../static/config.js'
+// const baseApi = "/api/admin-api"
+//公司地址
+// 本地地址
+const baseApi = ""
+/**
+ * 获取验证码
+ * @param {*}
+ */
+export function getCaptchaImage(params) {
+ return request({
+ url: baseApi + "/system/captcha/captchaImage",
+ method: "get",
+ data: params,
+ });
+}
+/**
+ * 登录方法
+ */
+export function login(username, password, code, uuid) {
+ return request({
+ url: baseApi + '/system/auth/login',
+ headers: {
+ isToken: false
+ },
+ method: 'post',
+ data: {
+ username,
+ password,
+ code,
+ uuid
+ }
+ })
+}
+/**
+ * 退出
+ */
+export function logout() {
+ return request({
+ url: baseApi + "/system/auth/logout",
+ method: "post",
+ data: {},
+ });
+}
+/**
+ * 获取登录用户的权限信息
+ */
+export function getPermissionInfo() {
+ return request({
+ url: baseApi + "/system/auth/get-permission-info",
+ method: "get",
+ data: {},
+ });
+}
+/**
+ * 获取租户信息
+ */
+export function getTenantInfo(name) {
+ var params = {
+ name: name,
+ pageNo: 1,
+ pageSize: 100,
+ }
+
+ return request({
+ url: baseApi + "/system/tenant/page",
+ method: "get",
+ data: params,
+ });
+}
+
+
+
+/**
+ * 获取登录用户信息
+ */
+export function getUserProfile() {
+ return request({
+ url: baseApi + '/system/user/profile/get',
+ method: 'get'
+ })
+}
+/**
+ * 修改个人用户密码
+ */
+export function updateUserPwd(oldPassword, newPassword) {
+ const data = {
+ oldPassword,
+ newPassword
+ }
+ return request({
+ url: baseApi + '/system/user/profile/update-password',
+ method: 'PUT',
+ params: data
+ })
+}
+
+/**
+ * 获取仓库代码
+ * @param {*}
+ *
+ */
+export function getWarehouseCodeList(pageNo, pageSize) {
+ return request({
+ url: baseApi + "/wms/warehouse/page?pageNo=" + pageNo + "&pageSize=" + pageSize,
+ method: "get",
+ data: {},
+ });
+}
+
+//获取产品标签信息inventorylabel
+export function getInventoryLabel(code) {
+
+ return request({
+ url: baseApi + "/api/pda/label/inventorylabel/by-code?code=" + code,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 获取消息列表
+ * @param {*}
+ *
+ */
+export function getMessageList(pageNo, pageSize) {
+ return request({
+ url: baseApi + "/system/notify-message/my-page?pageNo=" + pageNo + "&pageSize=" + pageSize,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 标记站内信为已读
+ * @param {*}
+ *
+ */
+export function setMessageUpdateRead(ids) {
+ return request({
+ url: baseApi + "/system/notify-message/update-read?ids=" + ids,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 标记所有站内信为已读
+ * @param {*}
+ *
+ */
+export function setAllMessageUpdateRead() {
+ return request({
+ url: baseApi + "/system/notify-message/update-all-read",
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 获取当前用户的未读站内信数量
+ * @param {*}
+ *
+ */
+export function getMessageUnreadCount() {
+ return request({
+ url: baseApi + "/system/notify-message/get-unread-count",
+ method: "get",
+ data: {},
+ });
+}
+
+
+
+/**
+ * 获取配置字典
+ * @param {*}
+ *
+ */
+export function getDictionaryItem(params) {
+ return request({
+ url: baseApi + "/system/dict-type/getDictByTypes",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 查询 客户信息
+ * @param {*} 物品代码
+ *
+ */
+export function getBasicCustomerList() {
+ return request({
+ url: baseApi + "/wms/customer/list",
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 根据业务代码查询业务类型
+ * @param {*} Code
+ *
+ */
+export function getBusinesstypeByCode(code) {
+ var params = {
+ code: code,
+ pageNo: 1,
+ pageSize: 100
+ }
+ return request({
+ url: baseApi + "/wms/businesstype/page",
+ method: "get",
+ data: params,
+ });
+}
+
+/**
+ * 按物料代码查询库存明细
+ * @param {*} itemCode
+ *
+ */
+
+export function getBalanceByItemCode(params) {
+ return request({
+ url: baseApi + "/wms/balance/page",
+ method: "get",
+ data: params,
+ });
+}
+
+/**
+ * 按物品查询预计入
+ * @param {*} itemCode
+ *
+ */
+export function getExpectinByItemcode(params) {
+ return request({
+ url: baseApi + "/wms/expectin/page",
+ method: "get",
+ data: params,
+ });
+}
+
+/**
+ * 按物品查询预计出
+ * @param {*} itemCode
+ *
+ */
+export function getExpectoutByItemcode(params) {
+ return request({
+ url: baseApi + "/wms/expectout/page",
+ method: "get",
+ data: params,
+ });
+}
+
+/**
+ * 按库位查询库存汇总
+ * @param {*}
+ *
+ */
+export function getBalanceByLocationcodeGroup(params) {
+ return request({
+ url: baseApi + "/wms/balance/page",
+ method: "get",
+ data: params,
+ });
+}
+
+/**
+ * 按库位查询库存明细
+ * @param {*}
+ */
+export function getBalanceByLocationcode(params) {
+
+ return request({
+ url: baseApi + "/wms/balance/page",
+ method: "get",
+ data: params,
+ });
+}
+
+/**
+ * 查询器具信息接口
+ * @param {*} number 器具代码
+ */
+export function getContainerByNumber(number) {
+ var params = {
+ number: number,
+ pageNo: 1,
+ pageSize: 100
+ }
+ return request({
+ url: baseApi + "/wms/container-main/page",
+ method: "get",
+ data: params,
+ });
+}
+
+
+/**
+ * 查询器具信息接口
+ * @param {*} number 器具代码
+ */
+export function getContainerDetailByNumber(number) {
+
+ return request({
+ url: baseApi + "/wms/container-main/getContainerByNumber?number=" + number,
+ method: "get",
+ data: {},
+ });
+}
+
+
+/**
+ * 按器具查询库存明细
+ * @param {*器具代码}
+ *
+ */
+export function getBalanceByContainerNumberGroup(params) {
+ return request({
+ url: baseApi + "/wms/balance/page",
+ method: "get",
+ data: params,
+ });
+}
+
+/**
+ * 按器具查询库存明细(无器具)
+ * @param {*器具代码}
+ *
+ */
+export function getBalanceByContainerNumber(params) {
+ return request({
+ url: baseApi + "/wms/balance/page",
+ method: "get",
+ data: params,
+ });
+}
+
+/**标签
+ *
+ * @param {*} header version
+ * 获取标签设置信息
+ */
+export function getLabelByHeader(header, version) {
+ var params = {
+ header: header,
+ version: version,
+ }
+ return request({
+ url: baseApi + "/wms/labeltype/getDetailsByHeader",
+ method: "get",
+ data: params,
+ });
+}
+
+/**包装
+ * 获取包装信息
+ * @param {*}
+ *
+ */
+export function getPackageByNumber(number) {
+ var params = {
+ number: number,
+ pageNo: 1,
+ pageSize: 100
+ }
+ return request({
+ url: baseApi + "/wms/package/page",
+ method: "get",
+ data: params,
+ });
+}
+
+/**包装
+ * 获取包装信息
+ * @param {*}
+ *
+ */
+export function getPackageListByNumber(number) {
+ var params = {
+ number: number,
+ pageNo: 1,
+ pageSize: 100
+ }
+ return request({
+ url: baseApi + "/wms/package/queryPackageInfo",
+ method: "get",
+ data: params,
+ });
+}
+
+
+
+/**
+ * 查询库位信息接口
+ * @param {*} code 库位代码
+ *
+ */
+export function getBasicLocationByCode(code) {
+ var parmas = {
+ code: code,
+ pageNo: 1,
+ pageSize: 100
+ }
+ return request({
+ url: baseApi + "/wms/location/page",
+ method: "get",
+ data: parmas,
+ });
+}
+
+
+/**
+ * 校验库位物料关系
+ * @param {*}
+ *
+ */
+export function validateItemAndLocation(parmas) {
+ return request({
+ url: baseApi + "/wms/location/validate",
+ method: "post",
+ data: parmas,
+ });
+}
+
+
+/**
+ * 查询上架推荐库位
+ * @param {*}
+ * supplierCode
+ * itemCode
+ * batch
+ * inventoryStatus
+ */
+
+export function getPutawayRecommendLocation(params) {
+ return request({
+ url: baseApi + "/wms/location/recommendLocation",
+ method: "post",
+ data: params,
+ });
+}
+
+
+
+/**
+ * 查询物品信息接口
+ * @param {*} code 物品代码
+ *
+ */
+export function getBasicItemByCode(itemCode) {
+ var params = {
+ code: itemCode,
+ pageNo: 1,
+ pageSize: 100
+ }
+ return request({
+ url: baseApi + "/wms/itembasic/page",
+ method: "get",
+ data: params,
+ });
+}
+
+/**
+ * 按物品查询库存汇总
+ * @param {*} itemCode
+ * /wms/balance/summary
+ */
+export function getBalanceSummary(params) {
+ return request({
+ url: baseApi + "/wms/balance/summary",
+ method: "get",
+ data: params,
+ });
+}
+
+/**
+ * 查询包装信息接口
+ * @param {*} itemCode 物品代码
+ *
+ */
+export function getItempackagingByItemcode(itemCode) {
+ return request({
+ url: baseApi + "/wms/itempackaging/page?itemCode=" + itemCode,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 查询生产线物料关系
+ * @param {*} productionLineCode 生产线code
+ *
+ */
+export function getProductionlineItem(params) {
+ return request({
+ url: baseApi + "/wms/productionlineitem/page",
+ method: "get",
+ data: params,
+ });
+}
+
+/**
+ * 通过物料查询包装规格
+ * @param {*} itemCode
+ *
+ */
+export function getPackUnitByItemCode(itemCode) {
+ var params = {
+ itemCode: itemCode,
+ pageNo: 1,
+ pageSize: 100
+ }
+ return request({
+ url: baseApi + "/wms/itempackage/page",
+ method: "get",
+ data: params,
+ });
+}
+
+/**
+ * 查询生产线-车间-工位
+ * @param {*}
+ *
+ */
+export function getWorkShopLineStation() {
+ return request({
+ url: baseApi + "/wms/issue-request-main/get-workshop-productionline-workstation",
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 查询客户物品
+ */
+export function getCustomerItemList(params) {
+ return request({
+ url: baseApi + "/wms/customeritem/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+
+
+/**
+ * 供应商发货
+ *
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getSupplierDeliverRecordList(params) {
+ return request({
+ url: baseApi + "/wms/supplierdeliver-record-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+/**
+ * 供应商发货 详情
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getSupplierDeliverRecordDetail(id) {
+ return request({
+ url: baseApi + "/wms/supplierdeliver-record-main/getSupplierdeliverRecordById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+
+/**
+ * 报检单查询 = request_inspect
+ * 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getInspectRequestList(params) {
+ return request({
+ url: baseApi + "/wms/inspect-request-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 检验单查询 详情
+ * 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getInspectRequestDetail(id) {
+ return request({
+ url: baseApi + "/wms/inspect-request-main/getInspectRequestById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 检验单申请 关闭任务
+ * @param {*} params
+ */
+export function inspectRequestClose(id) {
+ return request({
+ url: baseApi + "/wms/inspect-request-main/close?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 检验单申请 提交审批
+ * @param {*} params
+ */
+export function inspectRequestApprove(id) {
+ return request({
+ url: baseApi + "/wms/inspect-request-main/submit?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 检验单申请 提交审批通过
+ * @param {*} params
+ */
+
+export function inspectRequestApproveAgree(id) {
+ return request({
+ url: baseApi + "/wms/inspect-request-main/agree?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 检验单申请 审批驳回
+ * @param {*} params
+ */
+export function inspectRequestApproveRefused(id) {
+ return request({
+ url: baseApi + "/wms/inspect-request-main/refused?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 检验单申请 处理
+ * @param {*} params
+ */
+export function inspectRequestHandle(id) {
+ return request({
+ url: baseApi + "/wms/inspect-request-main/handle?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 检验单申请 重新添加
+ * @param {*} params
+ */
+export function inspectRequestAddAgain(id) {
+ return request({
+ url: baseApi + "/wms/inspect-request-main/reAdd?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 采购收货 任务
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getPurchaseReceiptJobList(params) {
+ return request({
+ url: baseApi + "/wms/purchasereceipt-job-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 采购收货 任务承接
+ * @param {*} id
+ *
+ */
+export function takePurchaseReceiptJob(id) {
+ return request({
+ url: baseApi + "/wms/purchasereceipt-job-main/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 采购收货 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakePurchaseReceiptJob(id) {
+ return request({
+ url: baseApi + "/wms/purchasereceipt-job-main/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 采购收货 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+export function getPurchaseReceiptJobDetail(id) {
+ return request({
+ url: baseApi + "/wms/purchasereceipt-job-main/getPurchasereceiptJobyId?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 采购收货 任务提交
+ * @param {*} 任务id
+ *
+ */
+export function purchaseReceiptJobSubmit(params) {
+ return request({
+ url: baseApi + "/wms/purchasereceipt-job-main/execute",
+ method: "put",
+ data: params,
+ });
+}
+
+
+
+/**
+ * 采购退货
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * 获取任务明细
+ */
+export function getPurchaseReturnJobList(params) {
+ return request({
+ url: baseApi + "/wms/purchasereturn-job-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 采购退货 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+
+export function getPurchasereturnJobDetail(id) {
+ return request({
+ url: baseApi + "/wms/purchasereturn-job-main/getReturnJobById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 采购退货 承接任务
+ * @param {*} id
+ *
+ */
+export function takePurchasereturnJob(id) {
+ return request({
+ url: baseApi + "/wms/purchasereturn-job-main/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 采购退货 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakePurchasereturnJob(id) {
+ return request({
+ url: baseApi + "/wms/purchasereturn-job-main/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 采购退货 任务提交
+ * @param {*} params
+ */
+export function purchaseReturnJobsubmit(params) {
+ return request({
+ url: baseApi + "/wms/purchasereturn-job-main/execute",
+ method: "put",
+ data: params,
+ });
+}
+
+/**
+ * 采购退货 申请列表
+ * 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getPurchaseReturnRequestList(params) {
+ return request({
+ url: baseApi + "/wms/purchasereturn-request-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 采购退货 获取申请任务明细
+ * @param {*} id 任务id
+ *
+ */
+export function getPurchaseReturnRequestDetail(id) {
+ return request({
+ url: baseApi + "/wms/purchasereturn-request-main/getPurchasereturnRequestById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 采购退货申请 关闭任务
+ * @param {*} params
+ */
+export function purchaseReturnRequestClose(id) {
+ return request({
+ url: baseApi + "/wms/purchasereturn-request-main/close?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 采购退货申请 提交审批
+ * @param {*} params
+ */
+export function purchaseReturnRequestApprove(id) {
+ return request({
+ url: baseApi + "/wms/purchasereturn-request-main/submit?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 采购退货申请 提交审批通过
+ * @param {*} params
+ */
+export function purchaseReturnRequestApproveAgree(id) {
+ return request({
+ url: baseApi + "/wms/purchasereturn-request-main/agree?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 采购退货申请 审批驳回
+ * @param {*} params
+ */
+export function purchaseReturnRequestApproveRefused(id) {
+ return request({
+ url: baseApi + "/wms/purchasereturn-request-main/refused?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 采购退货申请 处理
+ * @param {*} params
+ */
+export function purchaseReturnRequestHandle(id) {
+ return request({
+ url: baseApi + "/wms/purchasereturn-request-main/handle?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 采购退货申请 重新添加
+ * @param {*} params
+ */
+export function purchaseReturnRequestAddAgain(id) {
+ return request({
+ url: baseApi + "/wms/purchasereturn-request-main/reAdd?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+
+
+/**
+ * 采购退货申请 提交
+ * @param {*} params
+ */
+export function purchaseReturnRequestCreate(params) {
+ return request({
+ url: baseApi + "/wms/purchasereturn-request-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+
+
+/**
+ * 采购退货 记录提交
+ * @param {*} params
+ */
+export function purchaseReturnRecordSubmit(params) {
+ return request({
+ url: baseApi + "/wms/purchasereturn-record-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+
+
+/**
+ * 到货检验 任务
+ *
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getInspectJobList(params) {
+ return request({
+ url: baseApi + "/wms/inspect-job-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 到货检验 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+export function getInspectJobDetail(id) {
+ return request({
+ url: baseApi + "/wms/inspect-job-main/getInspectJobById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 到货检验 任务承接
+ * @param {*} id
+ *
+ */
+export function takeInspectJob(id) {
+ return request({
+ url: baseApi + "/wms/inspect-job-main/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 到货检验 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakeInspectJob(id) {
+ return request({
+ url: baseApi + "/wms/inspect-job-main/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 到货检验 任务提交
+ * @param {*} 任务id
+ *
+ */
+export function inspectJobSubmit(params) {
+ return request({
+ url: baseApi + "/wms/inspect-job-main/execute",
+ method: "put",
+ data: params,
+ });
+}
+
+//根据检验记录单号创建上架申请
+export function createPutAwayRequest(number) {
+ return request({
+ url: baseApi + "/wms/inspect-record-main/createPutAwayRequest?number=" + number,
+ method: "post",
+ data: {},
+ });
+}
+
+
+/**
+ * 采购上架 任务
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getPutawayJobList(params) {
+ return request({
+ url: baseApi + "/wms/putaway-job-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 采购上架 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+export function getPutawayJobDetail(id) {
+ return request({
+ url: baseApi + "/wms/putaway-job-main/getPutawayJobById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 采购上架 承接任务
+ * @param {*} id
+ *
+ */
+export function takePutawayJob(id) {
+ return request({
+ url: baseApi + "/wms/putaway-job-main/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 采购上架 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakePutawayJob(id) {
+ return request({
+ url: baseApi + "/wms/putaway-job-main/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 采购上架 任务提交
+ * @param {*} params
+ */
+export function putawayJobSubmit(params) {
+ return request({
+ url: baseApi + "/wms/putaway-job-main/execute",
+ method: "put",
+ data: params,
+ });
+}
+
+/**
+ * 采购上架申请 获取任务列表
+ * 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getPutawayRequestList(params) {
+ return request({
+ url: baseApi + "/wms/putaway-request-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 采购上架申请 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+export function getPutawayRequestDetail(id) {
+ return request({
+ url: baseApi + "/wms/putaway-request-main/getPutawayRequestById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 采购上架申请 提交
+ * @param {*} params
+ */
+export function putawayRequestSubmit(params) {
+ return request({
+ url: baseApi + "/wms/putaway-request-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 采购上架申请 关闭任务
+ * @param {*} params
+ */
+export function putawayRequestClose(id) {
+ return request({
+ url: baseApi + "/wms/putaway-request-main/close?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 采购上架申请 提交审批
+ * @param {*} params
+ */
+export function putawayRequestApprove(id) {
+ return request({
+ url: baseApi + "/wms/putaway-request-main/submit?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 采购上架申请 提交审批通过
+ * @param {*} params
+ */
+export function putawayRequestApproveAgree(id) {
+ return request({
+ url: baseApi + "/wms/putaway-request-main/agree?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 采购上架申请 审批驳回
+ * @param {*} params
+ */
+export function putawayRequestApproveRefused(id) {
+ return request({
+ url: baseApi + "/wms/putaway-request-main/refused?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 采购上架申请 处理
+ * @param {*} params
+ */
+export function putawayRequestHandle(id) {
+ return request({
+ url: baseApi + "/wms/putaway-request-main/handle?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 采购上架申请 重新添加
+ * @param {*} params
+ */
+export function putawayRequestAddAgain(id) {
+ return request({
+ url: baseApi + "/wms/putaway-request-main/reAdd?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+
+
+/**
+ * 采购上架记录 提交
+ * @param {*} params
+ */
+export function putawayRecordSubmit(params) {
+ return request({
+ url: baseApi + "/wms/putaway-record-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 发料任务 列表
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getIssueJobList(params) {
+ return request({
+ url: baseApi + "/wms/issue-job-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 发料任务明细
+ * @param {*} 任务id
+ *
+ */
+export function getIssueJobDetail(id) {
+ return request({
+ url: baseApi + "/wms/issue-job-main/getIssueJobById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+
+/**
+ * 获取推荐明细接口
+ * @param {*} 任务id
+ * /wms/issue-request-main
+ */
+export function getBalanceByBatchOffShelf(itemCode, qty) {
+ return request({
+ url: baseApi + "/wms/issue-request-main/getBalanceByBatchOffShelf?itemCode=" + itemCode + "&&qty=" +
+ qty,
+ method: "get",
+ data: {},
+ });
+}
+
+
+/**
+ * 发料 任务承接
+ * @param {*} id
+ *
+ */
+export function takeIssueJob(id) {
+ return request({
+ url: baseApi + "/wms/issue-job-main/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 发料 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakeIssueJob(id) {
+ return request({
+ url: baseApi + "/wms/issue-job-main/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 发料任务 提交
+ * @param {*} params
+ */
+export function issueJobSubmit(params) {
+ return request({
+ url: baseApi + "/wms/issue-job-main/execute",
+ method: "put",
+ data: params,
+ });
+}
+
+
+/**
+ * 生产收料 任务列表
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getProductionReceiptJobList(params) {
+ return request({
+ url: baseApi + "/wms/productionreceipt-job-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 生产收料 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+export function getProductionReceiptJobDetail(id) {
+ return request({
+ url: baseApi + "/wms/productionreceipt-job-main/getProductionreceiptJobById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 生产收料 任务承接
+ * @param {*} id
+ *
+ */
+export function takeProductionReceiptJob(id) {
+ return request({
+ url: baseApi + "/wms/productionreceipt-job-main/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 生产收料 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakeProductionReceiptJob(id) {
+ return request({
+ url: baseApi + "/wms/productionreceipt-job-main/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+
+/**
+ * 生产收料任务 提交
+ * @param {*} params
+ */
+export function productionReceiptJobSubmit(params) {
+ return request({
+ url: baseApi + "/wms/productionreceipt-job-main/execute",
+ method: "put",
+ data: params,
+ });
+}
+
+/**
+ * 生产收料记录 提交
+ * @param {*} params
+ */
+export function productionReceiptRecordSubmit(params) {
+ return request({
+ url: baseApi + "/wms/productreceipt-record-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+
+
+/**
+ * 库存转移 任务
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getInventoryMoveJobList(params) {
+ return request({
+ url: baseApi + "/wms/inventorymove-job-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 库存转移 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+
+export function getInventoryMoveJobDetail(id) {
+ return request({
+ url: baseApi + "/wms/inventorymove-job-main/getInventorymoveJobById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 库存转移任务 任务承接
+ * @param {*} id
+ *
+ */
+export function takeInventoryMoveJob(id) {
+ return request({
+ url: baseApi + "/wms/inventorymove-job-main/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 库存转移任务 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakeInventoryMoveJob(id) {
+ return request({
+ url: baseApi + "/wms/inventorymove-job-main/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+
+/**
+ * 库存转移 任务提交
+ * @param {*} 任务id
+ *
+ */
+export function inventoryMoveSubmit(params) {
+ return request({
+ url: baseApi + "/wms/inventorymove-job-main/execute",
+ method: "put",
+ data: params,
+ });
+}
+
+/**
+ * 库存转移记录 提交
+ * @param {*} 任务id
+ *
+ */
+export function inventoryMoveRecordSubmit(params) {
+ return request({
+ url: baseApi + "/wms/inventorymove-record-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 盘点 任务
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getCountJobList(params) {
+ return request({
+ url: baseApi + "/wms/count-job-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 盘点 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+export function getCountJobDetail(id) {
+ return request({
+ url: baseApi + "/wms/count-job-main/getCountJobById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 盘点任务 任务承接
+ * @param {*} id
+ *
+ */
+export function takeCountJob(id) {
+ return request({
+ url: baseApi + "/wms/count-job-main/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 盘点任务 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakeCountJob(id) {
+ return request({
+ url: baseApi + "/wms/count-job-main/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 盘点任务 提交
+ * @param {*} 任务id
+ *
+ */
+export function countJobSubmit(params) {
+ return request({
+ url: baseApi + "/wms/count-job-main/execute",
+ method: "put",
+ data: params,
+ });
+}
+
+/**
+ * 计划外入库 任务
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取任务列表
+ * @param {*}
+ */
+export function getUnPlannedReceiptJobList(params) {
+ return request({
+ url: baseApi + "/wms/unplannedreceipt-job-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 计划外入库 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+export function getUnPlannedReceiptJobDetail(id) {
+ return request({
+ url: baseApi + "/wms/unplannedreceipt-job-main/getUnplannedreceiptJobById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+
+/**
+ * 计划外入库任务 任务承接
+ * @param {*} id
+ *
+ */
+export function takeUnPlannedReceiptJob(id) {
+ return request({
+ url: baseApi + "/wms/unplannedreceipt-job-main/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 计划外入库 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakeUnPlannedReceiptJob(id) {
+ return request({
+ url: baseApi + "/wms/unplannedreceipt-job-main/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 计划外入库任务 提交
+ * @param {*} params
+ */
+export function unPlannedReceiptJobSubmit(params) {
+ return request({
+ url: baseApi + "/wms/unplannedreceipt-job-main/execute",
+ method: "put",
+ data: params,
+ });
+}
+
+/**
+ * 计划外入库申请 创建
+ * @param {*} params
+ */
+export function unPlannedReceiptRequestCreate(params) {
+ return request({
+ url: baseApi + "/wms/unplannedreceipt-request-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 计划外入库申请 提交审批
+ * @param {*} params
+ */
+export function unPlannedReceiptRequestApprove(id) {
+ return request({
+ url: baseApi + "/wms/unplannedreceipt-request-main/submit?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 计划外入库申请 关闭
+ * @param {*} params
+ */
+export function unPlannedReceiptRequestClose(id) {
+ return request({
+ url: baseApi + "/wms/unplannedreceipt-request-main/close?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 计划外入库申请 审批通过
+ * @param {*} params
+ */
+export function unPlannedReceiptRequestApproveAgree(id) {
+ return request({
+ url: baseApi + "/wms/unplannedreceipt-request-main/agree?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 计划外入库申请 审批驳回
+ * @param {*} params
+ */
+export function unPlannedReceiptRequestApproveRefused(id) {
+ return request({
+ url: baseApi + "/wms/unplannedreceipt-request-main/refused?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 计划外入库申请 处理
+ * @param {*} params
+ */
+export function unPlannedReceiptRequestHandle(id) {
+ return request({
+ url: baseApi + "/wms/unplannedreceipt-request-main/handle?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 计划外入库申请 重新添加
+ * @param {*} params
+ */
+export function unPlannedReceiptRequestAddAgain(id) {
+ return request({
+ url: baseApi + "/wms/unplannedreceipt-request-main/reAdd?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+
+/**
+ * 计划外入库记录 提交
+ * @param {*} params
+ */
+export function unPlannedReceiptRecordbSubmit(params) {
+ return request({
+ url: baseApi + "/wms/unplannedreceipt-record-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 计划外出库 任务
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取任务列表
+ * @param {*}
+ */
+export function getUnPlannedIssueJobList(params) {
+ return request({
+ url: baseApi + "/wms/unplannedissue-job-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 计划外出库 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+export function getUnPlannedIssueJobDetail(id) {
+ return request({
+ url: baseApi + "/wms/unplannedissue-job-main/getUnplannedissueJobById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 计划外出库任务 承接
+ * @param {*} id
+ *
+ */
+export function takeUnPlannedIssueJob(id) {
+ return request({
+ url: baseApi + "/wms/unplannedissue-job-main/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 计划外出库任务 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakeUnPlannedIssueJob(id) {
+ return request({
+ url: baseApi + "/wms/unplannedissue-job-main/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 计划外出库任务 提交
+ * @param {*} params
+ */
+
+export function unPlannedIssueJobSubmit(params) {
+ return request({
+ url: baseApi + "/wms/unplannedissue-job-main/execute",
+ method: "put",
+ data: params,
+ });
+}
+
+
+/**
+ * 计划外出库申请 提交
+ * @param {*} params
+ */
+export function unPlannedIssueRequestCreate(params) {
+ return request({
+ url: baseApi + "/wms/unplannedissue-request-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 计划外出库申请 提交审批
+ * @param {*} params
+ */
+export function unPlannedIssueRequestApprove(id) {
+ return request({
+ url: baseApi + "/wms/unplannedissue-request-main/submit?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 计划外出库申请 关闭
+ * @param {*} params
+ */
+export function unPlannedIssueRequestClose(id) {
+ return request({
+ url: baseApi + "/wms/unplannedissue-request-main/close?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 计划外出库申请 审批通过
+ * @param {*} params
+ */
+export function unPlannedIssueRequestApproveAgree(id) {
+ return request({
+ url: baseApi + "/wms/unplannedissue-request-main/agree?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 计划外出库申请 审批驳回
+ * @param {*} params
+ */
+export function unPlannedIssueRequestApproveRefused(id) {
+ return request({
+ url: baseApi + "/wms/unplannedissue-request-main/refused?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 计划外出库申请 处理
+ * @param {*} params
+ */
+export function unPlannedIssueRequestHandle(id) {
+ return request({
+ url: baseApi + "/wms/unplannedissue-request-main/handle?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 计划外出库申请 重新添加
+ * @param {*} params
+ */
+
+export function unPlannedIssueRequestAddAgain(id) {
+ return request({
+ url: baseApi + "/wms/unplannedissue-request-main/reAdd?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+
+/**
+ * 计划外出库记录 提交
+ * @param {*} params
+ */
+export function unPlannedIssueRecordSubmit(params) {
+ return request({
+ url: baseApi + "/wms/unplannedissue-record-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 制品收货 任务
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getProductReceiptJobList(params) {
+ return request({
+ url: baseApi + "/wms/productreceipt-job-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 制品收货 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+export function getProductReceiptJobDetail(id) {
+ return request({
+ url: baseApi + "/wms/productreceipt-job-main/getProductreceiptJobById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 制品收货任务 承接
+ * @param {*} id
+ *
+ */
+export function takeProductReceiptJob(id) {
+ return request({
+ url: baseApi + "/wms/productreceipt-job-main/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 制品收货任务 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakeProductReceiptJob(id) {
+ return request({
+ url: baseApi + "/wms/productreceipt-job-main/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 制品收货任务 提交
+ * @param {*} params
+ */
+export function productReceiptJobsubmit(params) {
+ return request({
+ url: baseApi + "/wms/productreceipt-job-main/execute",
+ method: "put",
+ data: params,
+ });
+}
+
+/**
+ * 制品收货记录 提交
+ * @param {*} params
+ */
+export function productReceiptRecordsubmit(params) {
+ return request({
+ url: baseApi + "/wms/productreceipt-record-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+
+
+/**
+ * 制品上架 任务
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getProductPutawayJobList(params) {
+ return request({
+ url: baseApi + "/wms/productputaway-job-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 制品上架 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+export function getProductPutawayJobDetail(id) {
+ return request({
+ url: baseApi + "/wms/productputaway-job-main/getProductputawayJobById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 制品上架任务 承接
+ * @param {*} id
+ *
+ */
+export function takeProductPutawayJob(id) {
+ return request({
+ url: baseApi + "/wms/productputaway-job-main/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 制品上架任务 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakeProductPutawayJob(id) {
+ return request({
+ url: baseApi + "/wms/productputaway-job-main/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+
+/**
+ * 制品上架任务 提交
+ * @param {*} 任务id
+ *
+ */
+export function productPutawayJobSubmit(params) {
+ return request({
+ url: baseApi + "/wms/productputaway-job-main/execute",
+ method: "put",
+ data: params,
+ });
+}
+
+
+
+
+
+/**
+ * 制品上架记录 提交
+ * @param {*} 任务id
+ *
+ */
+export function productPutawayRecordSubmit(params) {
+ return request({
+ url: baseApi + "/wms/productputaway-record-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+
+/**
+ * 直接备货 任务
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getStockUpJobList(params) {
+ return request({
+ url: baseApi + "/wms/stockup-main-job/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 直接备货 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+export function getStockUpJobDetail(id) {
+ return request({
+ url: baseApi + "/wms/stockup-main-job/getStockupMainJobById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 直接备货任务 承接
+ * @param {*} id
+ *
+ */
+export function takeStockUpJob(id) {
+ return request({
+ url: baseApi + "/wms/stockup-main-job/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 直接备货任务 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakeStockUpJob(id) {
+ return request({
+ url: baseApi + "/wms/stockup-main-job/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 直接备货任务 提交
+ * @param {*} params
+ */
+export function stockUpJobsubmit(params) {
+ return request({
+ url: baseApi + "/wms/stockup-main-job/execute",
+ method: "put",
+ data: params,
+ });
+}
+
+
+/**
+ * 制品拆解 任务
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getProductDismantleJobList(params) {
+ return request({
+ url: baseApi + "/wms/productdismantle-job-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 制品拆解 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+export function getProductDismantleJobDetail(id) {
+ return request({
+ url: baseApi + "/wms/productdismantle-job-main/getProductdismantleJobById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 制品拆解 任务承接
+ * @param {*} id
+ *
+ */
+export function takeProductDismantleJob(id) {
+ return request({
+ url: baseApi + "/wms/purchasereceipt-job-main/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 制品拆解 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakeProductDismantleJob(id) {
+ return request({
+ url: baseApi + "/wms/purchasereceipt-job-main/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 制品拆解 任务提交
+ * @param {*} 任务id
+ *
+ */
+export function productDismantleJobSubmit(params) {
+ return request({
+ url: baseApi + "/wms/purchasereceipt-job-main/abandon",
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 制品拆解 任务提交
+ * @param {*} 任务id
+ *
+ */
+export function productDismantleRecordSubmit(params) {
+ return request({
+ url: baseApi + "/wms/purchasereceipt-job-main/abandon",
+ method: "put",
+ data: params,
+ });
+}
+
+/**
+ * 制品发货 任务
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getDeliverJobList(params) {
+ return request({
+ url: baseApi + "/wms/deliver-job-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 制品发货 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+export function getDeliverDetail(id) {
+ return request({
+ url: baseApi + "/wms/deliver-job-main/getDeliverJobById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 制品发货任务 承接
+ * @param {*} id
+ *
+ */
+export function takeDeliverJob(id) {
+ return request({
+ url: baseApi + "/wms/deliver-job-main/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 制品发货任务 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakeDeliverJob(id) {
+ return request({
+ url: baseApi + "/wms/deliver-job-main/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+
+/**
+ * 制品发货 任务提交
+ * @param {*} 任务id
+ *
+ */
+
+export function deliverJobSubmit(params) {
+ return request({
+ url: baseApi + "/wms/deliver-job-main/execute",
+ method: "put",
+ data: params,
+ });
+}
+
+
+/**
+ * 制品发货申请
+ * 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getDeliverRequestList(params) {
+ return request({
+ url: baseApi + "/wms/deliver-request-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 制品发货申请 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+export function getDeliverRequestDetail(id) {
+ return request({
+ url: baseApi + "/wms/deliver-request-main/getDeliverRequestById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 制品发货申请 提交
+ * @param {*} params
+ */
+export function deliverRequestSubmit(params) {
+ return request({
+ url: baseApi + "/wms/deliver-request-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 制品发货申请 关闭任务
+ * @param {*} params
+ */
+export function deliverRequestClose(id) {
+ return request({
+ url: baseApi + "/wms/deliver-request-main/close?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 制品发货申请 提交审批
+ * @param {*} params
+ */
+export function deliverRequestApprove(id) {
+ return request({
+ url: baseApi + "/wms/deliver-request-main/submit?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 制品发货申请 提交审批通过
+ * @param {*} params
+ */
+export function deliverRequestApproveAgree(id) {
+ return request({
+ url: baseApi + "/wms/deliver-request-main/agree?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 制品发货申请 审批驳回
+ * @param {*} params
+ */
+export function deliverRequestApproveRefused(id) {
+ return request({
+ url: baseApi + "/wms/deliver-request-main/refused?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 制品发货申请 处理
+ * @param {*} params
+ */
+export function deliverRequestHandle(id) {
+ return request({
+ url: baseApi + "/wms/deliver-request-main/handle?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 制品发货申请 重新添加
+ * @param {*} params
+ */
+export function deliverRequestAddAgain(id) {
+ return request({
+ url: baseApi + "/wms/deliver-request-main/reAdd/reAdd?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 制品发货记录 提交
+ * @param {*} params
+ */
+export function deliverRecordSubmit(params) {
+ return request({
+ url: baseApi + "/wms/deliver-record-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 客户退货 任务
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getCustomerReturnJobList(params) {
+ return request({
+ url: baseApi + "/wms/customerreturn-job-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 客户退货 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+export function getCustomerReturnJobDetail(id) {
+ return request({
+ url: baseApi + "/wms/customerreturn-job-main/getCustomerreturnJobById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+
+/**
+ * 客户退货任务 承接
+ * @param {*} id
+ *
+ */
+export function takeCustomerReturnJob(id) {
+ return request({
+ url: baseApi + "/wms/customerreturn-job-main/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 客户退货任务 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakeCustomerReturnJob(id) {
+ return request({
+ url: baseApi + "/wms/customerreturn-job-main/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 客户退货任务 提交
+ * @param {*} 任务id
+ *
+ */
+export function customerReturnJobSubmit(params) {
+ return request({
+ url: baseApi + "/wms/customerreturn-job-main/execute",
+ method: "put",
+ data: params,
+ });
+}
+
+/**
+ * 客户退货申请
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getCustomerReturnRequestList(params) {
+ return request({
+ url: baseApi + "/wms/customerreturn-request-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+
+/**
+ * 客户退货申请 任务明细
+ * @param {*} id 任务id
+ *
+ */
+
+export function getCustomerReturnRequestDetail(id) {
+ return request({
+ url: baseApi + "/wms/customerreturn-request-main/getCustomerreturnRequestById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+
+/**
+ * 客户退货申请 提交
+ * @param {*} params
+ */
+export function customerReturnRequestSubmit(params) {
+ return request({
+ url: baseApi + "/wms/customerreturn-request-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 客户退货申请 关闭任务
+ * @param {*} params
+ */
+export function customerReturnRequestClose(id) {
+ return request({
+ url: baseApi + "/wms/customerreturn-request-main/close?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 客户退货申请 提交审批
+ * @param {*} params
+ */
+export function customerReturnRequestApprove(id) {
+ return request({
+ url: baseApi + "/wms/customerreturn-request-main/submit?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 客户退货申请 提交审批通过
+ * @param {*} params
+ */
+export function customerReturnRequestApproveAgree(id) {
+ return request({
+ url: baseApi + "/wms/customerreturn-request-main/agree?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 客户退货申请 审批驳回
+ * @param {*} params
+ */
+export function customerReturnRequestApproveRefused(id) {
+ return request({
+ url: baseApi + "/wms/customerreturn-request-main/refused?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 客户退货申请 处理
+ * @param {*} params
+ */
+export function customerReturnRequestHandle(id) {
+ return request({
+ url: baseApi + "/wms/customerreturn-request-main/handle?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 客户退货申请 重新添加
+ * @param {*} params
+ */
+export function customerReturnRequestAddAgain(id) {
+ return request({
+ url: baseApi + "/wms/customerreturn-request-main/reAdd?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 客户退货 记录提交
+ * @param {*} params
+ */
+export function customerReturnRecordSubmit(params) {
+ return request({
+ url: baseApi + "/wms/customerreturn-record-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 调拨入库 任务
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getTransferReceiptJobList(params) {
+ return request({
+ url: baseApi + "/wms/transferreceipt-job-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 调拨入库 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+export function getTransferReceiptJobDetail(id) {
+ return request({
+ url: baseApi + "/wms/transferreceipt-job-main/getTransferreceiptJobById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+
+/**
+ * 调拨入库任务 承接
+ * @param {*} id
+ *
+ */
+export function takeTransferReceiptJob(id) {
+ return request({
+ url: baseApi + "/wms/transferreceipt-job-main/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 调拨入库 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakeTransferReceiptJob(id) {
+ return request({
+ url: baseApi + "/wms/transferreceipt-job-main/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+
+/**
+ * 调拨入库任务 提交
+ * @param {*} 任务id
+ *
+ */
+export function transferReceiptJobSubmit(params) {
+ return request({
+ url: baseApi + "/wms/transferreceipt-job-main/execute",
+ method: "put",
+ data: params,
+ });
+}
+
+/**
+ * 调拨入库记录 提交
+ * @param {*} id
+ *
+ */
+export function transferReceiptRecordSubmit(params) {
+ return request({
+ url: baseApi + "/wms/transferreceipt-record-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 调拨出库 任务列表
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getTransferIssueJobList(params) {
+ return request({
+ url: baseApi + "/wms/transferissue-job-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 调拨出库 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+export function getTransferIssueJobDetail(id) {
+ return request({
+ url: baseApi + "/wms/transferissue-job-main/getTransferissueJobById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 调拨出库任务 承接
+ * @param {*} id
+ *
+ */
+export function takeTransferIssueJob(id) {
+ return request({
+ url: baseApi + "/wms/transferissue-job-main/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 调拨出库任务 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakeTransferIssueJob(id) {
+ return request({
+ url: baseApi + "/wms/transferissue-job-main/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 调拨出库任务 提交
+ * @param {*} 任务id
+ *
+ */
+export function transferIssueJobSubmit(params) {
+ return request({
+ url: baseApi + "/wms/transferissue-job-main/execute",
+ method: "put",
+ data: params,
+ });
+}
+
+/**
+ * 调拨出库记录 提交
+ * @param {*}
+ *
+ */
+export function transferIssueRecordSubmit(params) {
+ return request({
+ url: baseApi + "/wms/transferissue-record-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+
+/**
+ * 制品上架申请
+ * 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getProductPutawayRequestList(params) {
+ return request({
+ url: baseApi + "/wms/productputaway-request-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 制品上架申请 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+export function getProductPutawayRequestDetail(id) {
+ return request({
+ url: baseApi + "/wms/productputaway-request-main/getProductputawayRequestById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 制品上架申请 提交
+ * @param {*} params
+ */
+export function productPutawayRequestSubmit(params) {
+ return request({
+ url: baseApi + "/wms/productputaway-request-main/create",
+ method: "post",
+ data: params,
+ });
+}
+/**
+ * 制品上架申请 处理
+ * @param {*} params
+ */
+export function productPutawayRequestHandle(id) {
+ return request({
+ url: baseApi + "/wms/productputaway-request-main/handle?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 制品上架申请 重新添加
+ * @param {*} params
+ */
+export function productPutawayRequestAddAgain(id) {
+ return request({
+ url: baseApi + "/wms/productputaway-request-main/reAdd?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 制品上架申请 提交审批
+ * @param {*} params
+ */
+export function productPutawayRequestApprove(id) {
+ return request({
+ url: baseApi + "/wms/productputaway-request-main/submit?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 制品上架申请 提交审批通过
+ * @param {*} params
+ */
+export function productPutawayRequestApproveAgree(id) {
+ return request({
+ url: baseApi + "/wms/productputaway-request-main/agree?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 制品上架申请 审批驳回
+ * @param {*} params
+ */
+export function productPutawayRequestApproveRefused(id) {
+ return request({
+ url: baseApi + "/wms/productputaway-request-main/refused?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 制品上架申请 关闭任务
+ * @param {*} params
+ */
+export function productPutawayRequestClose(id) {
+ return request({
+ url: baseApi + "/wms/productputaway-request-main/close?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 发料申请列表
+ * @param {*} params
+ */
+export function getIssueRequestList(params) {
+ return request({
+ url: baseApi + "/wms/issue-request-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 发料申请明细
+ * @param {*} id
+ */
+export function getIssueRequestDetail(id) {
+ return request({
+ url: baseApi + "/wms/issue-request-main/getIssueRequestById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 发料申请 提交
+ * @param {*} params
+ */
+export function issueRequestSubmit(params) {
+ return request({
+ url: baseApi + "/wms/issue-request-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 发料申请 处理
+ * @param {*} params
+ */
+export function issueRequestHandle(id) {
+ return request({
+ url: baseApi + "/wms/issue-request-main/handle?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+
+/**
+ * 发料申请 提交审批
+ * @param {*} params
+ */
+export function issueRequestSubmitApprove(id) {
+ return request({
+ url: baseApi + "/wms/issue-request-main/submit?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 发料申请 审批通过
+ * @param {*} params
+ */
+export function issueRequestSubmitApproveAgree(id) {
+ return request({
+ url: baseApi + "/wms/issue-request-main/agree?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 发料申请 审批驳回
+ * @param {*} params
+ */
+export function issueRequestSubmitApproveRefused(id) {
+ return request({
+ url: baseApi + "/wms/issue-request-main/refused?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 发料申请 申请关闭
+ * @param {*} params
+ */
+export function issueRequestClose(id) {
+ return request({
+ url: baseApi + "/wms/issue-request-main/close?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 发料申请 重新添加
+ * @param {*} params
+ */
+export function issueRequestAddAgain(id) {
+ return request({
+ url: baseApi + "/wms/issue-request-main/reAdd?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 发料记录 提交
+ * @param {*} params
+ */
+export function issueRecordSubmit(params) {
+ return request({
+ url: baseApi + "/wms/issue-record-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+
+
+/**
+ * 生产退料 任务获取任务列表
+ * 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getProductionreturnJobList(params) {
+ return request({
+ url: baseApi + "/wms/productionreturn-job-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 生产退料任务 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+export function getProductionReturnJobDetail(id) {
+ return request({
+ url: baseApi + "/wms/productionreturn-job-main/getProductionreturnJobById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+
+/**
+ * 生产退料 承接任务
+ * @param {*} id
+ *
+ */
+export function takeProductionReturnJob(id) {
+ return request({
+ url: baseApi + "/wms/productionreturn-job-main/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 生产退料 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakeProductionReturnJob(id) {
+ return request({
+ url: baseApi + "/wms/productionreturn-job-main/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 生产退料 任务提交
+ * @param {*} 任务id
+ *
+ */
+export function productionReturnJobSubmit(params) {
+ return request({
+ url: baseApi + "/wms/productionreturn-job-main/execute",
+ method: "put",
+ data: params,
+ });
+}
+
+/**
+ * 生产退料申请 获取任务列表
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getProductionReturnRequestList(params) {
+ return request({
+ url: baseApi + "/wms/productionreturn-request-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 生产退料申请 获取申请明细
+ * @param {*} id
+ *
+ */
+export function getProductionReturnRequestDetail(id) {
+ return request({
+ url: baseApi + "/wms/productionreturn-request-main/getProductionreturnRequestById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+
+/**
+ * 生产退料申请 处理
+ * @param {*} id
+ *
+ */
+export function productionReturnRequestHandle(id) {
+ return request({
+ url: baseApi + "/wms/productionreturn-request-main/handle?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 生产退料申请 提交审批
+ * @param {*} id
+ *
+ */
+export function productionReturnRequestSubmitApprove(id) {
+ return request({
+ url: baseApi + "/wms/productionreturn-request-main/submit?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 生产退料申请 审批通过
+ * @param {*} id
+ *
+ */
+
+export function productionReturnRequestSubmitApproveAgree(id) {
+ return request({
+ url: baseApi + "/wms/productionreturn-request-main/agree?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 生产退料申请 审批驳回
+ * @param {*} id
+ *
+ */
+export function productionReturnRequestSubmitApproveRefused(id) {
+ return request({
+ url: baseApi + "/wms/productionreturn-request-main/refused?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 生产退料申请 关闭
+ * @param {*} id
+ *
+ */
+export function productionReturnRequestClose(id) {
+ return request({
+ url: baseApi + "/wms/productionreturn-request-main/close?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 生产退料申请 重新添加
+ * @param {*} id
+ *
+ */
+export function productionReturnRequestAddAgain(id) {
+ return request({
+ url: baseApi + "/wms/productionreturn-request-main/reAdd?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+
+
+/**
+ * 生产退料申请 创建
+ * @param {*} params
+ */
+
+export function productionReturnRequestCreate(params) {
+ return request({
+ url: baseApi + "/wms/productionreturn-request-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 生产退料记录 提交
+ * @param {*} params
+ */
+export function productionReturnRecordSubmit(params) {
+ return request({
+ url: baseApi + "/wms/productionreturn-record-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+
+/**
+ * 计划外出库申请
+ * 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取任务列表
+ * @param {*}
+ */
+export function getUnPlannedIssueRequestList(params) {
+ return request({
+ url: baseApi + "/wms/unplannedissue-request-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 计划外出库申请 获取明细
+ * @param {*} id 任务id
+ *
+ */
+export function getUnPlannedIssueRequestDetail(id) {
+ return request({
+ url: baseApi + "/wms/unplannedissue-request-main/getUnplannedissueRequestById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 计划外入库 申请
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取任务列表
+ * @param {*}
+ */
+export function getUnPlannedReceiptRequestList(params) {
+ return request({
+ url: baseApi + "/wms/unplannedreceipt-request-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 计划外入库申请 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+export function getUnPlannedReceiptRequestDetail(id) {
+ return request({
+ url: baseApi + "/wms/unplannedreceipt-request-main/getUnplannedreceiptRequestById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 计划外入库 申请提交
+ * @param {*} params
+ */
+export function unPlannedReceiptRequestSubmit(params) {
+ return request({
+ url: baseApi + "/wms/purchasereturn-request-main/submit",
+ method: "put",
+ data: params,
+ });
+}
+
+
+
+
+/**
+ * 报废出库任务
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getScrapJobList(params) {
+ return request({
+ url: baseApi + "/wms/scrap-job-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/** 报废出库 获取任务明细
+ * @param {*} id 任务id
+ */
+export function getScrapJobDetail(id) {
+ return request({
+ url: baseApi + "/wms/scrap-job-main/getScrapJobById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 报废出库 任务承接
+ * @param {*} id
+ *
+ */
+export function takeScrapJob(id) {
+ return request({
+ url: baseApi + "/wms/scrap-job-main/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 报废出库 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakeScrapJob(id) {
+ return request({
+ url: baseApi + "/wms/scrap-job-main/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 报废出库 任务提交
+ * @param {*} 任务id
+ *
+ */
+export function scrapJobSubmit(params) {
+ return request({
+ url: baseApi + "/wms/scrap-job-main/execute",
+ method: "put",
+ data: params,
+ });
+}
+
+/**
+ * 报废出库 申请
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取任务列表
+ * @param {*}
+ */
+export function getScrapRequestList(params) {
+ return request({
+ url: baseApi + "/wms/scrap-request-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 报废出库申请 获取申请明细
+ * @param {*} id 任务id
+ *
+ */
+export function getScrapRequestDetail(id) {
+ return request({
+ url: baseApi + "/wms/scrap-request-main/getScrapRequestById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 报废出库申请 创建
+ * @param {*} params
+ */
+export function scrapRequestCreate(params) {
+ return request({
+ url: baseApi + "/wms/scrap-request-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 报废出库申请 提交审批
+ * @param {*} params
+ */
+export function scrapRequestApprove(id) {
+ return request({
+ url: baseApi + "/wms/scrap-request-main/submit?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 报废出库申请 关闭
+ * @param {*} params
+ */
+export function scrapRequestClose(id) {
+ return request({
+ url: baseApi + "/wms/scrap-request-main/close?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 报废出库申请 审批通过
+ * @param {*} params
+ */
+export function scrapRequestApproveAgree(id) {
+ return request({
+ url: baseApi + "/wms/scrap-request-main/agree?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 报废出库申请 审批驳回
+ * @param {*} params
+ */
+export function scrapRequestApproveRefused(id) {
+ return request({
+ url: baseApi + "/wms/scrap-request-main/refused?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 报废出库申请 审批驳回
+ * @param {*} params
+ */
+export function scrapRequestHandle(id) {
+ return request({
+ url: baseApi + "/wms/scrap-request-main/handle?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+/**
+ * 报废出库申请 重新添加
+ * @param {*} params
+ */
+export function scrapRequestAddAgain(id) {
+ return request({
+ url: baseApi + "/wms/scrap-request-main/reAdd?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 报废出库记录 提交
+ * @param {*} params
+ */
+export function scrapRecordSubmit(params) {
+ return request({
+ url: baseApi + "/wms/scrap-record-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+
+
+/**
+ * 补料任务 列表
+ *
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getRepleinshJobList(params) {
+ return request({
+ url: baseApi + "/wms/repleinsh-job-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 补料任务 获取任务明细
+ * @param {*} id 任务id
+ *
+ */
+
+export function getRepleinshJobDetail(id) {
+ return request({
+ url: baseApi + "/wms/repleinsh-job-main/getRepleinshJobById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 补料 任务承接
+ * @param {*} id
+ *
+ */
+export function takeRepleinshJob(id) {
+ return request({
+ url: baseApi + "/wms/repleinsh-job-main/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 补料任务 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakeRepleinshJob(id) {
+ return request({
+ url: baseApi + "/wms/repleinsh-job-main/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 补料任务 提交
+ * @param {*} params
+ */
+
+export function repleinshJobSubmit(params) {
+ return request({
+ url: baseApi + "/wms/repleinsh-job-main/execute",
+ method: "put",
+ data: params,
+ });
+}
+
+/**
+ * 补料申请 提交
+ * @param {*} params
+ */
+export function repleinshRequestSubmit(params) {
+ return request({
+ url: baseApi + "/magic-api/pda/job/putaway/jobSubmit",
+ method: "put",
+ data: params,
+ });
+}
+
+/**
+ * 补料记录 提交
+ * @param {*} params
+ */
+export function repleinshRecordSubmit(params) {
+ return request({
+ url: baseApi + "/wms/repleinsh-record-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 器具绑定 提交
+ * @param {*} params
+ */
+export function containerBindRecordSubmit(params) {
+ return request({
+ url: baseApi + "/wms/container-main/containerBind",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 器具解绑 提交
+ * @param {*} params
+ */
+export function containerUnBindRecordSubmit(params) {
+ return request({
+ url: baseApi + "/wms/container-main/containerUnBind",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 拆包 提交
+ * @param {*} params
+ */
+export function splitPackageRecordSubmit(params) {
+ return request({
+ url: baseApi + "/wms/packagesplit-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 合包 提交
+ * @param {*} params
+ */
+export function mergePackageRecordSubmit(params) {
+ return request({
+ url: baseApi + "/wms/packagemerge-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 翻包直接生成记录 提交
+ * @param {*} params
+ */
+export function overPackageRecordSubmit(params) {
+ return request({
+ url: baseApi + "/wms/packageover-record-main/create",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * "itemCodes": [],
+ "locationCode":"INSPECT"
+ 管理精度策略
+ * @param {*}
+ *
+ */
+export function getManagementPrecision(params) {
+ return request({
+ url: baseApi + "/wms/rule/getPrecisionStrategyByItemCodes",
+ method: "post",
+ data: params,
+ });
+}
+
+
+/**
+ * 查询库存通过多种条件 高级筛选
+ * @param {*}
+ *
+ */
+export function getBalanceByFilter(param) {
+ return request({
+ url: baseApi + "/wms/balance/senior",
+ method: "post",
+ data: param,
+ });
+}
+
+/**
+ * 查询管理精度,多个物料,多个库位
+ * @param {*}
+ *
+ */
+export function getPrecisionStrategy(param) {
+ return request({
+ url: baseApi + "/wms/rule/getPrecisionStrategy",
+ method: "post",
+ data: param,
+ });
+}
+
+
+
+
+/**
+ * 删除文件
+ * @param {*}
+ *
+ */
+export function deleteFileById(id) {
+ return request({
+ url: baseApi + "/infra/file/delete?id=" + id,
+ method: "delete",
+ data: {},
+ });
+}
+
+/**
+ * 删除文件(多个文件)
+ * @param {*}
+ *
+ */
+export function deleteFileByTable(tableName, tableId) {
+ return request({
+ url: baseApi + "/infra/file/deleteByTable?tableName=" + tableName + "&tableId=" + tableId,
+ method: "delete",
+ data: {},
+ });
+}
+
+
+/**
+ * 获取文件列表
+ * @param {*}
+ *
+ */
+export function getFileList(tableName, tableId) {
+ return request({
+ url: baseApi + "/infra/file/list?tableName=" + tableName + "&tableId=" + tableId,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 图片上传
+ * @param {*}
+ *
+ */
+export function uploadFile(tableName, tableId, filePath, callBack) {
+ var token = storage.getStorage(storage.constant.token)
+ var url = config.request_url + baseApi
+ uni.uploadFile({
+ url: url + "/infra/file/upload?tableName=" + tableName + "&tableId=" + tableId,
+ filePath: filePath,
+ name: 'file',
+ header: {
+ "Authorization": "Bearer " + token,
+ "tenant-id": 1
+ },
+ success: (uploadFileRes) => {
+ callBack(uploadFileRes.data)
+ console.log(uploadFileRes.data);
+ },
+ fail: (error) => {
+ callBack(undefined)
+ },
+ });
+}
+
+/**
+ * 获取文件列表
+ * @param {*}
+ *
+ */
+export function getMainMessage() {
+ return request({
+ url: baseApi + "/wms/index/indexPda",
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * app检查更新
+ * @param {*}
+ *
+ */
+export function appCheckUpdate() {
+ return uni.request({
+ url: "http://192.168.0.119:9527/appUpdate.json",
+ method: "GET",
+ data: {}
+ })
+}
+
+// var params = {
+// filters: filters,
+// pageNo: 1,
+// pageSize: 100,
+// }
+
+//获取包装规格
+export function getPackageUnitList(params) {
+ return request({
+ url: baseApi + "/wms/packageunit/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 翻包 任务承接
+ * @param {*} id
+ *
+ */
+export function takeOverPageJob(id) {
+ return request({
+ url: baseApi + "/wms/packageover-job-main/accept?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 翻包 放弃承接
+ * @param {*} id
+ *
+ */
+export function cancleTakeOverPageJob(id) {
+ return request({
+ url: baseApi + "/wms/packageover-job-main/abandon?id=" + id,
+ method: "put",
+ data: {},
+ });
+}
+
+/**
+ * 翻包任务 列表
+ * status 任务状态
+ * 开始日期
+ * 结束日期
+ * 获取日期任务列表
+ * @param {*}
+ */
+export function getOverPageJobList(params) {
+ return request({
+ url: baseApi + "/wms/packageover-job-main/senior",
+ method: "post",
+ data: params,
+ });
+}
+
+/**
+ * 翻包任务明细
+ * @param {*} 任务id
+ *
+ */
+export function getOverPageJobDetail(id) {
+ return request({
+ url: baseApi + "/wms/packageover-job-main/getPackageoverJobById?id=" + id,
+ method: "get",
+ data: {},
+ });
+}
+
+/**
+ * 翻包任务 提交
+ * @param {*} params
+ */
+export function overPageSubmit(params) {
+ return request({
+ url: baseApi + "/wms/packageover-job-main/execute",
+ method: "put",
+ data: params,
+ });
+}
\ No newline at end of file
diff --git a/src/common/appUpdate.js b/src/common/appUpdate.js
new file mode 100644
index 0000000..03af4c3
--- /dev/null
+++ b/src/common/appUpdate.js
@@ -0,0 +1,116 @@
+import {
+ appCheckUpdate
+} from '../api/request2.js';
+export function appUpdate() {
+ let curversion = 0;
+ plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {
+ const data = {
+ action: 'checkVersion',
+ appid: plus.runtime.appid,
+ appVersion: plus.runtime.version,
+ wgtVersion: widgetInfo.version,
+ versionCode: widgetInfo.versionCode
+ }
+ curversion=data.versionCode
+ appCheckUpdate().then(res => {
+ console.log("当前版本提示",curversion)
+ if (res.data) {
+ if (res.data.versionCode > Number(curversion)) {
+ var downUrl = res.data.downUrl;
+ var content = res.data.content;
+ var version =res.data.version
+ console.log("新版本提示")
+ uni.showModal({
+ title: "发现新版本:("+version+")",
+ content: content,
+ confirmText: "更新",
+ cancelText: "取消",
+ success: (res) => {
+ if (res.confirm) {
+ confirm(downUrl);
+ console.log('comfirm') //点击确定之后执行的代码
+ } else {
+ console.log('cancel') //点击取消之后执行的代码
+ }
+ }
+ })
+ } else {
+ uni.showToast({
+ title:"当前是最新版本"
+ })
+ console.log("没有新版本")
+ }
+ }
+ }).catch(error => {
+ console.log("版本错误", error)
+ })
+
+ })
+
+
+
+}
+
+export function confirm(downUrl) {
+ var downloadApkUrl = downUrl
+ var dtask = plus.downloader.createDownload(downloadApkUrl, {},
+ function(d, status) {
+
+ // 下载完成
+ if (status == 200) {
+
+ plus.runtime.install(plus.io.convertLocalFileSystemURL(
+ d.filename), {}, {}, function(error) {
+ uni.showToast({
+ title: '安装失败',
+ duration: 1500
+ });
+ })
+ } else {
+ uni.showToast({
+ title: '更新失败',
+ duration: 1500
+ });
+ }
+ });
+ try {
+ dtask.start(); // 开启下载的任务
+ var prg = 0;
+ var showLoading = plus.nativeUI.showWaiting(
+ "正在下载"); //创建一个showWaiting对象
+ dtask.addEventListener('statechanged', function(
+ task,
+ status
+ ) {
+ // 给下载任务设置一个监听 并根据状态 做操作
+ switch (task.state) {
+ case 1:
+ showLoading.setTitle("正在下载");
+ break;
+ case 2:
+ showLoading.setTitle("已连接到服务器");
+ break;
+ case 3:
+ prg = parseInt(
+ (parseFloat(task.downloadedSize) /
+ parseFloat(task.totalSize)) *
+ 100
+ );
+ showLoading.setTitle(" 正在下载" + prg + "% ");
+ break;
+ case 4:
+ plus.nativeUI.closeWaiting();
+ //下载完成
+ break;
+ }
+ });
+ } catch (err) {
+ plus.nativeUI.closeWaiting();
+ uni.showToast({
+ title: '更新失败-03',
+ mask: false,
+ duration: 1500
+ });
+ }
+
+}
\ No newline at end of file
diff --git a/src/common/array.js b/src/common/array.js
new file mode 100644
index 0000000..e87d780
--- /dev/null
+++ b/src/common/array.js
@@ -0,0 +1,320 @@
+// 详情和审批
+export function getDetailAndApproveOption() {
+ let option_detail = [{
+ text: '详情',
+ style: {
+ backgroundColor: '#3C9CFF'
+ }
+ },
+ {
+ text: '提交\n审批',
+ style: {
+ backgroundColor: '#00CC33'
+ }
+ },
+ {
+ text: '关闭',
+ style: {
+ backgroundColor: '#ff0000'
+ }
+ }
+ ];
+ return option_detail;
+}
+//详情、审批通过、审批驳回
+export function getDetailAndApprovePassAndApproveNoOption() {
+ let option_detail = [{
+ text: '详情',
+ style: {
+ backgroundColor: '#3C9CFF'
+ }
+ },
+ {
+ text: '审批\n通过',
+ style: {
+ backgroundColor: '#00CC33'
+ }
+ },
+ {
+ text: '审批\n驳回',
+ style: {
+ backgroundColor: '#F56C6C'
+ }
+ },
+ {
+ text: '关闭',
+ style: {
+ backgroundColor: '#ff0000'
+ }
+ }
+ ];
+ return option_detail;
+}
+//详情、处理、审批不通过
+export function getDetailAndHandleOption() {
+ let option_detail = [{
+ text: '详情',
+ style: {
+ backgroundColor: '#3C9CFF'
+ }
+ },
+ {
+ text: '处理',
+ style: {
+ backgroundColor: '#00CC33'
+ }
+ },
+ {
+ text: '关闭',
+ style: {
+ backgroundColor: '#ff0000'
+ }
+ }
+ ];
+ return option_detail;
+}
+//详情、重新添加、关闭
+export function getDetailAndAddAndCloseOption() {
+ let option_detail = [{
+ text: '详情',
+ style: {
+ backgroundColor: '#3C9CFF'
+ }
+ },
+ {
+ text: '重新\n添加',
+ style: {
+ backgroundColor: '#E6A23C'
+ }
+ },
+ {
+ text: '关闭',
+ style: {
+ backgroundColor: '#F56C6C'
+ }
+ }
+ ];
+ return option_detail;
+}
+// 采购退货返回侧滑按钮 详情 、编辑、库位、移除
+export function getPurchaseReceiptOption(allowModifyQty, allowModifyLocation) {
+ var option = []
+ option.push(...getDetailOption())
+ if (allowModifyQty == "TRUE") {
+ option.push(...getEditOption())
+ }
+ if (allowModifyLocation == "TRUE") {
+ option.push(...getLocationOption())
+ }
+ option.push(...getRemoveOption())
+ return option;
+}
+
+//详情
+export function getDetailOption() {
+ let option_detail = [{
+ text: '详情',
+ style: {
+ backgroundColor: '#3C9CFF'
+ }
+ }];
+ return option_detail;
+}
+
+//详情移除(扫描后不允许修改数量)
+export function getDetailRemoveOption() {
+ let option_detail_edit_remove = [{
+ text: '详情',
+ style: {
+ backgroundColor: '#3C9CFF'
+ }
+ },
+ {
+ text: '移除',
+ style: {
+ backgroundColor: '#F56C6C'
+ }
+ }
+ ];
+ return option_detail_edit_remove;
+}
+
+export function getRemoveOption() {
+ let option_detail_remove = [{
+ text: '移除',
+ style: {
+ backgroundColor: '#F56C6C'
+ }
+ }];
+ return option_detail_remove;
+}
+
+export function getAddAgainOption() {
+ let option_detail_remove = [{
+ text: '详情',
+ style: {
+ backgroundColor: '#3C9CFF'
+ }
+ }, {
+ text: '重新\n添加',
+ style: {
+ backgroundColor: '#E6A23C'
+ }
+ }];
+ return option_detail_remove;
+}
+
+
+
+export function getEditOption() {
+ let option_detail_edit = [{
+ text: '编辑',
+ style: {
+ backgroundColor: '#F1A532'
+ }
+ }];
+ return option_detail_edit;
+}
+export function getLocationOption() {
+ let option_detail_location = [{
+ text: '库位',
+ style: {
+ backgroundColor: '#00A3FF'
+ }
+ }];
+ return option_detail_location;
+}
+
+
+//清空
+export function getClearOption() {
+ let option_detail_edit_remove = [{
+ text: '清空',
+ style: {
+ backgroundColor: '#F56C6C'
+ }
+ }];
+ return option_detail_edit_remove;
+}
+
+
+//详情编辑移除
+export function getDetailEditRemoveOption() {
+ let option_detail_edit_remove = [{
+ text: '详情',
+ style: {
+ backgroundColor: '#3C9CFF'
+ }
+ },
+ {
+ text: '编辑',
+ style: {
+ backgroundColor: '#F1A532'
+ }
+ },
+ {
+ text: '移除',
+ style: {
+ backgroundColor: '#F56C6C'
+ }
+ }
+ ];
+ return option_detail_edit_remove;
+}
+
+
+//详情编辑放弃
+export function getDetailGiveupOption() {
+ let option_detail_giveup = [{
+ text: '详情',
+ style: {
+ backgroundColor: '#3C9CFF'
+ }
+ },
+ {
+ text: '放弃',
+ style: {
+ backgroundColor: '#F56C6C'
+ }
+ }
+ ];
+ return option_detail_giveup;
+}
+
+
+
+//详情编辑移除
+export function getEditRemoveOption() {
+ let option_edit_remove = [{
+ text: '编辑',
+ style: {
+ backgroundColor: '#F1A532'
+ }
+ },
+ {
+ text: '移除',
+ style: {
+ backgroundColor: '#F56C6C'
+ }
+ }
+ ];
+ return option_edit_remove;
+}
+
+
+// 库存状态字典项
+export function getInventoryStatusArray() {
+ let array = [{
+ text: '待检',
+ value: "INSP"
+ }, {
+ text: '合格',
+ value: "OK"
+ }, {
+ text: '不合格',
+ value: "NOK"
+ }, {
+ text: '隔离',
+ value: "HOLD"
+ }, {
+ text: '报废',
+ value: "SCRAP"
+ }]
+ return array;
+}
+
+// 业务类型字典项
+export function getBusinessTypeArray() {
+ let array = [{
+ text: '供应商发货',
+ value: "SupplierDeliver"
+ }, {
+ text: '采购收货',
+ value: "PurchaseReceipt"
+ }, {
+ text: '采购退货',
+ value: "PurchaseReturn"
+ }, {
+ text: '采购上架',
+ value: "PurchasePutaway"
+ }]
+ return array;
+}
+
+export function getLocationTypeArray(data) {
+ var list = []
+ if (data == undefined || data == null || data == "") {
+ return list
+ }
+
+ if (data.indexOf(',') < 0) {
+ list.push(data)
+ } else {
+ var arrayItems = data.split(',')
+ arrayItems.forEach(res => {
+ list.push(res)
+ })
+ }
+
+ return list
+}
diff --git a/src/common/balance.js b/src/common/balance.js
new file mode 100644
index 0000000..1a53c9f
--- /dev/null
+++ b/src/common/balance.js
@@ -0,0 +1,477 @@
+import {
+ getManagementPrecision,
+ getPrecisionStrategy,
+ getBalanceByFilter
+} from '@/api/request2.js';
+
+/**
+ *
+ 获取管理精度查询策略参数
+ * @param {*}
+ *
+ */
+export function getPrecisionStrategyParams(detailSource) {
+ var itemList = []
+ detailSource.forEach(item => {
+ item.subList.forEach(detail => {
+ if (detail.scaned) {
+ var filterResult = itemList.filter(res => {
+ if (res.itemCode == item.itemCode &&
+ res.locationCode == detail.toLocationCode) {
+ return res
+ }
+ })
+ //去掉重复元素
+ if (filterResult.length == 0) {
+ var result = {
+ itemCode: item.itemCode,
+ locationCode: detail.toLocationCode
+ }
+ itemList.push(result)
+ }
+
+ }
+ })
+ })
+ return itemList;
+}
+/**
+ *
+ 获取管理精度查询策略参数
+ * @param {*}
+ *
+ */
+export function getPrecisionStrategyParamsByLocation(detailSource, toLocationCode) {
+ var itemList = []
+ detailSource.forEach(item => {
+ item.subList.forEach(detail => {
+ if (detail.scaned) {
+ detail.toLocationCode = toLocationCode;
+ var filterResult = itemList.filter(res => {
+ if (res.itemCode == item.itemCode &&
+ res.locationCode == detail.toLocationCode) {
+ return res
+ }
+ })
+ //去掉重复元素
+ if (filterResult.length == 0) {
+ var result = {
+ itemCode: item.itemCode,
+ locationCode: detail.toLocationCode
+ }
+ itemList.push(result)
+ }
+
+ }
+ })
+ })
+ return itemList;
+}
+
+/**
+ * "itemCode": [],
+ "locationCode":"INSPECT"
+ 管理精度策略
+ * @param {*}
+ *
+ */
+export function getPrecisionStrategyList(itemList, callback) {
+ // let jsonParem = JSON.stringify(param)
+ let result = {
+ list: [],
+ success: true,
+ message: ''
+ };
+
+ getPrecisionStrategy(itemList).then(res => {
+ if (res.data == null) {
+ result.success = false
+ result.message = '未查询到管理精度信息'
+ } else {
+ result.list = res.data;
+ }
+ callback(result);
+ }).catch(error => {
+ result.success = false;
+ result.message = error;
+ callback(result);
+ })
+}
+
+/**
+ * "itemCode": [],
+ "locationCode":"INSPECT"
+ 管理精度策略
+ * @param {*}
+ *
+ */
+export function getManagementPrecisions(itemCodes, locationCode, callback) {
+ // let jsonParem = JSON.stringify(param)
+ let result = {
+ list: [],
+ success: true,
+ message: ''
+ };
+
+ var params = {
+ itemCodes: itemCodes,
+ locationCode: locationCode
+ }
+ getManagementPrecision(params).then(res => {
+ if (res.data == null) {
+ result.success = false
+ result.message = '未查询到管理精度信息'
+ } else {
+ result.list = res.data;
+ }
+ callback(result);
+ }).catch(error => {
+ result.success = false;
+ result.message = error;
+ callback(result);
+ })
+}
+
+export function getBalanceByManagementPrecision(label, locationCode, fromInventoryStatuses, callback) {
+ let result = {
+ list: [],
+ success: true,
+ message: ''
+ };
+ let params = {
+ itemCodes: [label.itemCode],
+ locationCode: locationCode
+ };
+ // let jsonParem = JSON.stringify(param)
+ getManagementPrecision(params).then(res => {
+ let managementPrecision = res.data[0].ManagementPrecision;
+ switch (managementPrecision) {
+ case 'BY_PACKAGING':
+ byPacking(label, locationCode, fromInventoryStatuses, res => {
+ res.managementPrecision = managementPrecision;
+ callback(res);
+ });
+ break;
+ case 'BY_BATCH':
+ byBatch(label, locationCode, fromInventoryStatuses, res => {
+ res.managementPrecision = managementPrecision;
+ callback(res);
+ });
+ break;
+ case 'BY_QUANTITY':
+ byQuantity(label, locationCode, fromInventoryStatuses, res => {
+ res.managementPrecision = managementPrecision;
+ callback(res);
+ });
+ break;
+ case 'BY_UNIQUEID':
+ byUniqueId(label, fromInventoryStatuses, res => {
+ res.managementPrecision = managementPrecision;
+ callback(res);
+ });
+ break;
+ }
+ }).catch(error => {
+ let result = {
+ success: false,
+ message: error
+ };
+ callback(result);
+ })
+}
+/** 按包装管理查询库存
+ * @param {Object} label
+ * @param {Object} locationCode
+ * @param {Object} callback
+ */
+export function byPacking(label, locationCode, fromInventoryStatuses, callback) {
+ let result = {
+ success: true,
+ message: '',
+ data: {}
+ };
+ var filters = []
+ filters.push({
+ column: "packingNumber",
+ action: "==",
+ value: label.packingNumber
+ })
+ filters.push({
+ column: "itemCode",
+ action: "==",
+ value: label.itemCode
+ })
+ filters.push({
+ column: "batch",
+ action: "==",
+ value: label.batch
+ })
+ filters.push({
+ column: "locationCode",
+ action: "==",
+ value: locationCode
+ })
+ if (fromInventoryStatuses != null && fromInventoryStatuses != "") {
+ filters.push({
+ column: "inventoryStatus",
+ action: "in",
+ value: fromInventoryStatuses
+ })
+ }
+
+
+ var params = {
+ filters: filters,
+ pageNo: 1,
+ pageSize: 100,
+ }
+ getBalanceByFilter(params).then(res => {
+ if (res.data == null) {
+ result.success = false;
+ result.message =
+ "按包装管理查询、未查询到物料号[" + label.itemCode + "]" +
+ "到箱码[" + label.packingNumber + "]" +
+ "批次[" + label.batch + "]" +
+ "库位[" + label.locationCode + "]的信息"
+ } else {
+ result.success = true;
+ result.data = res.data;
+ }
+
+ callback(result)
+ }).catch(err => {
+ result.success = false;
+ result.data = null;
+ result.message = err;
+ callback(result)
+ })
+}
+/** 按批次管理查询库存
+ * @param {Object} label
+ * @param {Object} locationCode
+ * @param {Object} callback
+ */
+export function byBatch(label, locationCode, fromInventoryStatuses, callback) {
+ var filters = []
+ filters.push({
+ column: "itemCode",
+ action: "==",
+ value: label.itemCode
+ })
+ filters.push({
+ column: "batch",
+ action: "==",
+ value: label.batch
+ })
+ filters.push({
+ column: "packingNumber",
+ action: "==",
+ value: null
+ })
+ filters.push({
+ column: "locationCode",
+ action: "==",
+ value: locationCode
+ })
+
+ if (fromInventoryStatuses != null && fromInventoryStatuses != "") {
+ filters.push({
+ column: "inventoryStatus",
+ action: "in",
+ value: fromInventoryStatuses
+ })
+ }
+
+ var params = {
+ filters: filters,
+ pageNo: 1,
+ pageSize: 100,
+ }
+
+ let result = {
+ success: true,
+ message: '',
+ data: {}
+ };
+ getBalanceByFilter(params).then(res => {
+ if (res.data == null) {
+ result.success = false;
+ result.message =
+ "按批次管理查询、未查询到物料号[" + label.itemCode + "]" +
+ "批次[" + label.batch + "]" +
+ "库位[" + label.locationCode + "]的信息"
+ } else {
+ result.success = true;
+ result.data = res.data;
+ }
+ callback(result)
+ }).catch(err => {
+ result.success = false;
+ result.data = null;
+ result.message = err.message;
+ callback(result)
+ })
+}
+/** 按数量管理查询库存
+ * @param {Object} label
+ * @param {Object} locationCode
+ * @param {Object} callback
+ */
+export function byQuantity(label, locationCode, fromInventoryStatuses, callback) {
+ let result = {
+ success: true,
+ message: '',
+ data: {}
+ };
+
+ var filters = []
+ filters.push({
+ column: "itemCode",
+ action: "==",
+ value: label.itemCode
+ })
+ filters.push({
+ column: "packingNumber",
+ action: "==",
+ value: null
+ })
+ filters.push({
+ column: "batch",
+ action: "==",
+ value: null
+ })
+ filters.push({
+ column: "locationCode",
+ action: "==",
+ value: locationCode
+ })
+
+ if (fromInventoryStatuses != null && fromInventoryStatuses != "") {
+ filters.push({
+ column: "inventoryStatus",
+ action: "in",
+ value: fromInventoryStatuses
+ })
+ }
+
+ var params = {
+ filters: filters,
+ pageNo: 1,
+ pageSize: 100,
+ }
+
+ getBalanceByFilter(params).then(res => {
+ if (res.data == null) {
+ result.success = false;
+ result.message =
+ "按数量管理查询、未查询到物料号[" + label.itemCode + "]" +
+ "库位[" + label.locationCode + "]的信息"
+ } else {
+ result.success = true;
+ result.data = res.data;
+ }
+ callback(result)
+ }).catch(err => {
+ result.success = false;
+ result.data = null;
+ result.message = err.message;
+ callback(result)
+ })
+}
+/** 按唯一码管理查询库存
+ * @param {Object} label
+ * @param {Object} locationCode
+ * @param {Object} callback
+ */
+export function byUniqueId(label, locationCode, fromInventoryStatuses, callback) {
+ let param = {
+ packingNumber: label.packingNumber
+ };
+ let result = {
+ success: true,
+ message: '',
+ data: {}
+ };
+
+ var filters = []
+ filters.push({
+ column: "packingNumber",
+ action: "==",
+ value: label.packingNumber
+ })
+
+ if (fromInventoryStatuses != null && fromInventoryStatuses != "") {
+ filters.push({
+ column: "inventoryStatus",
+ action: "in",
+ value: fromInventoryStatuses
+ })
+ }
+
+ var params = {
+ filters: filters,
+ pageNo: 1,
+ pageSize: 100,
+ }
+
+ getBalanceByFilter(params).then(res => {
+ if (res.data == null) {
+ result.success = false;
+ result.message =
+ "按唯一码管理查询、未查询到箱码[" + label.packingNumber + "]" +
+ "的信息"
+ } else {
+ result.success = true;
+ result.data = res.data;
+ }
+ callback(result)
+ }).catch(err => {
+ result.success = false;
+ result.data = null;
+ result.message = err.message;
+ callback(result)
+ })
+}
+/**
+ * 查询指定库位下的库存
+ * @param {*} param
+ * @param {*} callback
+ */
+export function balanceByLocation(locationCode, callback) {
+ let result = {
+ success: true,
+ message: '',
+ data: {}
+ };
+
+ var filters = []
+ filters.push({
+ column: "locationCode",
+ action: "==",
+ value: locationCode
+ })
+
+ var params = {
+ filters: filters,
+ pageNo: 1,
+ pageSize: 100,
+ }
+
+ getBalanceByFilter(params).then(res => {
+ if (res.data == null) {
+ result.success = false;
+ result.message =
+ "按唯一码管理查询、未查询到库位[" + label.locationCode + "]" +
+ "的信息"
+ } else {
+ result.success = true;
+ result.data = res.data;
+ }
+ callback(result)
+ }).catch(err => {
+ result.success = false;
+ result.data = null;
+ result.message = err.message;
+ callback(result)
+ })
+}
diff --git a/src/common/basic.js b/src/common/basic.js
new file mode 100644
index 0000000..d770a26
--- /dev/null
+++ b/src/common/basic.js
@@ -0,0 +1,1014 @@
+let maxPageSize = 1000;
+export {
+ maxPageSize
+}
+
+import { calc } from '@/common/calc'
+
+let jobStatusList = [];
+let itemStatusList = [];
+let locationAreaTypeList = [];
+let uomList = [];
+let inventoryStatusList = [];
+let containerTypeList = [];
+let packUnitList = [];
+let requestStatusList = [];
+let unplannedReceiptReasonList = [];
+let unplannedIissueReason = [];
+let scrapReasonList = [];
+let inspectFailedReasonList = [];
+
+
+
+//获取字典信息
+export function clearCacheData() {
+ jobStatusList = [];
+ itemStatusList = [];
+ locationAreaTypeList = [];
+ uomList = [];
+ inventoryStatusList = [];
+ containerTypeList = [];
+ packUnitList = [];
+ requestStatusList = [];
+ unplannedReceiptReasonList = [];
+ unplannedIissueReason = [];
+ scrapReasonList = [];
+ inspectFailedReasonList = [];
+
+}
+
+//获取字典信息
+export function getDirectoryInfo(type) {
+ var result = [];
+ var list = uni.getStorageSync("dictionary")
+ if (list != undefined && list.length > 0) {
+ for (let item of list) {
+ if (item.type == type) {
+ result = item.subList
+ break;
+ }
+ }
+ }
+
+ return result
+}
+
+
+
+//将字典项转为数组
+export function getDirectoryItemArray(data) {
+ var array = []
+ if (data == undefined || data == null || data == "") {
+ return array
+ }
+
+ if (data.indexOf(',') < 0) {
+ array.push(data)
+ } else {
+ var arrayItems = data.split(',')
+ arrayItems.forEach(res => {
+ array.push(res)
+ })
+ }
+ return array
+}
+
+//查询字典项是否在列表中
+export function checkDirectoryItemExist(list, type) {
+ let exist = false;
+ if (list == null || list.length == 0) {
+ exist = true;
+ } else {
+ var temp = list.filter(res => {
+ if (res == type) {
+ return res
+ }
+ })
+ if (temp != undefined && temp.length > 0) {
+ exist = true
+ }
+ }
+ return exist
+}
+
+//获取任务状态
+export function getJobStateInfo(value) {
+ var resultInfo = "";
+ if (jobStatusList.length == 0) {
+ jobStatusList = getDirectoryInfo("job_status")
+ }
+ if (jobStatusList.length > 0) {
+ for (let item of jobStatusList) {
+ if (item.value == value) {
+ resultInfo = item
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+
+//获取任务状态样式
+export function getJobStateStyle(value) {
+ let item = getJobStateInfo(value);
+ if (item == null || item == '') {
+ return 'other'
+ } else {
+ if (item.remark == '') {
+ return 'other'
+ } else {
+ return item.remark;
+ }
+ }
+}
+
+//获取库位描述
+export function getListLocationTypeDesc(lst) {
+ let desc = '';
+ lst.forEach(res => {
+ desc += getLocationTypeInfo(res).label + ","
+ })
+ desc = desc.slice(0, -1);
+ return desc;
+}
+
+//获取物品状态
+export function getItemStateInfo(value) {
+ var resultInfo = "";
+ if (itemStatusList.length == 0) {
+ itemStatusList = getDirectoryInfo("item_status")
+ }
+ if (itemStatusList.length > 0) {
+ for (let item of itemStatusList) {
+ if (item.value == value) {
+ resultInfo = item
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+
+//获取库位类型
+export function getLocationTypeInfo(value) {
+ var resultInfo = "";
+ if (locationAreaTypeList.length == 0) {
+ locationAreaTypeList = getDirectoryInfo("location_type")
+ }
+ if (locationAreaTypeList.length > 0) {
+ for (let item of locationAreaTypeList) {
+ if (item.value == value) {
+ resultInfo = item
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+
+//获取库位类型名称
+export function getLocationTypeName(value) {
+ let location = getLocationTypeInfo(value);
+
+ return location == '' ? value : location.label;
+}
+
+//获取计量单位
+export function getUomInfo(value) {
+ var resultInfo = "";
+ if (uomList.length == 0) {
+ uomList = getDirectoryInfo("uom")
+ }
+ if (uomList.length > 0) {
+ for (let item of uomList) {
+ if (item.value == value) {
+ resultInfo = item
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+
+//获取包装单位
+export function getPackUnitInfo(value) {
+ var resultInfo = "";
+ if (packUnitList.length == 0) {
+ packUnitList = getDirectoryInfo("pack_unit")
+ }
+ if (packUnitList.length > 0) {
+ for (let item of packUnitList) {
+ if (item.value == value) {
+ resultInfo = item
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+
+//获取申请状态
+export function getRequestStateInfo(value) {
+ var resultInfo = "";
+ if (requestStatusList.length == 0) {
+ requestStatusList = getDirectoryInfo("request_status")
+ }
+ if (requestStatusList.length > 0) {
+ for (let item of requestStatusList) {
+ if (item.value == value) {
+ resultInfo = item
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+
+//获取库存状态
+export function getInventoryStatusInfo(value) {
+ var resultInfo = "";
+ if (inventoryStatusList.length == 0) {
+ inventoryStatusList = getDirectoryInfo("inventory_status")
+ }
+ if (inventoryStatusList.length > 0) {
+ for (let item of inventoryStatusList) {
+ if (item.value == value) {
+ resultInfo = item
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+
+//获取库存样式
+export function getInventoryStatusStyle(value) {
+ let item = getInventoryStatusInfo(value);
+ if (item == null || item == '') {
+ return 'other'
+ } else {
+ if (item.remark == '') {
+ return 'other'
+ } else {
+ return item.remark;
+ }
+ }
+}
+
+//获取库存状态
+export function getInventoryStatusName(value) {
+ let item = getInventoryStatusInfo(value);
+ if (item == null || item == '') {
+ return value
+ } else {
+ if (item.label == '') {
+ return value
+ } else {
+ return item.label;
+ }
+ }
+}
+
+
+//获取状态描述
+export function getInventoryStatusDesc(lst) {
+ let desc = '';
+ lst.forEach(res => {
+ desc += getInventoryStatusInfo(res).label + ","
+ })
+ desc = desc.slice(0, -1);
+ return desc;
+}
+
+
+//获取器具状态
+export function getContainerStatusInfo(value) {
+ var resultInfo = "";
+ if (containerTypeList.length == 0) {
+ containerTypeList = getDirectoryInfo("container_type")
+ }
+ if (containerTypeList.length > 0) {
+ for (let item of containerTypeList) {
+ if (item.value == value) {
+ resultInfo = item
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+
+//获取计划外入库原因
+export function getUnPlannedReceiptReasonList(value) {
+ if (unplannedReceiptReasonList.length == 0) {
+ unplannedReceiptReasonList = getDirectoryInfo("unplanned_receipt_reason")
+ }
+ unplannedReceiptReasonList.forEach(res => {
+ res.text = res.label;
+ res.value = res.code
+ })
+ return unplannedReceiptReasonList
+}
+
+//获取计划外出库原因
+export function getUnPlannedIssuseReasonList(value) {
+ if (unplannedIissueReason.length == 0) {
+ unplannedIissueReason = getDirectoryInfo("unplanned_issue_reason")
+ }
+ unplannedIissueReason.forEach(res => {
+ res.text = res.label;
+ res.value = res.code
+ })
+ return unplannedIissueReason
+}
+
+
+//获取检验不合格原因
+export function getInspectReasonList(value) {
+ if (inspectFailedReasonList.length == 0) {
+ inspectFailedReasonList = getDirectoryInfo("inspect_failed_reason")
+ }
+ inspectFailedReasonList.forEach(res => {
+ res.text = res.label;
+ res.value = res.code
+ })
+ return inspectFailedReasonList
+}
+
+
+// //数量状态
+// export function getCoutJobStatuStyle(val) {
+// if (val == 1) return 'state_inspect'
+// else if (val == 2) return 'state_ok'
+// else if (val == 3) return 'state_nook'
+// else return 'other'
+// }
+
+// export function getCountJobStatuDesc(val) {
+// if (val == 1) return '待检'
+// else if (val == 2) return '合格'
+// else if (val == 3) return '不合格'
+// else return "未知"
+// }
+
+// export function getPartCodeState(val) {
+// if (val == 0) return '可用'
+// else if (val == 1) return '新增'
+// else if (val == 2) return '隔离'
+// else if (val == 3) return '未知'
+// else return '未知'
+// }
+
+// export function getLocationState(val) {
+// if (val == 'kwlxINSP') return '待检库'
+// else if (val == 'kwlxRAW') return '原料库'
+// else if (val == 'kwlxSEMI') return '半成品库'
+// else if (val == 'kwlxFG') return '成品库'
+// else if (val == 'kwlxWIP') return '线边库'
+// else if (val == 'kwlxHOLD') return '隔离库'
+// else if (val == 'kwlxSCRAP') return '报废库'
+// else if (val == 'kwlxNOK') return '不合格品库'
+// else if (val == 'kwxOVERFLOW') return '溢出库'
+// else if (val == 'kwlxCUsT') return '客户寄售库'
+// else if (val == 'kwlxOUTSIDE') return '外库'
+// else if (val == 'kwlxDIFF') return '盘点差异库'
+// else if (val == 'kwxTRANSPORT') return '在途库'
+// else return '未知'
+
+// }
+
+// export function getLocationStyle(val) {
+// if (val == 'kwlxRAW') return 'state_raw'
+// else if (val == 'kwlxFG') return 'state_fg'
+// else if (val == 'kwlxSEMI') return 'state_semi'
+// else if (val == 'kwlxHOLD') return 'state_hold'
+// else if (val == 4) return 'state_unk'
+// }
+
+// //任务状态
+// export function getJobStatuStyle(val) {
+// if (val == 'JOB_PENDING') return 'job_state_un-doing'
+// else if (val == '1') return 'job_state_doing'
+// else if (val == 'reztDONE') return 'job_state_completed'
+// else if (val == 'rwztCLOSED') return 'job_state_close'
+// else if (val == 'rwztCANCELLED') return 'job_state_cancelled'
+// else return 'unk'
+// }
+// //任务状态
+// //open pending completed close
+// export function getJobStatuDesc(val) {
+// if (val == 'JOB_PENDING') return '待处理'
+// else if (val == '1') return '执行中'
+// else if (val == 'reztDONE') return '完成'
+// else if (val == 'rwztCLOSED') return '关闭'
+// else if (val == 'rwztCANCELLED') return '作废'
+// else return '其他'
+// }
+
+// //检验任务状态
+// export function getInspectTypeStyle(val) {
+// if (val == 0) return 'unk'
+// else if (val == 1) return 'exempt'
+// else if (val == 2) return 'full'
+// else if (val == 3) return 'sampling'
+// else if (val == 4) return 'pick'
+// else return 'other'
+// }
+// //open pending completed close
+// export function getInspectTypeDesc(val) {
+// if (val == 0) return '未知'
+// else if (val == 1) return '免检'
+// else if (val == 2) return '全检'
+// else if (val == 3) return '抽检'
+// else if (val == 4) return '挑选'
+// else return '其他'
+// }
+
+
+// //库存状态
+// export function getInventoryStatusStyle(val) {
+// if (val == 'kcztUNK') return 'unk'
+// else if (val == 'kcztINSP') return 'inventory_status_insp'
+// else if (val == 'kcztOK') return 'inventory_status_ok'
+// else if (val == 'kcztNOK') return 'inventory_status_nok'
+// else if (val == 'kcztHOLD') return 'inventory_status_hold'
+// else if (val == 'kcztSCRAP') return 'inventory_status_scarp'
+// else return 'other'
+// }
+
+
+// //库存状态
+// export function getInventoryStatusDesc(val) {
+// if (val == 'kcztUNK') return '未知'
+// else if (val == 'kcztINSP') return '待检'
+// else if (val == 'kcztOK') return '合格'
+// else if (val == 'kcztNOK') return '不合格'
+// else if (val == 'kcztHOLD') return '隔离'
+// else if (val == 'kcztSCRAP') return '报废'
+// else return '其他'
+// }
+
+// //库存状态
+// export function getInventoryStatusStyle(val) {
+// if (val == 0) return 'unk'
+// else if (val == 1) return 'insp'
+// else if (val == 2) return 'ok'
+// else if (val == 3) return 'nok'
+// else if (val == 4) return 'hold'
+// else if (val == 5) return 'scarp'
+// else if (val == 6) return 'frozen'
+// else if (val == 31) return 'nok'
+// else return 'other'
+// }
+
+
+// //库存状态kcztINSP
+// export function getInventoryStatusDesc(val) {
+// if (val == 0) return '未知'
+// else if (val == 1) return '待检'
+// else if (val == 2) return '合格'
+// else if (val == 3) return '不合格'
+// else if (val == 4) return '隔离'
+// else if (val == 5) return '报废'
+// else if (val == 6) return '冻结'
+// else if (val == 31) return '不合格'
+// // else if (val == 31) return '目检不合格'
+// else return '其他'
+// }
+
+// //物料状态
+// export function getItemStatusStyle(val) {
+// if (val == "wpztUNK") return 'item_unk'
+// else if (val == "wpztENABLE") return 'item_active'
+// else if (val == "wpztHOLD") return 'item_hold'
+// else if (val == "wpztNEW") return 'item_new'
+// else if (val == "wpztPLAN") return 'item_plan'
+// else if (val == "wpztDISABLE") return 'item_disable'
+// else return 'other'
+// }
+
+// export function getItemStatusStyle(val) {
+// if (val == 0) return 'unk_item'
+// else if (val == 1) return 'active_item'
+// else if (val == 2) return 'hold_item'
+// else if (val == 3) return 'new_item'
+// else if (val == 4) return 'plan_item'
+// else if (val == 5) return 'disable_item'
+// else return 'other'
+// }
+
+
+// //物料状态描述
+// export function getItemStatusDesc(val) {
+// if (val == "wpztUNK") return '未知'
+// else if (val == "wpztENABLE") return '可用'
+// else if (val == "wpztHOLD") return '隔离'
+// else if (val == "wpztNEW") return '新增'
+// else if (val == "wpztPLAN") return '规划'
+// else if (val == "wpztDISABLE") return '禁用'
+// else return '其他'
+// }
+
+// //盘点状态
+// export function getCountStageTypeStyle(val) {
+// if (val == 0) return 'unk'
+// else if (val == 1) return 'initial'
+// else if (val == 2) return 'afresh'
+// else if (val == 3) return 'supervision'
+// else return 'other'
+// }
+
+
+// //盘点状态
+// export function getCountStageDesc(val) {
+// if (val == 0) return '未知'
+// else if (val == 1) return '初盘'
+// else if (val == 2) return '重盘'
+// else if (val == 3) return '监盘'
+// else return '其他'
+// }
+
+// //盘点计划类型
+// export function getCheckTypeDesc(val) {
+// if (val == 0) return '未知'
+// else if (val == 1) return '周期盘点'
+// else if (val == 2) return '物理盘点'
+// else return '其他'
+// }
+
+// //盘点方式
+// export function getCountMethodDesc(val) {
+// if (val == 0) return '未知'
+// else if (val == 1) return '库位盘点'
+// else if (val == 2) return '物品盘点'
+// else if (val == 3) return '库位物料盘点'
+// else return '其他'
+// }
+
+// //获取库位类型
+// export function getLocationType(val) {
+// if (val == 'kwlxINSP') return 'location_inspect'
+// else if (val == 'kwlxRAW') return 'location_raw'
+// else if (val == 'kwlxSEMI') return 'location_semi'
+// else if (val == 'kwlxFG') return 'location_fg'
+// else if (val == 'kwlxWIP') return 'location_wip'
+// else if (val == 'kwlxHOLD') return 'location_hold'
+// else if (val == 'kwlxSCRAP') return 'location_scrap'
+// else if (val == 'kwlxNOK') return 'location_nok'
+// else if (val == 'kwxOVERFLOW') return 'location_overflow'
+// else if (val == 'kwlxCUsT') return 'location_cust'
+// else if (val == 'kwlxOUTSIDE') return 'location_outside'
+// else if (val == 'kwlxDIFF') return 'location_diff'
+// else if (val == 'kwxTRANSPORT') return 'location_transport'
+// else return 'location_other'
+// }
+
+// //获取库位类型描述
+// export function getLocationTypeDesc(val) {
+// if (val == 'kwlxINSP') return '待检库'
+// else if (val == 'kwlxRAW') return '原料库'
+// else if (val == 'kwlxSEMI') return '半成品库'
+// else if (val == 'kwlxFG') return '成品库'
+// else if (val == 'kwlxWIP') return '线边库'
+// else if (val == 'kwlxHOLD') return '隔离库'
+// else if (val == 'kwlxSCRAP') return '报废库'
+// else if (val == 'kwlxNOK') return '不合格品库'
+// else if (val == 'kwxOVERFLOW') return '溢出库'
+// else if (val == 'kwlxCUsT') return '客户寄售库'
+// else if (val == 'kwlxOUTSIDE') return '外库'
+// else if (val == 'kwlxDIFF') return '盘点差异库'
+// else if (val == 'kwxTRANSPORT') return '在途库'
+// else return '其他'
+
+// }
+
+// //获取任务类型描述
+// export function getJobType(val) {
+// if (val == 0) return 'uno'
+// else if (val == 1) return 'PurchaseReceiptJob' //采购收货
+// else if (val == 2) return 'PurchaseReturnJob' //采购退货任务
+// else if (val == 3) return 'InspectJob' //检验任务
+// else if (val == 4) return 'PutawayJob' //上架任务
+// else if (val == 5) return 'ProductReceiveJob' //完工收货任务
+// else if (val == 6) return 'IssueJob' //发料任务
+// else if (val == 7) return 'DeliverJob' //发货任务
+// else if (val == 8) return 'CheckJob' //校验任务
+// else if (val == 9) return 'CountJob' //盘点任务
+// else return 'Other'
+// }
+
+export function getPackingNumberAndBatchByList(managementList, itemCode, packingNumber, locationCode, batch) {
+ var itemInfo = {
+ packingNumber: "",
+ batch: ""
+ }
+ var manageType = queryManageModelByList(managementList, itemCode, locationCode)
+ if (manageType == "BY_QUANTITY") {
+ itemInfo.packingNumber = ""
+ itemInfo.batch = ""
+ } else if (manageType == "BY_BATCH") {
+ itemInfo.packingNumber = ""
+ itemInfo.batch = batch
+ } else if (manageType == "BY_PACKAGING") {
+ itemInfo.packingNumber = packingNumber
+ itemInfo.batch = batch
+ } else if (manageType == "BY_UNIQUE_ID") {
+ itemInfo.packingNumber = packingNumber
+ itemInfo.batch = batch
+ } else if (manageType == "") {
+ itemInfo.packingNumber = packingNumber
+ itemInfo.batch = batch
+ }
+ return itemInfo;
+}
+
+export function queryManageModelByList(managementList, itemCode, locationCode) {
+ var result = managementList.find(res => {
+ if (res.itemCode == itemCode && res.locationCode == locationCode) {
+ return res.ManagementPrecision
+ }
+ })
+
+ if (result != undefined) {
+ return result.ManagementPrecision
+ } else {
+ return ""
+ }
+}
+
+
+// 获取业务类型字典项
+export function getBusinessTypeDesc(type) {
+ if (type == "SupplierDeliver") {
+ return "供应商发货"
+ } else if (type = "PurchaseReceipt") {
+ return "采购收货";
+ } else if (type = "PurchaseReturn") {
+ return "采购退货";
+ } else if (type = "PurchasePutaway") {
+ return "采购上架";
+ }
+}
+
+
+export function queryManageModel(managementList, itemCode) {
+ var result = managementList.filter(res => {
+ if (res.itemCode == itemCode) {
+ return res.ManagementPrecision
+ }
+ })
+
+ if (result != undefined) {
+ return result[0].ManagementPrecision
+ } else {
+ return ""
+ }
+}
+
+export function getPackingNumberAndBatch(managementList, itemCode, packingNumber, batch) {
+ var itemInfo = {
+ packingNumber: "",
+ batch: ""
+ }
+
+ var manageType = queryManageModel(managementList, itemCode)
+ if (manageType == "BY_QUANTITY") {
+ itemInfo.packingNumber = ""
+ itemInfo.batch = ""
+ } else if (manageType == "BY_BATCH") {
+ itemInfo.packingNumber = ""
+ itemInfo.batch = batch
+ } else if (manageType == "BY_PACKAGING") {
+ itemInfo.packingNumber = packingNumber
+ itemInfo.batch = batch
+ } else if (manageType == "BY_UNIQUE_ID") {
+ itemInfo.packingNumber = packingNumber
+ itemInfo.batch = batch
+ }
+ return itemInfo;
+}
+
+// //提示是否消息
+// export function showConfirmMsg(content, callback) {
+// uni.showModal({
+// title: '提示',
+// cancelText: '否',
+// confirmText: '是',
+// content: content,
+// success: function(res) {
+// if (res.confirm) {
+// callback(true);
+// } else {
+// callback(false);
+// }
+// },
+// })
+// scanErrorAudio();
+// }
+
+export function compareTime() {
+ return function(a, b) {
+ // 按照时间降序
+ return Date.parse(a.time) - Date.parse(a.time)
+ }
+}
+//升序
+export function compareAsc(key) {
+ return function(a, b) {
+ var val1 = a[key];
+ var val2 = b[key];
+ return val1 - val2;
+ }
+}
+//倒序
+export function compareDesc(key) {
+ return function(a, b) {
+ var val1 = a[key];
+ var val2 = b[key];
+ return val2 - val1;
+ }
+}
+
+export function goHome() {
+ uni.reLaunch({
+ url: '/pages/index/index'
+ }).catch((e) => {});
+
+}
+/**
+ * 获取当天时间2023-11-07 00:00:00-->2023-11-07 23:59:59
+ */
+export function getTodayDate() {
+ var startTime = new Date(new Date().toLocaleDateString()).getTime();
+ var endTime = startTime + 24 * 60 * 60 * 1000 - 1
+ console.log("获取时间", startTime + "," + endTime)
+ return startTime + "," + endTime;
+}
+
+export function getCurrDateOneMonthsTimes() {
+ var end = Date.now()
+ // var end = new Date('2019/12/31 15:18').getTime()
+ var day = 31
+ var enda = new Date(end);
+ var endm = enda.getMonth() + 1;
+ var d = enda.getDate();
+ if (endm == 4 || endm == 6 || endm == 9 || endm == 11) {
+ day = 30
+ } else {
+ if (d == 31) {
+ day = 30
+ }
+ if (endm == 7 || endm == 12) {
+ day = 31
+ }
+ }
+ if (endm == 1) {
+ var endy = enda.getFullYear();
+ day = 31
+ if (d == 31) {
+ day = 28
+ }
+ if (d == 30) {
+ day = 29
+ }
+ if (d == 29) {
+ day = 30
+ }
+ if (endy % 4 == 0) {
+ day = 31
+ if (d == 31) {
+ day = 29
+ }
+ if (d == 30) {
+ day = 30
+ }
+ if (d == 29) {
+ day = 31
+ }
+ }
+ }
+ if (endm == 2) {
+ var endy = enda.getFullYear();
+ day = 28
+ if (endy % 4 == 0) {
+ day = 29
+ }
+ }
+ var start = 1000 * 60 * 60 * 24 * day
+ var interval = end + start;
+ return interval;
+}
+
+
+export function getCurrDateTimes() {
+ var time = (new Date()).getTime();
+ return time;
+}
+
+export function getBatch() {
+ var date = new Date();
+ var year = date.getFullYear(); //年
+ var month = date.getMonth() + 1; //月
+ var day = date.getDate(); //日
+ var batch = year.toString() + month.toString() + day.toString()
+ return batch;
+}
+
+export function getCurrDate() {
+ var date = new Date();
+ return getDate(date);
+}
+
+export function getCurrDateTime() {
+ var date = new Date();
+ return getDate(date) + " " + getTime(date);
+}
+
+export function getISODateTime() {
+ var date = new Date();
+ return getDate(date) + "T" + getTime(date) + "Z";
+}
+
+//格式化处理
+export function dateFormat(time) {
+ var result = ""
+ if (time != null) {
+ let date = new Date(time);
+ result = getDate(date) + " " + getTime(date);
+ }
+
+ return result;
+}
+
+//获取日期部分
+export function getDate(date) {
+ var year = date.getFullYear(); //年
+ var month = date.getMonth() + 1; //月
+ var day = date.getDate(); //日
+
+ month = month < 10 ? "0" + month : month;
+ day = day < 10 ? "0" + day : day;
+ return year + "-" + month + "-" + day;
+}
+
+//获取时间部分
+export function getTime(date) {
+ let hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
+ let minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
+ let seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
+ // 拼接
+ return hours + ":" + minutes + ":" + seconds;
+}
+
+//将20220713转成2022-07-13
+export function toYYYY_MM_DD(value) {
+ return value.substring(0, 4) + "-" + value.substring(4, 6) + "-" + value.substring(6, 8)
+}
+
+export function getRootFontSize() {
+ const self = this;
+ var fontSize = getApp().globalData.rootFontSize;
+ if (fontSize) {
+ return fontSize;
+ } else {
+ fontSize = uni.getStorageSync('root_font_size');
+ if (fontSize) {
+ getApp().globalData.rootFontSize = fontSize;
+ } else {
+ fontSize = '20px'; //默认字体大小
+ self.setRootFontSize(fontSize);
+ }
+ return fontSize;
+
+ }
+}
+
+export function getRemoveOption() {
+ let options = [{
+ text: '移除',
+ style: {
+ backgroundColor: '#F56C6C'
+ }
+ }]
+ return options;
+}
+
+export function setRootFontSize(fontSize) {
+ uni.setStorageSync('root_font_size', fontSize);
+ getApp().globalData.rootFontSize = fontSize;
+}
+
+
+export function scanErrorAudio() {
+ var music = null;
+ music = uni.createInnerAudioContext(); //创建播放器对象
+ music.src = "../../static/video/error.wav";
+ music.volume = 1;
+ music.play(); //执行播放
+ music.onEnded(() => {
+ //播放结束
+ music = null;
+ });
+}
+
+
+export function newMessageAudio() {
+ var music = null;
+ music = uni.createInnerAudioContext(); //创建播放器对象
+ music.src = "../../static/video/error.wav";
+ music.volume = 1;
+ music.play(); //执行播放
+ music.onEnded(() => {
+ //播放结束
+ music = null;
+ });
+}
+
+
+export function vibrate() {
+ uni.vibrateLong({
+ success: function() {
+
+ }
+ })
+}
+
+
+export function getDataSource(subList) {
+ let items = [];
+ subList.forEach(detail => {
+ var item = items.find(r =>
+ r.itemCode == detail.itemCode)
+ if (item == undefined) {
+ item = createItemInfo(detail);
+ let newDetail = createDetailInfo(detail); //
+ item.subList.push(newDetail);
+ items.push(item)
+ } else {
+ item.qty = calc.add(item.qty,detail.qty)
+ let newDetail = createDetailInfo(detail); //
+ item.subList.push(newDetail);
+ }
+ })
+ return items;
+}
+
+export function createItemInfo(res) {
+ let item = {
+ itemCode: res.itemCode,
+ itemName: res.itemName,
+ packQty: Number(res.packQty),
+ packUnit: res.packUnit,
+ qty: Number(res.qty),
+ handleQty: 0,
+ uom: res.uom,
+ subList: []
+ }
+ return item;
+}
+
+export function createDetailInfo(data) {
+ data.scaned = false;
+ // data.record = {};
+ let detail = data;
+ return detail;
+}
+
+export function updateTitle(title) {
+ uni.setNavigationBarTitle({
+ title: title
+ })
+}
+
+export function clearTirmAndWrap(content) {
+ return content.replace(/<\/?.+?\/?>|\r|\n|\s*/g, '')
+}
+
+export function navigateBack(backIndex) {
+ let canNavBack = getCurrentPages()
+ if (canNavBack && canNavBack.length - 1 > backIndex) {
+ uni.navigateBack({
+ delta: backIndex
+ })
+ } else {
+ history.back();
+ }
+}
+/**
+ * 深度克隆对象
+ * @param {*} target
+ */
+export function deepCopyData(target) {
+ // 克隆原始类型和null
+ if (!(target !== null && (typeof target === 'object' || typeof target === 'function'))) {
+ return target;
+ }
+
+ let cloneTarget = Array.isArray(target) ? [] : {};
+ // 克隆对象和数组
+ for (const key in target) {
+ cloneTarget[key] = deepCopyData(target[key]);
+ }
+
+ return cloneTarget;
+}
diff --git a/src/common/calc.js b/src/common/calc.js
new file mode 100644
index 0000000..2b48e48
--- /dev/null
+++ b/src/common/calc.js
@@ -0,0 +1,17 @@
+/* 解决js计算精度问题 */
+import { Decimal } from 'decimal.js';//引入
+class Calc {
+ add(num1,num2) {
+ return new Decimal(num1).add(new Decimal(num2)).toNumber()
+ }
+ sub(num1,num2) {
+ return new Decimal(num1).sub(new Decimal(num2)).toNumber()
+ }
+ mul(num1,num2) {
+ return new Decimal(num1).mul(new Decimal(num2)).toNumber()
+ }
+ div(num1,num2) {
+ return new Decimal(num1).div(new Decimal(num2)).toNumber()
+ }
+}
+export const calc = new Calc();
\ No newline at end of file
diff --git a/src/common/classify.data.js b/src/common/classify.data.js
new file mode 100644
index 0000000..e59359c
--- /dev/null
+++ b/src/common/classify.data.js
@@ -0,0 +1,42 @@
+export default [{
+ "name": "泡沫",
+ "children": [{
+ "name": "泡沫点检",
+ "icon": "/menu_search_lj.svg",
+ "path": "/pages/foam/check",
+ "index": 1,
+ },
+ {
+ "name": "原料投入(泡沫)",
+ "icon": "/menu_search_lj.svg",
+ "path": "/pages/plastics/input",
+ "index": 2,
+ }
+
+ ]
+ },
+
+ {
+ "name": "注塑",
+ "children": [{
+ "name": "注塑点检",
+ "icon": "/menu_search_lj.svg",
+ "path": "/pages/plastics/check",
+ "index": 1,
+ },
+ {
+ "name": "原料投入(注塑)",
+ "icon": "/menu_search_lj.svg",
+ "path": "/pages/plastics/input",
+ "index": 2,
+ },
+
+ ]
+ }
+
+
+
+
+
+
+]
\ No newline at end of file
diff --git a/src/common/detail.js b/src/common/detail.js
new file mode 100644
index 0000000..9cfb545
--- /dev/null
+++ b/src/common/detail.js
@@ -0,0 +1,147 @@
+import {
+ calc
+} from '@/common/calc'
+
+import {
+ Decimal
+} from 'decimal.js'; //引入
+
+
+
+export function getTreeDataSource(dataList) {
+ let items = [];
+
+ let parentList = dataList.filter(r => r.parentPackingNumber == null || r
+ .parentPackingNumber == '');
+ let childList = dataList.filter(r => r.parentPackingNumber != '' && r.parentPackingNumber != null);
+
+ parentList.forEach(detail => {
+ var item = items.find(r =>
+ r.itemCode == detail.itemCode)
+ if (item == undefined) {
+ item = createItemInfo(detail);
+ let newDetail = createDetailInfo(detail); //
+ item.subList.push(newDetail);
+ items.push(item)
+ } else {
+ item.qty = calc.add(item.qty, detail.qty)
+ let newDetail = createDetailInfo(detail); //
+ item.subList.push(newDetail);
+ }
+ })
+
+ if (childList.length > 0) {
+ items.forEach(r =>
+ r.subList.forEach(s => {
+ s.packList = childList.filter(c => c.parentPackingNumber == s.packingNumber)
+ s.packList.forEach(pac=>{
+ pac.scaned=false;
+ })
+ })
+ )
+ }
+
+ return items;
+}
+
+export function getDataSource(subList) {
+ let items = [];
+ subList.forEach(detail => {
+ var item = items.find(r =>
+ r.itemCode == detail.itemCode)
+ if (item == undefined) {
+ item = createItemInfo(detail);
+ let newDetail = createDetailInfo(detail); //
+ item.subList.push(newDetail);
+ items.push(item)
+ } else {
+ item.qty = calc.add(item.qty, detail.qty)
+ let newDetail = createDetailInfo(detail); //
+ item.subList.push(newDetail);
+ }
+ })
+ return items;
+ }
+
+export function createItemInfo(detail) {
+ let item = {
+ itemCode: detail.itemCode,
+ itemName: detail.itemName,
+ packQty: Number(detail.packQty) || undefined,
+ packUnit: detail.packUnit,
+ qty: Number(detail.qty),
+ handleQty: 0,
+ uom: detail.uom,
+ subList: []
+ }
+ return item;
+}
+
+export function createDetailInfo(data) {
+ data.scaned = false;
+ let detail = data;
+ detail.packList = [];
+ return detail;
+}
+
+//根据明细创建记录
+export function createRecordInfo(detail, balance) {
+ var record = {}
+ // let record = JSON.parse(JSON.stringify(detail));
+ //克隆对象,深度克隆,防止双向绑定同一个变量
+ Object.assign(record, detail)
+ detail.scaned = true;
+ detail.balance = balance;
+ detail.recommendInventoryStatus = detail.inventoryStatus;
+ detail.inventoryStatus = balance.inventoryStatus;
+ record.qty = Number(balance.qty);
+ return record;
+}
+
+//计算实际数量
+export function calcHandleQty(detailSource) {
+ for (let item of detailSource) {
+ item.handleQty = new Decimal(0).toNumber();
+ item.qty = new Decimal(0).toNumber();
+ for (let detail of item.subList) {
+ if (detail != undefined && detail.scaned) {
+ item.handleQty = calc.add(item.handleQty, detail.handleQty);
+ item.qty = calc.add(item.qty, detail.qty);
+ }
+ }
+ }
+}
+
+export function calcTreeHandleQty(detailSource) {
+ for (let item of detailSource) {
+ item.handleQty = new Decimal(0).toNumber();
+
+ for (let detail of item.subList) {
+ if (detail != undefined && detail.scaned) {
+ if(detail.packList.length>0){
+ detail.handleQty = new Decimal(0).toNumber();
+ for (let pack of detail.packList){
+ if(pack!=undefined&&pack.scaned){
+ detail.handleQty = calc.add(detail.handleQty, pack.handleQty);
+ }
+ }
+ }
+ item.handleQty = calc.add(item.handleQty, detail.handleQty);
+ }
+ }
+ }
+}
+
+
+
+
+
+export function getScanCount(subList) {
+ let items = subList.filter(r => {
+ if (r.scaned) {
+ return r;
+ }
+ })
+ let scanCount = items != null ? items.length : 0;
+ return scanCount;
+}
\ No newline at end of file
diff --git a/src/common/directory.js b/src/common/directory.js
new file mode 100644
index 0000000..5eae6dc
--- /dev/null
+++ b/src/common/directory.js
@@ -0,0 +1,572 @@
+let jobStatusList = [];
+let itemStatusList = [];
+let itemTypeList =[];
+let locationTypeList = [];
+let uomList = [];
+let inventoryStatusList = [];
+let containerTypeList = [];
+let packUnitList = [];
+let packUnitInfoList = [];
+let requestStatusList = [];
+let unplannedReceiptReasonList = [];
+let unplannedIssueReasonList = [];
+let unplannedIissueReason = [];
+let scrapReasonList = [];
+let inspectFailedReasonList = [];
+let inspectResultList = [];
+let nextActionList = [];
+let inspectTypeList = [];
+let sampleMethodList = [];
+let transferModeList = [];
+let countStageList = [];
+let locationAreaTypeList = [];
+
+
+
+// 获取业务类型字典项
+export function getBusinessTypeDesc(type) {
+ if (type == "SupplierDeliver") {
+ return "供应商发货"
+ } else if (type = "PurchaseReceipt") {
+ return "采购收货";
+ } else if (type = "PurchaseReturn") {
+ return "采购退货";
+ } else if (type = "PurchasePutaway") {
+ return "采购上架";
+ }
+}
+
+//获取字典信息
+export function clearCacheData() {
+ jobStatusList = [];
+ itemStatusList = [];
+ itemTypeList =[];
+ locationTypeList = [];
+ uomList = [];
+ inventoryStatusList = [];
+ containerTypeList = [];
+ packUnitList = [];
+ packUnitInfoList = [];
+ requestStatusList = [];
+ unplannedReceiptReasonList = [];
+ unplannedIssueReasonList = [];
+ unplannedIissueReason = [];
+ scrapReasonList = [];
+ inspectFailedReasonList = [];
+ inspectResultList = [];
+ nextActionList = [];
+ inspectTypeList = [];
+ sampleMethodList = [];
+ transferModeList = [];
+ countStageList = [];
+ locationAreaTypeList=[]
+}
+
+//获取字典信息
+export function getDirectoryInfo(type) {
+
+ var result = [];
+ var list = uni.getStorageSync("dictionary")
+ if (list != undefined && list.length > 0) {
+ for (let item of list) {
+ if (item.type == type) {
+ result = item.subList
+ break;
+ }
+ }
+ }
+
+ return result
+}
+
+//将字典项转为数组
+export function getDirectoryItemArray(data) {
+ var array = []
+ if (data == undefined || data == null || data == "") {
+ return array
+ }
+
+ if (data.indexOf(',') < 0) {
+ array.push(data)
+ } else {
+ var arrayItems = data.split(',')
+ arrayItems.forEach(res => {
+ array.push(res)
+ })
+ }
+ return array
+}
+
+//查询字典项是否在列表中
+export function checkDirectoryItemExist(list, type) {
+ let exist = false;
+ if (list == null || list.length == 0) {
+ exist = true;
+ } else {
+ var temp = list.filter(res => {
+ if (res == type) {
+ return res
+ }
+ })
+ if (temp != undefined && temp.length > 0) {
+ exist = true
+ }
+ }
+ return exist
+}
+
+
+//获取任务状态
+export function getJobStateInfo(value) {
+ var resultInfo = "";
+ if (jobStatusList.length == 0) {
+ jobStatusList = getDirectoryInfo("job_status")
+ }
+ if (jobStatusList.length > 0) {
+ for (let item of jobStatusList) {
+ if (item.value == value) {
+ resultInfo = item
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+
+//获取任务状态样式
+export function getJobStateStyle(value) {
+ let item = getJobStateInfo(value);
+ if (item == null || item == '') {
+ return 'other'
+ } else {
+ if (item.remark == '') {
+ return 'other'
+ } else {
+ return item.remark;
+ }
+ }
+}
+
+//获取库区描述(多个库区)
+export function getListLocationAreaTypeDesc(list) {
+ let desc = '';
+ list.forEach(res => {
+ desc += getLocationAreaTypeInfo(res).label + ","
+ })
+ desc = desc.slice(0, -1);
+ return desc;
+}
+
+//获取库位描述(多个库位)
+export function getListLocationTypeDesc(list) {
+ let desc = '';
+ list.forEach(res => {
+ desc += getLocationTypeInfo(res).label + ","
+ })
+ desc = desc.slice(0, -1);
+ return desc;
+}
+
+
+//获取物品状态(多个状态)
+export function getListItemStateDesc(list) {
+ let desc = '';
+ list.forEach(res => {
+ desc += getItemStateInfo(res).label + ","
+ })
+ desc = desc.slice(0, -1);
+ return desc;
+}
+
+//获取物品类型(多个)
+export function getListItemTypeDesc(list) {
+ let desc = '';
+ list.forEach(res => {
+ desc += getItemTypeInfo(res).label + ","
+ })
+ desc = desc.slice(0, -1);
+ return desc;
+}
+
+//获取物品类型
+export function getItemTypeInfo(value) {
+ var resultInfo = "";
+ if (itemTypeList.length == 0) {
+ itemTypeList = getDirectoryInfo("item_type")
+ }
+ if (itemTypeList.length > 0) {
+ for (let item of itemTypeList) {
+ if (item.value == value) {
+ resultInfo = item
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+
+
+
+
+//获取物品状态
+export function getItemStateInfo(value) {
+ var resultInfo = "";
+ if (itemStatusList.length == 0) {
+ itemStatusList = getDirectoryInfo("item_status")
+ }
+ if (itemStatusList.length > 0) {
+ for (let item of itemStatusList) {
+ if (item.value == value) {
+ resultInfo = item
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+
+//获取库区类型
+export function getLocationAreaTypeInfo(value) {
+ var resultInfo = "";
+ if (locationAreaTypeList.length == 0) {
+ locationAreaTypeList = getDirectoryInfo("area_type")
+ }
+ if (locationAreaTypeList.length > 0) {
+ for (let item of locationAreaTypeList) {
+ if (item.value == value) {
+ resultInfo = item
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+
+//获取库位类型
+export function getLocationTypeInfo(value) {
+ var resultInfo = "";
+ if (locationTypeList.length == 0) {
+ locationTypeList = getDirectoryInfo("location_type")
+ }
+ if (locationTypeList.length > 0) {
+ for (let item of locationTypeList) {
+ if (item.value == value) {
+ resultInfo = item
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+//获取库区类型名称
+export function getLocationAreaTypeName(value) {
+ let location = getLocationAreaTypeInfo(value);
+
+ return location == '' ? value : location.label;
+}
+
+
+//获取库位类型名称
+export function getLocationTypeName(value) {
+ let location = getLocationTypeInfo(value);
+
+ return location == '' ? value : location.label;
+}
+
+
+//获取库位类型名称
+export function getLocationTypeNameList(lst) {
+ let desc = '';
+ lst.forEach(res => {
+ desc += getLocationTypeInfo(res).label + ","
+ })
+ desc = desc.slice(0, -1);
+ return desc;
+}
+
+//获取计量单位
+export function getUomInfo(value) {
+ var resultInfo = "";
+ if (uomList.length == 0) {
+ uomList = getDirectoryInfo("uom")
+ }
+ if (uomList.length > 0) {
+ for (let item of uomList) {
+ if (item.value == value) {
+ resultInfo = item
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+
+//获取包装单位
+export function getPackUnitInfo(value) {
+ var resultInfo = "";
+ if (packUnitList.length == 0) {
+ packUnitList = getDirectoryInfo("pack_unit")
+ }
+ if (packUnitList.length > 0) {
+ for (let item of packUnitList) {
+ if (item.value == value) {
+ resultInfo = item
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+
+//获取申请状态
+export function getRequestStateInfo(value) {
+ var resultInfo = "";
+ if (requestStatusList.length == 0) {
+ requestStatusList = getDirectoryInfo("request_status")
+ }
+ if (requestStatusList.length > 0) {
+ for (let item of requestStatusList) {
+ if (item.value == value) {
+ resultInfo = item
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+
+
+//获取库存状态
+export function getInventoryStatusInfo(value) {
+ var resultInfo = "";
+ if (inventoryStatusList.length == 0) {
+ inventoryStatusList = getDirectoryInfo("inventory_status")
+ }
+ if (inventoryStatusList.length > 0) {
+ for (let item of inventoryStatusList) {
+ if (item.value == value) {
+ resultInfo = item
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+
+//获取库存样式
+export function getInventoryStatusStyle(value) {
+ let item = getInventoryStatusInfo(value);
+ if (item == null || item == '') {
+ return 'other'
+ } else {
+ if (item.remark == '') {
+ return 'other'
+ } else {
+ return item.remark;
+ }
+ }
+}
+
+//获取库存样式
+export function getInventoryStatusName(value) {
+ let item = getInventoryStatusInfo(value);
+ if (item == null || item == '') {
+ return value
+ } else {
+ if (item.label == '') {
+ return value
+ } else {
+ return item.label;
+ }
+ }
+}
+
+//获取状态描述 list
+export function getInventoryStatusDesc(lst) {
+ let desc = '';
+ lst.forEach(res => {
+ desc += getInventoryStatusInfo(res).label + ","
+ })
+ desc = desc.slice(0, -1);
+ return desc;
+}
+
+//获取器具状态
+export function getContainerStatusInfo(value) {
+ var resultInfo = "";
+ if (containerTypeList.length == 0) {
+ containerTypeList = getDirectoryInfo("container_type")
+ }
+ if (containerTypeList.length > 0) {
+ for (let item of containerTypeList) {
+ if (item.value == value) {
+ resultInfo = item
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+
+//获取计划外入库原因
+export function getUnPlannedReceiptReasonList(value) {
+ if (unplannedReceiptReasonList.length == 0) {
+ unplannedReceiptReasonList = getDirectoryInfo("unplanned_receipt_reason")
+ }
+ unplannedReceiptReasonList.forEach(res => {
+ res.text = res.label;
+ res.value = res.value
+ })
+ return unplannedReceiptReasonList
+}
+
+//获取计划外出库原因
+export function getUnPlannedIssuseReasonList(value) {
+ if (unplannedIssueReasonList.length == 0) {
+ unplannedIssueReasonList = getDirectoryInfo("unplanned_issue_reason")
+ }
+ unplannedIssueReasonList.forEach(res => {
+ res.text = res.label;
+ res.value = res.value
+ })
+ return unplannedIssueReasonList
+}
+
+//获取报废出库原因
+export function getScarpReasonList(value) {
+ if (scrapReasonList.length == 0) {
+ scrapReasonList = getDirectoryInfo("scrap_reason")
+ }
+ scrapReasonList.forEach(res => {
+ res.text = res.label;
+ res.value = res.value
+ })
+ return scrapReasonList
+}
+
+//获取检验失败原因
+export function getInspectFailedReasonList(value) {
+ if (inspectFailedReasonList.length == 0) {
+ inspectFailedReasonList = getDirectoryInfo("inspect_failed_reason")
+ }
+ inspectFailedReasonList.forEach(res => {
+ res.text = res.label;
+ res.value = res.value
+ })
+ return inspectFailedReasonList
+}
+
+//获取检验结果
+export function getInspectResultList(value) {
+ if (inspectResultList.length == 0) {
+ inspectResultList = getDirectoryInfo("inspect_result")
+ }
+ inspectResultList.forEach(res => {
+ res.text = res.label;
+ res.value = res.value
+ })
+ return inspectResultList
+}
+
+
+
+//获取下一步动作
+export function getNextActionList(value) {
+ if (nextActionList.length == 0) {
+ nextActionList = getDirectoryInfo("next_action")
+ }
+ nextActionList.forEach(res => {
+ res.text = res.label;
+ res.value = res.value
+ })
+ return nextActionList
+}
+
+
+
+//获取检验类型
+export function getInspectType(value) {
+ var resultInfo = "";
+ if (inspectTypeList.length == 0) {
+ inspectTypeList = getDirectoryInfo("inspect_type")
+ }
+ if (inspectTypeList.length > 0) {
+ for (let item of inspectTypeList) {
+ if (item.value == value) {
+ resultInfo = item.label
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+//获取抽检方式
+export function getSampleMethod(value) {
+ var resultInfo = "";
+ if (sampleMethodList.length == 0) {
+ sampleMethodList = getDirectoryInfo("sample_method")
+ }
+ if (sampleMethodList.length > 0) {
+ for (let item of sampleMethodList) {
+ if (item.value == value) {
+ resultInfo = item.label
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+
+//获取运输方式
+export function getTransferModeName(value) {
+ var resultInfo = "";
+ if (transferModeList.length == 0) {
+ transferModeList = getDirectoryInfo("transfer_mode")
+ }
+ if (transferModeList.length > 0) {
+ for (let item of transferModeList) {
+ if (item.value == value) {
+ resultInfo = item.label
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+
+//获取盘点阶段名称
+export function getCountStageName(value) {
+ var resultInfo = "";
+ if (countStageList.length == 0) {
+ countStageList = getDirectoryInfo("count_stage")
+ }
+ if (countStageList.length > 0) {
+ for (let item of countStageList) {
+ if (item.value == value) {
+ resultInfo = item.label
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+
+//获取包装规格
+export function getPackUnitName(value) {
+ var resultInfo = "";
+ if (packUnitInfoList.length == 0) {
+ packUnitInfoList = uni.getStorageSync('packunit');
+ }
+ if (packUnitInfoList.length > 0) {
+ for (let item of packUnitInfoList) {
+ if (item.code == value) {
+ resultInfo = item.name
+ break;
+ }
+ }
+ }
+ return resultInfo
+}
+
+
+locationAreaTypeList
\ No newline at end of file
diff --git a/src/common/label.js b/src/common/label.js
new file mode 100644
index 0000000..03e65b8
--- /dev/null
+++ b/src/common/label.js
@@ -0,0 +1,197 @@
+let labelDic = [];
+
+import {
+ getLabelByHeader,
+ getPackageListByNumber
+} from '../api/request2.js';
+
+import {
+ checkDirectoryItemExist,
+ getDirectoryItemArray
+} from '../common/directory.js';
+
+
+
+export function getLabelInfo(scanMsg,headerType, callBack) {
+ console.log('扫描信息:', scanMsg);
+ if (scanMsg.length == 0) {
+ return null
+ }
+ let items = scanMsg.split(';');
+ let header = items[0];
+ let version = items[1];
+ if ((header != undefined) && (version!=undefined)) {
+ var hearList =getDirectoryItemArray(headerType)
+ if(!checkDirectoryItemExist(hearList,header)){
+ let labelResult = {
+ label: {
+ labelType: "",
+ barType: '',
+ code:""
+ },
+ package: null,
+ success: false,
+ message: '请输入'+headerType+"开始的标签",
+ }
+ callBack(labelResult);
+ return;
+ }
+
+ //解析扫描的是一维码还是二维码
+ let type = header.substring(header.length - 1, header.length);
+ if (type == 'Q') //qrcode
+ {
+ getQRCodeInfo(header, version, scanMsg, callBack);
+ } else if (type == 'B') //barcode
+ {
+ getBarCodeInfo(header, version, items[2], callBack);
+ } else { //直接输入文本
+ getBarCodeInfo('text', 'V1.0', scanMsg, callBack);
+ }
+ }else {
+ getBarCodeInfo('text', 'V1.0', scanMsg, callBack);
+ // let labelResult = {
+ // label: {
+ // labelType: "",
+ // barType: '',
+ // code:""
+ // },
+ // package: null,
+ // success: false,
+ // message: '标签格式不正确',
+ // }
+ // callBack(labelResult);
+ }
+}
+
+export function getQRCodeInfo(header, version, scanMsg, callBack) {
+ //获取包装信息
+ let labelItem = labelDic.find(r => r.header == header && r.version == version);
+ if (labelItem == undefined) {
+ let labelResult = {
+ label: {
+ barType: 'QRCode',
+ },
+ package: {},
+ success: true,
+ message: ''
+ }
+ getLabelByHeader(header, version).then(res => {
+ if (res.data==null) {
+ labelResult.success = false;
+ labelResult.message = '未查找到标签头为[' + header + ']的标签类型';
+ callBack(labelResult);
+ } else {
+ let newItem = {
+ header: header,
+ version: version,
+ label: res.data,
+ };
+
+ labelDic.push(newItem);
+ getLabelItems(newItem, scanMsg, callBack);
+ }
+ }).catch(err => {
+ labelResult.success = false;
+ labelResult.message = err;
+ callBack(err);
+ })
+ } else {
+ getLabelItems(labelItem, scanMsg, callBack);
+ }
+}
+
+export function getLabelItems(labelItem, scanMsg, callBack) {
+ let labelResult = analysisQRCodeLabel(labelItem, scanMsg);
+ if (labelResult.label.labelType == 'PurchaseLabel' || labelResult.label.labelType == 'MakeLabel') {
+ //查询包装信息
+ let packingNumber = labelResult.label.packingNumber
+ if (packingNumber != undefined) {
+ getPackageListByNumber(packingNumber).then(pack => {
+ if (pack.data.reqPackage) {
+ labelResult.package = pack.data.reqPackage;
+ labelResult.package.subList = pack.data.subList;
+ console.log('包装信息', JSON.stringify(labelResult.package))
+
+ } else {
+ labelResult.success = false;
+ labelResult.message = '包装号[' + packingNumber + ']没有包装信息';
+ }
+ callBack(labelResult);
+ }).catch(err => {
+ labelResult.success = false;
+ labelResult.message = err;
+ callBack(labelResult);
+ })
+ } else {
+ labelResult.success = false;
+ labelResult.message = '在条码中未解析到箱码';
+ callBack(labelResult);
+ }
+ } else {
+ callBack(labelResult);
+ }
+}
+
+export function analysisQRCodeLabel(labelItem, scanMsg) {
+ let labelResult = {
+ label: {
+ labelType: labelItem.label.labelType,
+ barType: 'QRCode',
+ },
+ package: {},
+ success: true,
+ message: ''
+ }
+
+ let separators = labelItem.label.separators;
+ if (separators == undefined || separators == null) {
+ labelResult.message = "未读取到分隔符";
+ } else {
+ if (scanMsg.indexOf(separators) < 0) {
+ labelResult.success = false;
+ labelResult.message = "标签格式不正确";
+ } else {
+ try {
+ let scanItems = scanMsg.split(separators);
+ if (scanItems.length > 0) {
+ scanItems.forEach((item, index) => {
+ let type = item.substring(0, 1);
+ let value = item.substring(1, item.length);
+ if (type == 'H') {
+ labelResult.label.header = item;
+ } else if (type == 'V') {
+ labelResult.label.version = item;
+ } else {
+ let barcode = labelItem.label.subList.find(code => code.prefixChar.toUpperCase() ==
+ type
+ .toUpperCase());
+ if (barcode != undefined) {
+ labelResult.label[barcode.code] = value;
+ }
+ }
+ })
+ }
+ } catch (e) {
+ labelResult.message = e.message;
+ }
+
+ }
+ }
+ // console.log('标签', labelResult.label)
+ return labelResult;
+}
+
+export function getBarCodeInfo(header, version, value, callBack) {
+ let labelResult = {
+ label: {
+ labelType: header,
+ barType: 'BarCode',
+ code:value
+ },
+ package: null,
+ success: true,
+ message: '',
+ }
+ callBack(labelResult);
+}
diff --git a/src/common/record.js b/src/common/record.js
new file mode 100644
index 0000000..ab5d0c9
--- /dev/null
+++ b/src/common/record.js
@@ -0,0 +1,109 @@
+import {
+ getBusinesstypeByCode
+} from '@/api/request2.js';
+
+import {
+ getDirectoryItemArray,
+} from '@/common/directory.js';
+import { calc } from '@/common/calc'
+import { Decimal } from 'decimal.js';//引入
+ import {
+ deepCopyData
+ } from '@/common/basic.js';
+
+export function createItemInfo(balance, pack) {
+ let item = {
+ itemCode: pack.itemCode,
+ itemName: pack.itemName,
+ packQty: pack.packQty,
+ packUnit: pack.packUnit,
+ qty: new Decimal(balance.qty).toNumber(),
+ handleQty:new Decimal(0).toNumber(),
+ uom: pack.uom,
+ subList: []
+ }
+ return item;
+}
+
+export function createDetailInfo(balance, pack) {
+ balance.scaned = true;
+ // data.toInventoryStatus = this.toInventoryStatus == "" ? data.inventoryStatus : this.toInventoryStatus;
+ // data.inventoryStatus = data.inventoryStatus;
+ let detail = deepCopyData(balance);
+ detail.balanceQty = new Decimal(detail.qty).toNumber()
+ detail.qty = new Decimal(detail.qty).toNumber();
+ detail.packQty = new Decimal(pack.packQty).toNumber()
+ detail.packUnit = pack.packUnit
+ detail.handleQty = new Decimal(detail.qty).toNumber() ;
+ detail.package = pack;
+
+ return detail;
+}
+
+//计算实际数量
+export function calcHandleQty(detailSource) {
+ for (let item of detailSource) {
+ item.handleQty = new Decimal(0).toNumber();
+ item.qty = new Decimal(0).toNumber();
+ for (let detail of item.subList) {
+ if(detail!=undefined){
+ if(detail.scaned){
+ item.handleQty = calc.add(item.handleQty,detail.handleQty);
+ }
+ item.qty = calc.add(item.qty,detail.qty);
+ }
+ }
+ }
+}
+
+export function calcTreeHandleQty(detailSource) {
+ for (let item of detailSource) {
+ item.handleQty = new Decimal(0).toNumber();
+
+ for (let detail of item.subList) {
+ if (detail != undefined && detail.scaned) {
+ detail.handleQty = new Decimal(0).toNumber();
+ for (let pack of detail.packList){
+ if(pack!=undefined&&pack.scaned){
+ detail.handleQty = calc.add(detail.handleQty, pack.handleQty);
+ }
+ }
+ item.handleQty = calc.add(item.handleQty, detail.handleQty);
+ }
+ }
+ }
+}
+
+export function getBusinessType(typeCode, callback) {
+ let result = {
+ success: true,
+ businessType: '',
+ fromLocationAreaTypeList:'',
+ toLocationAreaTypeList:'',
+ itemCodeTypeList:"",
+ useOnTheWay:"FALSE",
+ fromInventoryStatuses: '',
+ toInventoryStatuses: '',
+ message: ''
+ };
+ getBusinesstypeByCode(typeCode).then(res => {
+ if (res.data.total > 0) {
+ result.businessType = res.data.list[0];
+ result.fromLocationAreaTypeList = getDirectoryItemArray(res.data.list[0].outAreaTypes) ;
+ result.toLocationAreaTypeList = getDirectoryItemArray(res.data.list[0].inAreaTypes) ;
+ result.itemCodeTypeList = getDirectoryItemArray(res.data.list[0].itemTypes)
+ result.fromInventoryStatuses = res.data.list[0].outInventoryStatuses;
+ result.toInventoryStatuses = res.data.list[0].inInventoryStatuses;
+ result.useOnTheWay =res.data.list[0].useOnTheWay
+ callback(result)
+ } else {
+ result.success = false;
+ result.message = '业务类型[' + typeCode + ']获取失败';
+ callback(result)
+ }
+ }).catch(error => {
+ result.success = false;
+ result.message = error;
+ callback(result)
+ })
+}
diff --git a/src/common/style/PDA_style-delete.css b/src/common/style/PDA_style-delete.css
new file mode 100644
index 0000000..47edd46
--- /dev/null
+++ b/src/common/style/PDA_style-delete.css
@@ -0,0 +1,221 @@
+
+@media screen and (min-width:400px) {
+ uni-app, uni-page-head{
+ height: 60px;
+ }
+ uni-page-head .uni-page-head{
+ height: 60px !important;
+ }
+ uni-page-head[uni-page-head-type=default]~uni-page-wrapper{
+ height: calc(100% - 70px) !important;
+ }
+ uni-page-head .uni-page-head__title{
+ font-size: 1.125rem !important;
+ line-height: 40px !important;
+ font-weight: normal !important;
+ }
+ uni-page-head .uni-btn-icon{
+ font-size: 1.725rem !important;
+ }
+ .font_xs{
+ font-size: 0.825rem !important;
+ }
+ .font_xl{
+ font-size: 1.325rem !important;
+ }
+ .mini-type-style{
+ font-size: 0.8rem !important;
+ }
+ .cen_card .label_box .label_info uni-text{
+ line-height: 1.725 !important;
+ /* font-size: 1rem !important; */
+ color: #333;
+ }
+ .cen_card .label_box .label_info{
+ background-color: #eee !important;
+ }
+ .popup_box .detail-list{
+ box-shadow: none !important;
+ }
+ .detail-list,.device-detail{
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15) !important;
+ }
+ .list_form .uni-table-tr{
+ background-color: #f0f0f0 !important;
+ }
+ .list_form .uni-table-th{
+ border-bottom: 1px solid #cfcfcf !important;
+ }
+ /* yuanswitch
+ .require_wrap{
+ padding-top: 0 !important;
+ }
+ .require_wrap .require_cell{
+ line-height: 1.75 !important;
+ }
+ .ljh_box .tit_ljh{
+ font-size: 1.25rem !important;
+ }
+ .cen_card .label_box .label_info {
+ background-color: #eee !important;
+ }
+ .cen_card .label_box .label_info uni-image{
+ width: 48rpx !important;
+ height: 48rpx !important;
+ }
+
+ .cen_card .label_box .label_info uni-text{
+ line-height: 1.5 !important;
+ font-size: 1rem !important;
+ color: #333;
+ }
+ .ljh_box .tit_ljh .state-style, .top_card .state-style{
+ font-size: 0.8rem !important;
+ }
+ .card_task .ljh_box{
+ margin-bottom: 0 !important;
+ }
+ .task_num uni-image{
+ width: 56rpx !important;
+ height: 56rpx !important;
+ }
+ .task_num uni-text{
+ font-size: 1rem !important;
+ }
+ .pda_receipt_label .label_order uni-text{
+ font-size: 1rem;
+ color: #434556;
+ }
+ .pda_receipt_label .icon_normal{
+ width: 56rpx;
+ height: 56rpx;
+ }
+ .pda_receipt_bot .icon_normal{
+ width: 56rpx;
+ height: 56rpx;
+ float: left;
+ }
+ .pda_receipt_bot .text_darkblue{
+ float: left;
+ font-size: 1rem;
+ margin-top: 8rpx;
+ display: inline-block;
+ }*/
+ .top_card .text_lightblue{
+ font-size: 1rem !important;
+ }
+ .top_card .cell_box .cell_info{
+ margin-bottom: 0;
+ }
+ .uni-tab-item-title{
+ font-size: 1.125rem !important;
+ }
+ .cell_box .cell_info uni-view{
+ font-size: 1rem !important;
+ color: #101010 !important;
+ }
+ .cell_box .cell_info .text_lightblue{
+ font-size: 0.875rem !important;
+ color: #6A6E7A !important;
+ }
+ .cell_box .cell_info .text_black{
+ font-size: 1.125rem !important;
+
+ }
+ .scan_float uni-image{
+ margin-top: 18rpx !important;
+ }
+ .scan_float uni-view{
+ font-size: 0.875rem !important;
+ letter-spacing: 1px;
+ }
+ .new_btn_bot .new_save_btn,.popup_box .pop_title uni-text{
+ font-size: 1rem !important;
+ }
+ .bot_card{
+ background-color: #eee !important;
+ }
+ .bot_card_item uni-text{
+ font-size: 0.8rem !important;
+ font-weight: 600;
+ }
+ .summary_state .state_point{
+ font-size: 1rem !important;
+ }
+ .summary_item label{
+ float: left;
+ }
+ .summary_item uni-text{
+ font-size: 1.125rem !important;
+ font-weight: normal !important;
+ float: left;
+ }
+ /* popup */
+ .popup_box{
+ box-sizing: border-box;
+ }
+ .popup_box .uni-steps{
+ width:100%;
+ overflow-x: hidden;
+ }
+ .popup_box .uni-steps__row-line-item{
+ height: 60rpx !important;
+ }
+ .popup_box .uni-steps__row-text-container{
+ margin-top: 0 !important;
+ }
+ .popup_box,.uni-popup .uni-scroll-view-content{
+ border-top-left-radius:30rpx !important;
+ border-top-right-radius:30rpx !important;
+ }
+ .popup_box .pop_title{
+ font-size: 1.125rem !important;
+ letter-spacing: 1px;
+ }
+ .popup_box .pop_tab .tab_tit{
+ font-size: 0.875rem !important;
+ }
+ .popup_box .pop_tab .tab_tit_active{
+ font-size: 1rem !important;
+ }
+ .popup_box .pop_tab .tab_info{
+ min-height: 200rpx !important;
+ }
+ .popup_box .pop_tab .tab_info uni-textarea{
+ height: 200rpx;
+ }
+ .popup_box .pop_tab .tab_info uni-button{
+ font-size: 0.875rem !important;
+ letter-spacing: 1px;
+ }
+ /*底部按钮*/
+ .new_btn_bot .new_save_btn{
+ background-color: #E4EAFF !important;
+ height: 50px;
+ line-height: 50px;
+ }
+ .new_btn_bot .new_clear_btn{
+ font-size: 1rem !important;
+ line-height: 50px;
+ }
+ .scroll-detail{
+ padding-bottom: 70px !important;
+ }
+ .count_shadow,.device-detail{
+ box-shadow: 0 0 20rpx rgba(0,0,0,0.2);
+ }
+ .list_info {
+ padding: 0 20rpx 20rpx;
+ margin-top: 0;
+ }
+ .uni-scroll-view-content .creattp_list{
+ width: 100% !important;
+ }
+ .creattp_list .uni-list .list_cell uni-text{
+ font-weight: bold;
+ }
+ .popup_box .scan_scroll{
+ max-height: 44vh !important;
+
+ }
+}
diff --git a/src/common/style/new_style.css b/src/common/style/new_style.css
new file mode 100644
index 0000000..c457638
--- /dev/null
+++ b/src/common/style/new_style.css
@@ -0,0 +1,2772 @@
+/*WMY 20220818 cssv1.0*/
+/*公共*/
+uni-page-head .uni-page-head {
+ z-index: 98 !important;
+ background-color: #fff !important;
+}
+
+uni-page-head .uni-page-head__title {
+ font-weight: normal;
+}
+
+.whole {
+ width: 100%;
+}
+
+.fl {
+ float: left;
+}
+
+.fr {
+ float: right;
+}
+
+.tc {
+ text-align: center;
+}
+
+.text_bold {
+ font-weight: bold;
+}
+
+.text_black {
+ color: #101010;
+}
+
+.text_packingCode {
+ color: #101010;
+ word-break: break-all;
+}
+
+.text_lightblue {
+ color: #6A6E7A;
+}
+
+.text_darkblue {
+ color: #434556;
+}
+
+.text_blue {
+ color: #5A7CF3;
+}
+
+.font_xs {
+ font-size: 0.775rem;
+}
+
+.font_sm {
+ font-size: 0.825rem;
+}
+
+.font_xl {
+ font-size: 1.125rem;
+}
+
+.font_default {
+ font-size: 1rem;
+}
+
+.margin_top {
+ margin-top: 20rpx;
+}
+
+.margin_bottom {
+ margin-bottom: 20rpx;
+}
+
+.margin_xs_top {
+ margin-top: 10rpx;
+}
+
+.margin_xs_bottom {
+ margin-bottom: 10rpx;
+}
+
+.margin_right {
+ margin-right: 20rpx;
+}
+
+.margin {
+ margin: 20rpx;
+}
+
+.padding_10 {
+ padding: 10rpx;
+}
+
+.padding_15 {
+ padding: 15rpx;
+}
+
+.padding_20 {
+ padding: 20rpx;
+}
+
+.padding {
+ padding: 20rpx;
+}
+
+.padding_bottom {
+ padding-bottom: 20rpx;
+}
+
+.nopad {
+ padding: 0 !important;
+}
+
+.nopad_bot {
+ padding-bottom: 0 !important;
+}
+
+/*
+物料状态
+未知,可用,隔离,新增,规划,禁用
+*/
+
+.item_active {
+ background-color: #5FCB94;
+ color: #FFFFFF;
+}
+
+.item_hold {
+ background-color: #FF4206;
+ color: #FFFFFF;
+}
+
+.item_new {
+ background-color: #E6A23C;
+ color: #FFFFFF;
+}
+
+.item_plan {
+ background-color: #2677F9;
+ color: #FFFFFF;
+}
+
+.item_disable {
+ background-color: #666;
+ color: #FFFFFF;
+}
+
+/* 器具状态 */
+.container_empty {
+ background-color: #FF4206;
+ color: #FFFFFF;
+}
+
+.container_useing {
+ background-color: #5FCB94;
+ color: #FFFFFF;
+}
+
+
+.container_repair {
+ background-color: #666;
+ color: #FFFFFF;
+}
+
+.container_scrap {
+ background-color: #E6A23C;
+ color: #FFFFFF;
+}
+
+
+
+.scan_float {
+ position: fixed;
+ z-index: 10;
+ right: 20rpx;
+ bottom: 20%;
+ width: 110rpx;
+ height: 110rpx;
+ background-color: #5A7CF3;
+ border-radius: 50%;
+ text-align: center;
+ box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
+ opacity: 0.8;
+}
+
+.scan_float image {
+ width: 40rpx;
+ height: 40rpx;
+ margin-top: 10rpx;
+}
+
+.scan_float view {
+ color: #fff;
+ font-size: .725rem;
+ margin-top: -8rpx;
+}
+
+.top_card {
+ background-color: #5A7CF3;
+ overflow: hidden;
+ /* padding: 20rpx 0; */
+}
+
+.top_card .device-detail {
+ /* margin-top: 0 !important; */
+}
+
+.top_card .mini-type-style {
+ color: #fff !important;
+ font-weight: normal;
+ height: 46rpx;
+}
+
+.cen_card {
+ padding: 0 0rpx;
+ width: 100%;
+ box-sizing: border-box;
+ float: left;
+}
+
+.cell_box {
+ width: 100%;
+}
+
+.cell_box .cell_info {
+ position: relative;
+ /* width: 25%; */
+ padding: 0 20rpx;
+ /* margin: 0 0 20rpx; */
+ text-align: center;
+}
+
+.cell_box .cell_long {
+ /* width: 33%; */
+}
+
+.cell_box .cell_info view {
+ font-size: 0.9375rem;
+ margin-bottom: 10rpx;
+ color: #7B8195;
+}
+
+.cell_box .cell_info .text_black {
+ font-size: 0.875rem;
+ color: #101010;
+}
+
+.cell_box .cell_info .text_lightblue {
+ color: #949CB6;
+ font-size: 0.8rem;
+}
+
+.cell_box .cell_info::after {
+ position: absolute;
+ content: "";
+ right: 0;
+ top: 50%;
+ transform: translateY(-50%);
+ width: 1px;
+ height: 20px;
+ background-color: #ddd;
+}
+
+.cell_box .cell_info:last-child::after {
+ width: 0;
+}
+
+.cen_card .label_box {
+ margin-bottom: 20rpx;
+}
+
+.cen_card .label_box .label_info {
+ background-color: #eee;
+ color: #434556;
+ font-size: 0.875rem;
+ padding: 8rpx;
+ border-radius: 8rpx;
+ margin-right: 10rpx;
+ vertical-align: middle;
+}
+
+.cen_card .label_box .label_info image {
+ /* float: left; */
+ vertical-align: middle;
+}
+
+.cen_card .label_box .label_info text {
+ /* line-height: 1.25; */
+ /* float: left; */
+ vertical-align: middle;
+}
+
+.photo_btn {
+ background-color: #ececec;
+ color: #5A7CF3;
+ font-size: 0.875rem;
+ padding: 8rpx 10rpx;
+ border-radius: 8rpx;
+}
+
+.photo_btn text {
+ line-height: 1.5;
+}
+
+.cen_card .cell_box .text_black {
+ font-size: 0.875rem;
+}
+
+.cen_card .cell_box .cell_info .text_lightblue {
+ font-size: 0.925rem;
+}
+
+.bot_card {
+ background-color: #f8f8f8;
+ padding: 16rpx;
+ overflow: hidden;
+}
+
+.bot_card_item {
+ width: 50%;
+ text-align: left;
+ height: 60rpx;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+/* .item_long{
+ width: 32% !important;
+}
+*/
+.item_short {
+ width: 20%;
+}
+
+.bot_card_item uni-text {
+ font-size: .725rem;
+ margin-left: 4rpx;
+ color: #333333;
+ background-color: transparent;
+}
+
+.bot_card_item .icon_state {
+ float: left;
+ margin-top: 22rpx;
+}
+
+.summary_wrap {
+ padding: 20rpx;
+ padding-top: 0;
+}
+
+.summary_state .state_point {
+ font-size: 0.825rem;
+}
+
+.summary_item uni-text {
+ font-size: 0.825rem;
+}
+
+.bot_card_item uni-text.state_point {
+ background-color: transparent;
+}
+
+.bot_card_item label {
+ vertical-align: middle;
+}
+
+.icon_normal {
+ width: 58rpx;
+ height: 58rpx;
+ vertical-align: middle
+}
+
+.bot_card_item .icon_normal {
+ float: left;
+ width: 46rpx;
+ height: 46rpx;
+}
+
+.icon_bg {
+ display: inline-block;
+ width: 46rpx;
+ height: 46rpx;
+ border-radius: 4rpx;
+}
+
+.icon_bg_xm {
+ background-color: #45B5F3;
+}
+
+.icon_bg_kw {
+ background-color: #5A7CF3;
+}
+
+.icon_bg_pc {
+ background-color: #BF94EB;
+}
+
+.icon_state {
+ display: inline-block;
+ width: 20rpx;
+ height: 20rpx;
+ border-radius: 50%;
+}
+
+.state_point {
+ background: none;
+}
+
+.title_tab {
+ display: flex;
+ justify-content: center;
+ height: 100rpx;
+}
+
+.bottom {
+ padding: 0 !important;
+}
+
+.uni-popup .uni-scroll-view {
+ overflow: visible !important;
+}
+
+.uni-popup .uni-scroll-view-content {
+ overflow-y: scroll;
+ max-height: 94vh;
+ background-color: #fff;
+ border-top-left-radius: 20rpx;
+ border-top-right-radius: 20rpx;
+}
+
+.uni-popup .scroll-Y {
+ padding-bottom: 0;
+}
+
+.popup_box {
+ position: relative;
+ border-top-left-radius: 16rpx;
+ border-top-right-radius: 16rpx;
+ background: #fff url(@/static/icons_ui/popup_bot_bg.png) no-repeat left top;
+ background-size: 100%;
+ max-height: 93vh;
+}
+
+.popup_box .pop_title {
+ font-size: 0.9rem;
+ font-weight: bold;
+ color: #fff;
+ padding: 20rpx 20rpx;
+ font-size: 35rpx;
+}
+
+.popup_box .pop_title text {
+ font-size: 0.9rem;
+ font-weight: normal;
+}
+
+.popup_box .uni-steps {
+ width: 98%;
+}
+
+.popup_box .top_bg {
+ width: 100%;
+ height: inherit;
+}
+
+.popup_box .pop_tab {
+ padding: 20rpx;
+ box-sizing: border-box;
+ width: 100%;
+}
+
+.popup_box .pop_tab .tab_tit {
+ font-size: .825rem;
+ text-align: center;
+ color: #333;
+ background-color: #fff;
+ /* width: 30%; */
+ box-sizing: border-box;
+ padding: 10rpx 16rpx;
+ border-top-left-radius: 8rpx;
+ border-top-right-radius: 8rpx;
+ margin-right: 6rpx;
+}
+
+.popup_box .pop_tab .tab_tit_active {
+ color: #5A7CF3;
+ font-weight: bold;
+ /* font-size: 0.875rem; */
+}
+
+.popup_box .pop_tab .tab_info {
+ position: relative;
+ background-color: #fff;
+ border-radius: 8rpx;
+ box-shadow: 0 6rpx 20rpx rgba(90, 124, 143, 0.1);
+ min-height: 100rpx;
+}
+
+.popup_box .pop_tab .tab_info textarea {
+ height: 320rpx;
+}
+
+.popup_box .pop_tab .tab_info .uni-textarea-placeholder {
+ font-size: 0.825rem;
+}
+
+.popup_box .scan_scroll {
+ max-height: 41vh;
+ width: 100%;
+ overflow-x: hidden;
+ overflow-y: scroll;
+}
+
+.popup_box .scan_scroll .uni-scroll-view-content {
+ /* width: 104%; */
+ overflow-x: hidden;
+ background-color: transparent;
+}
+
+.popup_box .pop_tab .next_info {
+ box-shadow: 0 0 20rpx rgba(90, 124, 143, 0.1);
+}
+
+.popup_box .pop_tab .tab_notitle {
+ border-radius: 8rpx;
+}
+
+.popup_box .pop_tab .tab_info button {
+ position: absolute;
+ bottom: 10rpx;
+ right: 20rpx;
+ background: #3C9CFF;
+ color: #fff;
+ border: 0;
+ border-radius: 8rpx;
+ width: 130rpx;
+ float: right;
+ font-size: .725rem;
+}
+
+.popup_box .pop_tab .tab_info textarea {
+ padding-top: 20rpx;
+}
+
+.list_wrap {
+ margin: 20rpx;
+}
+
+.ljh_box {
+ padding: 20rpx;
+ z-index: 10;
+ width: 100%;
+ float: left;
+ box-sizing: border-box;
+}
+
+.ljh_left {
+ margin-top: 10rpx;
+}
+
+/* .ljh_right{
+ float: right;
+} */
+.ljh_right uni-text {
+ line-height: 1.5;
+}
+
+.ljh_right .tnum .num_edit {
+ background-color: #FFF9DB;
+ width: 150rpx;
+}
+
+.ljh_right .tnum {
+ font-size: 1.25rem;
+ color: #EC5B28;
+ font-weight: bold;
+ margin-right: 4rpx;
+}
+
+.ljh_right .tunit {
+ font-size: 0.875rem;
+ color: #F5AB91;
+}
+
+.ljh_box .tit_ljh {
+ line-height: 1.5;
+ font-size: 0.875rem;
+ color: #101010;
+ font-weight: bold;
+ word-break: break-all;
+}
+
+.ljh_box .tit_ljh .mini-type-style {
+ float: left;
+ margin-top: 10rpx;
+ padding: 0 8rpx;
+ font-size: 0.725rem;
+}
+
+.ljh_box .tit_ljh .state-style,
+.top_card .state-style {
+ font-size: .625rem;
+ padding: 4rpx 6rpx;
+ margin-right: 8rpx;
+ vertical-align: middle;
+ font-weight: normal;
+ border-radius: 4rpx;
+ color: #fff;
+}
+
+.ljh_box .tit_ljh .state-style {
+ /* padding: 6rpx; */
+}
+
+.ljh_box .tit_ljh text {
+ float: left;
+}
+
+.ljh_box .desc_ljh {
+ line-height: 1.5;
+}
+
+.label_normal {
+ margin-top: 20rpx;
+}
+
+.label_normal .label_col image {
+ float: left;
+ vertical-align: middle;
+}
+
+.label_normal .label_col text {
+ font-size: 0.825rem;
+ line-height: 1.25;
+ float: left;
+ color: #434556;
+}
+
+.lo_cellbox {
+ margin-top: 20rpx;
+}
+
+.lo_cellbox .cell_info {
+ margin-bottom: 0;
+}
+
+/*提交按钮*/
+.new_btn_bot {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ box-sizing: border-box;
+ width: 100%;
+ background-color: #fff;
+ padding: 20rpx;
+ z-index: 10;
+ box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.2);
+}
+
+.bot_pos {
+ position: initial;
+}
+
+.new_btn_bot .new_save_btn {
+ background-color: #E7ECFF;
+ color: #5A7CF3;
+ font-size: .875rem;
+}
+
+.new_btn_bot .new_clear_btn {
+ background-color: #FFDADD;
+ color: #f00;
+ font-size: .875rem;
+ margin-right: 20rpx;
+}
+
+.new_btn_bot .new_cancel_btn {
+ background-color: #eee;
+ color: #333;
+ font-size: .875rem;
+ margin-right: 20rpx;
+}
+
+.new_btn_bot .btn_double {
+ width: 50%;
+}
+
+.new_btn_bot uni-button:after {
+ border: 0;
+}
+
+.choose_main {
+ position: relative;
+ z-index: 2;
+}
+
+.choose_layout {
+ position: relative;
+ width: 100%;
+ height: 130rpx;
+ background-color: #fff;
+
+}
+
+.choose_icon_layout {
+ position: absolute;
+ right: 160rpx;
+ top: 10rpx;
+ bottom: 0rpx;
+ /* width: 100rpx;
+ height:100rpx; */
+}
+
+.choose_icon {
+ margin-top: 5rpx;
+ margin-bottom: 10rpx;
+ width: 100rpx;
+ height: 100rpx;
+}
+
+.choose_marked {
+ position: absolute;
+ width: 100%;
+ /* height: 100%; */
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ border-top: 6rpx solid #5FCB94;
+ background-image: linear-gradient(rgba(95, 203, 148, 0.5), rgba(95, 203, 148, 0));
+ border-top-left-radius: 16rpx;
+ border-top-right-radius: 16rpx;
+}
+
+.choose_marked_faild {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ border-top: 6rpx solid #FF0000;
+ background-image: linear-gradient(rgba(255, 100, 97, 0.3), rgba(255, 100, 97, 0));
+ border-top-left-radius: 16rpx;
+ border-top-right-radius: 16rpx;
+}
+
+.nodeliver_tag {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ border-top-left-radius: 16rpx;
+ border-top-right-radius: 16rpx;
+ border-top: 6rpx solid #F54D4D;
+ background-image: linear-gradient(rgba(245, 77, 77, 0.1), rgba(245, 77, 77, 0));
+
+}
+
+.choose_marked image {
+ float: right;
+ margin-right: 28%;
+ margin-top: 20rpx;
+ width: 120rpx;
+ height: 120rpx;
+}
+
+.choose_marked_faild image {
+ float: right;
+ margin-right: 28%;
+ margin-top: 20rpx;
+ width: 120rpx;
+ height: 120rpx;
+}
+
+.pop_list {
+ background-color: #fff;
+ /* padding: 20rpx; */
+ padding-top: 0;
+ margin-top: 20rpx;
+}
+
+.uni-scroll-view-content .creattp_list {
+ padding: 6rpx 20rpx 0;
+ box-sizing: border-box;
+ width: 96%;
+}
+
+.list_info .uni-scroll-view-content {
+ max-height: 10vh;
+}
+
+.pop_list .detail-content {
+ margin-bottom: 20rpx;
+ border-radius: 16rpx;
+ overflow: hidden;
+ box-shadow: 0 0 14rpx rgba(0, 0, 0, 0.1);
+}
+
+.pop_btn {
+ padding: 20rpx;
+ padding-top: 0;
+}
+
+.pop_btn button {
+ width: 49%;
+ height: 90rpx;
+ line-height: 90rpx;
+ font-size: 0.875rem;
+ margin: 0;
+ color: #333;
+}
+
+.pop_btn button::after {
+ border: 0;
+}
+
+.pop_btn .cancel {
+ background-color: #eee;
+}
+
+.pop_btn .save {
+ background-color: #5A7CF3;
+ color: #fff;
+}
+
+.popinpop {
+ margin: 10px 1%;
+ border-radius: 8px;
+ background-color: #fff;
+ color: #666666;
+ line-height: 1.5;
+ box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.1);
+ width: 98%;
+
+}
+
+.scan_btn:after {
+ border: 8rpx;
+}
+
+.popup_box .pop_tab .tab_info .clean_scan_btn {
+ background-color: #eee;
+ color: #333;
+ margin-right: 140rpx;
+ border-radius: 8rpx;
+}
+
+.popup_box .pop_tab .tab_info .clean_scan_btn::after {
+ border: 0;
+}
+
+/*检验任务-topline*/
+.card_task {
+ padding: 20rpx;
+ padding-bottom: 0;
+}
+
+.task_num {
+ border-bottom: 1px solid #eee;
+ padding-bottom: 10rpx;
+ margin-bottom: 10rpx;
+ overflow: hidden;
+}
+
+.top_card .task_num {
+ border: 0;
+}
+
+.task_num image {
+ vertical-align: middle;
+ margin-right: 10rpx;
+}
+
+.task_num text {
+ color: #333;
+ vertical-align: middle;
+}
+
+.label_order image {
+ /* vertical-align: text-bottom; */
+ vertical-align: middle;
+}
+
+.label_order text {
+ font-size: .825rem;
+ vertical-align: middle;
+}
+
+.tit_jxs {
+ font-size: 1rem !important;
+ margin-bottom: 10rpx;
+}
+
+.tit_jxs .state-style {
+ vertical-align: middle;
+ margin-top: 6rpx;
+}
+
+/* 为按序发货添加 */
+/* .state-style{
+ background-color: #ececec;
+} */
+.receipt_bot {
+ justify-content: space-between;
+ border-top: 1px solid #eee;
+ padding-top: 10rpx;
+}
+
+/*收货列表*/
+.require_wrap {
+ background-color: #fff;
+ padding: 20rpx;
+}
+
+.require_wrap uni-button:after {
+ border: 0;
+}
+
+.require_wrap .require_cell {
+ background: #f5f5f5;
+ font-size: .825rem;
+ padding: 10rpx 20rpx;
+ margin-right: 20rpx;
+ border-radius: 50rpx;
+ line-height: 1.5;
+ margin-left: 0;
+ border: 1px solid #f5f5f5;
+}
+
+.require_wrap .require_active {
+ border: 1px solid #5A7CF3;
+ background-color: #EFF6FF;
+ color: #5A7CF3;
+}
+
+.require_wrap .require_active text {
+ display: inline-block;
+ width: 20rpx;
+ height: 20rpx;
+ background-color: #5A7CF3;
+ border-radius: 50%;
+ float: left;
+ margin: 12rpx 10rpx 12rpx 0;
+}
+
+.list_inspect .uni-input-input {
+ color: #f00;
+}
+
+.list_form {
+ padding: 20rpx;
+ padding-top: 0;
+}
+
+.list_form .uni-table-tr {
+ background-color: #f8f8f8;
+ color: red;
+}
+
+.list_form .uni-table-th {
+ padding: 10rpx !important;
+ border-bottom: 1px solid #ececec;
+ font-weight: normal !important;
+ font-size: 0.775rem;
+ color: red;
+}
+
+.list_form .uni-easyinput {
+ background-color: #FFF9DB;
+}
+
+.list_form .uni-easyinput__content {
+ min-height: 50rpx !important;
+ text-align: center;
+}
+
+.count_shadow {
+ box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.1);
+}
+
+.count_list {
+ font-size: 0.8rem;
+ color: #0F5EFF;
+ padding: 10rpx 0;
+}
+
+.count_list text:first-child {
+ margin-left: 0;
+}
+
+.count_list text {
+ margin: 10rpx;
+}
+
+.popuni_list::after {
+ height: 0 !important;
+}
+
+.uni-list .list_cell {
+ margin-bottom: 20rpx;
+ height: 100rpx;
+ align-items: center;
+ box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.1);
+}
+
+.uni-list .list_cell:last-child {
+ margin-bottom: 0;
+}
+
+.uni-list .list_cell .is-input-border {
+ border: 0;
+}
+
+.uni-list .list_cell .title {
+ padding-left: 20rpx;
+ font-size: 0.875rem;
+}
+
+.uni-list .list_cell .info {
+ padding-right: 20rpx;
+ color: #333;
+ font-size: 0.875rem;
+}
+
+.popuni_list .list_cell {
+ background-color: #fff;
+ border-radius: 8rpx;
+ box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.1);
+}
+
+.popuni_list .list_cell .uni-data-tree-input {
+ padding-left: 0;
+}
+
+.popuni_list .list_cell .input-value-border {
+ border: 0;
+ padding: 0;
+}
+
+.popuni_list .list_cell .selected-list {
+ padding-left: 0;
+}
+
+/* .uni-list .list_cell .necessary_tag{
+ padding-right: 0;
+ color: #f00;
+} */
+.uni-list .list_cell .uni-easyinput {
+ padding-right: 20rpx;
+ text-align: right;
+ box-sizing: border-box;
+ border: 0;
+}
+
+.uni-list .list_cell .uni-input-input {
+ font-size: 0.875rem;
+}
+
+.list_card {
+ margin-top: 20rpx;
+ box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.1);
+}
+
+.list_card:first-child {
+ margin-top: 10rpx;
+}
+
+.inspect_form .uni-label {
+ font-size: 0.875rem;
+}
+
+.pda-list-cell-db .is-input-border,
+.pda-list-cell-db .input-value-border {
+ border: 0 !important;
+}
+
+.list_locode {
+ padding: 20rpx;
+ padding-top: 0;
+}
+
+.inspect_card {
+ background-color: #fff;
+ margin: 20rpx;
+ border-radius: 16rpx;
+}
+
+.inspect_card .ljh_box text {
+ line-height: 1.75;
+}
+
+.inspect_list_locode {
+ border-bottom: 1px solid #eee;
+ padding-bottom: 20rpx;
+}
+
+.inspect_list_locode image {
+ vertical-align: middle;
+}
+
+.default_nodata {
+ position: relative;
+ left: 50%;
+ transform: translateX(-50%);
+ margin-top: 100rpx;
+ width: 390rpx;
+ height: 300rpx;
+
+}
+
+
+.default_goscan {
+ width: 100%;
+}
+
+.default_goscan .img_goscan {
+ position: relative;
+ width: 500rpx;
+ height: 500rpx;
+ left: 50%;
+ transform: translateX(-50%);
+}
+
+.default_goscan button {
+ width: 60%;
+ height: 100rpx;
+ background-color: #5A7CF3;
+ color: #fff;
+ border-radius: 50rpx;
+ text-align: center;
+ line-height: 100rpx;
+}
+
+.default_goscan button image {
+ width: 30rpx;
+ height: 30rpx;
+ margin-right: 20rpx;
+ vertical-align: middle;
+ margin-top: -8rpx;
+
+}
+
+.new_bot_box {
+ position: fixed;
+ width: 100%;
+ left: 0;
+ bottom: 0;
+ background-color: transparent;
+ z-index: 10;
+}
+
+.new_bot_box .uni-collapse {
+ background-color: transparent !important;
+}
+
+.new_bot_box .uni-collapse-item__title.uni-collapse-item-border {
+ width: 96%;
+ margin: 0 2%;
+ border-top-left-radius: 16rpx;
+ border-top-right-radius: 16rpx;
+ overflow: hidden;
+ text-align: center;
+}
+
+.new_bot_box .uni-collapse-item__title-text {
+ padding-left: 40rpx;
+}
+
+.new_bot_box .uni-collapse-item__title.uni-collapse-item-border,
+.new_bot_box .uni-collapse-item__title-box {
+ background-color: #7B8195 !important;
+ color: #fff !important;
+}
+
+.new_bot_box .uni-collapse-item__title-box {
+ height: 80rpx !important;
+ line-height: 80rpx !important;
+}
+
+.new_bot_box .content {
+ background-color: #fff !important;
+}
+
+.new_bot_box .content .uni-easyinput {
+ box-sizing: border-box;
+}
+
+.new_bot_box .content .uni-data-picker,
+.new_bot_box .input-value,
+.new_bot_box .uni-input-input,
+.new_bot_box .selected-item,
+.new_bot_box .placeholder,
+.new_bot_box .uni-easyinput__content-input {
+ font-size: 0.875rem !important;
+}
+
+.new_bot_box .content .tit_bot_box {
+ padding: 20rpx 20rpx 10rpx;
+ font-size: 0.875rem;
+}
+
+.new_bot_box .uni-collapse-item__wrap-content.uni-collapse-item--border {
+ border: 0;
+}
+
+.new_bot_box .border .uni-easyinput {
+ border: 1px solid #e5e5e5;
+ border-radius: 10rpx;
+}
+
+.hold_form .uni-table-th-content {
+ font-weight: normal;
+ font-size: 0.775rem;
+}
+
+.top_wrap {
+ padding: 20rpx;
+ background-color: #fff;
+}
+
+.top_wrap .top_card {
+ border-radius: 8px;
+ color: #fff;
+ line-height: 100rpx;
+}
+
+.top_wrap .top_card .top_lines_info {
+ padding: 0 20rpx;
+}
+
+.top_wrap .top_card .top_lines_info text {
+ font-size: 0.9rem;
+ margin-left: 10rpx;
+}
+
+/* 按序收货 */
+.recept_form {
+ padding: 20rpx;
+}
+
+.recept_form .form_title {
+ padding: 20rpx 20rpx 0;
+}
+
+.recept_form .form_title image {
+ float: left;
+ margin-top: 10rpx;
+ margin-right: 10rpx;
+}
+
+.recept_form .form_title text {
+ font-size: 1rem;
+ vertical-align: middle;
+}
+
+.recept_form .table--border {
+ border: 0 !important;
+}
+
+.recept_form th {
+ background-color: #F3F6FF;
+ color: #434556 !important;
+}
+
+.recept_form th.table--border,
+.recept_form td.table--border {
+ border: 0;
+}
+
+.recept_form .recept_form_info {
+ background-color: #fff;
+ border-radius: 16rpx;
+ padding-bottom: 16rpx;
+}
+
+.recept_form .uni-table-td {
+ font-size: 0.8rem;
+}
+
+/* 天津发货详情 */
+.deliver_card {
+ flex: 1;
+ line-height: 30px;
+ margin: 20rpx 20rpx 0;
+ border-radius: 16rpx;
+ overflow: hidden;
+ background-color: transparent;
+ position: relative;
+ border-bottom-color: #f5f5f5;
+ border-bottom-width: 1px;
+ border-bottom-style: solid;
+}
+
+.deliver_card .card_info {
+ background-color: #fff;
+}
+
+.deliver_card .deliverState {
+ background-color: #fff;
+ padding: 20rpx 10rpx;
+ background-color: transparent;
+ border-left: 10rpx solid transparent;
+}
+
+.deliver_card .deliverState .content-text image {
+ vertical-align: text-bottom;
+ margin-right: 6rpx;
+}
+
+.deliver_card .deliverState .content-text text {
+ margin-right: 10rpx;
+}
+
+.deliver_card .deliverState1 {
+ background-color: #fff;
+ border-left: 10rpx solid #F6CB61;
+}
+
+.deliver_card .deliverState3 {
+ background-color: #fff;
+ border-left: 10rpx solid #5FCB94;
+}
+
+.deliver_card .deliverState4 {
+ background-color: #fff;
+ border-left: 10rpx solid #EC5B28;
+}
+
+.deliver_card .card_state {
+ border: 1px solid transparent;
+ padding: 0 20rpx;
+ font-size: 0.8rem;
+ position: absolute;
+ right: 20rpx;
+ top: 50%;
+ transform: translateY(-50%);
+ border-radius: 80rpx;
+}
+
+.deliver_card .tjpending {
+ border-color: #F6CB61;
+ color: #F6CB61;
+}
+
+.deliver_card .tjsent {
+ border-color: #5FCB94;
+ color: #5FCB94;
+}
+
+.deliver_card .tjnosend {
+ border-color: #EC5B28;
+ color: #EC5B28;
+}
+
+.login_wrap {
+ width: 100%;
+ position: relative;
+ top: -20rpx;
+ background-color: #fff;
+ border-top-left-radius: 16rpx;
+ border-top-right-radius: 16rpx;
+}
+
+.login_title {
+ position: absolute;
+ top: 120rpx;
+ left: 30rpx;
+ color: #fff;
+ font-size: 1.125rem;
+ font-weight: bold;
+ letter-spacing: 4rpx;
+ line-height: 1.5;
+}
+
+.login_title text {
+ font-size: 1.125rem;
+ letter-spacing: 0;
+}
+
+/* 登录 */
+.mybox .is-input-border {
+ border: 0 !important;
+}
+
+/* 消息列表 */
+.msg_body {
+ background-color: #fff;
+}
+
+.msg_list {
+ padding-top: 20rpx;
+}
+
+.msg_list .uni-list-chat__header {
+ width: 60rpx !important;
+ height: 60rpx !important;
+ background-color: #3d7eff;
+ border-color: transparent !important;
+ border-radius: 6rpx !important;
+}
+
+.msg_list .uni-list--border-top,
+.msg_list .uni-list--border-bottom,
+.msg_list .uni-list--border:after,
+.msg_body .uni-list:after {
+ height: 0 !important;
+}
+
+.msg_list .uni-list-chat__header-image {
+ width: 50rpx !important;
+ height: 50rpx !important;
+}
+
+.msg_list .uni-badge--dot {
+ left: inherit !important;
+ right: 20rpx;
+ top: 40rpx !important;
+}
+
+.msg_list .uni-list-chat__content-title {
+ font-size: .9rem !important;
+}
+
+.msg_list .hasread .uni-list-chat__header {
+ background-color: #ccc;
+}
+
+/* index */
+.index_top {
+ background-color: #5A7CF3;
+ width: 100%;
+}
+
+.index_top .uni-searchbar {
+ padding-right: 0 !important;
+}
+
+.index_top .index_btn {
+ background-color: transparent;
+ font-size: 0.825rem;
+ padding: 0 0.9rem;
+
+}
+
+.index_top uni-button:after {
+ border: 0 !important;
+}
+
+.index_top .uni-searchbar__box {
+ background-color: rgba(255, 255, 255, 0.3) !important;
+ border-color: transparent !important;
+ justify-content: inherit !important;
+}
+
+.index_top .uni-searchbar__text-input,
+.uni-searchbar__box-icon-search,
+.index_top .uniui-search {
+ color: #fff !important;
+}
+
+.index_top .uni-searchbar__text-placeholder,
+.index_top .uni-input-placeholder {
+ color: #eee !important;
+}
+
+.index_top .uni-input-input {
+ color: #fff;
+}
+
+.common_title {
+ font-size: .825rem;
+ font-weight: bold;
+}
+
+.common_icons {
+ width: 100%;
+ padding: 20rpx;
+ box-sizing: border-box;
+}
+
+.common_icons .common_info {
+ position: relative;
+ top: -120rpx;
+ background-color: #fff;
+ width: 100%;
+ box-sizing: border-box;
+ padding: 20rpx;
+ border-radius: 16rpx;
+
+ /* box-shadow: 0 0 10rpx rgba(0,0,0,0.1); */
+}
+
+.common_icons .common_info .common_cell {
+ margin-right: 20rpx;
+ text-align: center;
+}
+
+.common_icons .common_info .common_cell .cell_icon {
+ background-color: #EEF2FE;
+ border-radius: 50%;
+ width: 110rpx;
+ height: 110rpx;
+ margin: 20rpx 20rpx 0;
+}
+
+.common_icons .common_info .common_cell .cell_icon image {
+ float: left;
+ width: 50rpx;
+ height: 50rpx;
+ margin: 35rpx;
+}
+
+.common_icons .common_info .cell_last {
+ margin-right: 0;
+}
+
+uni-tabbar .uni-tabbar-border {
+ height: 0;
+}
+
+.index_menu {
+ width: 100%;
+ float: left;
+ margin-top: -100rpx;
+ /* height: calc(100% - 200px); */
+}
+
+.index_menu .menu_content {
+ width: 26%;
+ text-align: center;
+ float: left;
+ height: 100%;
+ overflow-y: scroll;
+}
+
+.index_menu .index_title .title_left {
+ width: 100%;
+ border-left: 2px solid transparent;
+ line-height: 80rpx;
+ font-size: 0.825rem;
+ text-align: center;
+}
+
+.index_menu .menu_content .index_title {
+ width: 100%;
+ float: left;
+ line-height: 100rpx;
+ font-size: 0.825rem;
+}
+
+.index_menu .menu_content .tit_active {
+ box-sizing: border-box;
+ background-color: #fff;
+ border-left: 2px solid #5A7CF3;
+ font-weight: bold;
+ float: left;
+}
+
+.index_menuinfo {
+ width: 74%;
+ float: left;
+ box-sizing: border-box;
+ padding: 20rpx;
+ position: relative;
+ overflow-y: scroll;
+ background-color: #fff;
+ /* height: 100%; */
+
+}
+
+.menu_ab {
+ position: absolute;
+ top: 420rpx;
+ left: 0;
+ width: 100%;
+ z-index: 10;
+ /* height: calc(100% - 185px); */
+
+}
+
+.index_menuinfo .icon_block {
+ position: relative;
+ text-align: center;
+ width: 33%;
+ float: left;
+ /* margin-top: -10rpx; */
+}
+
+.index_menuinfo .icon_block image {
+ float: left;
+ width: 80%;
+ height: 80rpx;
+ margin: 3% 10% 0;
+}
+
+.index_menuinfo .icon_block text {
+ float: left;
+ width: 100%;
+ font-size: .8rem;
+ height: 80rpx;
+ color: #101010;
+}
+
+.index_menuinfo .icon_block .index_badge {
+ width: 42rpx;
+ height: 42rpx;
+ font-size: 0.6rem;
+ background-color: #c00;
+ position: absolute;
+ right: 0;
+ color: #fff;
+ text-align: center;
+ line-height: 42rpx;
+ border-radius: 50%;
+}
+
+uni-tabbar.uni-tabbar-bottom .uni-tabbar {
+ box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.1);
+}
+
+uni-modal .uni-modal__bd {
+ font-size: 1rem !important;
+ color: #000 !important;
+}
+
+.passwordpage .uni-forms-item__label .label-text {
+ font-size: 0.8rem !important;
+}
+
+.passwordpage .is-input-border {
+ border: 0 !important;
+}
+
+.passwordpage .is-direction-left {
+ padding: 10rpx 20rpx;
+ background-color: #fff;
+ /* margin: 20rpx 0; */
+}
+
+.passwordpage .uni-forms-item__inner {
+ padding-bottom: 10rpx !important;
+}
+
+.passwordpage .new_save_btn {
+ font-size: 1rem;
+}
+
+.personal uni-button:after {
+ border: 0 !important;
+}
+
+.personal .uni-list:after {
+ height: 0 !important;
+}
+
+.personal .uni-list-item__icon {
+ margin-right: 0 !important;
+}
+
+.personal .uni-list-item__extra-text {
+ font-size: 1rem !important;
+ color: #101010 !important;
+ font-weight: bold;
+}
+
+.personal .uni-list--border-top,
+.uni-list--border-bottom,
+.uni-list--border::after {
+ background-color: transparent !important;
+}
+
+uni-modal .uni-modal__ft {
+ font-size: 0.875rem;
+}
+
+uni-modal .uni-modal__title {
+ color: #333;
+}
+
+uni-modal .uni-modal__bd {
+ padding: 1.3em 1.6em 1.3em;
+ min-height: 40px;
+ /* font-size: 15px; */
+ line-height: 1.4;
+ /* color: #999; */
+ max-height: 400px;
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+
+uni-modal .uni-modal__hd {
+ padding: 1em 1.6em .3em;
+ height: 30px;
+}
+
+/*dy_add*/
+.btn_unusual button {
+ margin-right: 10rpx;
+}
+
+.btn_unusual button:last-child {
+ margin-right: 0;
+}
+
+/* .tit_ljh .text_white{
+ color: #fff !important;
+ font-size: 0.725rem;
+ font-weight: normal;
+ padding: 4rpx;
+} */
+.bot_card .pending {
+ color: #5FCB94;
+}
+
+.camera_pop {
+ border-top-left-radius: 16rpx;
+ border-top-right-radius: 16rpx;
+}
+
+.camera_list {
+ padding: 20rpx;
+ box-sizing: border-box;
+ max-height: 75vh;
+ overflow-y: scroll;
+}
+
+.camera_list .list_cell {
+ border-bottom: 1px solid #eee;
+ box-shadow: none;
+ margin-bottom: 0;
+}
+
+.camera_list .list_cell .uni-easyinput {
+ padding-right: 0;
+}
+
+.camera_list .list_cell .title {
+ color: #666;
+}
+
+.camera_list .selected-item {
+ font-size: 0.875rem;
+}
+
+.camera_list .input-value span {
+ padding: 0;
+ font-size: 0.875rem;
+}
+
+.camera_pop .pop_btn {
+ background-color: #fff;
+}
+
+.cell_box .result_card .text_black {
+ font-size: 1rem;
+}
+
+.cell_box .result_card .red {
+ color: #c00;
+}
+
+.new_btn_bot .btn_triple {
+ margin-right: 10rpx;
+}
+
+.cell_box .scan_btn_fr {
+ float: right;
+ background-color: #ececec;
+ color: #5A7CF3;
+ font-size: 0.725rem;
+ padding: 10rpx 20rpx;
+ border-radius: 16rpx;
+ line-height: 2;
+ margin: 0 20rpx 20rpx 0;
+ height: 60rpx;
+}
+
+.cell_box .scan_btn_fr image {
+ /* margin-top: 4rpx; */
+ /* float: left; */
+}
+
+.cell_box .scan_btn_fr text {}
+
+.login_wrap .content-clear-icon {
+ display: none;
+}
+
+.login_wrap .conone .uni-easyinput {
+ padding-left: 10rpx !important;
+}
+
+.quality_cell {
+ height: auto !important;
+}
+
+.quality_cell .title {
+ line-height: 80rpx;
+ color: #666;
+}
+
+.check_textarea {
+ font-size: 0.875rem;
+ color: #333;
+}
+
+.check_textarea uni-textarea {
+ padding: 10rpx 20rpx;
+ height: 40px;
+}
+
+.check_textarea .uni-textarea-placeholder {
+ font-size: 0.875rem;
+ color: #ccc;
+}
+
+.common_card .ljh_box,
+.pop_card .ljh {
+ width: 100%;
+ box-sizing: border-box;
+}
+
+.common_card .ljh_box .tit_ljh,
+.pop_card .ljh_box .tit_ljh {
+ float: left;
+ width: 50%;
+}
+
+.common_card .ljh_info,
+.pop_card .ljh_info {
+ width: 100%;
+ box-sizing: border-box;
+}
+
+.common_card .desc_card,
+.pop_card .desc_card {
+ width: 100%;
+ box-sizing: border-box;
+ padding: 0;
+}
+
+.common_card .label_xm,
+.pop_card .label_xm {
+ background-color: #45B5F3;
+ line-height: 2.0;
+ padding: 0 10rpx;
+ color: #fff;
+ border-radius: 8rpx;
+ max-width: 300rpx;
+ font-size: 0.7rem;
+ overflow: visble;
+ word-break: break-all;
+ /* overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ font-size: 0.7rem;*/
+}
+
+.result_nodata text {
+ display: inline-block;
+ width: 100%;
+ text-align: center;
+ color: #999;
+ font-size: 1.125rem;
+ margin-top: -20rpx;
+}
+
+.passwordpage .uni-forms-item__label {
+ width: 180rpx !important;
+}
+
+/* 20221114add */
+.semi_col {
+ margin-top: 0;
+}
+
+.semi_col .uni-collapse-item__title-text span {
+ font-size: 1rem;
+ /* font-weight: bold; */
+}
+
+.semi_col .common_card .ljh_box .tit_ljh {
+ font-size: 1rem;
+ width: 56%;
+ /* font-weight: normal; */
+}
+
+.semi_col .num_color {
+ color: #EC5B28;
+}
+
+.issuelist {
+ position: relative;
+}
+
+.issuelist .notuse,
+.issuelist .use {
+ float: right;
+ color: #333;
+ font-size: 0.825rem;
+}
+
+.issuelist .notuse image,
+.issuelist .use image {
+ vertical-align: middle;
+}
+
+.issuecard .task_num {
+ border: 0;
+ margin-bottom: 0;
+ padding: 0;
+
+ border-bottom: 1px solid #eee;
+ padding-bottom: 10rpx;
+ margin-bottom: 10rpx;
+ overflow: hidden;
+}
+
+.issuelist .tag_icon {
+ width: 94rpx;
+ height: 94rpx;
+ position: absolute;
+ right: 0;
+ top: -6rpx;
+}
+
+button::after {
+ border: none;
+ border-radius: 0;
+}
+
+.btn_confirm {
+ width: 50%;
+ border: none;
+ background: #009EFF;
+ border-radius: 0;
+ color: #FFFFFF;
+}
+
+.btn_cancle {
+ width: 50%;
+ border: none;
+ background: #FFFFFF;
+ border-radius: 0;
+ color: #000000;
+}
+
+.line_color {
+ /* color: #E7E6E4; */
+ color: #F5EBF4;
+ /* padding-top: 10rpx;
+ padding-bottom: 10rpx; */
+}
+
+
+
+.filter_button {
+ font-size: 28rpx;
+ padding-left: 20rpx;
+ padding-right: 20rpx;
+ /* width: 240rpx; */
+ color: #fff;
+ background-color: #3C9CFF;
+}
+
+.filter_button_after {
+ opacity: 0.7;
+}
+
+.btn_edit_big_confirm {
+ font-size: 35rpx;
+ width: 50%;
+ color: #fff;
+ background-color: #3C9CFF;
+ border: none;
+ border-radius: 0;
+}
+
+.btn_edit_big_cancle {
+ font-size: 35rpx;
+ width: 50%;
+ color: #303133;
+ border: none;
+ border-radius: 0;
+ box-shadow: none;
+ background-color: #fff;
+
+}
+
+.btn_edit_big_after {
+ opacity: 0.7;
+}
+
+.btn_add_big {
+ background-color: #D8D8D8;
+ color: #fff;
+ text-align: center;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+.icons_close {
+ width: 70rpx;
+ height: 70rpx;
+ margin: 10rpx;
+}
+
+.paizhao {
+ padding-bottom: 10rpx;
+ padding-top: 20rpx;
+ padding-left: 20rpx;
+}
+
+.paizhao image {
+ width: 50rpx;
+ height: 50rpx;
+}
+
+.card_partCode {
+ font-size: 36rpx;
+ font-weight: 500;
+ padding: 10rpx;
+
+}
+
+.card_itemCode {
+ font-size: 36rpx;
+ /* font-weight: 500; */
+ padding: 5rpx 10rpx;
+}
+
+.card_itemName {
+ color: #909399;
+ font-size: 30rpx;
+ padding: 5rpx 20rpx;
+}
+
+.card_ProdLine {
+ color: #909399;
+ font-size: 30rpx;
+ padding: 5rpx 30rpx;
+}
+
+
+/* .std_pack {
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ padding: 0px;
+ color: #909399;
+ font-size: 30rpx;
+}
+ */
+
+
+.card_content {
+ font-size: 32rpx;
+ padding: 5px;
+}
+
+.card_icon_normal {
+ width: 45rpx;
+ height: 45rpx;
+ vertical-align: middle
+}
+
+.card_packing_code {
+ color: #3315EB;
+ padding: 5px;
+}
+
+.card_packing_code_content {
+ font-size: 32rpx;
+ padding: 5px;
+}
+
+.card_batch {
+ color: #9747FF;
+ padding: 5px;
+}
+
+
+.card_batch_content {
+ font-size: 32rpx;
+ padding: 5px;
+}
+
+.card_container {
+ color: #0076F6;
+ padding: 5px;
+}
+
+
+.card_container_content {
+ font-size: 32rpx;
+ padding: 5px;
+}
+
+.card_business {
+ color: #F1A532;
+ padding: 5px;
+}
+
+.card_business_content {
+ font-size: 32rpx;
+ padding: 5px;
+}
+
+.card_location {
+ color: #DA8910;
+ padding: 5px;
+}
+
+.card_to_location {
+ color: #329362;
+ padding: 5px;
+}
+
+.card_location_content {
+ font-size: 32rpx;
+ padding: 5px;
+}
+
+.card_supportCode {
+ color: #DA8910;
+}
+
+.card_supportCode_content {
+ font-size: 32rpx;
+}
+
+.scan_view {
+ /* #0CC2B6 20% */
+ background: linear-gradient(90deg, rgba(12, 194, 182, 0.2) 0%, rgba(12, 194, 182, 0) 100%)
+}
+
+.card_view {
+ font-size: 32rpx;
+ padding: 5rpx;
+}
+
+/*
+.pack_view {
+ font-size: 32rpx;
+ padding: 5rpx;
+}
+
+.location_view {
+ font-size: 32rpx;
+ padding: 5rpx;
+}
+
+.batch_view {
+ font-size: 32rpx;
+ padding: 5rpx;
+}
+ */
+.business_view {
+ font-size: 32rpx;
+ padding: 5rpx;
+}
+
+.pop_customer {
+ border-radius: 8rpx;
+ background-color: #fff;
+}
+
+.nodata {
+ width: 390rpx;
+ height: 300rpx;
+}
+
+.text_ellipsis {
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+}
+
+.task_top {
+ margin: 0rpx 10rpx;
+ background-color: #fff;
+}
+
+.task_item {
+ margin: 0rpx 10rpx;
+ margin-top: 10rpx;
+ background-color: #fff;
+}
+
+.task_card {
+ padding: 12rpx;
+ background-color: #fff;
+ border-radius: 10rpx;
+ margin: 12rpx;
+}
+
+.task_number {
+ font-size: 35rpx;
+ font-weight: 600;
+ /* bold */
+}
+
+.task_text {
+ font-size: 30rpx;
+ margin: 5rpx 0rpx;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.request_state_un-doing {
+ font-size: 28rpx;
+ background: rgba(95, 203, 148, 0.2);
+ color: #22AF68;
+ padding: 10rpx 20rpx 10rpx 20rpx;
+ border-radius: 10rpx;
+}
+
+.job_state_doing {
+ font-size: 28rpx;
+ background: rgba(236, 156, 0, 0.2);
+ color: #EC9C00;
+ padding: 10rpx 20rpx 10rpx 20rpx;
+ border-radius: 10rpx;
+}
+
+.job_state_un-doing {
+ font-size: 28rpx;
+ background: rgba(95, 203, 148, 0.2);
+ color: #22AF68;
+ padding: 10rpx 20rpx 10rpx 20rpx;
+ border-radius: 10rpx;
+}
+
+.job_state_completed {
+ font-size: 28rpx;
+ background: rgba(95, 203, 148, 0.2);
+ color: #22AF68;
+ padding: 10rpx 20rpx 10rpx 20rpx;
+ border-radius: 10rpx;
+}
+
+.job_state_close {
+ font-size: 28rpx;
+ background: rgba(95, 203, 148, 0.2);
+ color: #22AF68;
+ padding: 10rpx 20rpx 10rpx 20rpx;
+ border-radius: 10rpx;
+}
+
+
+.job_state_cancelled {
+ font-size: 28rpx;
+ background: rgba(95, 203, 148, 0.2);
+ color: #ff0000;
+ padding: 10rpx 20rpx 10rpx 20rpx;
+ border-radius: 10rpx;
+}
+
+.pop_detail {
+ background-color: #fff;
+ width: 100%;
+ border-radius: 8rpx 8rpx 0rpx 0rpx;
+ padding: 15rpx;
+}
+
+.pop_detail .item {
+ padding-top: 5rpx;
+ padding-bottom: 5rpx;
+
+ margin-left: 10rpx;
+ margin-right: 10rpx;
+
+ display: flex;
+ flex-direction: row;
+
+ -webkit-justify-content: space-between;
+ justify-content: space-between;
+}
+
+.pop_detail .item_title {
+ padding-top: 5rpx;
+ padding-bottom: 5rpx;
+}
+
+.pop_detail .text_wrap {
+ color: #909399;
+ word-break: break-all;
+ text-align: right;
+}
+
+.pop_detail .item_big_title {
+ /* color: #2196F3; */
+ /* font-size: 35rpx; */
+ margin-left: 10rpx;
+ margin-right: 10rpx;
+ margin-top: 10rpx;
+ margin-bottom: 10rpx;
+}
+
+
+
+
+/deep/.uni-popup .uni-popup__wrapper {
+ width: 100% !important;
+ padding: 15rpx 20rpx 15rpx 20rpx;
+}
+
+.btn_bottom {
+ position: fixed;
+ bottom: 10rpx;
+ right: 0;
+}
+
+.btn_add_small {
+
+ background-color: #3C9CFF;
+ width: 200rpx;
+ font-size: 30rpx;
+ color: #fff;
+ border-radius: 5rpx;
+}
+
+.btn_add_small_after {
+ opacity: 0.7;
+}
+
+.btn_commit_after {
+ opacity: 0.7;
+}
+
+/* 禁用时样式 */
+button[disabled] {
+ background-color: #fff;
+ color: #666;
+}
+
+.btn_commit {
+ background-color: #3C9CFF;
+ font-size: 30rpx;
+ color: #fff;
+ text-align: center;
+ padding-left: 80rpx;
+ padding-right: 80rpx;
+ margin-right: 20rpx;
+ margin-left: 10rpx;
+}
+
+.btn_add {
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+
+ position: absolute;
+ width: 97%;
+ height: 35px;
+ border-radius: 3px;
+ opacity: 1;
+ padding: 5px;
+ margin-left: 5px;
+ margin-right: 5px;
+
+ box-sizing: border-box;
+ border: 1px dashed #AAAAAA;
+ background: #D8D8D8;
+
+ color: #FFFFFF;
+ font-size: 16px;
+ font-weight: normal;
+ line-height: 26px;
+ letter-spacing: 0em;
+}
+
+.btn_clear_after {
+ opacity: 0.7;
+}
+
+
+.btn_clear {
+ background-color: #fff;
+ font-size: 30rpx;
+ color: #000;
+ text-align: center;
+ padding-left: 80rpx;
+ padding-right: 80rpx;
+ margin-right: 10rpx;
+ margin-left: 20rpx;
+}
+
+.icons_scan_close {
+ width: 35rpx;
+ height: 35rpx;
+}
+
+.count_image {
+ width: 45rpx;
+ height: 45rpx;
+}
+
+.count_type_light {
+ color: #0CC2B6;
+ font-size: 30rpx;
+ margin-left: 10rpx;
+ margin-right: 10rpx;
+}
+
+.count_type_black {
+ color: #FA5151;
+ font-size: 30rpx;
+ margin-left: 10rpx;
+ margin-right: 10rpx;
+}
+
+.btn_bot {
+ position: fixed;
+ bottom: 0;
+ right: 0;
+ padding-bottom: 20rpx;
+ padding-right: 20rpx;
+ z-index: 10;
+}
+
+.btn_single_commit {
+ background-color: #3C9CFF;
+ font-size: 30rpx;
+ color: #fff;
+ text-align: center;
+ width: 300rpx;
+}
+
+.btn_single_reset {
+ background-color: darkgray;
+ font-size: 30rpx;
+ color: #fff;
+ text-align: center;
+ width: 300rpx;
+}
+
+.btn_single_after {
+ opacity: 0.7;
+}
+
+.center {
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+}
+
+.space_between {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+}
+
+.text_recommend {
+ color: #0A84FF;
+ font-size: 38rpx;
+}
+
+.text_balance {
+ font-size: 36rpx;
+}
+
+.text_default {
+ color: #000000;
+ font-size: 36rpx;
+}
+
+.text_greater {
+ color: #F56C6C;
+ font-size: 36rpx;
+}
+
+.text_less {
+ color: #FF9500;
+ font-size: 36rpx;
+}
+
+.text_equal {
+ color: #34C759;
+ font-size: 38rpx;
+}
+
+.std_pack {
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ padding: 0px;
+ color: #909399;
+ font-size: 30rpx;
+}
+
+.std_uom {
+ color: #909399;
+ font-size: 30rpx;
+ margin-left: 5rpx;
+ margin-right: 5rpx;
+}
+
+.uom {
+ color: #909399;
+ font-size: 30rpx;
+ margin-left: 5rpx;
+ margin-right: 5rpx;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+}
+
+
+.std_split {
+ color: #909399;
+ font-size: 36rpx;
+ margin-left: 5rpx;
+ margin-right: 5rpx;
+}
+
+.inspect_job {
+ color: #F1A532;
+ font-size: 36rpx;
+ margin-right: 10rpx;
+}
+
+.ok_job {
+ color: #53C21D;
+ font-size: 36rpx;
+ margin-right: 2rpx;
+}
+
+.nook_job {
+ color: #E45656;
+ font-size: 36rpx;
+ margin-right: 10rpx;
+}
+
+.raw_location {
+ padding-top: 5rpx;
+ padding-bottom: 5rpx;
+ padding-left: 15rpx;
+ padding-right: 15rpx;
+ background-color: #34C759;
+ color: #fff;
+ font-size: 35rpx;
+}
+
+.fg_location {
+ padding-top: 5rpx;
+ padding-bottom: 5rpx;
+ padding-left: 15rpx;
+ padding-right: 15rpx;
+ background-color: #5A7CF3;
+ color: #fff;
+ font-size: 35rpx;
+}
+
+.semi_location {
+ padding-top: 5rpx;
+ padding-bottom: 5rpx;
+ padding-left: 15rpx;
+ padding-right: 15rpx;
+ background-color: #FF9500;
+ color: #fff;
+ font-size: 35rpx;
+}
+
+.hold_location {
+ padding-top: 5rpx;
+ padding-bottom: 5rpx;
+ padding-left: 15rpx;
+ padding-right: 15rpx;
+ background-color: #F56C6C;
+ color: #fff;
+ font-size: 35rpx;
+}
+
+.unk_location {
+ padding-top: 5rpx;
+ padding-bottom: 5rpx;
+ padding-left: 15rpx;
+ padding-right: 15rpx;
+ background-color: #999999;
+ color: #fff;
+ font-size: 35rpx;
+}
+
+.qty_input {
+ width: 150rpx;
+ height: 60rpx;
+ line-height: 10rpx;
+ font-size: 10rpx;
+ color: #000000;
+ text-align: right;
+ border: 1px solid rgb(220, 211, 211);
+ padding: 5rpx;
+}
+
+.qty_inspect_input {
+ width: 150rpx;
+ height: 60rpx;
+ line-height: 10rpx;
+ font-size: 10rpx;
+ color: #000000;
+ text-align: center;
+ border: 1px solid rgb(220, 211, 211);
+ padding: 5rpx;
+}
+
+.icon_close {
+ width: 100rpx;
+ height: 100rpx;
+ opacity: 1;
+
+}
+
+.icon_edit {
+ width: 30rpx;
+ height: 40%;
+ opacity: 1;
+ margin-left: 10rpx;
+}
+
+.title_popup {
+ margin-top: 16px;
+ margin-bottom: 16px;
+ margin-left: 8px;
+ margin-right: 8px;
+ font-size: 35rpx;
+ text-align: center;
+}
+
+.close_button {
+ /* 自动布局子元素 */
+ position: static;
+ left: 20px;
+ /* top: 1109.01px; */
+ width: 100%;
+ height: 40px;
+ border-radius: 40px;
+ opacity: 1;
+
+ /* 自动布局 */
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ padding: 9px 12px;
+ gap: 10px;
+ align-self: stretch;
+
+ /* 颜色/白色 */
+ background: #FFFFFF;
+ box-sizing: border-box;
+ /* 颜色/边框 */
+ border: 1px solid #E7E6E4;
+ z-index: 3;
+}
+
+/**
+ * 申请状态 新增
+ */
+.request_status_new {
+ font-size: 28rpx;
+ padding: 10rpx 20rpx 10rpx 20rpx;
+ border-radius: 10rpx;
+ background: rgba(34, 175, 104, 0.2);
+ color: rgba(34, 175, 104, 1);
+}
+
+/**
+ * 申请状态 审批中
+ */
+.request_status_reviewing {
+ font-size: 28rpx;
+ background: rgba(236, 156, 0, 0.2);
+ color: rgba(236, 156, 0, 1);
+ padding: 10rpx 20rpx 10rpx 20rpx;
+ border-radius: 10rpx;
+}
+
+/**
+ * 申请状态 审批通过
+ */
+.request_status_agreed {
+ font-size: 28rpx;
+ background: rgba(103, 194, 57, 0.2);
+ color: rgba(103, 194, 57, 1);
+ padding: 10rpx 20rpx 10rpx 20rpx;
+ border-radius: 10rpx;
+}
+
+/**
+ * 申请状态 审批驳回
+ */
+.request_status_refused {
+ font-size: 28rpx;
+ background: rgba(245, 108, 108, 0.2);
+ color: rgba(245, 108, 108, 1);
+ padding: 10rpx 20rpx 10rpx 20rpx;
+ border-radius: 10rpx;
+}
+
+/**
+ * 申请状态 处理中
+ */
+.request_status_handling {
+ font-size: 28rpx;
+ background: rgba(60, 156, 255, 0.2);
+ color: rgba(60, 156, 255, 1);
+ padding: 10rpx 20rpx 10rpx 20rpx;
+ border-radius: 10rpx;
+}
+
+/**
+ * 申请状态 部分完成
+ */
+.request_status_partial {
+ font-size: 28rpx;
+ background: #D3FF3C;
+ color: #ffffff;
+ padding: 10rpx 20rpx 10rpx 20rpx;
+ border-radius: 10rpx;
+}
+
+/**
+ * 申请状态 已完成
+ */
+.request_status_completed {
+ font-size: 28rpx;
+ background: #D3FF3C;
+ color: #ffffff;
+ padding: 10rpx 20rpx 10rpx 20rpx;
+ border-radius: 10rpx;
+}
+
+/**
+ * 申请状态 中止
+ */
+.request_status_abort {
+ font-size: 28rpx;
+ background: #F33140;
+ color: #ffffff;
+ padding: 10rpx 20rpx 10rpx 20rpx;
+ border-radius: 10rpx;
+}
+
+/**
+ * 申请状态 已关闭
+ */
+.request_status_cancelled {
+ font-size: 28rpx;
+ background: #F33140;
+ color: #ffffff;
+ padding: 10rpx 20rpx 10rpx 20rpx;
+ border-radius: 10rpx;
+}
+
+.split_line {
+ background-color: #e0e0e0;
+ height: 1px;
+ margin: 10rpx;
+}
\ No newline at end of file
diff --git a/src/common/style/pdabasic.css b/src/common/style/pdabasic.css
new file mode 100644
index 0000000..baae1d9
--- /dev/null
+++ b/src/common/style/pdabasic.css
@@ -0,0 +1,762 @@
+/*
+.pda-list {
+ padding: 10rpx 10rpx;
+ box-sizing: border-box;
+ display: flex;
+ width: 100%;
+ flex-direction: row;
+}
+ */
+
+/* 列表 */
+.pda-list {
+ padding: 0 20rpx;
+ box-sizing: border-box;
+ background-color: #FFFFFF;
+ position: relative;
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ border-radius: 16rpx;
+ margin-bottom: 10rpx;
+}
+
+.pda-list:after {
+ position: absolute;
+ z-index: 10;
+ /* right: 0; */
+ bottom: 0;
+ left: 0;
+ height: 1px;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+
+.pda-list-cell {
+ position: relative;
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+ border-bottom: 1px solid #eee;
+ padding: 10rpx 0;
+}
+
+.pda-list-cell:last-child {
+ border-bottom: 0;
+}
+
+.pda-list-cell-left {
+ white-space: nowrap;
+ /* padding: 0 10rpx; */
+}
+
+.pda-list-cell-db,
+.pda-list-cell-right {
+ flex: 1;
+}
+
+.pda-list-cell .pda-list-cell-db .uni-input-input {
+ font-size: .875rem;
+}
+
+.pda-list-cell .uni-easyinput__content-input,
+.pda-list-cell .uni-input-placeholder {
+ height: 2rem;
+ line-height: 2rem;
+}
+
+.pda-list-cell .placeholder {
+ color: #999 !important;
+ font-size: 0.875rem;
+ padding-left: 10rpx;
+}
+
+.pda-list-cell .uni-label {
+ color: #434556;
+}
+
+.list_locode .uni-collapse-item__title-box {
+ font-weight: bold !important;
+}
+
+.display-flex {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.list-body {
+ /* height: 84rpx; */
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: flex-start;
+ overflow: hidden;
+}
+
+.list-text-top {
+ width: 100%;
+ color: #000;
+ font-weight: bolder;
+ /* line-height: 36rpx; */
+ /* font-size: 30rpx; */
+}
+
+.list-text-bottom {
+ /* line-height: 30rpx; */
+ /* font-size: 26rpx; */
+ color: #8f8f94;
+}
+
+
+/* 改为detail-content */
+/* margin-bottom: 20rpx; */
+.device-detail {
+ padding: 10rpx !important;
+ margin: 10rpx;
+ border-radius: 16rpx;
+ background-color: #fff;
+ color: #666666;
+ line-height: 1.5;
+ overflow: hidden;
+}
+
+.list-style {
+ margin-bottom: 0rpx;
+ border-radius: 16rpx;
+ background-color: #FFFFFF;
+ color: #666666;
+ line-height: 1.5;
+}
+
+.border-font {
+ color: #000;
+ font-weight: bolder;
+}
+
+.space-between {
+ -webkit-justify-content: space-between;
+ justify-content: space-between;
+}
+
+.accept-button {
+ width: 30%;
+ font-size: 16px;
+ background-color: #7ac756;
+ color: #ffffff;
+}
+
+.bigsave-button {
+ width: 80%;
+ font-size: 16px;
+ background-color: #007AFF;
+ color: #ffffff;
+}
+
+.save-button {
+ width: 30%;
+ font-size: 16px;
+ background-color: #007AFF;
+ color: #ffffff;
+}
+
+.scroll-detail {
+ overflow: hidden;
+ padding-bottom: 60px;
+ height: 480px;
+ /* 没有高度不可以回到顶部 */
+ /* background-color: #ffffff; */
+}
+
+.scrollView {
+ overflow: hidden;
+ padding-bottom: 50px
+}
+
+.scroll-Y {
+ /* height: 70ux; */
+ padding-bottom: 50px
+}
+
+.bottom1 {
+ position: fixed;
+ width: 100%;
+ /* padding: 10rpx 10rpx; */
+ left: 0;
+ /* right: 0; */
+ bottom: 0;
+ background-color: #ffffff;
+}
+
+.bottom {
+ position: fixed;
+ display: flex;
+ width: 100%;
+ padding: 10rpx 10rpx;
+ left: 0;
+ /* right: 0; */
+ bottom: 0;
+ background-color: #ffffff;
+}
+
+
+.pars-num {
+ /* font-size: 26rpx; */
+}
+
+.right-width {
+ text-align: center;
+ width: 100rpx;
+}
+
+.state-style {
+ float: left;
+ margin-top: 10rpx;
+ /* border-radius: 16rpx;
+ padding: 0rpx 10rpx; */
+ /* line-height: 50rpx;
+ height: 50rpx; */
+ /* width: 120rpx;
+ display: flex;
+ flex-direction: column;
+ align-items: center; */
+ /* 垂直居中 */
+}
+
+.uni-popup-view {
+ background-color: #fff;
+ border-radius: 10px;
+}
+
+.uni-popup-button-box {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ padding: 10px 15px;
+}
+
+.uni-popup-button {
+ flex: 1;
+ /* // border-radius: 50px;
+ // color: #666; */
+ /* font-size: 16px; */
+}
+
+/* 任务状态 */
+/* 打开 */
+.open {
+ font-size: 28rpx;
+ background: rgba(95, 203, 148, 0.2);
+ color: #22AF68;
+ padding: 10rpx 20rpx 10rpx 20rpx;
+ border-radius: 10rpx;
+}
+
+/* 进行中 */
+.pending {
+ font-size: 28rpx;
+ background: rgba(236, 156, 0, 0.2);
+ color: #EC9C00;
+ padding: 10rpx 20rpx 10rpx 20rpx;
+ border-radius: 10rpx;
+}
+
+/* 完成 */
+.completed {
+ background-color: #E6A23C;
+ color: #FFFFFF;
+ border-radius: 10rpx;
+}
+
+/* 关闭 */
+.close {
+ background-color: #F56C6C;
+ color: #FFFFFF;
+}
+
+
+/* 关闭 */
+.other {
+ background-color: #808080;
+ color: #FFFFFF;
+ border-radius: 10rpx;
+}
+
+/* 其他 */
+.unk {
+ background-color: #ececec;
+ color: #666;
+ border-radius: 10rpx;
+}
+
+/* 检验任务状态 */
+/* 免检 */
+.exempt {
+ background-color: #409EFF;
+ color: #FFFFFF;
+}
+
+/* 全检 */
+.full {
+ background-color: #67C23A;
+ color: #FFFFFF;
+}
+
+/* 抽检 */
+.sampling {
+ background-color: #E6A23C;
+ color: #FFFFFF;
+}
+
+/* 挑检 */
+.pick {
+ background-color: #F56C6C;
+ color: #FFFFFF;
+}
+
+/* 库存状态 */
+
+.uni-link {
+ background-color: #BD2C00;
+ color: #BD2C00 !important;
+}
+
+.inventory_status_insp {
+ color: #F9AE3D;
+ margin-right: 10rpx;
+}
+
+.inventory_status_ok {
+ color: #67C23A;
+ margin-right: 10rpx;
+}
+
+.inventory_status_nok {
+ color: #FF2424;
+ margin-right: 10rpx;
+}
+
+.inventory_status_hold {
+ color: #EC9C00;
+ margin-right: 10rpx;
+}
+
+.inventory_status_scarp {
+ color: #999;
+ margin-right: 10rpx;
+}
+
+.frozen {
+ color: #FF581D;
+ margin-right: 10rpx;
+}
+
+.pass {
+ color: #67C23A !important;
+}
+
+.unPass {
+ color: #FF2424 !important;
+}
+
+.location_inspect {
+ background-color: #F6CB61;
+ color: #FFFFFF;
+}
+
+.location_raw {
+ background-color: #2DA8D8;
+ color: #FFFFFF;
+}
+
+.location_semi {
+ background-color: #EDAE50;
+ color: #FFFFFF;
+}
+
+.location_fg {
+ background-color: #078343;
+ color: #FFFFFF;
+}
+
+.location_wip {
+ background-color: #FC85FE;
+ color: #FFFFFF;
+}
+
+.location_scrap {
+ background-color: #E30016;
+ color: #FFFFFF;
+}
+
+.location_noc {
+ background-color: #C31223;
+ color: #FFFFFF;
+}
+
+.location_overflow {
+ background-color: #7D1EDC;
+ color: #FFFFFF;
+}
+
+.location_customer {
+ background-color: #5A7CF3;
+ color: #FFFFFF;
+}
+
+.location_hold {
+ background-color: #FF8C00;
+ color: #FFFFFF;
+}
+
+
+
+
+/* //物料状态
+export function getItemTypeStyle(val) {
+ if (val == 0) return 'active'
+ else if (val == 1) return 'hold'
+ else if (val == 2) return 'new'
+ else if (val == 3) return 'plan'
+ else if (val == 4) return 'disable'
+ else return 'other'
+}
+ */
+
+/* 物料状态 */
+.active {
+ background-color: #5FCB94;
+ color: #FFFFFF;
+}
+
+.hold_item {
+ background-color: #FF4206;
+ color: #FFFFFF;
+}
+
+.new {
+ background-color: #E6A23C;
+ color: #FFFFFF;
+}
+
+.plan {
+ background-color: #2677F9;
+ color: #FFFFFF;
+}
+
+.disable {
+ background-color: #666;
+ color: #FFFFFF;
+}
+
+/* 任务编号字体 */
+.text-number {
+ color: #000;
+ font-weight: bolder;
+}
+
+/* 物料编号字体 */
+.text-itemcode {
+ /* font-size: 26rpx; */
+ color: #000;
+ font-weight: bolder;
+}
+
+.text-desc {
+ color: #8f8f91;
+ /* font-size: 22rpx; */
+}
+
+/* 物料编号字体 */
+.text-bolder {
+ color: #000;
+ font-weight: bolder;
+}
+
+.detail-list {
+ background-color: #fff;
+ padding:5rpx 10rpx;
+ /* margin: 20rpx; */
+ /* border-radius: 16rpx; */
+ /* overflow: hidden; */
+}
+
+.detail-content {
+ position: relative;
+ flex: 1;
+ /* font-size: 26rpx; */
+ color: #101010;
+}
+
+.example-body {
+ background-color: #FFFFFF;
+}
+
+.result-box {
+ text-align: center;
+ padding: 20px 0px;
+ /* font-size: 16px; */
+}
+
+.toptext {
+ padding-left: 20upx;
+ line-height: 80upx;
+}
+
+.numberstyle {
+ display: flex;
+ /* flex-direction: row-reverse; */
+ border-bottom: 10upx solid #EEEEEE;
+ width: 200upx;
+ padding-bottom: 20upx;
+}
+
+.input {
+ height: 20rpx;
+ padding: 0rpx 8rpx;
+ line-height: 50rpx;
+ /* font-size: 25rpx; */
+ background: #FFF;
+ border-radius: 4rpx;
+ flex: 1;
+}
+
+.mini-type-style {
+ vertical-align: middle;
+ font-size: 0.725rem;
+ margin-right: 6rpx;
+ border-radius: 4rpx;
+ padding: 4rpx 8rpx;
+ /* width: 80rpx; */
+ /* height: 46rpx;
+ min-width: 80rpx;
+ display: flex;
+ flex-direction: column; */
+
+}
+
+.text-color {
+ color: #000;
+ font-weight: bolder;
+}
+
+.tabs {
+ flex: 1;
+ flex-direction: column;
+ overflow: hidden;
+ /* background-color: #ffffff; */
+}
+
+/* .scroll-h {
+ touch-action: none;
+ width: 100%;
+ height: 100rpx;
+ flex-direction: row;
+ white-space: nowrap;
+ justify-content: center;
+} */
+
+.line-h {
+ height: 1rpx;
+ background-color: #cccccc;
+}
+
+.uni-tab-item {
+ /* #ifndef APP-PLUS */
+ display: inline-block;
+ /* #endif */
+ flex-wrap: nowrap;
+ padding: 0 30rpx;
+}
+
+.uni-tab-item-title {
+ position: relative;
+ color: #555;
+ /* font-size: 24rpx; */
+ height: 100rpx;
+ line-height: 100rpx;
+ flex-wrap: nowrap;
+ /* #ifndef APP-PLUS */
+ white-space: nowrap;
+ /* #endif */
+}
+
+.uni-tab-item-title-active {
+ color: #101010;
+ font-weight: bold;
+}
+
+.uni-tab-item-title-active:after {
+ left: 50%;
+ transform: translateX(-50%);
+ position: absolute;
+ bottom: -20rpx;
+ display: inline-block;
+ content: "";
+ width: 40rpx;
+ height: 8rpx;
+ background-color: #5a7cf3;
+ border-radius: 5px;
+}
+
+/* .blece {
+ padding: 10upx;
+ color: #111111;
+ border-bottom: 2px solid #f5f5f5;
+ display: flex;
+ flex-wrap: wrap;
+} */
+
+.conbox {
+ /* padding: 10rpx 0; */
+ padding-left: 10rpx;
+}
+
+.myinput {
+ display: flex;
+ box-sizing: border-box;
+ overflow: hidden;
+ position: relative;
+ flex: 1;
+ justify-content: center;
+ flex-direction: row;
+ align-items: center;
+ height: 88rpx;
+ padding: 20rpx 0;
+ /* border-width: 0.5px;
+ border-style: solid;
+ border-color: #e5e5e5;
+ border-radius: 5px;
+ background-color: rgb(248, 248, 248);
+ font-size: 18px;*/
+ font-size: .825rem;
+}
+
+.qtyinput {
+ height: 50px;
+ padding: 10px 0px;
+ font-size: 20px;
+}
+
+
+.count-input {
+ padding: 5rpx 3rpx;
+ width: 95%;
+ font-size: 18px;
+}
+
+.pda-data-picker {
+ padding: 5rpx 3rpx;
+ width: 95%;
+ font-size: 18px;
+}
+
+.inputPlaceholderStyle {
+ font-size: 16px;
+}
+
+.inputfocus {
+ border-color: #007AFF;
+}
+
+
+.txt-16 {
+ font-size: 16px;
+}
+
+.txt-18 {
+ font-size: 18px;
+}
+
+.txt-20 {
+ font-size: 20px;
+}
+
+.pda-label {
+ width: 210rpx;
+ word-wrap: break-word;
+ word-break: break-all;
+ text-indent: 20rpx;
+ font-size: 16px;
+}
+
+.fontsize-16 {
+ font-size: 16px;
+}
+
+.fontsize-18 {
+ font-size: 18px;
+}
+
+.fontsize-20 {
+ font-size: 20px;
+}
+
+/deep/ .uni-collapse-item__title-text {
+ font-size: 16px;
+}
+
+
+/deep/ .input-value {
+ font-size: 16px;
+}
+
+/deep/ .uni-input-input {
+ font-size: 18px;
+}
+
+page {
+ width: 100%;
+ height: 100%;
+ background-color: #fff;
+}
+
+.page-wraper {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ height: 100%;
+ /* background-color: #fff; */
+}
+
+.page-header {
+ background-color: #fff;
+ font-size: 35rpx;
+ padding: 10rpx 20rpx;
+}
+
+.page-header .header_item {
+ /* padding-left: 10rpx; */
+ padding: 5rpx 10rpx;
+ font-size:32rpx ;
+}
+
+.page-header .header_job_top {
+ padding:5rpx 0rpx;
+}
+.page-main {
+ flex: 1;
+ position: relative;
+ background: #fff;
+}
+
+.page-main-scroll {
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+}
+
+.page-main-list {
+ /* height: 80rpx;
+ line-height: 80rpx; */
+ text-align: center;
+ background: #e0e0e0;
+
+}
diff --git a/src/common/style/uni.css b/src/common/style/uni.css
new file mode 100644
index 0000000..6b1ded6
--- /dev/null
+++ b/src/common/style/uni.css
@@ -0,0 +1,3405 @@
+@font-face {
+ font-family: uniicons;
+ font-weight: normal;
+ font-style: normal;
+ src: url('~@/static/uni.ttf') format('truetype');
+}
+
+/* #ifdef H5 */
+.fix-left-window {
+ padding-left: var(--window-left);
+}
+
+.pc-hide {
+ display: none !important;
+}
+
+/* #endif */
+
+/*通用 */
+
+/* view{
+ font-size:28rpx;
+ line-height:1.8;
+} */
+progress,
+checkbox-group {
+ width: 100%;
+}
+
+form {
+ width: 100%;
+}
+
+.uni-flex {
+ display: flex;
+ flex-direction: row;
+}
+
+.uni-flex-item {
+ flex: 1;
+}
+
+.uni-row {
+ flex-direction: row;
+}
+
+.uni-column {
+ flex-direction: column;
+}
+
+.uni-link {
+ color: #576B95;
+ font-size: 26rpx;
+}
+
+.uni-center {
+ text-align: center;
+}
+
+.uni-inline-item {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ /* justify-content: center; */
+ /* background-color: #888888; */
+}
+
+/* .uni-inline-item text {
+ margin-right: 20rpx;
+}
+ */
+/* .uni-inline-item text:last-child {
+ margin-right: 0rpx;
+ margin-left: 20rpx;
+} */
+
+/* page */
+.common-page-head {
+ padding: 35rpx;
+ text-align: center;
+}
+
+.common-page-head-title {
+ display: inline-block;
+ padding: 0 40rpx;
+ font-size: 30rpx;
+ height: 88rpx;
+ line-height: 88rpx;
+ color: #BEBEBE;
+ box-sizing: border-box;
+ border-bottom: 2rpx solid #D8D8D8;
+}
+
+.uni-padding-wrap {
+ /* width:690rpx; */
+ padding: 0 30rpx;
+}
+
+.uni-word {
+ text-align: center;
+ padding: 200rpx 100rpx;
+}
+
+.uni-title {
+ font-size: 30rpx;
+ font-weight: 500;
+ padding: 20rpx 0;
+ line-height: 1.5;
+}
+
+.uni-text {
+ font-size: 28rpx;
+}
+
+.uni-title text {
+ font-size: 24rpx;
+ color: #888;
+}
+
+.uni-text-gray {
+ color: #ccc;
+}
+
+.uni-text-small {
+ font-size: 24rpx;
+}
+
+.uni-common-mb {
+ margin-bottom: 30rpx;
+}
+
+.uni-common-pb {
+ padding-bottom: 30rpx;
+}
+
+.uni-common-pl {
+ padding-left: 30rpx;
+}
+
+.uni-common-mt {
+ margin-top: 30rpx;
+}
+
+/* 背景色 */
+.uni-bg-red {
+ background: #F76260;
+ color: #FFF;
+}
+
+.uni-bg-green {
+ background: #09BB07;
+ color: #FFF;
+}
+
+.uni-bg-blue {
+ background: #007AFF;
+ color: #FFF;
+}
+
+.uni-bg-white {
+ background: #FFFFFF;
+}
+
+/* 标题 */
+.uni-h1 {
+ font-size: 80rpx;
+ font-weight: 700;
+}
+
+.uni-h2 {
+ font-size: 60rpx;
+ font-weight: 700;
+}
+
+.uni-h3 {
+ font-size: 48rpx;
+ font-weight: 700;
+}
+
+.uni-h4 {
+ font-size: 36rpx;
+ font-weight: 700;
+}
+
+.uni-h5 {
+ font-size: 28rpx;
+ color: #8f8f94;
+}
+
+.uni-h6 {
+ font-size: 24rpx;
+ color: #8f8f94;
+}
+
+.uni-bold {
+ font-weight: bold;
+}
+
+/* 文本溢出隐藏 */
+.uni-ellipsis {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+/* 竖向百分百按钮 */
+.uni-btn-v {
+ padding: 10rpx 0;
+}
+
+.uni-btn-v button {
+ margin: 20rpx 0;
+}
+
+/* 表单 */
+.uni-form-item {
+ display: flex;
+ width: 100%;
+ padding: 10rpx 0;
+}
+
+.uni-form-item .title {
+ padding: 10rpx 25rpx;
+}
+
+.uni-label {
+ width: 210rpx;
+ word-wrap: break-word;
+ word-break: break-all;
+ text-indent: 20rpx;
+}
+
+.uni-input {
+ height: 80rpx;
+ padding: 15rpx 25rpx;
+ line-height: 80rpx;
+ font-size: 28rpx;
+ background: #FFF;
+ flex: 1;
+}
+
+radio-group,
+checkbox-group {
+ width: 100%;
+}
+
+radio-group label,
+checkbox-group label {
+ padding-right: 20rpx;
+}
+
+.uni-form-item .with-fun {
+ display: flex;
+ flex-wrap: nowrap;
+ background: #FFFFFF;
+}
+
+.uni-form-item .with-fun .uni-icon {
+ width: 40px;
+ height: 80rpx;
+ line-height: 80rpx;
+ flex-shrink: 0;
+}
+
+/* loadmore */
+.uni-loadmore {
+ height: 80rpx;
+ line-height: 80rpx;
+ text-align: center;
+ padding-bottom: 30rpx;
+}
+
+/*数字角标*/
+/* .uni-badge,
+.uni-badge-default {
+ font-family: 'Helvetica Neue', Helvetica, sans-serif;
+ font-size: 12px;
+ line-height: 1;
+ display: inline-block;
+ padding: 3px 6px;
+ color: #333;
+ border-radius: 100px;
+ background-color: rgba(0, 0, 0, .15);
+} */
+.uni-badge.uni-badge-inverted {
+ padding: 0 5px 0 0;
+ color: #929292;
+ background-color: transparent
+}
+
+.uni-badge-primary {
+ color: #fff;
+ background-color: #007aff
+}
+
+.uni-badge-blue.uni-badge-inverted,
+.uni-badge-primary.uni-badge-inverted {
+ color: #007aff;
+ background-color: transparent
+}
+
+.uni-badge-green,
+.uni-badge-success {
+ color: #fff;
+ background-color: #4cd964;
+}
+
+.uni-badge-green.uni-badge-inverted,
+.uni-badge-success.uni-badge-inverted {
+ color: #4cd964;
+ background-color: transparent
+}
+
+.uni-badge-warning,
+.uni-badge-yellow {
+ color: #fff;
+ background-color: #f0ad4e
+}
+
+.uni-badge-warning.uni-badge-inverted,
+.uni-badge-yellow.uni-badge-inverted {
+ color: #f0ad4e;
+ background-color: transparent
+}
+
+.uni-badge-danger,
+.uni-badge-red {
+ color: #fff;
+ background-color: #dd524d
+}
+
+.uni-badge-danger.uni-badge-inverted,
+.uni-badge-red.uni-badge-inverted {
+ color: #dd524d;
+ background-color: transparent
+}
+
+.uni-badge-purple,
+.uni-badge-royal {
+ color: #fff;
+ background-color: #8a6de9
+}
+
+.uni-badge-purple.uni-badge-inverted,
+.uni-badge-royal.uni-badge-inverted {
+ color: #8a6de9;
+ background-color: transparent
+}
+
+/*折叠面板 */
+.uni-collapse-content {
+ height: 0;
+ width: 100%;
+ overflow: hidden;
+}
+
+.uni-collapse-content.uni-active {
+ height: auto;
+}
+
+/*卡片视图 */
+.uni-card {
+ background: #fff;
+ border-radius: 8rpx;
+ margin: 20rpx 0;
+ position: relative;
+ /* box-shadow: 0 2rpx 4rpx rgba(0, 0, 0, .3); */
+}
+
+.uni-card-content {
+ font-size: 30rpx;
+}
+
+.uni-card-content.image-view {
+ width: 100%;
+ margin: 0;
+}
+
+.uni-card-content-inner {
+ position: relative;
+ padding: 30rpx;
+}
+
+.uni-card-footer,
+.uni-card-header {
+ position: relative;
+ display: flex;
+ min-height: 50rpx;
+ padding: 20rpx 30rpx;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.uni-card-header {
+ font-size: 36rpx;
+}
+
+.uni-card-footer {
+ color: #6d6d72;
+}
+
+.uni-card-footer:before,
+.uni-card-header:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ left: 0;
+ height: 2rpx;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+
+.uni-card-header:after {
+ top: auto;
+ bottom: 0;
+}
+
+.uni-card-media {
+ justify-content: flex-start;
+}
+
+.uni-card-media-logo {
+ height: 84rpx;
+ width: 84rpx;
+ margin-right: 20rpx;
+}
+
+.uni-card-media-body {
+ height: 84rpx;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: flex-start;
+}
+
+.uni-card-media-text-top {
+ line-height: 36rpx;
+ font-size: 34rpx;
+}
+
+.uni-card-media-text-bottom {
+ line-height: 30rpx;
+ font-size: 28rpx;
+ color: #8f8f94;
+}
+
+.uni-card-link {
+ color: #007AFF;
+}
+
+/* 列表 */
+.uni-list {
+ background-color: #FFFFFF;
+ position: relative;
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+}
+
+.uni-list:after {
+ position: absolute;
+ z-index: 10;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ height: 1px;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+
+/* .uni-list::before {
+ position: absolute;
+ z-index: 10;
+ right: 0;
+ top: 0;
+ left: 0;
+ height: 1px;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+} */
+.uni-list-cell {
+ position: relative;
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.uni-list-cell-hover {
+ background-color: #eee;
+}
+
+.uni-list-cell-pd {
+ padding: 22rpx 30rpx;
+}
+
+.uni-list-cell-left {
+ white-space: nowrap;
+ font-size: 28rpx;
+ padding: 0 30rpx;
+}
+
+.uni-list-cell-db,
+.uni-list-cell-right {
+ flex: 1;
+}
+
+.uni-list-cell::after {
+ position: absolute;
+ z-index: 3;
+ right: 0;
+ bottom: 0;
+ left: 30rpx;
+ height: 1px;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+
+.uni-list .uni-list-cell:last-child::after {
+ height: 0rpx;
+}
+
+.uni-list-cell-last.uni-list-cell::after {
+ height: 0rpx;
+}
+
+.uni-list-cell-divider {
+ position: relative;
+ display: flex;
+ color: #999;
+ background-color: #f7f7f7;
+ padding: 15rpx 20rpx;
+}
+
+.uni-list-cell-divider::before {
+ position: absolute;
+ right: 0;
+ top: 0;
+ left: 0;
+ height: 1px;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+
+.uni-list-cell-divider::after {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0rpx;
+ height: 1px;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+
+.uni-list-cell-navigate {
+ font-size: 30rpx;
+ padding: 22rpx 30rpx;
+ line-height: 48rpx;
+ position: relative;
+ display: flex;
+ box-sizing: border-box;
+ width: 100%;
+ flex: 1;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.uni-list-cell-navigate {
+ padding-right: 36rpx;
+}
+
+.uni-navigate-badge {
+ padding-right: 50rpx;
+}
+
+.uni-list-cell-navigate.uni-navigate-right:after {
+ font-family: uniicons;
+ content: '\e583';
+ position: absolute;
+ right: 24rpx;
+ top: 50%;
+ color: #bbb;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%);
+}
+
+.uni-list-cell-navigate.uni-navigate-bottom:after {
+ font-family: uniicons;
+ content: '\e581';
+ position: absolute;
+ right: 24rpx;
+ top: 50%;
+ color: #bbb;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%);
+}
+
+.uni-list-cell-navigate.uni-navigate-bottom.uni-active::after {
+ font-family: uniicons;
+ content: '\e580';
+ position: absolute;
+ right: 24rpx;
+ top: 50%;
+ color: #bbb;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%);
+}
+
+.uni-collapse.uni-list-cell {
+ flex-direction: column;
+}
+
+.uni-list-cell-navigate.uni-active {
+ background: #eee;
+}
+
+.uni-list.uni-collapse {
+ box-sizing: border-box;
+ height: 0;
+ overflow: hidden;
+}
+
+.uni-collapse .uni-list-cell {
+ padding-left: 20rpx;
+}
+
+.uni-collapse .uni-list-cell::after {
+ left: 52rpx;
+}
+
+.uni-list.uni-active {
+ height: auto;
+}
+
+/* 三行列表 */
+.uni-triplex-row {
+ display: flex;
+ flex: 1;
+ width: 100%;
+ box-sizing: border-box;
+ flex-direction: row;
+ padding: 22rpx 30rpx;
+}
+
+.uni-triplex-right,
+.uni-triplex-left {
+ display: flex;
+ flex-direction: column;
+}
+
+.uni-triplex-left {
+ width: 84%;
+}
+
+.uni-triplex-left .uni-title {
+ padding: 8rpx 0;
+}
+
+.uni-triplex-left .uni-text,
+.uni-triplex-left .uni-text-small {
+ color: #999999;
+}
+
+.uni-triplex-right {
+ width: 16%;
+ text-align: right;
+}
+
+/* 图文列表 */
+.uni-media-list {
+ padding: 22rpx 30rpx;
+ box-sizing: border-box;
+ display: flex;
+ width: 100%;
+ flex-direction: row;
+}
+
+.uni-navigate-right.uni-media-list {
+ padding-right: 74rpx;
+}
+
+.uni-pull-right {
+ flex-direction: row-reverse;
+}
+
+.uni-pull-right>.uni-media-list-logo {
+ margin-right: 0rpx;
+ margin-left: 20rpx;
+}
+
+.uni-media-list-logo {
+ height: 84rpx;
+ width: 84rpx;
+ margin-right: 20rpx;
+}
+
+.uni-media-list-logo image {
+ height: 100%;
+ width: 100%;
+}
+
+.uni-media-list-body {
+ height: 84rpx;
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: flex-start;
+ overflow: hidden;
+}
+
+.uni-media-list-text-top {
+ width: 100%;
+ line-height: 36rpx;
+ font-size: 30rpx;
+}
+
+.uni-media-list-text-bottom {
+ width: 100%;
+ line-height: 30rpx;
+ font-size: 26rpx;
+ color: #8f8f94;
+}
+
+/* 九宫格 */
+.uni-grid-9 {
+ background: #f2f2f2;
+ width: 750rpx;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ border-top: 2rpx solid #eee;
+}
+
+.uni-grid-9-item {
+ width: 250rpx;
+ height: 200rpx;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ border-bottom: 2rpx solid;
+ border-right: 2rpx solid;
+ border-color: #eee;
+ box-sizing: border-box;
+}
+
+.no-border-right {
+ border-right: none;
+}
+
+.uni-grid-9-image {
+ width: 100rpx;
+ height: 100rpx;
+}
+
+.uni-grid-9-text {
+ width: 250rpx;
+ line-height: 4rpx;
+ height: 40rpx;
+ text-align: center;
+ font-size: 30rpx;
+}
+
+.uni-grid-9-item-hover {
+ background: rgba(0, 0, 0, 0.1);
+}
+
+/* 上传 */
+.uni-uploader {
+ flex: 1;
+ flex-direction: column;
+}
+
+.uni-uploader-head {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+}
+
+.uni-uploader-info {
+ color: #B2B2B2;
+}
+
+.uni-uploader-body {
+ margin-top: 16rpx;
+}
+
+.uni-uploader__files {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+}
+
+.uni-uploader__file {
+ margin: 10rpx;
+ width: 210rpx;
+ height: 210rpx;
+}
+
+.uni-uploader__img {
+ display: block;
+ width: 210rpx;
+ height: 210rpx;
+}
+
+.uni-uploader__input-box {
+ position: relative;
+ margin: 10rpx;
+ width: 208rpx;
+ height: 208rpx;
+ border: 2rpx solid #D9D9D9;
+}
+
+.uni-uploader__input-box:before,
+.uni-uploader__input-box:after {
+ content: " ";
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ -webkit-transform: translate(-50%, -50%);
+ transform: translate(-50%, -50%);
+ background-color: #D9D9D9;
+}
+
+.uni-uploader__input-box:before {
+ width: 4rpx;
+ height: 79rpx;
+}
+
+.uni-uploader__input-box:after {
+ width: 79rpx;
+ height: 4rpx;
+}
+
+.uni-uploader__input-box:active {
+ border-color: #999999;
+}
+
+.uni-uploader__input-box:active:before,
+.uni-uploader__input-box:active:after {
+ background-color: #999999;
+}
+
+.uni-uploader__input {
+ position: absolute;
+ z-index: 1;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ opacity: 0;
+}
+
+/*问题反馈*/
+.feedback-title {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+ padding: 20rpx;
+ color: #8f8f94;
+ font-size: 28rpx;
+}
+
+.feedback-star-view.feedback-title {
+ justify-content: flex-start;
+ margin: 0;
+}
+
+.feedback-quick {
+ position: relative;
+ padding-right: 40rpx;
+}
+
+.feedback-quick:after {
+ font-family: uniicons;
+ font-size: 40rpx;
+ content: '\e581';
+ position: absolute;
+ right: 0;
+ top: 50%;
+ color: #bbb;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%);
+}
+
+.feedback-body {
+ background: #fff;
+}
+
+.feedback-textare {
+ height: 200rpx;
+ font-size: 34rpx;
+ line-height: 50rpx;
+ width: 100%;
+ box-sizing: border-box;
+ padding: 20rpx 30rpx 0;
+}
+
+.feedback-input {
+ font-size: 34rpx;
+ height: 50rpx;
+ min-height: 50rpx;
+ padding: 15rpx 20rpx;
+ line-height: 50rpx;
+}
+
+.feedback-uploader {
+ padding: 22rpx 20rpx;
+}
+
+.feedback-star {
+ font-family: uniicons;
+ font-size: 40rpx;
+ margin-left: 6rpx;
+}
+
+.feedback-star-view {
+ margin-left: 20rpx;
+}
+
+.feedback-star:after {
+ content: '\e408';
+}
+
+.feedback-star.active {
+ color: #FFB400;
+}
+
+.feedback-star.active:after {
+ content: '\e438';
+}
+
+.feedback-submit {
+ background: #007AFF;
+ color: #FFFFFF;
+ margin: 20rpx;
+}
+
+/* input group */
+.uni-input-group {
+ position: relative;
+ padding: 0;
+ border: 0;
+ background-color: #fff;
+}
+
+.uni-input-group:before {
+ position: absolute;
+ top: 0;
+ right: 0;
+ left: 0;
+ height: 2rpx;
+ content: '';
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+
+.uni-input-group:after {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ height: 2rpx;
+ content: '';
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+
+.uni-input-row {
+ position: relative;
+ display: flex;
+ flex-direction: row;
+ font-size: 28rpx;
+ padding: 22rpx 30rpx;
+ justify-content: space-between;
+}
+
+.uni-input-group .uni-input-row:after {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 30rpx;
+ height: 2rpx;
+ content: '';
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+
+.uni-input-row label {
+ line-height: 70rpx;
+}
+
+/* textarea */
+.uni-textarea {
+ width: 100%;
+ background: #FFF;
+}
+
+.uni-textarea textarea {
+ width: 96%;
+ padding: 18rpx 2%;
+ line-height: 1.6;
+ font-size: 28rpx;
+ height: 150rpx;
+}
+
+/* tab bar */
+.uni-tab-bar {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ overflow: hidden;
+ height: 100%;
+}
+
+.uni-tab-bar .list {
+ width: 750rpx;
+ height: 100%;
+}
+
+.uni-swiper-tab {
+ width: 100%;
+ white-space: nowrap;
+ line-height: 100rpx;
+ height: 100rpx;
+ border-bottom: 1px solid #c8c7cc;
+}
+
+.swiper-tab-list {
+ font-size: 30rpx;
+ width: 150rpx;
+ display: inline-block;
+ text-align: center;
+ color: #555;
+}
+
+.uni-tab-bar .active {
+ color: #007AFF;
+}
+
+.uni-tab-bar .swiper-box {
+ flex: 1;
+ width: 100%;
+ height: calc(100% - 100rpx);
+}
+
+.uni-tab-bar-loading {
+ padding: 20rpx 0;
+}
+
+/* comment */
+.uni-comment {
+ padding: 5rpx 0;
+ display: flex;
+ flex-grow: 1;
+ flex-direction: column;
+}
+
+.uni-comment-list {
+ flex-wrap: nowrap;
+ padding: 10rpx 0;
+ margin: 10rpx 0;
+ width: 100%;
+ display: flex;
+}
+
+.uni-comment-face {
+ width: 70rpx;
+ height: 70rpx;
+ border-radius: 100%;
+ margin-right: 20rpx;
+ flex-shrink: 0;
+ overflow: hidden;
+}
+
+.uni-comment-face image {
+ width: 100%;
+ border-radius: 100%;
+}
+
+.uni-comment-body {
+ width: 100%;
+}
+
+.uni-comment-top {
+ line-height: 1.5em;
+ justify-content: space-between;
+}
+
+.uni-comment-top text {
+ color: #0A98D5;
+ font-size: 24rpx;
+}
+
+.uni-comment-date {
+ line-height: 38rpx;
+ flex-direction: row;
+ justify-content: space-between;
+ display: flex !important;
+ flex-grow: 1;
+}
+
+.uni-comment-date view {
+ color: #666666;
+ font-size: 24rpx;
+ line-height: 38rpx;
+}
+
+.uni-comment-content {
+ line-height: 1.6em;
+ font-size: 28rpx;
+ padding: 8rpx 0;
+}
+
+.uni-comment-replay-btn {
+ background: #FFF;
+ font-size: 24rpx;
+ line-height: 28rpx;
+ padding: 5rpx 20rpx;
+ border-radius: 30rpx;
+ color: #333 !important;
+ margin: 0 10rpx;
+}
+
+/* swiper msg */
+.uni-swiper-msg {
+ width: 100%;
+ padding: 12rpx 0;
+ flex-wrap: nowrap;
+ display: flex;
+}
+
+.uni-swiper-msg-icon {
+ width: 50rpx;
+ margin-right: 20rpx;
+}
+
+.uni-swiper-msg-icon image {
+ width: 100%;
+ flex-shrink: 0;
+}
+
+.uni-swiper-msg swiper {
+ width: 100%;
+ height: 50rpx;
+}
+
+.uni-swiper-msg swiper-item {
+ line-height: 50rpx;
+}
+
+/* product */
+.uni-product-list {
+ display: flex;
+ width: 100%;
+ flex-wrap: wrap;
+ flex-direction: row;
+}
+
+.uni-product {
+ padding: 20rpx;
+ display: flex;
+ flex-direction: column;
+}
+
+.image-view {
+ height: 330rpx;
+ width: 330rpx;
+ margin: 12rpx 0;
+}
+
+.uni-product-image {
+ height: 330rpx;
+ width: 330rpx;
+}
+
+.uni-product-title {
+ width: 300rpx;
+ word-break: break-all;
+ display: -webkit-box;
+ overflow: hidden;
+ line-height: 1.5;
+ text-overflow: ellipsis;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 2;
+}
+
+.uni-product-price {
+ margin-top: 10rpx;
+ font-size: 28rpx;
+ line-height: 1.5;
+ position: relative;
+}
+
+.uni-product-price-original {
+ color: #e80080;
+}
+
+.uni-product-price-favour {
+ color: #888888;
+ text-decoration: line-through;
+ margin-left: 10rpx;
+}
+
+.uni-product-tip {
+ position: absolute;
+ right: 10rpx;
+ background-color: #ff3333;
+ color: #ffffff;
+ padding: 0 10rpx;
+ border-radius: 5rpx;
+}
+
+/* timeline */
+.uni-timeline {
+ margin: 35rpx 0;
+ display: flex;
+ flex-direction: column;
+ position: relative;
+}
+
+
+.uni-timeline-item {
+ display: flex;
+ flex-direction: row;
+ position: relative;
+ padding-bottom: 20rpx;
+ box-sizing: border-box;
+ overflow: hidden;
+
+}
+
+.uni-timeline-item .uni-timeline-item-keynode {
+ width: 160rpx;
+ flex-shrink: 0;
+ box-sizing: border-box;
+ padding-right: 20rpx;
+ text-align: right;
+ line-height: 65rpx;
+}
+
+.uni-timeline-item .uni-timeline-item-divider {
+ flex-shrink: 0;
+ position: relative;
+ width: 30rpx;
+ height: 30rpx;
+ top: 15rpx;
+ border-radius: 50%;
+ background-color: #bbb;
+}
+
+
+
+.uni-timeline-item-divider::before,
+.uni-timeline-item-divider::after {
+ position: absolute;
+ left: 15rpx;
+ width: 1rpx;
+ height: 100vh;
+ content: '';
+ background: inherit;
+}
+
+.uni-timeline-item-divider::before {
+ bottom: 100%;
+}
+
+.uni-timeline-item-divider::after {
+ top: 100%;
+}
+
+
+.uni-timeline-last-item .uni-timeline-item-divider:after {
+ display: none;
+}
+
+.uni-timeline-first-item .uni-timeline-item-divider:before {
+ display: none;
+}
+
+.uni-timeline-item .uni-timeline-item-content {
+ padding-left: 20rpx;
+}
+
+.uni-timeline-last-item .bottom-border::after {
+ display: none;
+}
+
+.uni-timeline-item-content .datetime {
+ color: #CCCCCC;
+}
+
+/* 自定义节点颜色 */
+.uni-timeline-last-item .uni-timeline-item-divider {
+ background-color: #1AAD19;
+}
+
+
+/* uni-icon */
+
+.uni-icon {
+ font-family: uniicons;
+ font-size: 24px;
+ font-weight: normal;
+ font-style: normal;
+ line-height: 1;
+ display: inline-block;
+ text-decoration: none;
+ -webkit-font-smoothing: antialiased;
+}
+
+.uni-icon.uni-active {
+ color: #007aff;
+}
+
+.uni-icon-contact:before {
+ content: '\e100';
+}
+
+.uni-icon-person:before {
+ content: '\e101';
+}
+
+.uni-icon-personadd:before {
+ content: '\e102';
+}
+
+.uni-icon-contact-filled:before {
+ content: '\e130';
+}
+
+.uni-icon-person-filled:before {
+ content: '\e131';
+}
+
+.uni-icon-personadd-filled:before {
+ content: '\e132';
+}
+
+.uni-icon-phone:before {
+ content: '\e200';
+}
+
+.uni-icon-email:before {
+ content: '\e201';
+}
+
+.uni-icon-chatbubble:before {
+ content: '\e202';
+}
+
+.uni-icon-chatboxes:before {
+ content: '\e203';
+}
+
+.uni-icon-phone-filled:before {
+ content: '\e230';
+}
+
+.uni-icon-email-filled:before {
+ content: '\e231';
+}
+
+.uni-icon-chatbubble-filled:before {
+ content: '\e232';
+}
+
+.uni-icon-chatboxes-filled:before {
+ content: '\e233';
+}
+
+.uni-icon-weibo:before {
+ content: '\e260';
+}
+
+.uni-icon-weixin:before {
+ content: '\e261';
+}
+
+.uni-icon-pengyouquan:before {
+ content: '\e262';
+}
+
+.uni-icon-chat:before {
+ content: '\e263';
+}
+
+.uni-icon-qq:before {
+ content: '\e264';
+}
+
+.uni-icon-videocam:before {
+ content: '\e300';
+}
+
+.uni-icon-camera:before {
+ content: '\e301';
+}
+
+.uni-icon-mic:before {
+ content: '\e302';
+}
+
+.uni-icon-location:before {
+ content: '\e303';
+}
+
+.uni-icon-mic-filled:before,
+.uni-icon-speech:before {
+ content: '\e332';
+}
+
+.uni-icon-location-filled:before {
+ content: '\e333';
+}
+
+.uni-icon-micoff:before {
+ content: '\e360';
+}
+
+.uni-icon-image:before {
+ content: '\e363';
+}
+
+.uni-icon-map:before {
+ content: '\e364';
+}
+
+.uni-icon-compose:before {
+ content: '\e400';
+}
+
+.uni-icon-trash:before {
+ content: '\e401';
+}
+
+.uni-icon-upload:before {
+ content: '\e402';
+}
+
+.uni-icon-download:before {
+ content: '\e403';
+}
+
+.uni-icon-close:before {
+ content: '\e404';
+}
+
+.uni-icon-redo:before {
+ content: '\e405';
+}
+
+.uni-icon-undo:before {
+ content: '\e406';
+}
+
+.uni-icon-refresh:before {
+ content: '\e407';
+}
+
+.uni-icon-star:before {
+ content: '\e408';
+}
+
+.uni-icon-plus:before {
+ content: '\e409';
+}
+
+.uni-icon-minus:before {
+ content: '\e410';
+}
+
+.uni-icon-circle:before,
+.uni-icon-checkbox:before {
+ content: '\e411';
+}
+
+.uni-icon-close-filled:before,
+.uni-icon-clear:before {
+ content: '\e434';
+}
+
+.uni-icon-refresh-filled:before {
+ content: '\e437';
+}
+
+.uni-icon-star-filled:before {
+ content: '\e438';
+}
+
+.uni-icon-plus-filled:before {
+ content: '\e439';
+}
+
+.uni-icon-minus-filled:before {
+ content: '\e440';
+}
+
+.uni-icon-circle-filled:before {
+ content: '\e441';
+}
+
+.uni-icon-checkbox-filled:before {
+ content: '\e442';
+}
+
+.uni-icon-closeempty:before {
+ content: '\e460';
+}
+
+.uni-icon-refreshempty:before {
+ content: '\e461';
+}
+
+.uni-icon-reload:before {
+ content: '\e462';
+}
+
+.uni-icon-starhalf:before {
+ content: '\e463';
+}
+
+.uni-icon-spinner:before {
+ content: '\e464';
+}
+
+.uni-icon-spinner-cycle:before {
+ content: '\e465';
+}
+
+.uni-icon-search:before {
+ content: '\e466';
+}
+
+.uni-icon-plusempty:before {
+ content: '\e468';
+}
+
+.uni-icon-forward:before {
+ content: '\e470';
+}
+
+.uni-icon-back:before,
+.uni-icon-left-nav:before {
+ content: '\e471';
+}
+
+.uni-icon-checkmarkempty:before {
+ content: '\e472';
+}
+
+.uni-icon-home:before {
+ content: '\e500';
+}
+
+.uni-icon-navigate:before {
+ content: '\e501';
+}
+
+.uni-icon-gear:before {
+ content: '\e502';
+}
+
+.uni-icon-paperplane:before {
+ content: '\e503';
+}
+
+.uni-icon-info:before {
+ content: '\e504';
+}
+
+.uni-icon-help:before {
+ content: '\e505';
+}
+
+.uni-icon-locked:before {
+ content: '\e506';
+}
+
+.uni-icon-more:before {
+ content: '\e507';
+}
+
+.uni-icon-flag:before {
+ content: '\e508';
+}
+
+.uni-icon-home-filled:before {
+ content: '\e530';
+}
+
+.uni-icon-gear-filled:before {
+ content: '\e532';
+}
+
+.uni-icon-info-filled:before {
+ content: '\e534';
+}
+
+.uni-icon-help-filled:before {
+ content: '\e535';
+}
+
+.uni-icon-more-filled:before {
+ content: '\e537';
+}
+
+.uni-icon-settings:before {
+ content: '\e560';
+}
+
+.uni-icon-list:before {
+ content: '\e562';
+}
+
+.uni-icon-bars:before {
+ content: '\e563';
+}
+
+.uni-icon-loop:before {
+ content: '\e565';
+}
+
+.uni-icon-paperclip:before {
+ content: '\e567';
+}
+
+.uni-icon-eye:before {
+ content: '\e568';
+}
+
+.uni-icon-arrowup:before {
+ content: '\e580';
+}
+
+.uni-icon-arrowdown:before {
+ content: '\e581';
+}
+
+.uni-icon-arrowleft:before {
+ content: '\e582';
+}
+
+.uni-icon-arrowright:before {
+ content: '\e583';
+}
+
+.uni-icon-arrowthinup:before {
+ content: '\e584';
+}
+
+.uni-icon-arrowthindown:before {
+ content: '\e585';
+}
+
+.uni-icon-arrowthinleft:before {
+ content: '\e586';
+}
+
+.uni-icon-arrowthinright:before {
+ content: '\e587';
+}
+
+.uni-icon-pulldown:before {
+ content: '\e588';
+}
+
+.uni-icon-scan:before {
+ content: "\e612";
+}
+
+/* 分界线 */
+.uni-divider {
+ height: 110rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+}
+
+.uni-divider__content {
+ font-size: 28rpx;
+ color: #999;
+ padding: 0 20rpx;
+ position: relative;
+ z-index: 101;
+ background: #F4F5F6;
+}
+
+.uni-divider__line {
+ background-color: #CCCCCC;
+ height: 1px;
+ width: 100%;
+ position: absolute;
+ z-index: 100;
+ top: 50%;
+ left: 0;
+ transform: translateY(50%);
+}
+
+/* view{
+ font-size:28rpx;
+ line-height:1.8;
+} */
+progress,
+checkbox-group {
+ width: 100%;
+}
+
+form {
+ width: 100%;
+}
+
+.uni-flex {
+ display: flex;
+ flex-direction: row;
+}
+
+.uni-flex-item {
+ flex: 1;
+}
+
+.uni-row {
+ flex-direction: row;
+}
+
+.uni-column {
+ flex-direction: column;
+}
+
+.uni-link {
+ color: #576B95;
+ font-size: 26rpx;
+}
+
+.uni-center {
+ text-align: center;
+}
+
+.uni-inline-item {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+}
+
+.uni-inline-item text {
+ margin-right: 20rpx;
+}
+
+.uni-inline-item text:last-child {
+ margin-right: 0rpx;
+ margin-left: 20rpx;
+}
+
+/* page */
+.common-page-head {
+ padding: 35rpx;
+ text-align: center;
+}
+
+.common-page-head-title {
+ display: inline-block;
+ padding: 0 40rpx;
+ font-size: 30rpx;
+ height: 88rpx;
+ line-height: 88rpx;
+ color: #BEBEBE;
+ box-sizing: border-box;
+ border-bottom: 2rpx solid #D8D8D8;
+}
+
+.uni-padding-wrap {
+ /* width:690rpx; */
+ padding: 0 30rpx;
+}
+
+.uni-word {
+ text-align: center;
+ padding: 200rpx 100rpx;
+}
+
+.uni-title {
+ font-size: 30rpx;
+ font-weight: 500;
+ padding: 20rpx 0;
+ line-height: 1.5;
+}
+
+.uni-text {
+ font-size: 28rpx;
+}
+
+.uni-title text {
+ font-size: 24rpx;
+ color: #888;
+}
+
+.uni-text-gray {
+ color: #ccc;
+}
+
+.uni-text-small {
+ font-size: 24rpx;
+}
+
+.uni-common-mb {
+ margin-bottom: 30rpx;
+}
+
+.uni-common-pb {
+ padding-bottom: 30rpx;
+}
+
+.uni-common-pl {
+ padding-left: 30rpx;
+}
+
+.uni-common-mt {
+ margin-top: 30rpx;
+}
+
+/* 背景色 */
+.uni-bg-red {
+ background: #F76260;
+ color: #FFF;
+}
+
+.uni-bg-green {
+ background: #09BB07;
+ color: #FFF;
+}
+
+.uni-bg-blue {
+ background: #007AFF;
+ color: #FFF;
+}
+
+/* 标题 */
+.uni-h1 {
+ font-size: 80rpx;
+ font-weight: 700;
+}
+
+.uni-h2 {
+ font-size: 60rpx;
+ font-weight: 700;
+}
+
+.uni-h3 {
+ font-size: 48rpx;
+ font-weight: 700;
+}
+
+.uni-h4 {
+ font-size: 36rpx;
+ font-weight: 700;
+}
+
+.uni-h5 {
+ font-size: 28rpx;
+ color: #8f8f94;
+}
+
+.uni-h6 {
+ font-size: 24rpx;
+ color: #8f8f94;
+}
+
+.uni-bold {
+ font-weight: bold;
+}
+
+/* 文本溢出隐藏 */
+.uni-ellipsis {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+/* 竖向百分百按钮 */
+.uni-btn-v {
+ padding: 10rpx 0;
+}
+
+.uni-btn-v button {
+ margin: 20rpx 0;
+}
+
+/* 表单 */
+.uni-form-item {
+ display: flex;
+ width: 100%;
+ padding: 10rpx 0;
+}
+
+.uni-form-item .title {
+ padding: 10rpx 25rpx;
+}
+
+.uni-label {
+ width: 210rpx;
+ word-wrap: break-word;
+ word-break: break-all;
+ text-indent: 20rpx;
+}
+
+.uni-input {
+ height: 50rpx;
+ padding: 15rpx 25rpx;
+ line-height: 50rpx;
+ font-size: 28rpx;
+ background: #FFF;
+ flex: 1;
+}
+
+radio-group,
+checkbox-group {
+ width: 100%;
+}
+
+radio-group label,
+checkbox-group label {
+ padding-right: 20rpx;
+}
+
+.uni-form-item .with-fun {
+ display: flex;
+ flex-wrap: nowrap;
+ background: #FFFFFF;
+}
+
+.uni-form-item .with-fun .uni-icon {
+ width: 40px;
+ height: 80rpx;
+ line-height: 80rpx;
+ flex-shrink: 0;
+}
+
+/* loadmore */
+.uni-loadmore {
+ height: 80rpx;
+ line-height: 80rpx;
+ text-align: center;
+ padding-bottom: 30rpx;
+}
+
+/*数字角标*/
+/* .uni-badge,
+.uni-badge-default {
+ font-family: 'Helvetica Neue', Helvetica, sans-serif;
+ font-size: 12px;
+ line-height: 1;
+ display: inline-block;
+ padding: 3px 6px;
+ color: #333;
+ border-radius: 100px;
+ background-color: rgba(0, 0, 0, .15);
+} */
+.uni-badge.uni-badge-inverted {
+ padding: 0 5px 0 0;
+ color: #929292;
+ background-color: transparent
+}
+
+.uni-badge-primary {
+ color: #fff;
+ background-color: #007aff
+}
+
+.uni-badge-blue.uni-badge-inverted,
+.uni-badge-primary.uni-badge-inverted {
+ color: #007aff;
+ background-color: transparent
+}
+
+.uni-badge-green,
+.uni-badge-success {
+ color: #fff;
+ background-color: #4cd964;
+}
+
+.uni-badge-green.uni-badge-inverted,
+.uni-badge-success.uni-badge-inverted {
+ color: #4cd964;
+ background-color: transparent
+}
+
+.uni-badge-warning,
+.uni-badge-yellow {
+ color: #fff;
+ background-color: #f0ad4e
+}
+
+.uni-badge-warning.uni-badge-inverted,
+.uni-badge-yellow.uni-badge-inverted {
+ color: #f0ad4e;
+ background-color: transparent
+}
+
+.uni-badge-danger,
+.uni-badge-red {
+ color: #fff;
+ background-color: #dd524d
+}
+
+.uni-badge-danger.uni-badge-inverted,
+.uni-badge-red.uni-badge-inverted {
+ color: #dd524d;
+ background-color: transparent
+}
+
+.uni-badge-purple,
+.uni-badge-royal {
+ color: #fff;
+ background-color: #8a6de9
+}
+
+.uni-badge-purple.uni-badge-inverted,
+.uni-badge-royal.uni-badge-inverted {
+ color: #8a6de9;
+ background-color: transparent
+}
+
+/*折叠面板 */
+.uni-collapse-content {
+ height: 0;
+ width: 100%;
+ overflow: hidden;
+}
+
+.uni-collapse-content.uni-active {
+ height: auto;
+}
+
+/*卡片视图 */
+.uni-card {
+ background: #fff;
+ border-radius: 8rpx;
+ margin: 20rpx 0;
+ position: relative;
+ /* box-shadow: 0 2rpx 4rpx rgba(0, 0, 0, .3); */
+}
+
+.uni-card-content {
+ font-size: 30rpx;
+}
+
+.uni-card-content.image-view {
+ width: 100%;
+ margin: 0;
+}
+
+.uni-card-content-inner {
+ position: relative;
+ padding: 30rpx;
+}
+
+.uni-card-footer,
+.uni-card-header {
+ position: relative;
+ display: flex;
+ min-height: 50rpx;
+ padding: 20rpx 30rpx;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.uni-card-header {
+ font-size: 36rpx;
+}
+
+.uni-card-footer {
+ color: #6d6d72;
+}
+
+.uni-card-footer:before,
+.uni-card-header:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ left: 0;
+ height: 2rpx;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+
+.uni-card-header:after {
+ top: auto;
+ bottom: 0;
+}
+
+.uni-card-media {
+ justify-content: flex-start;
+}
+
+.uni-card-media-logo {
+ height: 84rpx;
+ width: 84rpx;
+ margin-right: 20rpx;
+}
+
+.uni-card-media-body {
+ height: 84rpx;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: flex-start;
+}
+
+.uni-card-media-text-top {
+ line-height: 36rpx;
+ font-size: 34rpx;
+}
+
+.uni-card-media-text-bottom {
+ line-height: 30rpx;
+ font-size: 28rpx;
+ color: #8f8f94;
+}
+
+.uni-card-link {
+ color: #007AFF;
+}
+
+/* 列表 */
+.uni-list {
+ background-color: #FFFFFF;
+ position: relative;
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+}
+
+.uni-list:after {
+ position: absolute;
+ z-index: 10;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ height: 1px;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+
+/* .uni-list::before {
+ position: absolute;
+ z-index: 10;
+ right: 0;
+ top: 0;
+ left: 0;
+ height: 1px;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+} */
+.uni-list-cell {
+ position: relative;
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.uni-list-cell-hover {
+ background-color: #eee;
+}
+
+.uni-list-cell-pd {
+ padding: 22rpx 30rpx;
+}
+
+.uni-list-cell-left {
+ white-space: nowrap;
+ font-size: 28rpx;
+ padding: 0 30rpx;
+}
+
+.uni-list-cell-db,
+.uni-list-cell-right {
+ flex: 1;
+}
+
+.uni-list-cell::after {
+ position: absolute;
+ z-index: 3;
+ right: 0;
+ bottom: 0;
+ left: 30rpx;
+ height: 1px;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+
+.uni-list .uni-list-cell:last-child::after {
+ height: 0rpx;
+}
+
+.uni-list-cell-last.uni-list-cell::after {
+ height: 0rpx;
+}
+
+.uni-list-cell-divider {
+ position: relative;
+ display: flex;
+ color: #999;
+ background-color: #f7f7f7;
+ padding: 15rpx 20rpx;
+}
+
+.uni-list-cell-divider::before {
+ position: absolute;
+ right: 0;
+ top: 0;
+ left: 0;
+ height: 1px;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+
+.uni-list-cell-divider::after {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0rpx;
+ height: 1px;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+
+.uni-list-cell-navigate {
+ font-size: 30rpx;
+ padding: 22rpx 30rpx;
+ line-height: 48rpx;
+ position: relative;
+ display: flex;
+ box-sizing: border-box;
+ width: 100%;
+ flex: 1;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.uni-list-cell-navigate {
+ padding-right: 36rpx;
+}
+
+.uni-navigate-badge {
+ padding-right: 50rpx;
+}
+
+.uni-list-cell-navigate.uni-navigate-right:after {
+ font-family: uniicons;
+ content: '\e583';
+ position: absolute;
+ right: 24rpx;
+ top: 50%;
+ color: #bbb;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%);
+}
+
+.uni-list-cell-navigate.uni-navigate-bottom:after {
+ font-family: uniicons;
+ content: '\e581';
+ position: absolute;
+ right: 24rpx;
+ top: 50%;
+ color: #bbb;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%);
+}
+
+.uni-list-cell-navigate.uni-navigate-bottom.uni-active::after {
+ font-family: uniicons;
+ content: '\e580';
+ position: absolute;
+ right: 24rpx;
+ top: 50%;
+ color: #bbb;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%);
+}
+
+.uni-collapse.uni-list-cell {
+ flex-direction: column;
+}
+
+.uni-list-cell-navigate.uni-active {
+ background: #eee;
+}
+
+.uni-list.uni-collapse {
+ box-sizing: border-box;
+ height: 0;
+ overflow: hidden;
+}
+
+.uni-collapse .uni-list-cell {
+ padding-left: 20rpx;
+}
+
+.uni-collapse .uni-list-cell::after {
+ left: 52rpx;
+}
+
+.uni-list.uni-active {
+ height: auto;
+}
+
+/* 三行列表 */
+.uni-triplex-row {
+ display: flex;
+ flex: 1;
+ width: 100%;
+ box-sizing: border-box;
+ flex-direction: row;
+ padding: 22rpx 30rpx;
+}
+
+.uni-triplex-right,
+.uni-triplex-left {
+ display: flex;
+ flex-direction: column;
+}
+
+.uni-triplex-left {
+ width: 84%;
+}
+
+.uni-triplex-left .uni-title {
+ padding: 8rpx 0;
+}
+
+.uni-triplex-left .uni-text,
+.uni-triplex-left .uni-text-small {
+ color: #999999;
+}
+
+.uni-triplex-right {
+ width: 16%;
+ text-align: right;
+}
+
+/* 图文列表 */
+.uni-media-list {
+ padding: 22rpx 30rpx;
+ box-sizing: border-box;
+ display: flex;
+ width: 100%;
+ flex-direction: row;
+}
+
+.uni-navigate-right.uni-media-list {
+ padding-right: 74rpx;
+}
+
+.uni-pull-right {
+ flex-direction: row-reverse;
+}
+
+.uni-pull-right>.uni-media-list-logo {
+ margin-right: 0rpx;
+ margin-left: 20rpx;
+}
+
+.uni-media-list-logo {
+ height: 84rpx;
+ width: 84rpx;
+ margin-right: 20rpx;
+}
+
+.uni-media-list-logo image {
+ height: 100%;
+ width: 100%;
+}
+
+.uni-media-list-body {
+ height: 84rpx;
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: flex-start;
+ overflow: hidden;
+}
+
+.uni-media-list-text-top {
+ width: 100%;
+ line-height: 36rpx;
+ font-size: 30rpx;
+}
+
+.uni-media-list-text-bottom {
+ width: 100%;
+ line-height: 30rpx;
+ font-size: 26rpx;
+ color: #8f8f94;
+}
+
+/* 九宫格 */
+.uni-grid-9 {
+ background: #f2f2f2;
+ width: 750rpx;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ border-top: 2rpx solid #eee;
+}
+
+.uni-grid-9-item {
+ width: 250rpx;
+ height: 200rpx;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ border-bottom: 2rpx solid;
+ border-right: 2rpx solid;
+ border-color: #eee;
+ box-sizing: border-box;
+}
+
+.no-border-right {
+ border-right: none;
+}
+
+.uni-grid-9-image {
+ width: 100rpx;
+ height: 100rpx;
+}
+
+.uni-grid-9-text {
+ width: 250rpx;
+ line-height: 4rpx;
+ height: 40rpx;
+ text-align: center;
+ font-size: 30rpx;
+}
+
+.uni-grid-9-item-hover {
+ background: rgba(0, 0, 0, 0.1);
+}
+
+/* 上传 */
+.uni-uploader {
+ flex: 1;
+ flex-direction: column;
+}
+
+.uni-uploader-head {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+}
+
+.uni-uploader-info {
+ color: #B2B2B2;
+}
+
+.uni-uploader-body {
+ margin-top: 16rpx;
+}
+
+.uni-uploader__files {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+}
+
+.uni-uploader__file {
+ margin: 10rpx;
+ width: 210rpx;
+ height: 210rpx;
+}
+
+.uni-uploader__img {
+ display: block;
+ width: 210rpx;
+ height: 210rpx;
+}
+
+.uni-uploader__input-box {
+ position: relative;
+ margin: 10rpx;
+ width: 208rpx;
+ height: 208rpx;
+ border: 2rpx solid #D9D9D9;
+}
+
+.uni-uploader__input-box:before,
+.uni-uploader__input-box:after {
+ content: " ";
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ -webkit-transform: translate(-50%, -50%);
+ transform: translate(-50%, -50%);
+ background-color: #D9D9D9;
+}
+
+.uni-uploader__input-box:before {
+ width: 4rpx;
+ height: 79rpx;
+}
+
+.uni-uploader__input-box:after {
+ width: 79rpx;
+ height: 4rpx;
+}
+
+.uni-uploader__input-box:active {
+ border-color: #999999;
+}
+
+.uni-uploader__input-box:active:before,
+.uni-uploader__input-box:active:after {
+ background-color: #999999;
+}
+
+.uni-uploader__input {
+ position: absolute;
+ z-index: 1;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ opacity: 0;
+}
+
+/*问题反馈*/
+.feedback-title {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+ padding: 20rpx;
+ color: #8f8f94;
+ font-size: 28rpx;
+}
+
+.feedback-star-view.feedback-title {
+ justify-content: flex-start;
+ margin: 0;
+}
+
+.feedback-quick {
+ position: relative;
+ padding-right: 40rpx;
+}
+
+.feedback-quick:after {
+ font-family: uniicons;
+ font-size: 40rpx;
+ content: '\e581';
+ position: absolute;
+ right: 0;
+ top: 50%;
+ color: #bbb;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%);
+}
+
+.feedback-body {
+ background: #fff;
+}
+
+.feedback-textare {
+ height: 200rpx;
+ font-size: 34rpx;
+ line-height: 50rpx;
+ width: 100%;
+ box-sizing: border-box;
+ padding: 20rpx 30rpx 0;
+}
+
+.feedback-input {
+ font-size: 34rpx;
+ height: 50rpx;
+ min-height: 50rpx;
+ padding: 15rpx 20rpx;
+ line-height: 50rpx;
+}
+
+.feedback-uploader {
+ padding: 22rpx 20rpx;
+}
+
+.feedback-star {
+ font-family: uniicons;
+ font-size: 40rpx;
+ margin-left: 6rpx;
+}
+
+.feedback-star-view {
+ margin-left: 20rpx;
+}
+
+.feedback-star:after {
+ content: '\e408';
+}
+
+.feedback-star.active {
+ color: #FFB400;
+}
+
+.feedback-star.active:after {
+ content: '\e438';
+}
+
+.feedback-submit {
+ background: #007AFF;
+ color: #FFFFFF;
+ margin: 20rpx;
+}
+
+/* input group */
+.uni-input-group {
+ position: relative;
+ padding: 0;
+ border: 0;
+ background-color: #fff;
+}
+
+.uni-input-group:before {
+ position: absolute;
+ top: 0;
+ right: 0;
+ left: 0;
+ height: 2rpx;
+ content: '';
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+
+.uni-input-group:after {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ height: 2rpx;
+ content: '';
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+
+.uni-input-row {
+ position: relative;
+ display: flex;
+ flex-direction: row;
+ font-size: 28rpx;
+ padding: 22rpx 30rpx;
+ justify-content: space-between;
+}
+
+.uni-input-group .uni-input-row:after {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 30rpx;
+ height: 2rpx;
+ content: '';
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+
+.uni-input-row label {
+ line-height: 70rpx;
+}
+
+/* textarea */
+.uni-textarea {
+ width: 100%;
+ background: #FFF;
+}
+
+.uni-textarea textarea {
+ width: 96%;
+ padding: 18rpx 2%;
+ line-height: 1.6;
+ font-size: 28rpx;
+ height: 150rpx;
+}
+
+/* tab bar */
+.uni-tab-bar {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ overflow: hidden;
+ height: 100%;
+}
+
+.uni-tab-bar .list {
+ width: 750rpx;
+ height: 100%;
+}
+
+.uni-swiper-tab {
+ width: 100%;
+ white-space: nowrap;
+ line-height: 100rpx;
+ height: 100rpx;
+ border-bottom: 1px solid #c8c7cc;
+}
+
+.swiper-tab-list {
+ font-size: 30rpx;
+ width: 150rpx;
+ display: inline-block;
+ text-align: center;
+ color: #555;
+}
+
+.uni-tab-bar .active {
+ color: #007AFF;
+}
+
+.uni-tab-bar .swiper-box {
+ flex: 1;
+ width: 100%;
+ height: calc(100% - 100rpx);
+}
+
+.uni-tab-bar-loading {
+ padding: 20rpx 0;
+}
+
+/* comment */
+.uni-comment {
+ padding: 5rpx 0;
+ display: flex;
+ flex-grow: 1;
+ flex-direction: column;
+}
+
+.uni-comment-list {
+ flex-wrap: nowrap;
+ padding: 10rpx 0;
+ margin: 10rpx 0;
+ width: 100%;
+ display: flex;
+}
+
+.uni-comment-face {
+ width: 70rpx;
+ height: 70rpx;
+ border-radius: 100%;
+ margin-right: 20rpx;
+ flex-shrink: 0;
+ overflow: hidden;
+}
+
+.uni-comment-face image {
+ width: 100%;
+ border-radius: 100%;
+}
+
+.uni-comment-body {
+ width: 100%;
+}
+
+.uni-comment-top {
+ line-height: 1.5em;
+ justify-content: space-between;
+}
+
+.uni-comment-top text {
+ color: #0A98D5;
+ font-size: 24rpx;
+}
+
+.uni-comment-date {
+ line-height: 38rpx;
+ flex-direction: row;
+ justify-content: space-between;
+ display: flex !important;
+ flex-grow: 1;
+}
+
+.uni-comment-date view {
+ color: #666666;
+ font-size: 24rpx;
+ line-height: 38rpx;
+}
+
+.uni-comment-content {
+ line-height: 1.6em;
+ font-size: 28rpx;
+ padding: 8rpx 0;
+}
+
+.uni-comment-replay-btn {
+ background: #FFF;
+ font-size: 24rpx;
+ line-height: 28rpx;
+ padding: 5rpx 20rpx;
+ border-radius: 30rpx;
+ color: #333 !important;
+ margin: 0 10rpx;
+}
+
+/* swiper msg */
+.uni-swiper-msg {
+ width: 100%;
+ padding: 12rpx 0;
+ flex-wrap: nowrap;
+ display: flex;
+}
+
+.uni-swiper-msg-icon {
+ width: 50rpx;
+ margin-right: 20rpx;
+}
+
+.uni-swiper-msg-icon image {
+ width: 100%;
+ flex-shrink: 0;
+}
+
+.uni-swiper-msg swiper {
+ width: 100%;
+ height: 50rpx;
+}
+
+.uni-swiper-msg swiper-item {
+ line-height: 50rpx;
+}
+
+/* product */
+.uni-product-list {
+ display: flex;
+ width: 100%;
+ flex-wrap: wrap;
+ flex-direction: row;
+}
+
+.uni-product {
+ padding: 20rpx;
+ display: flex;
+ flex-direction: column;
+}
+
+.image-view {
+ height: 330rpx;
+ width: 330rpx;
+ margin: 12rpx 0;
+}
+
+.uni-product-image {
+ height: 330rpx;
+ width: 330rpx;
+}
+
+.uni-product-title {
+ width: 300rpx;
+ word-break: break-all;
+ display: -webkit-box;
+ overflow: hidden;
+ line-height: 1.5;
+ text-overflow: ellipsis;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 2;
+}
+
+.uni-product-price {
+ margin-top: 10rpx;
+ font-size: 28rpx;
+ line-height: 1.5;
+ position: relative;
+}
+
+.uni-product-price-original {
+ color: #e80080;
+}
+
+.uni-product-price-favour {
+ color: #888888;
+ text-decoration: line-through;
+ margin-left: 10rpx;
+}
+
+.uni-product-tip {
+ position: absolute;
+ right: 10rpx;
+ background-color: #ff3333;
+ color: #ffffff;
+ padding: 0 10rpx;
+ border-radius: 5rpx;
+}
+
+/* timeline */
+.uni-timeline {
+ margin: 35rpx 0;
+ display: flex;
+ flex-direction: column;
+ position: relative;
+}
+
+
+.uni-timeline-item {
+ display: flex;
+ flex-direction: row;
+ position: relative;
+ padding-bottom: 20rpx;
+ box-sizing: border-box;
+ overflow: hidden;
+
+}
+
+.uni-timeline-item .uni-timeline-item-keynode {
+ width: 160rpx;
+ flex-shrink: 0;
+ box-sizing: border-box;
+ padding-right: 20rpx;
+ text-align: right;
+ line-height: 65rpx;
+}
+
+.uni-timeline-item .uni-timeline-item-divider {
+ flex-shrink: 0;
+ position: relative;
+ width: 30rpx;
+ height: 30rpx;
+ top: 15rpx;
+ border-radius: 50%;
+ background-color: #bbb;
+}
+
+
+
+.uni-timeline-item-divider::before,
+.uni-timeline-item-divider::after {
+ position: absolute;
+ left: 15rpx;
+ width: 1rpx;
+ height: 100vh;
+ content: '';
+ background: inherit;
+}
+
+.uni-timeline-item-divider::before {
+ bottom: 100%;
+}
+
+.uni-timeline-item-divider::after {
+ top: 100%;
+}
+
+
+.uni-timeline-last-item .uni-timeline-item-divider:after {
+ display: none;
+}
+
+.uni-timeline-first-item .uni-timeline-item-divider:before {
+ display: none;
+}
+
+.uni-timeline-item .uni-timeline-item-content {
+ padding-left: 20rpx;
+}
+
+.uni-timeline-last-item .bottom-border::after {
+ display: none;
+}
+
+.uni-timeline-item-content .datetime {
+ color: #CCCCCC;
+}
+
+/* 自定义节点颜色 */
+.uni-timeline-last-item .uni-timeline-item-divider {
+ background-color: #1AAD19;
+}
+
+
+/* uni-icon */
+
+.uni-icon {
+ font-family: uniicons;
+ font-size: 24px;
+ font-weight: normal;
+ font-style: normal;
+ line-height: 1;
+ display: inline-block;
+ text-decoration: none;
+ -webkit-font-smoothing: antialiased;
+}
+
+.uni-icon.uni-active {
+ color: #007aff;
+}
+
+.uni-icon-contact:before {
+ content: '\e100';
+}
+
+.uni-icon-person:before {
+ content: '\e101';
+}
+
+.uni-icon-personadd:before {
+ content: '\e102';
+}
+
+.uni-icon-contact-filled:before {
+ content: '\e130';
+}
+
+.uni-icon-person-filled:before {
+ content: '\e131';
+}
+
+.uni-icon-personadd-filled:before {
+ content: '\e132';
+}
+
+.uni-icon-phone:before {
+ content: '\e200';
+}
+
+.uni-icon-email:before {
+ content: '\e201';
+}
+
+.uni-icon-chatbubble:before {
+ content: '\e202';
+}
+
+.uni-icon-chatboxes:before {
+ content: '\e203';
+}
+
+.uni-icon-phone-filled:before {
+ content: '\e230';
+}
+
+.uni-icon-email-filled:before {
+ content: '\e231';
+}
+
+.uni-icon-chatbubble-filled:before {
+ content: '\e232';
+}
+
+.uni-icon-chatboxes-filled:before {
+ content: '\e233';
+}
+
+.uni-icon-weibo:before {
+ content: '\e260';
+}
+
+.uni-icon-weixin:before {
+ content: '\e261';
+}
+
+.uni-icon-pengyouquan:before {
+ content: '\e262';
+}
+
+.uni-icon-chat:before {
+ content: '\e263';
+}
+
+.uni-icon-qq:before {
+ content: '\e264';
+}
+
+.uni-icon-videocam:before {
+ content: '\e300';
+}
+
+.uni-icon-camera:before {
+ content: '\e301';
+}
+
+.uni-icon-mic:before {
+ content: '\e302';
+}
+
+.uni-icon-location:before {
+ content: '\e303';
+}
+
+.uni-icon-mic-filled:before,
+.uni-icon-speech:before {
+ content: '\e332';
+}
+
+.uni-icon-location-filled:before {
+ content: '\e333';
+}
+
+.uni-icon-micoff:before {
+ content: '\e360';
+}
+
+.uni-icon-image:before {
+ content: '\e363';
+}
+
+.uni-icon-map:before {
+ content: '\e364';
+}
+
+.uni-icon-compose:before {
+ content: '\e400';
+}
+
+.uni-icon-trash:before {
+ content: '\e401';
+}
+
+.uni-icon-upload:before {
+ content: '\e402';
+}
+
+.uni-icon-download:before {
+ content: '\e403';
+}
+
+.uni-icon-close:before {
+ content: '\e404';
+}
+
+.uni-icon-redo:before {
+ content: '\e405';
+}
+
+.uni-icon-undo:before {
+ content: '\e406';
+}
+
+.uni-icon-refresh:before {
+ content: '\e407';
+}
+
+.uni-icon-star:before {
+ content: '\e408';
+}
+
+.uni-icon-plus:before {
+ content: '\e409';
+}
+
+.uni-icon-minus:before {
+ content: '\e410';
+}
+
+.uni-icon-circle:before,
+.uni-icon-checkbox:before {
+ content: '\e411';
+}
+
+.uni-icon-close-filled:before,
+.uni-icon-clear:before {
+ content: '\e434';
+}
+
+.uni-icon-refresh-filled:before {
+ content: '\e437';
+}
+
+.uni-icon-star-filled:before {
+ content: '\e438';
+}
+
+.uni-icon-plus-filled:before {
+ content: '\e439';
+}
+
+.uni-icon-minus-filled:before {
+ content: '\e440';
+}
+
+.uni-icon-circle-filled:before {
+ content: '\e441';
+}
+
+.uni-icon-checkbox-filled:before {
+ content: '\e442';
+}
+
+.uni-icon-closeempty:before {
+ content: '\e460';
+}
+
+.uni-icon-refreshempty:before {
+ content: '\e461';
+}
+
+.uni-icon-reload:before {
+ content: '\e462';
+}
+
+.uni-icon-starhalf:before {
+ content: '\e463';
+}
+
+.uni-icon-spinner:before {
+ content: '\e464';
+}
+
+.uni-icon-spinner-cycle:before {
+ content: '\e465';
+}
+
+.uni-icon-search:before {
+ content: '\e466';
+}
+
+.uni-icon-plusempty:before {
+ content: '\e468';
+}
+
+.uni-icon-forward:before {
+ content: '\e470';
+}
+
+.uni-icon-back:before,
+.uni-icon-left-nav:before {
+ content: '\e471';
+}
+
+.uni-icon-checkmarkempty:before {
+ content: '\e472';
+}
+
+.uni-icon-home:before {
+ content: '\e500';
+}
+
+.uni-icon-navigate:before {
+ content: '\e501';
+}
+
+.uni-icon-gear:before {
+ content: '\e502';
+}
+
+.uni-icon-paperplane:before {
+ content: '\e503';
+}
+
+.uni-icon-info:before {
+ content: '\e504';
+}
+
+.uni-icon-help:before {
+ content: '\e505';
+}
+
+.uni-icon-locked:before {
+ content: '\e506';
+}
+
+.uni-icon-more:before {
+ content: '\e507';
+}
+
+.uni-icon-flag:before {
+ content: '\e508';
+}
+
+.uni-icon-home-filled:before {
+ content: '\e530';
+}
+
+.uni-icon-gear-filled:before {
+ content: '\e532';
+}
+
+.uni-icon-info-filled:before {
+ content: '\e534';
+}
+
+.uni-icon-help-filled:before {
+ content: '\e535';
+}
+
+.uni-icon-more-filled:before {
+ content: '\e537';
+}
+
+.uni-icon-settings:before {
+ content: '\e560';
+}
+
+.uni-icon-list:before {
+ content: '\e562';
+}
+
+.uni-icon-bars:before {
+ content: '\e563';
+}
+
+.uni-icon-loop:before {
+ content: '\e565';
+}
+
+.uni-icon-paperclip:before {
+ content: '\e567';
+}
+
+.uni-icon-eye:before {
+ content: '\e568';
+}
+
+.uni-icon-arrowup:before {
+ content: '\e580';
+}
+
+.uni-icon-arrowdown:before {
+ content: '\e581';
+}
+
+.uni-icon-arrowleft:before {
+ content: '\e582';
+}
+
+.uni-icon-arrowright:before {
+ content: '\e583';
+}
+
+.uni-icon-arrowthinup:before {
+ content: '\e584';
+}
+
+.uni-icon-arrowthindown:before {
+ content: '\e585';
+}
+
+.uni-icon-arrowthinleft:before {
+ content: '\e586';
+}
+
+.uni-icon-arrowthinright:before {
+ content: '\e587';
+}
+
+.uni-icon-pulldown:before {
+ content: '\e588';
+}
+
+.uni-icon-scan:before {
+ content: "\e612";
+}
+
+/* 分界线 */
+.uni-divider {
+ height: 110rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+}
+
+.uni-divider__content {
+ font-size: 28rpx;
+ color: #999;
+ padding: 0 20rpx;
+ position: relative;
+ z-index: 101;
+ background: #F4F5F6;
+}
+
+.uni-divider__line {
+ background-color: #CCCCCC;
+ height: 1px;
+ width: 100%;
+ position: absolute;
+ z-index: 100;
+ top: 50%;
+ left: 0;
+ transform: translateY(50%);
+}
+
+.left-win-active text {
+ color: #007AFF !important;
+}
diff --git a/src/common/utils/auth.js b/src/common/utils/auth.js
new file mode 100644
index 0000000..57eeb28
--- /dev/null
+++ b/src/common/utils/auth.js
@@ -0,0 +1,21 @@
+const AccessTokenKey = 'ACCESS_TOKEN'
+const RefreshTokenKey = 'REFRESH_TOKEN'
+
+// ========== Token 相关 ==========
+export function getAccessToken() {
+ return uni.getStorageSync(AccessTokenKey)
+}
+
+export function getRefreshToken() {
+ return uni.getStorageSync(RefreshTokenKey)
+}
+
+export function setToken(token) {
+ uni.setStorageSync(AccessTokenKey, token.accessToken)
+ uni.setStorageSync(RefreshTokenKey, token.refreshToken)
+}
+
+export function removeToken() {
+ uni.removeStorageSync(AccessTokenKey)
+ uni.removeStorageSync(RefreshTokenKey)
+}
diff --git a/src/common/utils/common.js b/src/common/utils/common.js
new file mode 100644
index 0000000..00d4137
--- /dev/null
+++ b/src/common/utils/common.js
@@ -0,0 +1,54 @@
+/**
+* 显示消息提示框
+* @param content 提示的标题
+*/
+export function toast(content) {
+ uni.showToast({
+ icon: 'none',
+ title: content
+ })
+}
+
+/**
+* 显示模态弹窗
+* @param content 提示的标题
+*/
+export function showConfirm(content) {
+ return new Promise((resolve, reject) => {
+ uni.showModal({
+ title: '提示',
+ content: content,
+ cancelText: '取消',
+ confirmText: '确定',
+ success: function(res) {
+ resolve(res)
+ }
+ })
+ })
+}
+
+/**
+* 参数处理
+* @param params 参数
+*/
+export function tansParams(params) {
+ let result = ''
+ for (const propName of Object.keys(params)) {
+ const value = params[propName]
+ var part = encodeURIComponent(propName) + "="
+ if (value !== null && value !== "" && typeof (value) !== "undefined") {
+ if (typeof value === 'object') {
+ for (const key of Object.keys(value)) {
+ if (value[key] !== null && value[key] !== "" && typeof (value[key]) !== 'undefined') {
+ let params = propName + '[' + key + ']'
+ var subPart = encodeURIComponent(params) + "="
+ result += subPart + encodeURIComponent(value[key]) + "&"
+ }
+ }
+ } else {
+ result += part + encodeURIComponent(value) + "&"
+ }
+ }
+ }
+ return result
+}
\ No newline at end of file
diff --git a/src/common/utils/constant.js b/src/common/utils/constant.js
new file mode 100644
index 0000000..89e54ca
--- /dev/null
+++ b/src/common/utils/constant.js
@@ -0,0 +1,9 @@
+const constant = {
+ avatar: 'vuex_avatar',
+ name: 'vuex_name',
+ roles: 'vuex_roles',
+ permissions: 'vuex_permissions',
+ tenantId:'vuex_tenantId'
+ }
+
+ export default constant
diff --git a/src/common/utils/errorCode.js b/src/common/utils/errorCode.js
new file mode 100644
index 0000000..d2111ee
--- /dev/null
+++ b/src/common/utils/errorCode.js
@@ -0,0 +1,6 @@
+export default {
+ '401': '认证失败,无法访问系统资源',
+ '403': '当前操作没有权限',
+ '404': '访问资源不存在',
+ 'default': '系统未知错误,请反馈给管理员'
+}
diff --git a/src/common/utils/permission.js b/src/common/utils/permission.js
new file mode 100644
index 0000000..17969f2
--- /dev/null
+++ b/src/common/utils/permission.js
@@ -0,0 +1,51 @@
+import store from '@/store'
+
+/**
+ * 字符权限校验
+ * @param {Array} value 校验值
+ * @returns {Boolean}
+ */
+export function checkPermi(value) {
+ if (value && value instanceof Array && value.length > 0) {
+ const permissions = store.getters && store.getters.permissions
+ const permissionDatas = value
+ const all_permission = "*:*:*"
+
+ const hasPermission = permissions.some(permission => {
+ return all_permission === permission || permissionDatas.includes(permission)
+ })
+
+ if (!hasPermission) {
+ return false
+ }
+ return true
+ } else {
+ console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`)
+ return false
+ }
+}
+
+/**
+ * 角色权限校验
+ * @param {Array} value 校验值
+ * @returns {Boolean}
+ */
+export function checkRole(value) {
+ if (value && value instanceof Array && value.length > 0) {
+ const roles = store.getters && store.getters.roles
+ const permissionRoles = value
+ const super_admin = "admin"
+
+ const hasRole = roles.some(role => {
+ return super_admin === role || permissionRoles.includes(role)
+ })
+
+ if (!hasRole) {
+ return false
+ }
+ return true
+ } else {
+ console.error(`need roles! Like checkRole="['admin','editor']"`)
+ return false
+ }
+}
\ No newline at end of file
diff --git a/src/common/utils/ruoyi.js b/src/common/utils/ruoyi.js
new file mode 100644
index 0000000..fb60217
--- /dev/null
+++ b/src/common/utils/ruoyi.js
@@ -0,0 +1,47 @@
+/**
+ * 通用js方法封装处理
+ * Copyright (c) 2019 ruoyi
+ */
+
+// 日期格式化
+export function parseTime(time, pattern) {
+ if (arguments.length === 0 || !time) {
+ return null
+ }
+ const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
+ let date
+ if (typeof time === 'object') {
+ date = time
+ } else {
+ if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
+ time = parseInt(time)
+ } else if (typeof time === 'string') {
+ time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm),'');
+ }
+ if ((typeof time === 'number') && (time.toString().length === 10)) {
+ time = time * 1000
+ }
+ date = new Date(time)
+ }
+ const formatObj = {
+ y: date.getFullYear(),
+ m: date.getMonth() + 1,
+ d: date.getDate(),
+ h: date.getHours(),
+ i: date.getMinutes(),
+ s: date.getSeconds(),
+ a: date.getDay()
+ }
+ const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
+ let value = formatObj[key]
+ // Note: getDay() returns 0 on Sunday
+ if (key === 'a') {
+ return ['日', '一', '二', '三', '四', '五', '六'][value]
+ }
+ if (result.length > 0 && value < 10) {
+ value = '0' + value
+ }
+ return value || 0
+ })
+ return time_str
+}
diff --git a/src/common/utils/storage.js b/src/common/utils/storage.js
new file mode 100644
index 0000000..515d413
--- /dev/null
+++ b/src/common/utils/storage.js
@@ -0,0 +1,37 @@
+// 获取本地存储对应key
+const getStorage = (key)=>{
+ return uni.getStorageSync( key );
+}
+
+// 设置本地存储对应key
+const setStorage = (key,value)=>{
+ return uni.setStorageSync( key,value );
+}
+
+// 清除全部本地存储
+const clearStorage = ()=>{
+ uni.clearStorageSync();
+}
+
+// 清除指定key本地存储
+const removeStorage = ( key )=>{
+ uni.removeStorageSync( key );
+}
+
+const constant = {
+ id:"id",
+ token:"token",
+ avatar: 'avatar',
+ name: 'name',
+ roles: 'roles',
+ permissions: 'permissions'
+ }
+
+
+export default {
+ getStorage,
+ setStorage,
+ clearStorage,
+ removeStorage,
+ constant
+}
\ No newline at end of file
diff --git a/src/components/active-form/active-form.scss b/src/components/active-form/active-form.scss
new file mode 100644
index 0000000..af47d48
--- /dev/null
+++ b/src/components/active-form/active-form.scss
@@ -0,0 +1,36 @@
+.active-form {
+ .u-radio-group--row, .u-checkbox-group--row {
+ flex-wrap: wrap;
+ }
+
+ .u-radio, .u-checkbox {
+ margin: 10rpx;
+ }
+}
+
+.flex-row-sb-c {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.flex-col--c {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
+
+.pr20{
+ padding-right: 20rpx;
+}
+.pt30{
+ padding-top: 30rpx;
+}
+.p30{
+ padding: 30rpx;
+}
+.font26{
+ font-size: 26rpx;
+}
+
diff --git a/src/components/active-form/active-form.vue b/src/components/active-form/active-form.vue
new file mode 100644
index 0000000..9b6bd7f
--- /dev/null
+++ b/src/components/active-form/active-form.vue
@@ -0,0 +1,787 @@
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+
+
+
+
+
+
+ {{ codeFont }}
+
+
+
+
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+
+
+
+
+ {{
+ item.list.find(v => v.value === form[item.rules.name]) && item.list.find(v => v.value === form[item.rules.name]).name || ''
+ }}
+
+ {{
+ item.placeholder
+ }}
+
+
+
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+
+
+
+ {{ form[item.rules.name] }}
+ {{
+ item.placeholder
+ }}
+
+
+
+
+
+ 时间{{item.params}}
+
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+ (单选)
+
+
+
+
+
+ {{radioItem.name}}
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+ (多选)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+
+
+
+
+ 一键获取
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/active-form/active-form222.vue b/src/components/active-form/active-form222.vue
new file mode 100644
index 0000000..158e5f0
--- /dev/null
+++ b/src/components/active-form/active-form222.vue
@@ -0,0 +1,760 @@
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+
+
+
+
+
+
+ {{ codeFont }}
+
+
+
+
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+
+
+
+
+ {{
+ item.list.find(v => v.value === form[item.rules.name]) && item.list.find(v => v.value === form[item.rules.name]).name || ''
+ }}
+
+ {{
+ item.placeholder
+ }}
+
+
+
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+
+
+
+ {{ form[item.rules.name] }}
+ {{
+ item.placeholder
+ }}
+
+
+
+
+
+ 时间{{item.params}}
+
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+ (单选)
+
+
+
+
+
+ {{radioItem.name}}
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+ (多选)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+
+
+
+
+ 一键获取
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/active-form/detail.md b/src/components/active-form/detail.md
new file mode 100644
index 0000000..b5b5aa1
--- /dev/null
+++ b/src/components/active-form/detail.md
@@ -0,0 +1,452 @@
+# 导入即用 全端支持
+### 2.0插件地址 https://ext.dcloud.net.cn/plugin?id=5842 (基于uview2.0)
+### 1.0插件地址 https://ext.dcloud.net.cn/plugin?id=8755 (基于uview1.0)
+
+#### 注意!!!
+```
+本插件基于 uview2.0进行重构 使用需要引入uview2.0支持
+[ 点击uview2.0官网地址 ](https://www.uviewui.com/)
+[引入uview2.0指南](https://ext.dcloud.net.cn/plugin?id=1593)
+```
+### 有问题 可评论 看到及时回复
+# 使用方式
+## 1. 注册
+### App.vue引入组件样式即可
+```javascript
+
+
+
+```
+
+
+## 2.页面使用
+
+```javascript
+
+
+
+
+
+ 提交表单
+ 重置表单
+
+
+
+
+
+
+
+
+
+```
+
+
+# 组件参数
+
+
+### 1.组件props
+
+| 参数名 | 类型 | 是否必填 | 介绍 |
+| ------------- | ------------- | ---- | -----------------------------------------------------------------------------|
+| form | Object | 是 | v-model双向绑定(若要回显在此处定义,表单值) |
+| formData | Array | 是 | 表单配置项option
+| num | Boolean 默认false | 是 | 每个表单项前面是否带有序号
+
+### 2.formData 项参数说明 (type=datetime、calendar ,部分参数参考uview2.0官方文档)
+
+| 参数名 | 类型 | 是否必填 | 介绍 |
+| ------------- | ------------- | ---- | ----------------------------------------------------------------------------- |
+| id | String number | 是 | 必填索引 不唯一 |
+| placeholder | String | 是 | 提示
+| label | String | 是 | 开头标题 |
+| type | String | 是 | 该表单项类型 当前支持 text(文本)、 number、 mobile、code(验证码)、 radio、 checkbox、 file(照片,文件)、 select(上拉选择)、calendar(日期选择) 、 datetime(时间选择)|
+| list | Array | 是 | type为 radio、 checkbox、select时有效
+| list[index].disabled | Boolean | 否 | type为 radio、 checkbox、select时有效
+| disabled | Boolean | 否 | type为 radio、 checkbox、select时有效
+| rules.errMess | String | 是 | 校验不通过时的错误提示 |
+| rules.name | String | 是 | 接收字段名 后端接收的字段 |
+| rules.value | String Array | 否 | 默认值(一开始显示),回显使用form对象 |
+| rules.verify | Boolean | 否 | 是否校验该字段
+| rules.regexp | String | 否 | 正侧校验字段
+
+### 3.校验方法
+
+| 事件名 | 返回参数 | 简介 |
+| --------------------------- | ------ | ---------------------- |
+| vervify() | null | *表单校验 成功会继续往下走 失败抛出异常* |
+| resetForm(); | null | *重置表单* |
+
+```javascript
+##记得组件绑定ref
+methods: {
+ // 提交表单
+ submit() {
+ this.$refs.activeForm.vervify()
+ .then(async (form) => {
+ console.log("表单对象:", form);
+ })
+ .catch((err) => {
+ console.log("err", err);
+ }); //表单校验
+ },
+ //重置表单
+ reset() {
+ this.$refs.activeForm.resetForm()
+ }
+},
+```
+```
+
+
+### 4.由于小程序props传递函数会丢失(此处无效) 选项回调方法在目录active-form/mixins.js中自定义书写
+```javascript
+export default {
+ data() {
+ return {}
+ },
+ methods: {
+ // 微信小程序获取手机号
+ async getphonenumber({detail}) {
+
+ },
+ // 获取验证码回调 此处调用api接口 并赋值
+ async sendCodeCallback(item) {
+ // item.rules.value =
+ }
+ }
+}
+
+```
diff --git a/src/components/active-form/mixins.js b/src/components/active-form/mixins.js
new file mode 100644
index 0000000..87f303f
--- /dev/null
+++ b/src/components/active-form/mixins.js
@@ -0,0 +1,15 @@
+export default {
+ data() {
+ return {}
+ },
+ methods: {
+ // 微信小程序获取手机号
+ async getphonenumber({detail}) {
+
+ },
+ // 获取验证码回调 此处调用api接口 并赋值
+ async sendCodeCallback(item) {
+ // item.rules.value =
+ }
+ }
+}
diff --git a/src/components/active-formv1/detail.md b/src/components/active-formv1/detail.md
new file mode 100644
index 0000000..3a76980
--- /dev/null
+++ b/src/components/active-formv1/detail.md
@@ -0,0 +1,387 @@
+#### 注意!!!
+
+```
+本插件基于 uview1.0进行重构 使用需要引入uview1.0支持
+[ 点击uview1.0官网地址 ](https://www.uviewui.com/)
+```
+
+### 有问题 可评论 看到及时回复
+
+## 2.页面使用
+
+```javascript
+
+
+
+
+ 提交表单
+
+
+
+
+
+
+
+
+```
+
+# 组件参数
+
+### 1.组件props
+
+参数名 | 类型 | 介绍 |
+| -------- | --------------- | ------------------------ |
+| formDate | Array | v-model双向绑定 |
+| num | Boolean 默认false | 每个表单项前面是否带有序号
+
+### 2.form 项参数说明
+
+| 参数名 | 类型 | 是否必填 | 介绍 |
+| ------------- | ------------- | ---- | ----------------------------------------------------------------------------- |
+| id | String number | 是 | 必填索引 不唯一 |
+| placeholder | String | 是 | 提示
+| label | String | 是 | 开头标题 |
+| type | String | 是 | 该表单项类型 当前支持 text(文本)、textarea、 number、 mobile、code(验证码)、 radio、 checkbox、 file(照片,文件)、 select(上拉选择) |
+| list | Array | 是 | type为 radio、 checkbox、select时有效
+| list[index].disabled | Boolean | 否 | type为 radio、 checkbox、select时有效
+| disabled | Boolean | 否 | 是否禁用输入 type为 text、 number、mobile 、code 、file、textarea时有效
+| rules.errMess | String | 是 | 校验不通过时的错误提示 |
+| rules.name | String | 是 | 接收字段名 后端接收的字段 |
+| rules.value | String Array | 否 | 字段值 |
+| rules.label | String Array | 是 | 是否校验该字段
+| rules.verify | Boolean | 否 | 是否校验该字段
+| rules.regexp | String | 否 | 正侧校验字段
+| rules.fileList | Array | 是 |type为file时的 文件类型参数
+
+### 3.校验方法
+
+| 事件名 | 返回参数 | 简介 |
+| --------------------------- | ------ | ---------------------- |
+| $vervify(this.formData) | null | *表单校验 成功会继续往下走 失败抛出异常* |
+| $submitForm(this.formData); | 表单字段对象 | *校验成功 获取表单值* |
+
+```javascript
+
+
+
\ No newline at end of file
diff --git a/src/components/active-formv1/index1.vue b/src/components/active-formv1/index1.vue
new file mode 100644
index 0000000..92a33c2
--- /dev/null
+++ b/src/components/active-formv1/index1.vue
@@ -0,0 +1,704 @@
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+
+
+
+
+
+
+ {{ codeFont }}
+
+
+
+
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+ (单选)
+
+
+
+
+ {{ radioItem.label }}
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+ (多选)
+
+
+
+
+ {{ checkboxItem.name }}
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+ {{ item.label }}
+
+
+
+
+ 一键获取
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/active-formv1/mixins.js b/src/components/active-formv1/mixins.js
new file mode 100644
index 0000000..87f303f
--- /dev/null
+++ b/src/components/active-formv1/mixins.js
@@ -0,0 +1,15 @@
+export default {
+ data() {
+ return {}
+ },
+ methods: {
+ // 微信小程序获取手机号
+ async getphonenumber({detail}) {
+
+ },
+ // 获取验证码回调 此处调用api接口 并赋值
+ async sendCodeCallback(item) {
+ // item.rules.value =
+ }
+ }
+}
diff --git a/src/components/amap-wx/js/util.js b/src/components/amap-wx/js/util.js
new file mode 100644
index 0000000..65779df
--- /dev/null
+++ b/src/components/amap-wx/js/util.js
@@ -0,0 +1,181 @@
+import amap from '@/components/amap-wx/lib/amap-wx.js';
+// 地铁颜色图
+const line = {
+ '1号线': '#C43B33',
+ '2号线': '#016299',
+ '4号线/大兴线': '#008E9C',
+ '5号线': '#A42380',
+ '6号线': '#D09900',
+ '7号线': '#F2C172',
+ '8号线': '#009D6A',
+ '9号线': '#8FC41E',
+ '10号线': '#009DBE',
+ '13号线': '#F9E701',
+ '14号线东段': '#D4A7A2',
+ '14号线西段': '#D4A7A2',
+ '15号线': '#5D2D69',
+ '八通线': '#C33A32',
+ '昌平线': '#DE82B1',
+ '亦庄线': '#E40177',
+ '房山线': '#E66021',
+ '机场线': '#A29BBC',
+}
+
+// 150500:地铁站 ,150700:公交站 , 190700:地名地址
+const typecode = [{
+ id: '150500',
+ icon: 'icon-ditie'
+}, {
+ id: '150700',
+ icon: 'icon-gongjiao'
+}, {
+ id: '190700',
+ icon: 'icon-gonglu'
+}];
+
+const util = {
+ key:'b526b09b86cd2996e7732be8ab8c4430',
+ /**
+ * 初始化高德地图api
+ */
+ mapInit() {
+ return new amap.AMapWX({
+ key: this.key
+ });
+ },
+ // 服务状态吗
+ typecode,
+ /**
+ * 获取地图颜色
+ */
+ lineColor(name) {
+ if (line[name]) {
+ return line[name];
+ } else {
+ return '#ccc';
+ }
+ },
+ /**
+ * 关键字颜色变化
+ */
+ serachNmme(val, name) {
+ let namestr = new RegExp(val);
+ let nameresult =
+ `
+ ${name.replace(namestr, "" + val + '')}
+
`
+ .trim();
+
+ return nameresult;
+ },
+ /**
+ * 地址转地铁线路
+ */
+ addressToLine(address, type) {
+ let addr = address.split(';');
+ let dt = '';
+ addr.forEach(elm => {
+ let color = '#cccccc';
+ if (type === typecode[0].id) {
+ color = this.lineColor(elm)
+ } else if (type === typecode[1].id) {
+ color = '#4075cb'
+ }
+ let style = 'margin:5px 0;margin-right:5px;padding:0 5px;background:' + color +
+ ';font-size:12px;color:#fff;border-radius:3px;';
+ dt += `${elm}
`;
+
+ });
+ return `${dt}
`;
+ },
+ /**
+ * 数据处理
+ */
+ dataHandle(item, val) {
+ // 改变字体颜色
+ if (val) {
+ item.nameNodes = util.serachNmme(val, item.name);
+ } else {
+ item.nameNodes = `${item.name}
`;
+
+ }
+ // 地址解析 地铁
+ if (
+ item.typecode === util.typecode[0].id ||
+ item.typecode === util.typecode[1].id
+ ) {
+ item.addressNodes = util.addressToLine(item.address, item.typecode);
+ if (item.typecode === util.typecode[0].id) {
+ item.icon = util.typecode[0].icon;
+ } else if (item.typecode === util.typecode[1].id) {
+ item.icon = util.typecode[1].icon;
+ }
+ } else {
+ item.addressNodes = `${item.district}${
+ item.address.length > 0 ? '·' + item.address : ''
+ }`.trim();
+ item.icon = 'icon-weizhi';
+ }
+
+ if (item.location && item.location.length === 0) {
+ item.icon = 'icon-sousuo';
+ }
+
+ return item;
+ },
+ /**
+ * 存储历史数据
+ * val [string | object]需要存储的内容
+ */
+ setHistory(val) {
+ let searchHistory = uni.getStorageSync('search:history');
+ if (!searchHistory) searchHistory = [];
+ let serachData = {};
+ if (typeof(val) === 'string') {
+ serachData = {
+ adcode: [],
+ address: [],
+ city: [],
+ district: [],
+ id: [],
+ location: [],
+ name: val,
+ typecode: []
+ };
+ } else {
+ serachData = val
+ }
+
+ // 判断数组是否存在,如果存在,那么将放到最前面
+ for (var i = 0; i < searchHistory.length; i++) {
+ if (searchHistory[i].name === serachData.name) {
+ searchHistory.splice(i, 1);
+ break;
+ }
+ }
+
+ searchHistory.unshift(util.dataHandle(serachData));
+ uni.setStorage({
+ key: 'search:history',
+ data: searchHistory,
+ success: function() {
+ // console.log('success');
+ }
+ });
+ },
+ getHistory() {
+
+ },
+ removeHistory() {
+ uni.removeStorage({
+ key: 'search:history',
+ success: function(res) {
+ console.log('success');
+ }
+ });
+ return []
+ }
+
+}
+
+export default util;
diff --git a/src/components/amap-wx/lib/amap-wx.js b/src/components/amap-wx/lib/amap-wx.js
new file mode 100644
index 0000000..e1ef2b2
--- /dev/null
+++ b/src/components/amap-wx/lib/amap-wx.js
@@ -0,0 +1 @@
+function AMapWX(a){this.key=a.key,this.requestConfig={key:a.key,s:"rsx",platform:"WXJS",appname:a.key,sdkversion:"1.2.0",logversion:"2.0"}}AMapWX.prototype.getWxLocation=function(a,b){wx.getLocation({type:"gcj02",success:function(a){var c=a.longitude+","+a.latitude;wx.setStorage({key:"userLocation",data:c}),b(c)},fail:function(c){wx.getStorage({key:"userLocation",success:function(a){a.data&&b(a.data)}}),a.fail({errCode:"0",errMsg:c.errMsg||""})}})},AMapWX.prototype.getRegeo=function(a){function c(c){var d=b.requestConfig;wx.request({url:"https://restapi.amap.com/v3/geocode/regeo",data:{key:b.key,location:c,extensions:"all",s:d.s,platform:d.platform,appname:b.key,sdkversion:d.sdkversion,logversion:d.logversion},method:"GET",header:{"content-type":"application/json"},success:function(b){var d,e,f,g,h,i,j,k,l;b.data.status&&"1"==b.data.status?(d=b.data.regeocode,e=d.addressComponent,f=[],g="",d&&d.roads[0]&&d.roads[0].name&&(g=d.roads[0].name+"附近"),h=c.split(",")[0],i=c.split(",")[1],d.pois&&d.pois[0]&&(g=d.pois[0].name+"附近",j=d.pois[0].location,j&&(h=parseFloat(j.split(",")[0]),i=parseFloat(j.split(",")[1]))),e.provice&&f.push(e.provice),e.city&&f.push(e.city),e.district&&f.push(e.district),e.streetNumber&&e.streetNumber.street&&e.streetNumber.number?(f.push(e.streetNumber.street),f.push(e.streetNumber.number)):(k="",d&&d.roads[0]&&d.roads[0].name&&(k=d.roads[0].name),f.push(k)),f=f.join(""),l=[{iconPath:a.iconPath,width:a.iconWidth,height:a.iconHeight,name:f,desc:g,longitude:h,latitude:i,id:0,regeocodeData:d}],a.success(l)):a.fail({errCode:b.data.infocode,errMsg:b.data.info})},fail:function(b){a.fail({errCode:"0",errMsg:b.errMsg||""})}})}var b=this;a.location?c(a.location):b.getWxLocation(a,function(a){c(a)})},AMapWX.prototype.getWeather=function(a){function d(d){var e="base";a.type&&"forecast"==a.type&&(e="all"),wx.request({url:"https://restapi.amap.com/v3/weather/weatherInfo",data:{key:b.key,city:d,extensions:e,s:c.s,platform:c.platform,appname:b.key,sdkversion:c.sdkversion,logversion:c.logversion},method:"GET",header:{"content-type":"application/json"},success:function(b){function c(a){var b={city:{text:"城市",data:a.city},weather:{text:"天气",data:a.weather},temperature:{text:"温度",data:a.temperature},winddirection:{text:"风向",data:a.winddirection+"风"},windpower:{text:"风力",data:a.windpower+"级"},humidity:{text:"湿度",data:a.humidity+"%"}};return b}var d,e;b.data.status&&"1"==b.data.status?b.data.lives?(d=b.data.lives,d&&d.length>0&&(d=d[0],e=c(d),e["liveData"]=d,a.success(e))):b.data.forecasts&&b.data.forecasts[0]&&a.success({forecast:b.data.forecasts[0]}):a.fail({errCode:b.data.infocode,errMsg:b.data.info})},fail:function(b){a.fail({errCode:"0",errMsg:b.errMsg||""})}})}function e(e){wx.request({url:"https://restapi.amap.com/v3/geocode/regeo",data:{key:b.key,location:e,extensions:"all",s:c.s,platform:c.platform,appname:b.key,sdkversion:c.sdkversion,logversion:c.logversion},method:"GET",header:{"content-type":"application/json"},success:function(b){var c,e;b.data.status&&"1"==b.data.status?(e=b.data.regeocode,e.addressComponent?c=e.addressComponent.adcode:e.aois&&e.aois.length>0&&(c=e.aois[0].adcode),d(c)):a.fail({errCode:b.data.infocode,errMsg:b.data.info})},fail:function(b){a.fail({errCode:"0",errMsg:b.errMsg||""})}})}var b=this,c=b.requestConfig;a.city?d(a.city):b.getWxLocation(a,function(a){e(a)})},AMapWX.prototype.getPoiAround=function(a){function d(d){var e={key:b.key,location:d,s:c.s,platform:c.platform,appname:b.key,sdkversion:c.sdkversion,logversion:c.logversion};a.querytypes&&(e["types"]=a.querytypes),a.querykeywords&&(e["keywords"]=a.querykeywords),wx.request({url:"https://restapi.amap.com/v3/place/around",data:e,method:"GET",header:{"content-type":"application/json"},success:function(b){var c,d,e,f;if(b.data.status&&"1"==b.data.status){if(b=b.data,b&&b.pois){for(c=[],d=0;d
+
+
+
+
+ 已经到达宇宙尽头啦~
+
+
+
+
+
+
diff --git a/src/components/custom-refresher/custom-refresher.vue b/src/components/custom-refresher/custom-refresher.vue
new file mode 100644
index 0000000..1a7f6f1
--- /dev/null
+++ b/src/components/custom-refresher/custom-refresher.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+ {{statusText}}
+
+
+
+
+
+
diff --git a/src/components/marked/index.js b/src/components/marked/index.js
new file mode 100644
index 0000000..33e56c3
--- /dev/null
+++ b/src/components/marked/index.js
@@ -0,0 +1 @@
+export default './lib/marked'
diff --git a/src/components/marked/lib/marked.js b/src/components/marked/lib/marked.js
new file mode 100644
index 0000000..6a71e92
--- /dev/null
+++ b/src/components/marked/lib/marked.js
@@ -0,0 +1,1573 @@
+/**
+ * marked - a markdown parser
+ * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)
+ * https://github.com/markedjs/marked
+ */
+
+;(function(root) {
+'use strict';
+
+/**
+ * Block-Level Grammar
+ */
+
+var block = {
+ newline: /^\n+/,
+ code: /^( {4}[^\n]+\n*)+/,
+ fences: noop,
+ hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,
+ heading: /^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,
+ nptable: noop,
+ blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,
+ list: /^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,
+ html: '^ {0,3}(?:' // optional indentation
+ + '<(script|pre|style)[\\s>][\\s\\S]*?(?:\\1>[^\\n]*\\n+|$)' // (1)
+ + '|comment[^\\n]*(\\n+|$)' // (2)
+ + '|<\\?[\\s\\S]*?\\?>\\n*' // (3)
+ + '|\\n*' // (4)
+ + '|\\n*' // (5)
+ + '|?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:\\n{2,}|$)' // (6)
+ + '|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$)' // (7) open tag
+ + '|(?!script|pre|style)[a-z][\\w-]*\\s*>(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$)' // (7) closing tag
+ + ')',
+ def: /^ {0,3}\[(label)\]: *\n? *([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,
+ table: noop,
+ lheading: /^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,
+ paragraph: /^([^\n]+(?:\n(?!hr|heading|lheading| {0,3}>|<\/?(?:tag)(?: +|\n|\/?>)|<(?:script|pre|style|!--))[^\n]+)*)/,
+ text: /^[^\n]+/
+};
+
+block._label = /(?!\s*\])(?:\\[\[\]]|[^\[\]])+/;
+block._title = /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/;
+block.def = edit(block.def)
+ .replace('label', block._label)
+ .replace('title', block._title)
+ .getRegex();
+
+block.bullet = /(?:[*+-]|\d+\.)/;
+block.item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;
+block.item = edit(block.item, 'gm')
+ .replace(/bull/g, block.bullet)
+ .getRegex();
+
+block.list = edit(block.list)
+ .replace(/bull/g, block.bullet)
+ .replace('hr', '\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))')
+ .replace('def', '\\n+(?=' + block.def.source + ')')
+ .getRegex();
+
+block._tag = 'address|article|aside|base|basefont|blockquote|body|caption'
+ + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'
+ + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'
+ + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'
+ + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'
+ + '|track|ul';
+block._comment = //;
+block.html = edit(block.html, 'i')
+ .replace('comment', block._comment)
+ .replace('tag', block._tag)
+ .replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/)
+ .getRegex();
+
+block.paragraph = edit(block.paragraph)
+ .replace('hr', block.hr)
+ .replace('heading', block.heading)
+ .replace('lheading', block.lheading)
+ .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks
+ .getRegex();
+
+block.blockquote = edit(block.blockquote)
+ .replace('paragraph', block.paragraph)
+ .getRegex();
+
+/**
+ * Normal Block Grammar
+ */
+
+block.normal = merge({}, block);
+
+/**
+ * GFM Block Grammar
+ */
+
+block.gfm = merge({}, block.normal, {
+ fences: /^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\n? *\1 *(?:\n+|$)/,
+ paragraph: /^/,
+ heading: /^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/
+});
+
+block.gfm.paragraph = edit(block.paragraph)
+ .replace('(?!', '(?!'
+ + block.gfm.fences.source.replace('\\1', '\\2') + '|'
+ + block.list.source.replace('\\1', '\\3') + '|')
+ .getRegex();
+
+/**
+ * GFM + Tables Block Grammar
+ */
+
+block.tables = merge({}, block.gfm, {
+ nptable: /^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,
+ table: /^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/
+});
+
+/**
+ * Pedantic grammar
+ */
+
+block.pedantic = merge({}, block.normal, {
+ html: edit(
+ '^ *(?:comment *(?:\\n|\\s*$)'
+ + '|<(tag)[\\s\\S]+?\\1> *(?:\\n{2,}|\\s*$)' // closed tag
+ + '|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))')
+ .replace('comment', block._comment)
+ .replace(/tag/g, '(?!(?:'
+ + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'
+ + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'
+ + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b')
+ .getRegex(),
+ def: /^ *\[([^\]]+)\]: *([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/
+});
+
+/**
+ * Block Lexer
+ */
+
+function Lexer(options) {
+ this.tokens = [];
+ this.tokens.links = Object.create(null);
+ this.options = options || marked.defaults;
+ this.rules = block.normal;
+
+ if (this.options.pedantic) {
+ this.rules = block.pedantic;
+ } else if (this.options.gfm) {
+ if (this.options.tables) {
+ this.rules = block.tables;
+ } else {
+ this.rules = block.gfm;
+ }
+ }
+}
+
+/**
+ * Expose Block Rules
+ */
+
+Lexer.rules = block;
+
+/**
+ * Static Lex Method
+ */
+
+Lexer.lex = function(src, options) {
+ var lexer = new Lexer(options);
+ return lexer.lex(src);
+};
+
+/**
+ * Preprocessing
+ */
+
+Lexer.prototype.lex = function(src) {
+ src = src
+ .replace(/\r\n|\r/g, '\n')
+ .replace(/\t/g, ' ')
+ .replace(/\u00a0/g, ' ')
+ .replace(/\u2424/g, '\n');
+
+ return this.token(src, true);
+};
+
+/**
+ * Lexing
+ */
+
+Lexer.prototype.token = function(src, top) {
+ src = src.replace(/^ +$/gm, '');
+ var next,
+ loose,
+ cap,
+ bull,
+ b,
+ item,
+ listStart,
+ listItems,
+ t,
+ space,
+ i,
+ tag,
+ l,
+ isordered,
+ istask,
+ ischecked;
+
+ while (src) {
+ // newline
+ if (cap = this.rules.newline.exec(src)) {
+ src = src.substring(cap[0].length);
+ if (cap[0].length > 1) {
+ this.tokens.push({
+ type: 'space'
+ });
+ }
+ }
+
+ // code
+ if (cap = this.rules.code.exec(src)) {
+ src = src.substring(cap[0].length);
+ cap = cap[0].replace(/^ {4}/gm, '');
+ this.tokens.push({
+ type: 'code',
+ text: !this.options.pedantic
+ ? rtrim(cap, '\n')
+ : cap
+ });
+ continue;
+ }
+
+ // fences (gfm)
+ if (cap = this.rules.fences.exec(src)) {
+ src = src.substring(cap[0].length);
+ this.tokens.push({
+ type: 'code',
+ lang: cap[2],
+ text: cap[3] || ''
+ });
+ continue;
+ }
+
+ // heading
+ if (cap = this.rules.heading.exec(src)) {
+ src = src.substring(cap[0].length);
+ this.tokens.push({
+ type: 'heading',
+ depth: cap[1].length,
+ text: cap[2]
+ });
+ continue;
+ }
+
+ // table no leading pipe (gfm)
+ if (top && (cap = this.rules.nptable.exec(src))) {
+ item = {
+ type: 'table',
+ header: splitCells(cap[1].replace(/^ *| *\| *$/g, '')),
+ align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
+ cells: cap[3] ? cap[3].replace(/\n$/, '').split('\n') : []
+ };
+
+ if (item.header.length === item.align.length) {
+ src = src.substring(cap[0].length);
+
+ for (i = 0; i < item.align.length; i++) {
+ if (/^ *-+: *$/.test(item.align[i])) {
+ item.align[i] = 'right';
+ } else if (/^ *:-+: *$/.test(item.align[i])) {
+ item.align[i] = 'center';
+ } else if (/^ *:-+ *$/.test(item.align[i])) {
+ item.align[i] = 'left';
+ } else {
+ item.align[i] = null;
+ }
+ }
+
+ for (i = 0; i < item.cells.length; i++) {
+ item.cells[i] = splitCells(item.cells[i], item.header.length);
+ }
+
+ this.tokens.push(item);
+
+ continue;
+ }
+ }
+
+ // hr
+ if (cap = this.rules.hr.exec(src)) {
+ src = src.substring(cap[0].length);
+ this.tokens.push({
+ type: 'hr'
+ });
+ continue;
+ }
+
+ // blockquote
+ if (cap = this.rules.blockquote.exec(src)) {
+ src = src.substring(cap[0].length);
+
+ this.tokens.push({
+ type: 'blockquote_start'
+ });
+
+ cap = cap[0].replace(/^ *> ?/gm, '');
+
+ // Pass `top` to keep the current
+ // "toplevel" state. This is exactly
+ // how markdown.pl works.
+ this.token(cap, top);
+
+ this.tokens.push({
+ type: 'blockquote_end'
+ });
+
+ continue;
+ }
+
+ // list
+ if (cap = this.rules.list.exec(src)) {
+ src = src.substring(cap[0].length);
+ bull = cap[2];
+ isordered = bull.length > 1;
+
+ listStart = {
+ type: 'list_start',
+ ordered: isordered,
+ start: isordered ? +bull : '',
+ loose: false
+ };
+
+ this.tokens.push(listStart);
+
+ // Get each top-level item.
+ cap = cap[0].match(this.rules.item);
+
+ listItems = [];
+ next = false;
+ l = cap.length;
+ i = 0;
+
+ for (; i < l; i++) {
+ item = cap[i];
+
+ // Remove the list item's bullet
+ // so it is seen as the next token.
+ space = item.length;
+ item = item.replace(/^ *([*+-]|\d+\.) +/, '');
+
+ // Outdent whatever the
+ // list item contains. Hacky.
+ if (~item.indexOf('\n ')) {
+ space -= item.length;
+ item = !this.options.pedantic
+ ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')
+ : item.replace(/^ {1,4}/gm, '');
+ }
+
+ // Determine whether the next list item belongs here.
+ // Backpedal if it does not belong in this list.
+ if (this.options.smartLists && i !== l - 1) {
+ b = block.bullet.exec(cap[i + 1])[0];
+ if (bull !== b && !(bull.length > 1 && b.length > 1)) {
+ src = cap.slice(i + 1).join('\n') + src;
+ i = l - 1;
+ }
+ }
+
+ // Determine whether item is loose or not.
+ // Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/
+ // for discount behavior.
+ loose = next || /\n\n(?!\s*$)/.test(item);
+ if (i !== l - 1) {
+ next = item.charAt(item.length - 1) === '\n';
+ if (!loose) loose = next;
+ }
+
+ if (loose) {
+ listStart.loose = true;
+ }
+
+ // Check for task list items
+ istask = /^\[[ xX]\] /.test(item);
+ ischecked = undefined;
+ if (istask) {
+ ischecked = item[1] !== ' ';
+ item = item.replace(/^\[[ xX]\] +/, '');
+ }
+
+ t = {
+ type: 'list_item_start',
+ task: istask,
+ checked: ischecked,
+ loose: loose
+ };
+
+ listItems.push(t);
+ this.tokens.push(t);
+
+ // Recurse.
+ this.token(item, false);
+
+ this.tokens.push({
+ type: 'list_item_end'
+ });
+ }
+
+ if (listStart.loose) {
+ l = listItems.length;
+ i = 0;
+ for (; i < l; i++) {
+ listItems[i].loose = true;
+ }
+ }
+
+ this.tokens.push({
+ type: 'list_end'
+ });
+
+ continue;
+ }
+
+ // html
+ if (cap = this.rules.html.exec(src)) {
+ src = src.substring(cap[0].length);
+ this.tokens.push({
+ type: this.options.sanitize
+ ? 'paragraph'
+ : 'html',
+ pre: !this.options.sanitizer
+ && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),
+ text: cap[0]
+ });
+ continue;
+ }
+
+ // def
+ if (top && (cap = this.rules.def.exec(src))) {
+ src = src.substring(cap[0].length);
+ if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);
+ tag = cap[1].toLowerCase().replace(/\s+/g, ' ');
+ if (!this.tokens.links[tag]) {
+ this.tokens.links[tag] = {
+ href: cap[2],
+ title: cap[3]
+ };
+ }
+ continue;
+ }
+
+ // table (gfm)
+ if (top && (cap = this.rules.table.exec(src))) {
+ item = {
+ type: 'table',
+ header: splitCells(cap[1].replace(/^ *| *\| *$/g, '')),
+ align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
+ cells: cap[3] ? cap[3].replace(/(?: *\| *)?\n$/, '').split('\n') : []
+ };
+
+ if (item.header.length === item.align.length) {
+ src = src.substring(cap[0].length);
+
+ for (i = 0; i < item.align.length; i++) {
+ if (/^ *-+: *$/.test(item.align[i])) {
+ item.align[i] = 'right';
+ } else if (/^ *:-+: *$/.test(item.align[i])) {
+ item.align[i] = 'center';
+ } else if (/^ *:-+ *$/.test(item.align[i])) {
+ item.align[i] = 'left';
+ } else {
+ item.align[i] = null;
+ }
+ }
+
+ for (i = 0; i < item.cells.length; i++) {
+ item.cells[i] = splitCells(
+ item.cells[i].replace(/^ *\| *| *\| *$/g, ''),
+ item.header.length);
+ }
+
+ this.tokens.push(item);
+
+ continue;
+ }
+ }
+
+ // lheading
+ if (cap = this.rules.lheading.exec(src)) {
+ src = src.substring(cap[0].length);
+ this.tokens.push({
+ type: 'heading',
+ depth: cap[2] === '=' ? 1 : 2,
+ text: cap[1]
+ });
+ continue;
+ }
+
+ // top-level paragraph
+ if (top && (cap = this.rules.paragraph.exec(src))) {
+ src = src.substring(cap[0].length);
+ this.tokens.push({
+ type: 'paragraph',
+ text: cap[1].charAt(cap[1].length - 1) === '\n'
+ ? cap[1].slice(0, -1)
+ : cap[1]
+ });
+ continue;
+ }
+
+ // text
+ if (cap = this.rules.text.exec(src)) {
+ // Top-level should never reach here.
+ src = src.substring(cap[0].length);
+ this.tokens.push({
+ type: 'text',
+ text: cap[0]
+ });
+ continue;
+ }
+
+ if (src) {
+ throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));
+ }
+ }
+
+ return this.tokens;
+};
+
+/**
+ * Inline-Level Grammar
+ */
+
+var inline = {
+ escape: /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,
+ autolink: /^<(scheme:[^\s\x00-\x1f<>]*|email)>/,
+ url: noop,
+ tag: '^comment'
+ + '|^[a-zA-Z][\\w:-]*\\s*>' // self-closing tag
+ + '|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>' // open tag
+ + '|^<\\?[\\s\\S]*?\\?>' // processing instruction, e.g.
+ + '|^' // declaration, e.g.
+ + '|^', // CDATA section
+ link: /^!?\[(label)\]\(href(?:\s+(title))?\s*\)/,
+ reflink: /^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,
+ nolink: /^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,
+ strong: /^__([^\s])__(?!_)|^\*\*([^\s])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/,
+ em: /^_([^\s_])_(?!_)|^\*([^\s*"<\[])\*(?!\*)|^_([^\s][\s\S]*?[^\s_])_(?!_)|^_([^\s_][\s\S]*?[^\s])_(?!_)|^\*([^\s"<\[][\s\S]*?[^\s*])\*(?!\*)|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,
+ code: /^(`+)\s*([\s\S]*?[^`]?)\s*\1(?!`)/,
+ br: /^( {2,}|\\)\n(?!\s*$)/,
+ del: noop,
+ text: /^[\s\S]+?(?=[\\?@\[\]\\^_`{|}~])/g;
+
+inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;
+inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;
+inline.autolink = edit(inline.autolink)
+ .replace('scheme', inline._scheme)
+ .replace('email', inline._email)
+ .getRegex();
+
+inline._attribute = /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/;
+
+inline.tag = edit(inline.tag)
+ .replace('comment', block._comment)
+ .replace('attribute', inline._attribute)
+ .getRegex();
+
+inline._label = /(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|[^\[\]\\])*?/;
+inline._href = /\s*(<(?:\\[<>]?|[^\s<>\\])*>|(?:\\[()]?|\([^\s\x00-\x1f\\]*\)|[^\s\x00-\x1f()\\])*?)/;
+inline._title = /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/;
+
+inline.link = edit(inline.link)
+ .replace('label', inline._label)
+ .replace('href', inline._href)
+ .replace('title', inline._title)
+ .getRegex();
+
+inline.reflink = edit(inline.reflink)
+ .replace('label', inline._label)
+ .getRegex();
+
+/**
+ * Normal Inline Grammar
+ */
+
+inline.normal = merge({}, inline);
+
+/**
+ * Pedantic Inline Grammar
+ */
+
+inline.pedantic = merge({}, inline.normal, {
+ strong: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
+ em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,
+ link: edit(/^!?\[(label)\]\((.*?)\)/)
+ .replace('label', inline._label)
+ .getRegex(),
+ reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/)
+ .replace('label', inline._label)
+ .getRegex()
+});
+
+/**
+ * GFM Inline Grammar
+ */
+
+inline.gfm = merge({}, inline.normal, {
+ escape: edit(inline.escape).replace('])', '~|])').getRegex(),
+ url: edit(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/)
+ .replace('email', inline._email)
+ .getRegex(),
+ _backpedal: /(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,
+ del: /^~+(?=\S)([\s\S]*?\S)~+/,
+ text: edit(inline.text)
+ .replace(']|', '~]|')
+ .replace('|', '|https?://|ftp://|www\\.|[a-zA-Z0-9.!#$%&\'*+/=?^_`{\\|}~-]+@|')
+ .getRegex()
+});
+
+/**
+ * GFM + Line Breaks Inline Grammar
+ */
+
+inline.breaks = merge({}, inline.gfm, {
+ br: edit(inline.br).replace('{2,}', '*').getRegex(),
+ text: edit(inline.gfm.text).replace('{2,}', '*').getRegex()
+});
+
+/**
+ * Inline Lexer & Compiler
+ */
+
+function InlineLexer(links, options) {
+ this.options = options || marked.defaults;
+ this.links = links;
+ this.rules = inline.normal;
+ this.renderer = this.options.renderer || new Renderer();
+ this.renderer.options = this.options;
+
+ if (!this.links) {
+ throw new Error('Tokens array requires a `links` property.');
+ }
+
+ if (this.options.pedantic) {
+ this.rules = inline.pedantic;
+ } else if (this.options.gfm) {
+ if (this.options.breaks) {
+ this.rules = inline.breaks;
+ } else {
+ this.rules = inline.gfm;
+ }
+ }
+}
+
+/**
+ * Expose Inline Rules
+ */
+
+InlineLexer.rules = inline;
+
+/**
+ * Static Lexing/Compiling Method
+ */
+
+InlineLexer.output = function(src, links, options) {
+ var inline = new InlineLexer(links, options);
+ return inline.output(src);
+};
+
+/**
+ * Lexing/Compiling
+ */
+
+InlineLexer.prototype.output = function(src) {
+ var out = '',
+ link,
+ text,
+ href,
+ title,
+ cap,
+ prevCapZero;
+
+ while (src) {
+ // escape
+ if (cap = this.rules.escape.exec(src)) {
+ src = src.substring(cap[0].length);
+ out += cap[1];
+ continue;
+ }
+
+ // autolink
+ if (cap = this.rules.autolink.exec(src)) {
+ src = src.substring(cap[0].length);
+ if (cap[2] === '@') {
+ text = escape(this.mangle(cap[1]));
+ href = 'mailto:' + text;
+ } else {
+ text = escape(cap[1]);
+ href = text;
+ }
+ out += this.renderer.link(href, null, text);
+ continue;
+ }
+
+ // url (gfm)
+ if (!this.inLink && (cap = this.rules.url.exec(src))) {
+ do {
+ prevCapZero = cap[0];
+ cap[0] = this.rules._backpedal.exec(cap[0])[0];
+ } while (prevCapZero !== cap[0]);
+ src = src.substring(cap[0].length);
+ if (cap[2] === '@') {
+ text = escape(cap[0]);
+ href = 'mailto:' + text;
+ } else {
+ text = escape(cap[0]);
+ if (cap[1] === 'www.') {
+ href = 'http://' + text;
+ } else {
+ href = text;
+ }
+ }
+ out += this.renderer.link(href, null, text);
+ continue;
+ }
+
+ // tag
+ if (cap = this.rules.tag.exec(src)) {
+ if (!this.inLink && /^/i.test(cap[0])) {
+ this.inLink = false;
+ }
+ src = src.substring(cap[0].length);
+ out += this.options.sanitize
+ ? this.options.sanitizer
+ ? this.options.sanitizer(cap[0])
+ : escape(cap[0])
+ : cap[0]
+ continue;
+ }
+
+ // link
+ if (cap = this.rules.link.exec(src)) {
+ src = src.substring(cap[0].length);
+ this.inLink = true;
+ href = cap[2];
+ if (this.options.pedantic) {
+ link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href);
+
+ if (link) {
+ href = link[1];
+ title = link[3];
+ } else {
+ title = '';
+ }
+ } else {
+ title = cap[3] ? cap[3].slice(1, -1) : '';
+ }
+ href = href.trim().replace(/^<([\s\S]*)>$/, '$1');
+ out += this.outputLink(cap, {
+ href: InlineLexer.escapes(href),
+ title: InlineLexer.escapes(title)
+ });
+ this.inLink = false;
+ continue;
+ }
+
+ // reflink, nolink
+ if ((cap = this.rules.reflink.exec(src))
+ || (cap = this.rules.nolink.exec(src))) {
+ src = src.substring(cap[0].length);
+ link = (cap[2] || cap[1]).replace(/\s+/g, ' ');
+ link = this.links[link.toLowerCase()];
+ if (!link || !link.href) {
+ out += cap[0].charAt(0);
+ src = cap[0].substring(1) + src;
+ continue;
+ }
+ this.inLink = true;
+ out += this.outputLink(cap, link);
+ this.inLink = false;
+ continue;
+ }
+
+ // strong
+ if (cap = this.rules.strong.exec(src)) {
+ src = src.substring(cap[0].length);
+ out += this.renderer.strong(this.output(cap[4] || cap[3] || cap[2] || cap[1]));
+ continue;
+ }
+
+ // em
+ if (cap = this.rules.em.exec(src)) {
+ src = src.substring(cap[0].length);
+ out += this.renderer.em(this.output(cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1]));
+ continue;
+ }
+
+ // code
+ if (cap = this.rules.code.exec(src)) {
+ src = src.substring(cap[0].length);
+ out += this.renderer.codespan(escape(cap[2].trim(), true));
+ continue;
+ }
+
+ // br
+ if (cap = this.rules.br.exec(src)) {
+ src = src.substring(cap[0].length);
+ out += this.renderer.br();
+ continue;
+ }
+
+ // del (gfm)
+ if (cap = this.rules.del.exec(src)) {
+ src = src.substring(cap[0].length);
+ out += this.renderer.del(this.output(cap[1]));
+ continue;
+ }
+
+ // text
+ if (cap = this.rules.text.exec(src)) {
+ src = src.substring(cap[0].length);
+ out += this.renderer.text(escape(this.smartypants(cap[0])));
+ continue;
+ }
+
+ if (src) {
+ throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));
+ }
+ }
+
+ return out;
+};
+
+InlineLexer.escapes = function(text) {
+ return text ? text.replace(InlineLexer.rules._escapes, '$1') : text;
+}
+
+/**
+ * Compile Link
+ */
+
+InlineLexer.prototype.outputLink = function(cap, link) {
+ var href = link.href,
+ title = link.title ? escape(link.title) : null;
+
+ return cap[0].charAt(0) !== '!'
+ ? this.renderer.link(href, title, this.output(cap[1]))
+ : this.renderer.image(href, title, escape(cap[1]));
+};
+
+/**
+ * Smartypants Transformations
+ */
+
+InlineLexer.prototype.smartypants = function(text) {
+ if (!this.options.smartypants) return text;
+ return text
+ // em-dashes
+ .replace(/---/g, '\u2014')
+ // en-dashes
+ .replace(/--/g, '\u2013')
+ // opening singles
+ .replace(/(^|[-\u2014/(\[{"\s])'/g, '$1\u2018')
+ // closing singles & apostrophes
+ .replace(/'/g, '\u2019')
+ // opening doubles
+ .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, '$1\u201c')
+ // closing doubles
+ .replace(/"/g, '\u201d')
+ // ellipses
+ .replace(/\.{3}/g, '\u2026');
+};
+
+/**
+ * Mangle Links
+ */
+
+InlineLexer.prototype.mangle = function(text) {
+ if (!this.options.mangle) return text;
+ var out = '',
+ l = text.length,
+ i = 0,
+ ch;
+
+ for (; i < l; i++) {
+ ch = text.charCodeAt(i);
+ if (Math.random() > 0.5) {
+ ch = 'x' + ch.toString(16);
+ }
+ out += '' + ch + ';';
+ }
+
+ return out;
+};
+
+/**
+ * Renderer
+ */
+
+function Renderer(options) {
+ this.options = options || marked.defaults;
+}
+
+Renderer.prototype.code = function(code, lang, escaped) {
+ if (this.options.highlight) {
+ var out = this.options.highlight(code, lang);
+ if (out != null && out !== code) {
+ escaped = true;
+ code = out;
+ }
+ }
+
+ if (!lang) {
+ return ''
+ + (escaped ? code : escape(code, true))
+ + '
';
+ }
+
+ return ''
+ + (escaped ? code : escape(code, true))
+ + '
\n';
+};
+
+Renderer.prototype.blockquote = function(quote) {
+ return '\n' + quote + '
\n';
+};
+
+Renderer.prototype.html = function(html) {
+ return html;
+};
+
+Renderer.prototype.heading = function(text, level, raw) {
+ if (this.options.headerIds) {
+ return '\n';
+ }
+ // ignore IDs
+ return '' + text + '\n';
+};
+
+Renderer.prototype.hr = function() {
+ return this.options.xhtml ? '
\n' : '
\n';
+};
+
+Renderer.prototype.list = function(body, ordered, start) {
+ var type = ordered ? 'ol' : 'ul',
+ startatt = (ordered && start !== 1) ? (' start="' + start + '"') : '';
+ return '<' + type + startatt + '>\n' + body + '' + type + '>\n';
+};
+
+Renderer.prototype.listitem = function(text) {
+ return '' + text + '\n';
+};
+
+Renderer.prototype.checkbox = function(checked) {
+ return ' ';
+}
+
+Renderer.prototype.paragraph = function(text) {
+ return '' + text + '
\n';
+};
+
+Renderer.prototype.table = function(header, body) {
+ if (body) body = '' + body + '';
+
+ return '\n'
+ + '\n'
+ + header
+ + '\n'
+ + body
+ + '
\n';
+};
+
+Renderer.prototype.tablerow = function(content) {
+ return '\n' + content + '
\n';
+};
+
+Renderer.prototype.tablecell = function(content, flags) {
+ var type = flags.header ? 'th' : 'td';
+ var tag = flags.align
+ ? '<' + type + ' align="' + flags.align + '">'
+ : '<' + type + '>';
+ return tag + content + '' + type + '>\n';
+};
+
+// span level renderer
+Renderer.prototype.strong = function(text) {
+ return '' + text + '';
+};
+
+Renderer.prototype.em = function(text) {
+ return '' + text + '';
+};
+
+Renderer.prototype.codespan = function(text) {
+ return '' + text + '
';
+};
+
+Renderer.prototype.br = function() {
+ return this.options.xhtml ? '
' : '
';
+};
+
+Renderer.prototype.del = function(text) {
+ return '' + text + '';
+};
+
+Renderer.prototype.link = function(href, title, text) {
+ if (this.options.sanitize) {
+ try {
+ var prot = decodeURIComponent(unescape(href))
+ .replace(/[^\w:]/g, '')
+ .toLowerCase();
+ } catch (e) {
+ return text;
+ }
+ if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {
+ return text;
+ }
+ }
+ if (this.options.baseUrl && !originIndependentUrl.test(href)) {
+ href = resolveUrl(this.options.baseUrl, href);
+ }
+ try {
+ href = encodeURI(href).replace(/%25/g, '%');
+ } catch (e) {
+ return text;
+ }
+ var out = '' + text + '';
+ return out;
+};
+
+Renderer.prototype.image = function(href, title, text) {
+ if (this.options.baseUrl && !originIndependentUrl.test(href)) {
+ href = resolveUrl(this.options.baseUrl, href);
+ }
+ var out = '' : '>';
+ return out;
+};
+
+Renderer.prototype.text = function(text) {
+ return text;
+};
+
+/**
+ * TextRenderer
+ * returns only the textual part of the token
+ */
+
+function TextRenderer() {}
+
+// no need for block level renderers
+
+TextRenderer.prototype.strong =
+TextRenderer.prototype.em =
+TextRenderer.prototype.codespan =
+TextRenderer.prototype.del =
+TextRenderer.prototype.text = function (text) {
+ return text;
+}
+
+TextRenderer.prototype.link =
+TextRenderer.prototype.image = function(href, title, text) {
+ return '' + text;
+}
+
+TextRenderer.prototype.br = function() {
+ return '';
+}
+
+/**
+ * Parsing & Compiling
+ */
+
+function Parser(options) {
+ this.tokens = [];
+ this.token = null;
+ this.options = options || marked.defaults;
+ this.options.renderer = this.options.renderer || new Renderer();
+ this.renderer = this.options.renderer;
+ this.renderer.options = this.options;
+}
+
+/**
+ * Static Parse Method
+ */
+
+Parser.parse = function(src, options) {
+ var parser = new Parser(options);
+ return parser.parse(src);
+};
+
+/**
+ * Parse Loop
+ */
+
+Parser.prototype.parse = function(src) {
+ this.inline = new InlineLexer(src.links, this.options);
+ // use an InlineLexer with a TextRenderer to extract pure text
+ this.inlineText = new InlineLexer(
+ src.links,
+ merge({}, this.options, {renderer: new TextRenderer()})
+ );
+ this.tokens = src.reverse();
+
+ var out = '';
+ while (this.next()) {
+ out += this.tok();
+ }
+
+ return out;
+};
+
+/**
+ * Next Token
+ */
+
+Parser.prototype.next = function() {
+ return this.token = this.tokens.pop();
+};
+
+/**
+ * Preview Next Token
+ */
+
+Parser.prototype.peek = function() {
+ return this.tokens[this.tokens.length - 1] || 0;
+};
+
+/**
+ * Parse Text Tokens
+ */
+
+Parser.prototype.parseText = function() {
+ var body = this.token.text;
+
+ while (this.peek().type === 'text') {
+ body += '\n' + this.next().text;
+ }
+
+ return this.inline.output(body);
+};
+
+/**
+ * Parse Current Token
+ */
+
+Parser.prototype.tok = function() {
+ switch (this.token.type) {
+ case 'space': {
+ return '';
+ }
+ case 'hr': {
+ return this.renderer.hr();
+ }
+ case 'heading': {
+ return this.renderer.heading(
+ this.inline.output(this.token.text),
+ this.token.depth,
+ unescape(this.inlineText.output(this.token.text)));
+ }
+ case 'code': {
+ return this.renderer.code(this.token.text,
+ this.token.lang,
+ this.token.escaped);
+ }
+ case 'table': {
+ var header = '',
+ body = '',
+ i,
+ row,
+ cell,
+ j;
+
+ // header
+ cell = '';
+ for (i = 0; i < this.token.header.length; i++) {
+ cell += this.renderer.tablecell(
+ this.inline.output(this.token.header[i]),
+ { header: true, align: this.token.align[i] }
+ );
+ }
+ header += this.renderer.tablerow(cell);
+
+ for (i = 0; i < this.token.cells.length; i++) {
+ row = this.token.cells[i];
+
+ cell = '';
+ for (j = 0; j < row.length; j++) {
+ cell += this.renderer.tablecell(
+ this.inline.output(row[j]),
+ { header: false, align: this.token.align[j] }
+ );
+ }
+
+ body += this.renderer.tablerow(cell);
+ }
+ return this.renderer.table(header, body);
+ }
+ case 'blockquote_start': {
+ body = '';
+
+ while (this.next().type !== 'blockquote_end') {
+ body += this.tok();
+ }
+
+ return this.renderer.blockquote(body);
+ }
+ case 'list_start': {
+ body = '';
+ var ordered = this.token.ordered,
+ start = this.token.start;
+
+ while (this.next().type !== 'list_end') {
+ body += this.tok();
+ }
+
+ return this.renderer.list(body, ordered, start);
+ }
+ case 'list_item_start': {
+ body = '';
+ var loose = this.token.loose;
+
+ if (this.token.task) {
+ body += this.renderer.checkbox(this.token.checked);
+ }
+
+ while (this.next().type !== 'list_item_end') {
+ body += !loose && this.token.type === 'text'
+ ? this.parseText()
+ : this.tok();
+ }
+
+ return this.renderer.listitem(body);
+ }
+ case 'html': {
+ // TODO parse inline content if parameter markdown=1
+ return this.renderer.html(this.token.text);
+ }
+ case 'paragraph': {
+ return this.renderer.paragraph(this.inline.output(this.token.text));
+ }
+ case 'text': {
+ return this.renderer.paragraph(this.parseText());
+ }
+ }
+};
+
+/**
+ * Helpers
+ */
+
+function escape(html, encode) {
+ return html
+ .replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&')
+ .replace(//g, '>')
+ .replace(/"/g, '"')
+ .replace(/'/g, ''');
+}
+
+function unescape(html) {
+ // explicitly match decimal, hex, and named HTML entities
+ return html.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig, function(_, n) {
+ n = n.toLowerCase();
+ if (n === 'colon') return ':';
+ if (n.charAt(0) === '#') {
+ return n.charAt(1) === 'x'
+ ? String.fromCharCode(parseInt(n.substring(2), 16))
+ : String.fromCharCode(+n.substring(1));
+ }
+ return '';
+ });
+}
+
+function edit(regex, opt) {
+ regex = regex.source || regex;
+ opt = opt || '';
+ return {
+ replace: function(name, val) {
+ val = val.source || val;
+ val = val.replace(/(^|[^\[])\^/g, '$1');
+ regex = regex.replace(name, val);
+ return this;
+ },
+ getRegex: function() {
+ return new RegExp(regex, opt);
+ }
+ };
+}
+
+function resolveUrl(base, href) {
+ if (!baseUrls[' ' + base]) {
+ // we can ignore everything in base after the last slash of its path component,
+ // but we might need to add _that_
+ // https://tools.ietf.org/html/rfc3986#section-3
+ if (/^[^:]+:\/*[^/]*$/.test(base)) {
+ baseUrls[' ' + base] = base + '/';
+ } else {
+ baseUrls[' ' + base] = rtrim(base, '/', true);
+ }
+ }
+ base = baseUrls[' ' + base];
+
+ if (href.slice(0, 2) === '//') {
+ return base.replace(/:[\s\S]*/, ':') + href;
+ } else if (href.charAt(0) === '/') {
+ return base.replace(/(:\/*[^/]*)[\s\S]*/, '$1') + href;
+ } else {
+ return base + href;
+ }
+}
+var baseUrls = {};
+var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;
+
+function noop() {}
+noop.exec = noop;
+
+function merge(obj) {
+ var i = 1,
+ target,
+ key;
+
+ for (; i < arguments.length; i++) {
+ target = arguments[i];
+ for (key in target) {
+ if (Object.prototype.hasOwnProperty.call(target, key)) {
+ obj[key] = target[key];
+ }
+ }
+ }
+
+ return obj;
+}
+
+function splitCells(tableRow, count) {
+ // ensure that every cell-delimiting pipe has a space
+ // before it to distinguish it from an escaped pipe
+ var row = tableRow.replace(/\|/g, function (match, offset, str) {
+ var escaped = false,
+ curr = offset;
+ while (--curr >= 0 && str[curr] === '\\') escaped = !escaped;
+ if (escaped) {
+ // odd number of slashes means | is escaped
+ // so we leave it alone
+ return '|';
+ } else {
+ // add space before unescaped |
+ return ' |';
+ }
+ }),
+ cells = row.split(/ \|/),
+ i = 0;
+
+ if (cells.length > count) {
+ cells.splice(count);
+ } else {
+ while (cells.length < count) cells.push('');
+ }
+
+ for (; i < cells.length; i++) {
+ // leading or trailing whitespace is ignored per the gfm spec
+ cells[i] = cells[i].trim().replace(/\\\|/g, '|');
+ }
+ return cells;
+}
+
+// Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').
+// /c*$/ is vulnerable to REDOS.
+// invert: Remove suffix of non-c chars instead. Default falsey.
+function rtrim(str, c, invert) {
+ if (str.length === 0) {
+ return '';
+ }
+
+ // Length of suffix matching the invert condition.
+ var suffLen = 0;
+
+ // Step left until we fail to match the invert condition.
+ while (suffLen < str.length) {
+ var currChar = str.charAt(str.length - suffLen - 1);
+ if (currChar === c && !invert) {
+ suffLen++;
+ } else if (currChar !== c && invert) {
+ suffLen++;
+ } else {
+ break;
+ }
+ }
+
+ return str.substr(0, str.length - suffLen);
+}
+
+/**
+ * Marked
+ */
+
+function marked(src, opt, callback) {
+ // throw error in case of non string input
+ if (typeof src === 'undefined' || src === null) {
+ throw new Error('marked(): input parameter is undefined or null');
+ }
+ if (typeof src !== 'string') {
+ throw new Error('marked(): input parameter is of type '
+ + Object.prototype.toString.call(src) + ', string expected');
+ }
+
+ if (callback || typeof opt === 'function') {
+ if (!callback) {
+ callback = opt;
+ opt = null;
+ }
+
+ opt = merge({}, marked.defaults, opt || {});
+
+ var highlight = opt.highlight,
+ tokens,
+ pending,
+ i = 0;
+
+ try {
+ tokens = Lexer.lex(src, opt)
+ } catch (e) {
+ return callback(e);
+ }
+
+ pending = tokens.length;
+
+ var done = function(err) {
+ if (err) {
+ opt.highlight = highlight;
+ return callback(err);
+ }
+
+ var out;
+
+ try {
+ out = Parser.parse(tokens, opt);
+ } catch (e) {
+ err = e;
+ }
+
+ opt.highlight = highlight;
+
+ return err
+ ? callback(err)
+ : callback(null, out);
+ };
+
+ if (!highlight || highlight.length < 3) {
+ return done();
+ }
+
+ delete opt.highlight;
+
+ if (!pending) return done();
+
+ for (; i < tokens.length; i++) {
+ (function(token) {
+ if (token.type !== 'code') {
+ return --pending || done();
+ }
+ return highlight(token.text, token.lang, function(err, code) {
+ if (err) return done(err);
+ if (code == null || code === token.text) {
+ return --pending || done();
+ }
+ token.text = code;
+ token.escaped = true;
+ --pending || done();
+ });
+ })(tokens[i]);
+ }
+
+ return;
+ }
+ try {
+ if (opt) opt = merge({}, marked.defaults, opt);
+ return Parser.parse(Lexer.lex(src, opt), opt);
+ } catch (e) {
+ e.message += '\nPlease report this to https://github.com/markedjs/marked.';
+ if ((opt || marked.defaults).silent) {
+ return 'An error occurred:
'
+ + escape(e.message + '', true)
+ + '
';
+ }
+ throw e;
+ }
+}
+
+/**
+ * Options
+ */
+
+marked.options =
+marked.setOptions = function(opt) {
+ merge(marked.defaults, opt);
+ return marked;
+};
+
+marked.getDefaults = function () {
+ return {
+ baseUrl: null,
+ breaks: false,
+ gfm: true,
+ headerIds: true,
+ headerPrefix: '',
+ highlight: null,
+ langPrefix: 'language-',
+ mangle: true,
+ pedantic: false,
+ renderer: new Renderer(),
+ sanitize: false,
+ sanitizer: null,
+ silent: false,
+ smartLists: false,
+ smartypants: false,
+ tables: true,
+ xhtml: false
+ };
+}
+
+marked.defaults = marked.getDefaults();
+
+/**
+ * Expose
+ */
+
+marked.Parser = Parser;
+marked.parser = Parser.parse;
+
+marked.Renderer = Renderer;
+marked.TextRenderer = TextRenderer;
+
+marked.Lexer = Lexer;
+marked.lexer = Lexer.lex;
+
+marked.InlineLexer = InlineLexer;
+marked.inlineLexer = InlineLexer.output;
+
+marked.parse = marked;
+
+if (typeof module !== 'undefined' && typeof exports === 'object') {
+ module.exports = marked;
+} else if (typeof define === 'function' && define.amd) {
+ define(function() { return marked; });
+} else {
+ root.marked = marked;
+}
+})(this || (typeof window !== 'undefined' ? window : global));
diff --git a/src/components/mpvue-citypicker/city-data/area.js b/src/components/mpvue-citypicker/city-data/area.js
new file mode 100644
index 0000000..92dfc30
--- /dev/null
+++ b/src/components/mpvue-citypicker/city-data/area.js
@@ -0,0 +1,12542 @@
+/* eslint-disable */
+var areaData = [
+ [
+ [{
+ "label": "东城区",
+ "value": "110101"
+ },
+ {
+ "label": "西城区",
+ "value": "110102"
+ },
+ {
+ "label": "朝阳区",
+ "value": "110105"
+ },
+ {
+ "label": "丰台区",
+ "value": "110106"
+ },
+ {
+ "label": "石景山区",
+ "value": "110107"
+ },
+ {
+ "label": "海淀区",
+ "value": "110108"
+ },
+ {
+ "label": "门头沟区",
+ "value": "110109"
+ },
+ {
+ "label": "房山区",
+ "value": "110111"
+ },
+ {
+ "label": "通州区",
+ "value": "110112"
+ },
+ {
+ "label": "顺义区",
+ "value": "110113"
+ },
+ {
+ "label": "昌平区",
+ "value": "110114"
+ },
+ {
+ "label": "大兴区",
+ "value": "110115"
+ },
+ {
+ "label": "怀柔区",
+ "value": "110116"
+ },
+ {
+ "label": "平谷区",
+ "value": "110117"
+ },
+ {
+ "label": "密云区",
+ "value": "110118"
+ },
+ {
+ "label": "延庆区",
+ "value": "110119"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "和平区",
+ "value": "120101"
+ },
+ {
+ "label": "河东区",
+ "value": "120102"
+ },
+ {
+ "label": "河西区",
+ "value": "120103"
+ },
+ {
+ "label": "南开区",
+ "value": "120104"
+ },
+ {
+ "label": "河北区",
+ "value": "120105"
+ },
+ {
+ "label": "红桥区",
+ "value": "120106"
+ },
+ {
+ "label": "东丽区",
+ "value": "120110"
+ },
+ {
+ "label": "西青区",
+ "value": "120111"
+ },
+ {
+ "label": "津南区",
+ "value": "120112"
+ },
+ {
+ "label": "北辰区",
+ "value": "120113"
+ },
+ {
+ "label": "武清区",
+ "value": "120114"
+ },
+ {
+ "label": "宝坻区",
+ "value": "120115"
+ },
+ {
+ "label": "滨海新区",
+ "value": "120116"
+ },
+ {
+ "label": "宁河区",
+ "value": "120117"
+ },
+ {
+ "label": "静海区",
+ "value": "120118"
+ },
+ {
+ "label": "蓟州区",
+ "value": "120119"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "长安区",
+ "value": "130102"
+ },
+ {
+ "label": "桥西区",
+ "value": "130104"
+ },
+ {
+ "label": "新华区",
+ "value": "130105"
+ },
+ {
+ "label": "井陉矿区",
+ "value": "130107"
+ },
+ {
+ "label": "裕华区",
+ "value": "130108"
+ },
+ {
+ "label": "藁城区",
+ "value": "130109"
+ },
+ {
+ "label": "鹿泉区",
+ "value": "130110"
+ },
+ {
+ "label": "栾城区",
+ "value": "130111"
+ },
+ {
+ "label": "井陉县",
+ "value": "130121"
+ },
+ {
+ "label": "正定县",
+ "value": "130123"
+ },
+ {
+ "label": "行唐县",
+ "value": "130125"
+ },
+ {
+ "label": "灵寿县",
+ "value": "130126"
+ },
+ {
+ "label": "高邑县",
+ "value": "130127"
+ },
+ {
+ "label": "深泽县",
+ "value": "130128"
+ },
+ {
+ "label": "赞皇县",
+ "value": "130129"
+ },
+ {
+ "label": "无极县",
+ "value": "130130"
+ },
+ {
+ "label": "平山县",
+ "value": "130131"
+ },
+ {
+ "label": "元氏县",
+ "value": "130132"
+ },
+ {
+ "label": "赵县",
+ "value": "130133"
+ },
+ {
+ "label": "石家庄高新技术产业开发区",
+ "value": "130171"
+ },
+ {
+ "label": "石家庄循环化工园区",
+ "value": "130172"
+ },
+ {
+ "label": "辛集市",
+ "value": "130181"
+ },
+ {
+ "label": "晋州市",
+ "value": "130183"
+ },
+ {
+ "label": "新乐市",
+ "value": "130184"
+ }
+ ],
+ [{
+ "label": "路南区",
+ "value": "130202"
+ },
+ {
+ "label": "路北区",
+ "value": "130203"
+ },
+ {
+ "label": "古冶区",
+ "value": "130204"
+ },
+ {
+ "label": "开平区",
+ "value": "130205"
+ },
+ {
+ "label": "丰南区",
+ "value": "130207"
+ },
+ {
+ "label": "丰润区",
+ "value": "130208"
+ },
+ {
+ "label": "曹妃甸区",
+ "value": "130209"
+ },
+ {
+ "label": "滦县",
+ "value": "130223"
+ },
+ {
+ "label": "滦南县",
+ "value": "130224"
+ },
+ {
+ "label": "乐亭县",
+ "value": "130225"
+ },
+ {
+ "label": "迁西县",
+ "value": "130227"
+ },
+ {
+ "label": "玉田县",
+ "value": "130229"
+ },
+ {
+ "label": "唐山市芦台经济技术开发区",
+ "value": "130271"
+ },
+ {
+ "label": "唐山市汉沽管理区",
+ "value": "130272"
+ },
+ {
+ "label": "唐山高新技术产业开发区",
+ "value": "130273"
+ },
+ {
+ "label": "河北唐山海港经济开发区",
+ "value": "130274"
+ },
+ {
+ "label": "遵化市",
+ "value": "130281"
+ },
+ {
+ "label": "迁安市",
+ "value": "130283"
+ }
+ ],
+ [{
+ "label": "海港区",
+ "value": "130302"
+ },
+ {
+ "label": "山海关区",
+ "value": "130303"
+ },
+ {
+ "label": "北戴河区",
+ "value": "130304"
+ },
+ {
+ "label": "抚宁区",
+ "value": "130306"
+ },
+ {
+ "label": "青龙满族自治县",
+ "value": "130321"
+ },
+ {
+ "label": "昌黎县",
+ "value": "130322"
+ },
+ {
+ "label": "卢龙县",
+ "value": "130324"
+ },
+ {
+ "label": "秦皇岛市经济技术开发区",
+ "value": "130371"
+ },
+ {
+ "label": "北戴河新区",
+ "value": "130372"
+ }
+ ],
+ [{
+ "label": "邯山区",
+ "value": "130402"
+ },
+ {
+ "label": "丛台区",
+ "value": "130403"
+ },
+ {
+ "label": "复兴区",
+ "value": "130404"
+ },
+ {
+ "label": "峰峰矿区",
+ "value": "130406"
+ },
+ {
+ "label": "肥乡区",
+ "value": "130407"
+ },
+ {
+ "label": "永年区",
+ "value": "130408"
+ },
+ {
+ "label": "临漳县",
+ "value": "130423"
+ },
+ {
+ "label": "成安县",
+ "value": "130424"
+ },
+ {
+ "label": "大名县",
+ "value": "130425"
+ },
+ {
+ "label": "涉县",
+ "value": "130426"
+ },
+ {
+ "label": "磁县",
+ "value": "130427"
+ },
+ {
+ "label": "邱县",
+ "value": "130430"
+ },
+ {
+ "label": "鸡泽县",
+ "value": "130431"
+ },
+ {
+ "label": "广平县",
+ "value": "130432"
+ },
+ {
+ "label": "馆陶县",
+ "value": "130433"
+ },
+ {
+ "label": "魏县",
+ "value": "130434"
+ },
+ {
+ "label": "曲周县",
+ "value": "130435"
+ },
+ {
+ "label": "邯郸经济技术开发区",
+ "value": "130471"
+ },
+ {
+ "label": "邯郸冀南新区",
+ "value": "130473"
+ },
+ {
+ "label": "武安市",
+ "value": "130481"
+ }
+ ],
+ [{
+ "label": "桥东区",
+ "value": "130502"
+ },
+ {
+ "label": "桥西区",
+ "value": "130503"
+ },
+ {
+ "label": "邢台县",
+ "value": "130521"
+ },
+ {
+ "label": "临城县",
+ "value": "130522"
+ },
+ {
+ "label": "内丘县",
+ "value": "130523"
+ },
+ {
+ "label": "柏乡县",
+ "value": "130524"
+ },
+ {
+ "label": "隆尧县",
+ "value": "130525"
+ },
+ {
+ "label": "任县",
+ "value": "130526"
+ },
+ {
+ "label": "南和县",
+ "value": "130527"
+ },
+ {
+ "label": "宁晋县",
+ "value": "130528"
+ },
+ {
+ "label": "巨鹿县",
+ "value": "130529"
+ },
+ {
+ "label": "新河县",
+ "value": "130530"
+ },
+ {
+ "label": "广宗县",
+ "value": "130531"
+ },
+ {
+ "label": "平乡县",
+ "value": "130532"
+ },
+ {
+ "label": "威县",
+ "value": "130533"
+ },
+ {
+ "label": "清河县",
+ "value": "130534"
+ },
+ {
+ "label": "临西县",
+ "value": "130535"
+ },
+ {
+ "label": "河北邢台经济开发区",
+ "value": "130571"
+ },
+ {
+ "label": "南宫市",
+ "value": "130581"
+ },
+ {
+ "label": "沙河市",
+ "value": "130582"
+ }
+ ],
+ [{
+ "label": "竞秀区",
+ "value": "130602"
+ },
+ {
+ "label": "莲池区",
+ "value": "130606"
+ },
+ {
+ "label": "满城区",
+ "value": "130607"
+ },
+ {
+ "label": "清苑区",
+ "value": "130608"
+ },
+ {
+ "label": "徐水区",
+ "value": "130609"
+ },
+ {
+ "label": "涞水县",
+ "value": "130623"
+ },
+ {
+ "label": "阜平县",
+ "value": "130624"
+ },
+ {
+ "label": "定兴县",
+ "value": "130626"
+ },
+ {
+ "label": "唐县",
+ "value": "130627"
+ },
+ {
+ "label": "高阳县",
+ "value": "130628"
+ },
+ {
+ "label": "容城县",
+ "value": "130629"
+ },
+ {
+ "label": "涞源县",
+ "value": "130630"
+ },
+ {
+ "label": "望都县",
+ "value": "130631"
+ },
+ {
+ "label": "安新县",
+ "value": "130632"
+ },
+ {
+ "label": "易县",
+ "value": "130633"
+ },
+ {
+ "label": "曲阳县",
+ "value": "130634"
+ },
+ {
+ "label": "蠡县",
+ "value": "130635"
+ },
+ {
+ "label": "顺平县",
+ "value": "130636"
+ },
+ {
+ "label": "博野县",
+ "value": "130637"
+ },
+ {
+ "label": "雄县",
+ "value": "130638"
+ },
+ {
+ "label": "保定高新技术产业开发区",
+ "value": "130671"
+ },
+ {
+ "label": "保定白沟新城",
+ "value": "130672"
+ },
+ {
+ "label": "涿州市",
+ "value": "130681"
+ },
+ {
+ "label": "定州市",
+ "value": "130682"
+ },
+ {
+ "label": "安国市",
+ "value": "130683"
+ },
+ {
+ "label": "高碑店市",
+ "value": "130684"
+ }
+ ],
+ [{
+ "label": "桥东区",
+ "value": "130702"
+ },
+ {
+ "label": "桥西区",
+ "value": "130703"
+ },
+ {
+ "label": "宣化区",
+ "value": "130705"
+ },
+ {
+ "label": "下花园区",
+ "value": "130706"
+ },
+ {
+ "label": "万全区",
+ "value": "130708"
+ },
+ {
+ "label": "崇礼区",
+ "value": "130709"
+ },
+ {
+ "label": "张北县",
+ "value": "130722"
+ },
+ {
+ "label": "康保县",
+ "value": "130723"
+ },
+ {
+ "label": "沽源县",
+ "value": "130724"
+ },
+ {
+ "label": "尚义县",
+ "value": "130725"
+ },
+ {
+ "label": "蔚县",
+ "value": "130726"
+ },
+ {
+ "label": "阳原县",
+ "value": "130727"
+ },
+ {
+ "label": "怀安县",
+ "value": "130728"
+ },
+ {
+ "label": "怀来县",
+ "value": "130730"
+ },
+ {
+ "label": "涿鹿县",
+ "value": "130731"
+ },
+ {
+ "label": "赤城县",
+ "value": "130732"
+ },
+ {
+ "label": "张家口市高新技术产业开发区",
+ "value": "130771"
+ },
+ {
+ "label": "张家口市察北管理区",
+ "value": "130772"
+ },
+ {
+ "label": "张家口市塞北管理区",
+ "value": "130773"
+ }
+ ],
+ [{
+ "label": "双桥区",
+ "value": "130802"
+ },
+ {
+ "label": "双滦区",
+ "value": "130803"
+ },
+ {
+ "label": "鹰手营子矿区",
+ "value": "130804"
+ },
+ {
+ "label": "承德县",
+ "value": "130821"
+ },
+ {
+ "label": "兴隆县",
+ "value": "130822"
+ },
+ {
+ "label": "滦平县",
+ "value": "130824"
+ },
+ {
+ "label": "隆化县",
+ "value": "130825"
+ },
+ {
+ "label": "丰宁满族自治县",
+ "value": "130826"
+ },
+ {
+ "label": "宽城满族自治县",
+ "value": "130827"
+ },
+ {
+ "label": "围场满族蒙古族自治县",
+ "value": "130828"
+ },
+ {
+ "label": "承德高新技术产业开发区",
+ "value": "130871"
+ },
+ {
+ "label": "平泉市",
+ "value": "130881"
+ }
+ ],
+ [{
+ "label": "新华区",
+ "value": "130902"
+ },
+ {
+ "label": "运河区",
+ "value": "130903"
+ },
+ {
+ "label": "沧县",
+ "value": "130921"
+ },
+ {
+ "label": "青县",
+ "value": "130922"
+ },
+ {
+ "label": "东光县",
+ "value": "130923"
+ },
+ {
+ "label": "海兴县",
+ "value": "130924"
+ },
+ {
+ "label": "盐山县",
+ "value": "130925"
+ },
+ {
+ "label": "肃宁县",
+ "value": "130926"
+ },
+ {
+ "label": "南皮县",
+ "value": "130927"
+ },
+ {
+ "label": "吴桥县",
+ "value": "130928"
+ },
+ {
+ "label": "献县",
+ "value": "130929"
+ },
+ {
+ "label": "孟村回族自治县",
+ "value": "130930"
+ },
+ {
+ "label": "河北沧州经济开发区",
+ "value": "130971"
+ },
+ {
+ "label": "沧州高新技术产业开发区",
+ "value": "130972"
+ },
+ {
+ "label": "沧州渤海新区",
+ "value": "130973"
+ },
+ {
+ "label": "泊头市",
+ "value": "130981"
+ },
+ {
+ "label": "任丘市",
+ "value": "130982"
+ },
+ {
+ "label": "黄骅市",
+ "value": "130983"
+ },
+ {
+ "label": "河间市",
+ "value": "130984"
+ }
+ ],
+ [{
+ "label": "安次区",
+ "value": "131002"
+ },
+ {
+ "label": "广阳区",
+ "value": "131003"
+ },
+ {
+ "label": "固安县",
+ "value": "131022"
+ },
+ {
+ "label": "永清县",
+ "value": "131023"
+ },
+ {
+ "label": "香河县",
+ "value": "131024"
+ },
+ {
+ "label": "大城县",
+ "value": "131025"
+ },
+ {
+ "label": "文安县",
+ "value": "131026"
+ },
+ {
+ "label": "大厂回族自治县",
+ "value": "131028"
+ },
+ {
+ "label": "廊坊经济技术开发区",
+ "value": "131071"
+ },
+ {
+ "label": "霸州市",
+ "value": "131081"
+ },
+ {
+ "label": "三河市",
+ "value": "131082"
+ }
+ ],
+ [{
+ "label": "桃城区",
+ "value": "131102"
+ },
+ {
+ "label": "冀州区",
+ "value": "131103"
+ },
+ {
+ "label": "枣强县",
+ "value": "131121"
+ },
+ {
+ "label": "武邑县",
+ "value": "131122"
+ },
+ {
+ "label": "武强县",
+ "value": "131123"
+ },
+ {
+ "label": "饶阳县",
+ "value": "131124"
+ },
+ {
+ "label": "安平县",
+ "value": "131125"
+ },
+ {
+ "label": "故城县",
+ "value": "131126"
+ },
+ {
+ "label": "景县",
+ "value": "131127"
+ },
+ {
+ "label": "阜城县",
+ "value": "131128"
+ },
+ {
+ "label": "河北衡水经济开发区",
+ "value": "131171"
+ },
+ {
+ "label": "衡水滨湖新区",
+ "value": "131172"
+ },
+ {
+ "label": "深州市",
+ "value": "131182"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "小店区",
+ "value": "140105"
+ },
+ {
+ "label": "迎泽区",
+ "value": "140106"
+ },
+ {
+ "label": "杏花岭区",
+ "value": "140107"
+ },
+ {
+ "label": "尖草坪区",
+ "value": "140108"
+ },
+ {
+ "label": "万柏林区",
+ "value": "140109"
+ },
+ {
+ "label": "晋源区",
+ "value": "140110"
+ },
+ {
+ "label": "清徐县",
+ "value": "140121"
+ },
+ {
+ "label": "阳曲县",
+ "value": "140122"
+ },
+ {
+ "label": "娄烦县",
+ "value": "140123"
+ },
+ {
+ "label": "山西转型综合改革示范区",
+ "value": "140171"
+ },
+ {
+ "label": "古交市",
+ "value": "140181"
+ }
+ ],
+ [{
+ "label": "城区",
+ "value": "140202"
+ },
+ {
+ "label": "矿区",
+ "value": "140203"
+ },
+ {
+ "label": "南郊区",
+ "value": "140211"
+ },
+ {
+ "label": "新荣区",
+ "value": "140212"
+ },
+ {
+ "label": "阳高县",
+ "value": "140221"
+ },
+ {
+ "label": "天镇县",
+ "value": "140222"
+ },
+ {
+ "label": "广灵县",
+ "value": "140223"
+ },
+ {
+ "label": "灵丘县",
+ "value": "140224"
+ },
+ {
+ "label": "浑源县",
+ "value": "140225"
+ },
+ {
+ "label": "左云县",
+ "value": "140226"
+ },
+ {
+ "label": "大同县",
+ "value": "140227"
+ },
+ {
+ "label": "山西大同经济开发区",
+ "value": "140271"
+ }
+ ],
+ [{
+ "label": "城区",
+ "value": "140302"
+ },
+ {
+ "label": "矿区",
+ "value": "140303"
+ },
+ {
+ "label": "郊区",
+ "value": "140311"
+ },
+ {
+ "label": "平定县",
+ "value": "140321"
+ },
+ {
+ "label": "盂县",
+ "value": "140322"
+ },
+ {
+ "label": "山西阳泉经济开发区",
+ "value": "140371"
+ }
+ ],
+ [{
+ "label": "城区",
+ "value": "140402"
+ },
+ {
+ "label": "郊区",
+ "value": "140411"
+ },
+ {
+ "label": "长治县",
+ "value": "140421"
+ },
+ {
+ "label": "襄垣县",
+ "value": "140423"
+ },
+ {
+ "label": "屯留县",
+ "value": "140424"
+ },
+ {
+ "label": "平顺县",
+ "value": "140425"
+ },
+ {
+ "label": "黎城县",
+ "value": "140426"
+ },
+ {
+ "label": "壶关县",
+ "value": "140427"
+ },
+ {
+ "label": "长子县",
+ "value": "140428"
+ },
+ {
+ "label": "武乡县",
+ "value": "140429"
+ },
+ {
+ "label": "沁县",
+ "value": "140430"
+ },
+ {
+ "label": "沁源县",
+ "value": "140431"
+ },
+ {
+ "label": "山西长治高新技术产业园区",
+ "value": "140471"
+ },
+ {
+ "label": "潞城市",
+ "value": "140481"
+ }
+ ],
+ [{
+ "label": "城区",
+ "value": "140502"
+ },
+ {
+ "label": "沁水县",
+ "value": "140521"
+ },
+ {
+ "label": "阳城县",
+ "value": "140522"
+ },
+ {
+ "label": "陵川县",
+ "value": "140524"
+ },
+ {
+ "label": "泽州县",
+ "value": "140525"
+ },
+ {
+ "label": "高平市",
+ "value": "140581"
+ }
+ ],
+ [{
+ "label": "朔城区",
+ "value": "140602"
+ },
+ {
+ "label": "平鲁区",
+ "value": "140603"
+ },
+ {
+ "label": "山阴县",
+ "value": "140621"
+ },
+ {
+ "label": "应县",
+ "value": "140622"
+ },
+ {
+ "label": "右玉县",
+ "value": "140623"
+ },
+ {
+ "label": "怀仁县",
+ "value": "140624"
+ },
+ {
+ "label": "山西朔州经济开发区",
+ "value": "140671"
+ }
+ ],
+ [{
+ "label": "榆次区",
+ "value": "140702"
+ },
+ {
+ "label": "榆社县",
+ "value": "140721"
+ },
+ {
+ "label": "左权县",
+ "value": "140722"
+ },
+ {
+ "label": "和顺县",
+ "value": "140723"
+ },
+ {
+ "label": "昔阳县",
+ "value": "140724"
+ },
+ {
+ "label": "寿阳县",
+ "value": "140725"
+ },
+ {
+ "label": "太谷县",
+ "value": "140726"
+ },
+ {
+ "label": "祁县",
+ "value": "140727"
+ },
+ {
+ "label": "平遥县",
+ "value": "140728"
+ },
+ {
+ "label": "灵石县",
+ "value": "140729"
+ },
+ {
+ "label": "介休市",
+ "value": "140781"
+ }
+ ],
+ [{
+ "label": "盐湖区",
+ "value": "140802"
+ },
+ {
+ "label": "临猗县",
+ "value": "140821"
+ },
+ {
+ "label": "万荣县",
+ "value": "140822"
+ },
+ {
+ "label": "闻喜县",
+ "value": "140823"
+ },
+ {
+ "label": "稷山县",
+ "value": "140824"
+ },
+ {
+ "label": "新绛县",
+ "value": "140825"
+ },
+ {
+ "label": "绛县",
+ "value": "140826"
+ },
+ {
+ "label": "垣曲县",
+ "value": "140827"
+ },
+ {
+ "label": "夏县",
+ "value": "140828"
+ },
+ {
+ "label": "平陆县",
+ "value": "140829"
+ },
+ {
+ "label": "芮城县",
+ "value": "140830"
+ },
+ {
+ "label": "永济市",
+ "value": "140881"
+ },
+ {
+ "label": "河津市",
+ "value": "140882"
+ }
+ ],
+ [{
+ "label": "忻府区",
+ "value": "140902"
+ },
+ {
+ "label": "定襄县",
+ "value": "140921"
+ },
+ {
+ "label": "五台县",
+ "value": "140922"
+ },
+ {
+ "label": "代县",
+ "value": "140923"
+ },
+ {
+ "label": "繁峙县",
+ "value": "140924"
+ },
+ {
+ "label": "宁武县",
+ "value": "140925"
+ },
+ {
+ "label": "静乐县",
+ "value": "140926"
+ },
+ {
+ "label": "神池县",
+ "value": "140927"
+ },
+ {
+ "label": "五寨县",
+ "value": "140928"
+ },
+ {
+ "label": "岢岚县",
+ "value": "140929"
+ },
+ {
+ "label": "河曲县",
+ "value": "140930"
+ },
+ {
+ "label": "保德县",
+ "value": "140931"
+ },
+ {
+ "label": "偏关县",
+ "value": "140932"
+ },
+ {
+ "label": "五台山风景名胜区",
+ "value": "140971"
+ },
+ {
+ "label": "原平市",
+ "value": "140981"
+ }
+ ],
+ [{
+ "label": "尧都区",
+ "value": "141002"
+ },
+ {
+ "label": "曲沃县",
+ "value": "141021"
+ },
+ {
+ "label": "翼城县",
+ "value": "141022"
+ },
+ {
+ "label": "襄汾县",
+ "value": "141023"
+ },
+ {
+ "label": "洪洞县",
+ "value": "141024"
+ },
+ {
+ "label": "古县",
+ "value": "141025"
+ },
+ {
+ "label": "安泽县",
+ "value": "141026"
+ },
+ {
+ "label": "浮山县",
+ "value": "141027"
+ },
+ {
+ "label": "吉县",
+ "value": "141028"
+ },
+ {
+ "label": "乡宁县",
+ "value": "141029"
+ },
+ {
+ "label": "大宁县",
+ "value": "141030"
+ },
+ {
+ "label": "隰县",
+ "value": "141031"
+ },
+ {
+ "label": "永和县",
+ "value": "141032"
+ },
+ {
+ "label": "蒲县",
+ "value": "141033"
+ },
+ {
+ "label": "汾西县",
+ "value": "141034"
+ },
+ {
+ "label": "侯马市",
+ "value": "141081"
+ },
+ {
+ "label": "霍州市",
+ "value": "141082"
+ }
+ ],
+ [{
+ "label": "离石区",
+ "value": "141102"
+ },
+ {
+ "label": "文水县",
+ "value": "141121"
+ },
+ {
+ "label": "交城县",
+ "value": "141122"
+ },
+ {
+ "label": "兴县",
+ "value": "141123"
+ },
+ {
+ "label": "临县",
+ "value": "141124"
+ },
+ {
+ "label": "柳林县",
+ "value": "141125"
+ },
+ {
+ "label": "石楼县",
+ "value": "141126"
+ },
+ {
+ "label": "岚县",
+ "value": "141127"
+ },
+ {
+ "label": "方山县",
+ "value": "141128"
+ },
+ {
+ "label": "中阳县",
+ "value": "141129"
+ },
+ {
+ "label": "交口县",
+ "value": "141130"
+ },
+ {
+ "label": "孝义市",
+ "value": "141181"
+ },
+ {
+ "label": "汾阳市",
+ "value": "141182"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "新城区",
+ "value": "150102"
+ },
+ {
+ "label": "回民区",
+ "value": "150103"
+ },
+ {
+ "label": "玉泉区",
+ "value": "150104"
+ },
+ {
+ "label": "赛罕区",
+ "value": "150105"
+ },
+ {
+ "label": "土默特左旗",
+ "value": "150121"
+ },
+ {
+ "label": "托克托县",
+ "value": "150122"
+ },
+ {
+ "label": "和林格尔县",
+ "value": "150123"
+ },
+ {
+ "label": "清水河县",
+ "value": "150124"
+ },
+ {
+ "label": "武川县",
+ "value": "150125"
+ },
+ {
+ "label": "呼和浩特金海工业园区",
+ "value": "150171"
+ },
+ {
+ "label": "呼和浩特经济技术开发区",
+ "value": "150172"
+ }
+ ],
+ [{
+ "label": "东河区",
+ "value": "150202"
+ },
+ {
+ "label": "昆都仑区",
+ "value": "150203"
+ },
+ {
+ "label": "青山区",
+ "value": "150204"
+ },
+ {
+ "label": "石拐区",
+ "value": "150205"
+ },
+ {
+ "label": "白云鄂博矿区",
+ "value": "150206"
+ },
+ {
+ "label": "九原区",
+ "value": "150207"
+ },
+ {
+ "label": "土默特右旗",
+ "value": "150221"
+ },
+ {
+ "label": "固阳县",
+ "value": "150222"
+ },
+ {
+ "label": "达尔罕茂明安联合旗",
+ "value": "150223"
+ },
+ {
+ "label": "包头稀土高新技术产业开发区",
+ "value": "150271"
+ }
+ ],
+ [{
+ "label": "海勃湾区",
+ "value": "150302"
+ },
+ {
+ "label": "海南区",
+ "value": "150303"
+ },
+ {
+ "label": "乌达区",
+ "value": "150304"
+ }
+ ],
+ [{
+ "label": "红山区",
+ "value": "150402"
+ },
+ {
+ "label": "元宝山区",
+ "value": "150403"
+ },
+ {
+ "label": "松山区",
+ "value": "150404"
+ },
+ {
+ "label": "阿鲁科尔沁旗",
+ "value": "150421"
+ },
+ {
+ "label": "巴林左旗",
+ "value": "150422"
+ },
+ {
+ "label": "巴林右旗",
+ "value": "150423"
+ },
+ {
+ "label": "林西县",
+ "value": "150424"
+ },
+ {
+ "label": "克什克腾旗",
+ "value": "150425"
+ },
+ {
+ "label": "翁牛特旗",
+ "value": "150426"
+ },
+ {
+ "label": "喀喇沁旗",
+ "value": "150428"
+ },
+ {
+ "label": "宁城县",
+ "value": "150429"
+ },
+ {
+ "label": "敖汉旗",
+ "value": "150430"
+ }
+ ],
+ [{
+ "label": "科尔沁区",
+ "value": "150502"
+ },
+ {
+ "label": "科尔沁左翼中旗",
+ "value": "150521"
+ },
+ {
+ "label": "科尔沁左翼后旗",
+ "value": "150522"
+ },
+ {
+ "label": "开鲁县",
+ "value": "150523"
+ },
+ {
+ "label": "库伦旗",
+ "value": "150524"
+ },
+ {
+ "label": "奈曼旗",
+ "value": "150525"
+ },
+ {
+ "label": "扎鲁特旗",
+ "value": "150526"
+ },
+ {
+ "label": "通辽经济技术开发区",
+ "value": "150571"
+ },
+ {
+ "label": "霍林郭勒市",
+ "value": "150581"
+ }
+ ],
+ [{
+ "label": "东胜区",
+ "value": "150602"
+ },
+ {
+ "label": "康巴什区",
+ "value": "150603"
+ },
+ {
+ "label": "达拉特旗",
+ "value": "150621"
+ },
+ {
+ "label": "准格尔旗",
+ "value": "150622"
+ },
+ {
+ "label": "鄂托克前旗",
+ "value": "150623"
+ },
+ {
+ "label": "鄂托克旗",
+ "value": "150624"
+ },
+ {
+ "label": "杭锦旗",
+ "value": "150625"
+ },
+ {
+ "label": "乌审旗",
+ "value": "150626"
+ },
+ {
+ "label": "伊金霍洛旗",
+ "value": "150627"
+ }
+ ],
+ [{
+ "label": "海拉尔区",
+ "value": "150702"
+ },
+ {
+ "label": "扎赉诺尔区",
+ "value": "150703"
+ },
+ {
+ "label": "阿荣旗",
+ "value": "150721"
+ },
+ {
+ "label": "莫力达瓦达斡尔族自治旗",
+ "value": "150722"
+ },
+ {
+ "label": "鄂伦春自治旗",
+ "value": "150723"
+ },
+ {
+ "label": "鄂温克族自治旗",
+ "value": "150724"
+ },
+ {
+ "label": "陈巴尔虎旗",
+ "value": "150725"
+ },
+ {
+ "label": "新巴尔虎左旗",
+ "value": "150726"
+ },
+ {
+ "label": "新巴尔虎右旗",
+ "value": "150727"
+ },
+ {
+ "label": "满洲里市",
+ "value": "150781"
+ },
+ {
+ "label": "牙克石市",
+ "value": "150782"
+ },
+ {
+ "label": "扎兰屯市",
+ "value": "150783"
+ },
+ {
+ "label": "额尔古纳市",
+ "value": "150784"
+ },
+ {
+ "label": "根河市",
+ "value": "150785"
+ }
+ ],
+ [{
+ "label": "临河区",
+ "value": "150802"
+ },
+ {
+ "label": "五原县",
+ "value": "150821"
+ },
+ {
+ "label": "磴口县",
+ "value": "150822"
+ },
+ {
+ "label": "乌拉特前旗",
+ "value": "150823"
+ },
+ {
+ "label": "乌拉特中旗",
+ "value": "150824"
+ },
+ {
+ "label": "乌拉特后旗",
+ "value": "150825"
+ },
+ {
+ "label": "杭锦后旗",
+ "value": "150826"
+ }
+ ],
+ [{
+ "label": "集宁区",
+ "value": "150902"
+ },
+ {
+ "label": "卓资县",
+ "value": "150921"
+ },
+ {
+ "label": "化德县",
+ "value": "150922"
+ },
+ {
+ "label": "商都县",
+ "value": "150923"
+ },
+ {
+ "label": "兴和县",
+ "value": "150924"
+ },
+ {
+ "label": "凉城县",
+ "value": "150925"
+ },
+ {
+ "label": "察哈尔右翼前旗",
+ "value": "150926"
+ },
+ {
+ "label": "察哈尔右翼中旗",
+ "value": "150927"
+ },
+ {
+ "label": "察哈尔右翼后旗",
+ "value": "150928"
+ },
+ {
+ "label": "四子王旗",
+ "value": "150929"
+ },
+ {
+ "label": "丰镇市",
+ "value": "150981"
+ }
+ ],
+ [{
+ "label": "乌兰浩特市",
+ "value": "152201"
+ },
+ {
+ "label": "阿尔山市",
+ "value": "152202"
+ },
+ {
+ "label": "科尔沁右翼前旗",
+ "value": "152221"
+ },
+ {
+ "label": "科尔沁右翼中旗",
+ "value": "152222"
+ },
+ {
+ "label": "扎赉特旗",
+ "value": "152223"
+ },
+ {
+ "label": "突泉县",
+ "value": "152224"
+ }
+ ],
+ [{
+ "label": "二连浩特市",
+ "value": "152501"
+ },
+ {
+ "label": "锡林浩特市",
+ "value": "152502"
+ },
+ {
+ "label": "阿巴嘎旗",
+ "value": "152522"
+ },
+ {
+ "label": "苏尼特左旗",
+ "value": "152523"
+ },
+ {
+ "label": "苏尼特右旗",
+ "value": "152524"
+ },
+ {
+ "label": "东乌珠穆沁旗",
+ "value": "152525"
+ },
+ {
+ "label": "西乌珠穆沁旗",
+ "value": "152526"
+ },
+ {
+ "label": "太仆寺旗",
+ "value": "152527"
+ },
+ {
+ "label": "镶黄旗",
+ "value": "152528"
+ },
+ {
+ "label": "正镶白旗",
+ "value": "152529"
+ },
+ {
+ "label": "正蓝旗",
+ "value": "152530"
+ },
+ {
+ "label": "多伦县",
+ "value": "152531"
+ },
+ {
+ "label": "乌拉盖管委会",
+ "value": "152571"
+ }
+ ],
+ [{
+ "label": "阿拉善左旗",
+ "value": "152921"
+ },
+ {
+ "label": "阿拉善右旗",
+ "value": "152922"
+ },
+ {
+ "label": "额济纳旗",
+ "value": "152923"
+ },
+ {
+ "label": "内蒙古阿拉善经济开发区",
+ "value": "152971"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "和平区",
+ "value": "210102"
+ },
+ {
+ "label": "沈河区",
+ "value": "210103"
+ },
+ {
+ "label": "大东区",
+ "value": "210104"
+ },
+ {
+ "label": "皇姑区",
+ "value": "210105"
+ },
+ {
+ "label": "铁西区",
+ "value": "210106"
+ },
+ {
+ "label": "苏家屯区",
+ "value": "210111"
+ },
+ {
+ "label": "浑南区",
+ "value": "210112"
+ },
+ {
+ "label": "沈北新区",
+ "value": "210113"
+ },
+ {
+ "label": "于洪区",
+ "value": "210114"
+ },
+ {
+ "label": "辽中区",
+ "value": "210115"
+ },
+ {
+ "label": "康平县",
+ "value": "210123"
+ },
+ {
+ "label": "法库县",
+ "value": "210124"
+ },
+ {
+ "label": "新民市",
+ "value": "210181"
+ }
+ ],
+ [{
+ "label": "中山区",
+ "value": "210202"
+ },
+ {
+ "label": "西岗区",
+ "value": "210203"
+ },
+ {
+ "label": "沙河口区",
+ "value": "210204"
+ },
+ {
+ "label": "甘井子区",
+ "value": "210211"
+ },
+ {
+ "label": "旅顺口区",
+ "value": "210212"
+ },
+ {
+ "label": "金州区",
+ "value": "210213"
+ },
+ {
+ "label": "普兰店区",
+ "value": "210214"
+ },
+ {
+ "label": "长海县",
+ "value": "210224"
+ },
+ {
+ "label": "瓦房店市",
+ "value": "210281"
+ },
+ {
+ "label": "庄河市",
+ "value": "210283"
+ }
+ ],
+ [{
+ "label": "铁东区",
+ "value": "210302"
+ },
+ {
+ "label": "铁西区",
+ "value": "210303"
+ },
+ {
+ "label": "立山区",
+ "value": "210304"
+ },
+ {
+ "label": "千山区",
+ "value": "210311"
+ },
+ {
+ "label": "台安县",
+ "value": "210321"
+ },
+ {
+ "label": "岫岩满族自治县",
+ "value": "210323"
+ },
+ {
+ "label": "海城市",
+ "value": "210381"
+ }
+ ],
+ [{
+ "label": "新抚区",
+ "value": "210402"
+ },
+ {
+ "label": "东洲区",
+ "value": "210403"
+ },
+ {
+ "label": "望花区",
+ "value": "210404"
+ },
+ {
+ "label": "顺城区",
+ "value": "210411"
+ },
+ {
+ "label": "抚顺县",
+ "value": "210421"
+ },
+ {
+ "label": "新宾满族自治县",
+ "value": "210422"
+ },
+ {
+ "label": "清原满族自治县",
+ "value": "210423"
+ }
+ ],
+ [{
+ "label": "平山区",
+ "value": "210502"
+ },
+ {
+ "label": "溪湖区",
+ "value": "210503"
+ },
+ {
+ "label": "明山区",
+ "value": "210504"
+ },
+ {
+ "label": "南芬区",
+ "value": "210505"
+ },
+ {
+ "label": "本溪满族自治县",
+ "value": "210521"
+ },
+ {
+ "label": "桓仁满族自治县",
+ "value": "210522"
+ }
+ ],
+ [{
+ "label": "元宝区",
+ "value": "210602"
+ },
+ {
+ "label": "振兴区",
+ "value": "210603"
+ },
+ {
+ "label": "振安区",
+ "value": "210604"
+ },
+ {
+ "label": "宽甸满族自治县",
+ "value": "210624"
+ },
+ {
+ "label": "东港市",
+ "value": "210681"
+ },
+ {
+ "label": "凤城市",
+ "value": "210682"
+ }
+ ],
+ [{
+ "label": "古塔区",
+ "value": "210702"
+ },
+ {
+ "label": "凌河区",
+ "value": "210703"
+ },
+ {
+ "label": "太和区",
+ "value": "210711"
+ },
+ {
+ "label": "黑山县",
+ "value": "210726"
+ },
+ {
+ "label": "义县",
+ "value": "210727"
+ },
+ {
+ "label": "凌海市",
+ "value": "210781"
+ },
+ {
+ "label": "北镇市",
+ "value": "210782"
+ }
+ ],
+ [{
+ "label": "站前区",
+ "value": "210802"
+ },
+ {
+ "label": "西市区",
+ "value": "210803"
+ },
+ {
+ "label": "鲅鱼圈区",
+ "value": "210804"
+ },
+ {
+ "label": "老边区",
+ "value": "210811"
+ },
+ {
+ "label": "盖州市",
+ "value": "210881"
+ },
+ {
+ "label": "大石桥市",
+ "value": "210882"
+ }
+ ],
+ [{
+ "label": "海州区",
+ "value": "210902"
+ },
+ {
+ "label": "新邱区",
+ "value": "210903"
+ },
+ {
+ "label": "太平区",
+ "value": "210904"
+ },
+ {
+ "label": "清河门区",
+ "value": "210905"
+ },
+ {
+ "label": "细河区",
+ "value": "210911"
+ },
+ {
+ "label": "阜新蒙古族自治县",
+ "value": "210921"
+ },
+ {
+ "label": "彰武县",
+ "value": "210922"
+ }
+ ],
+ [{
+ "label": "白塔区",
+ "value": "211002"
+ },
+ {
+ "label": "文圣区",
+ "value": "211003"
+ },
+ {
+ "label": "宏伟区",
+ "value": "211004"
+ },
+ {
+ "label": "弓长岭区",
+ "value": "211005"
+ },
+ {
+ "label": "太子河区",
+ "value": "211011"
+ },
+ {
+ "label": "辽阳县",
+ "value": "211021"
+ },
+ {
+ "label": "灯塔市",
+ "value": "211081"
+ }
+ ],
+ [{
+ "label": "双台子区",
+ "value": "211102"
+ },
+ {
+ "label": "兴隆台区",
+ "value": "211103"
+ },
+ {
+ "label": "大洼区",
+ "value": "211104"
+ },
+ {
+ "label": "盘山县",
+ "value": "211122"
+ }
+ ],
+ [{
+ "label": "银州区",
+ "value": "211202"
+ },
+ {
+ "label": "清河区",
+ "value": "211204"
+ },
+ {
+ "label": "铁岭县",
+ "value": "211221"
+ },
+ {
+ "label": "西丰县",
+ "value": "211223"
+ },
+ {
+ "label": "昌图县",
+ "value": "211224"
+ },
+ {
+ "label": "调兵山市",
+ "value": "211281"
+ },
+ {
+ "label": "开原市",
+ "value": "211282"
+ }
+ ],
+ [{
+ "label": "双塔区",
+ "value": "211302"
+ },
+ {
+ "label": "龙城区",
+ "value": "211303"
+ },
+ {
+ "label": "朝阳县",
+ "value": "211321"
+ },
+ {
+ "label": "建平县",
+ "value": "211322"
+ },
+ {
+ "label": "喀喇沁左翼蒙古族自治县",
+ "value": "211324"
+ },
+ {
+ "label": "北票市",
+ "value": "211381"
+ },
+ {
+ "label": "凌源市",
+ "value": "211382"
+ }
+ ],
+ [{
+ "label": "连山区",
+ "value": "211402"
+ },
+ {
+ "label": "龙港区",
+ "value": "211403"
+ },
+ {
+ "label": "南票区",
+ "value": "211404"
+ },
+ {
+ "label": "绥中县",
+ "value": "211421"
+ },
+ {
+ "label": "建昌县",
+ "value": "211422"
+ },
+ {
+ "label": "兴城市",
+ "value": "211481"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "南关区",
+ "value": "220102"
+ },
+ {
+ "label": "宽城区",
+ "value": "220103"
+ },
+ {
+ "label": "朝阳区",
+ "value": "220104"
+ },
+ {
+ "label": "二道区",
+ "value": "220105"
+ },
+ {
+ "label": "绿园区",
+ "value": "220106"
+ },
+ {
+ "label": "双阳区",
+ "value": "220112"
+ },
+ {
+ "label": "九台区",
+ "value": "220113"
+ },
+ {
+ "label": "农安县",
+ "value": "220122"
+ },
+ {
+ "label": "长春经济技术开发区",
+ "value": "220171"
+ },
+ {
+ "label": "长春净月高新技术产业开发区",
+ "value": "220172"
+ },
+ {
+ "label": "长春高新技术产业开发区",
+ "value": "220173"
+ },
+ {
+ "label": "长春汽车经济技术开发区",
+ "value": "220174"
+ },
+ {
+ "label": "榆树市",
+ "value": "220182"
+ },
+ {
+ "label": "德惠市",
+ "value": "220183"
+ }
+ ],
+ [{
+ "label": "昌邑区",
+ "value": "220202"
+ },
+ {
+ "label": "龙潭区",
+ "value": "220203"
+ },
+ {
+ "label": "船营区",
+ "value": "220204"
+ },
+ {
+ "label": "丰满区",
+ "value": "220211"
+ },
+ {
+ "label": "永吉县",
+ "value": "220221"
+ },
+ {
+ "label": "吉林经济开发区",
+ "value": "220271"
+ },
+ {
+ "label": "吉林高新技术产业开发区",
+ "value": "220272"
+ },
+ {
+ "label": "吉林中国新加坡食品区",
+ "value": "220273"
+ },
+ {
+ "label": "蛟河市",
+ "value": "220281"
+ },
+ {
+ "label": "桦甸市",
+ "value": "220282"
+ },
+ {
+ "label": "舒兰市",
+ "value": "220283"
+ },
+ {
+ "label": "磐石市",
+ "value": "220284"
+ }
+ ],
+ [{
+ "label": "铁西区",
+ "value": "220302"
+ },
+ {
+ "label": "铁东区",
+ "value": "220303"
+ },
+ {
+ "label": "梨树县",
+ "value": "220322"
+ },
+ {
+ "label": "伊通满族自治县",
+ "value": "220323"
+ },
+ {
+ "label": "公主岭市",
+ "value": "220381"
+ },
+ {
+ "label": "双辽市",
+ "value": "220382"
+ }
+ ],
+ [{
+ "label": "龙山区",
+ "value": "220402"
+ },
+ {
+ "label": "西安区",
+ "value": "220403"
+ },
+ {
+ "label": "东丰县",
+ "value": "220421"
+ },
+ {
+ "label": "东辽县",
+ "value": "220422"
+ }
+ ],
+ [{
+ "label": "东昌区",
+ "value": "220502"
+ },
+ {
+ "label": "二道江区",
+ "value": "220503"
+ },
+ {
+ "label": "通化县",
+ "value": "220521"
+ },
+ {
+ "label": "辉南县",
+ "value": "220523"
+ },
+ {
+ "label": "柳河县",
+ "value": "220524"
+ },
+ {
+ "label": "梅河口市",
+ "value": "220581"
+ },
+ {
+ "label": "集安市",
+ "value": "220582"
+ }
+ ],
+ [{
+ "label": "浑江区",
+ "value": "220602"
+ },
+ {
+ "label": "江源区",
+ "value": "220605"
+ },
+ {
+ "label": "抚松县",
+ "value": "220621"
+ },
+ {
+ "label": "靖宇县",
+ "value": "220622"
+ },
+ {
+ "label": "长白朝鲜族自治县",
+ "value": "220623"
+ },
+ {
+ "label": "临江市",
+ "value": "220681"
+ }
+ ],
+ [{
+ "label": "宁江区",
+ "value": "220702"
+ },
+ {
+ "label": "前郭尔罗斯蒙古族自治县",
+ "value": "220721"
+ },
+ {
+ "label": "长岭县",
+ "value": "220722"
+ },
+ {
+ "label": "乾安县",
+ "value": "220723"
+ },
+ {
+ "label": "吉林松原经济开发区",
+ "value": "220771"
+ },
+ {
+ "label": "扶余市",
+ "value": "220781"
+ }
+ ],
+ [{
+ "label": "洮北区",
+ "value": "220802"
+ },
+ {
+ "label": "镇赉县",
+ "value": "220821"
+ },
+ {
+ "label": "通榆县",
+ "value": "220822"
+ },
+ {
+ "label": "吉林白城经济开发区",
+ "value": "220871"
+ },
+ {
+ "label": "洮南市",
+ "value": "220881"
+ },
+ {
+ "label": "大安市",
+ "value": "220882"
+ }
+ ],
+ [{
+ "label": "延吉市",
+ "value": "222401"
+ },
+ {
+ "label": "图们市",
+ "value": "222402"
+ },
+ {
+ "label": "敦化市",
+ "value": "222403"
+ },
+ {
+ "label": "珲春市",
+ "value": "222404"
+ },
+ {
+ "label": "龙井市",
+ "value": "222405"
+ },
+ {
+ "label": "和龙市",
+ "value": "222406"
+ },
+ {
+ "label": "汪清县",
+ "value": "222424"
+ },
+ {
+ "label": "安图县",
+ "value": "222426"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "道里区",
+ "value": "230102"
+ },
+ {
+ "label": "南岗区",
+ "value": "230103"
+ },
+ {
+ "label": "道外区",
+ "value": "230104"
+ },
+ {
+ "label": "平房区",
+ "value": "230108"
+ },
+ {
+ "label": "松北区",
+ "value": "230109"
+ },
+ {
+ "label": "香坊区",
+ "value": "230110"
+ },
+ {
+ "label": "呼兰区",
+ "value": "230111"
+ },
+ {
+ "label": "阿城区",
+ "value": "230112"
+ },
+ {
+ "label": "双城区",
+ "value": "230113"
+ },
+ {
+ "label": "依兰县",
+ "value": "230123"
+ },
+ {
+ "label": "方正县",
+ "value": "230124"
+ },
+ {
+ "label": "宾县",
+ "value": "230125"
+ },
+ {
+ "label": "巴彦县",
+ "value": "230126"
+ },
+ {
+ "label": "木兰县",
+ "value": "230127"
+ },
+ {
+ "label": "通河县",
+ "value": "230128"
+ },
+ {
+ "label": "延寿县",
+ "value": "230129"
+ },
+ {
+ "label": "尚志市",
+ "value": "230183"
+ },
+ {
+ "label": "五常市",
+ "value": "230184"
+ }
+ ],
+ [{
+ "label": "龙沙区",
+ "value": "230202"
+ },
+ {
+ "label": "建华区",
+ "value": "230203"
+ },
+ {
+ "label": "铁锋区",
+ "value": "230204"
+ },
+ {
+ "label": "昂昂溪区",
+ "value": "230205"
+ },
+ {
+ "label": "富拉尔基区",
+ "value": "230206"
+ },
+ {
+ "label": "碾子山区",
+ "value": "230207"
+ },
+ {
+ "label": "梅里斯达斡尔族区",
+ "value": "230208"
+ },
+ {
+ "label": "龙江县",
+ "value": "230221"
+ },
+ {
+ "label": "依安县",
+ "value": "230223"
+ },
+ {
+ "label": "泰来县",
+ "value": "230224"
+ },
+ {
+ "label": "甘南县",
+ "value": "230225"
+ },
+ {
+ "label": "富裕县",
+ "value": "230227"
+ },
+ {
+ "label": "克山县",
+ "value": "230229"
+ },
+ {
+ "label": "克东县",
+ "value": "230230"
+ },
+ {
+ "label": "拜泉县",
+ "value": "230231"
+ },
+ {
+ "label": "讷河市",
+ "value": "230281"
+ }
+ ],
+ [{
+ "label": "鸡冠区",
+ "value": "230302"
+ },
+ {
+ "label": "恒山区",
+ "value": "230303"
+ },
+ {
+ "label": "滴道区",
+ "value": "230304"
+ },
+ {
+ "label": "梨树区",
+ "value": "230305"
+ },
+ {
+ "label": "城子河区",
+ "value": "230306"
+ },
+ {
+ "label": "麻山区",
+ "value": "230307"
+ },
+ {
+ "label": "鸡东县",
+ "value": "230321"
+ },
+ {
+ "label": "虎林市",
+ "value": "230381"
+ },
+ {
+ "label": "密山市",
+ "value": "230382"
+ }
+ ],
+ [{
+ "label": "向阳区",
+ "value": "230402"
+ },
+ {
+ "label": "工农区",
+ "value": "230403"
+ },
+ {
+ "label": "南山区",
+ "value": "230404"
+ },
+ {
+ "label": "兴安区",
+ "value": "230405"
+ },
+ {
+ "label": "东山区",
+ "value": "230406"
+ },
+ {
+ "label": "兴山区",
+ "value": "230407"
+ },
+ {
+ "label": "萝北县",
+ "value": "230421"
+ },
+ {
+ "label": "绥滨县",
+ "value": "230422"
+ }
+ ],
+ [{
+ "label": "尖山区",
+ "value": "230502"
+ },
+ {
+ "label": "岭东区",
+ "value": "230503"
+ },
+ {
+ "label": "四方台区",
+ "value": "230505"
+ },
+ {
+ "label": "宝山区",
+ "value": "230506"
+ },
+ {
+ "label": "集贤县",
+ "value": "230521"
+ },
+ {
+ "label": "友谊县",
+ "value": "230522"
+ },
+ {
+ "label": "宝清县",
+ "value": "230523"
+ },
+ {
+ "label": "饶河县",
+ "value": "230524"
+ }
+ ],
+ [{
+ "label": "萨尔图区",
+ "value": "230602"
+ },
+ {
+ "label": "龙凤区",
+ "value": "230603"
+ },
+ {
+ "label": "让胡路区",
+ "value": "230604"
+ },
+ {
+ "label": "红岗区",
+ "value": "230605"
+ },
+ {
+ "label": "大同区",
+ "value": "230606"
+ },
+ {
+ "label": "肇州县",
+ "value": "230621"
+ },
+ {
+ "label": "肇源县",
+ "value": "230622"
+ },
+ {
+ "label": "林甸县",
+ "value": "230623"
+ },
+ {
+ "label": "杜尔伯特蒙古族自治县",
+ "value": "230624"
+ },
+ {
+ "label": "大庆高新技术产业开发区",
+ "value": "230671"
+ }
+ ],
+ [{
+ "label": "伊春区",
+ "value": "230702"
+ },
+ {
+ "label": "南岔区",
+ "value": "230703"
+ },
+ {
+ "label": "友好区",
+ "value": "230704"
+ },
+ {
+ "label": "西林区",
+ "value": "230705"
+ },
+ {
+ "label": "翠峦区",
+ "value": "230706"
+ },
+ {
+ "label": "新青区",
+ "value": "230707"
+ },
+ {
+ "label": "美溪区",
+ "value": "230708"
+ },
+ {
+ "label": "金山屯区",
+ "value": "230709"
+ },
+ {
+ "label": "五营区",
+ "value": "230710"
+ },
+ {
+ "label": "乌马河区",
+ "value": "230711"
+ },
+ {
+ "label": "汤旺河区",
+ "value": "230712"
+ },
+ {
+ "label": "带岭区",
+ "value": "230713"
+ },
+ {
+ "label": "乌伊岭区",
+ "value": "230714"
+ },
+ {
+ "label": "红星区",
+ "value": "230715"
+ },
+ {
+ "label": "上甘岭区",
+ "value": "230716"
+ },
+ {
+ "label": "嘉荫县",
+ "value": "230722"
+ },
+ {
+ "label": "铁力市",
+ "value": "230781"
+ }
+ ],
+ [{
+ "label": "向阳区",
+ "value": "230803"
+ },
+ {
+ "label": "前进区",
+ "value": "230804"
+ },
+ {
+ "label": "东风区",
+ "value": "230805"
+ },
+ {
+ "label": "郊区",
+ "value": "230811"
+ },
+ {
+ "label": "桦南县",
+ "value": "230822"
+ },
+ {
+ "label": "桦川县",
+ "value": "230826"
+ },
+ {
+ "label": "汤原县",
+ "value": "230828"
+ },
+ {
+ "label": "同江市",
+ "value": "230881"
+ },
+ {
+ "label": "富锦市",
+ "value": "230882"
+ },
+ {
+ "label": "抚远市",
+ "value": "230883"
+ }
+ ],
+ [{
+ "label": "新兴区",
+ "value": "230902"
+ },
+ {
+ "label": "桃山区",
+ "value": "230903"
+ },
+ {
+ "label": "茄子河区",
+ "value": "230904"
+ },
+ {
+ "label": "勃利县",
+ "value": "230921"
+ }
+ ],
+ [{
+ "label": "东安区",
+ "value": "231002"
+ },
+ {
+ "label": "阳明区",
+ "value": "231003"
+ },
+ {
+ "label": "爱民区",
+ "value": "231004"
+ },
+ {
+ "label": "西安区",
+ "value": "231005"
+ },
+ {
+ "label": "林口县",
+ "value": "231025"
+ },
+ {
+ "label": "牡丹江经济技术开发区",
+ "value": "231071"
+ },
+ {
+ "label": "绥芬河市",
+ "value": "231081"
+ },
+ {
+ "label": "海林市",
+ "value": "231083"
+ },
+ {
+ "label": "宁安市",
+ "value": "231084"
+ },
+ {
+ "label": "穆棱市",
+ "value": "231085"
+ },
+ {
+ "label": "东宁市",
+ "value": "231086"
+ }
+ ],
+ [{
+ "label": "爱辉区",
+ "value": "231102"
+ },
+ {
+ "label": "嫩江县",
+ "value": "231121"
+ },
+ {
+ "label": "逊克县",
+ "value": "231123"
+ },
+ {
+ "label": "孙吴县",
+ "value": "231124"
+ },
+ {
+ "label": "北安市",
+ "value": "231181"
+ },
+ {
+ "label": "五大连池市",
+ "value": "231182"
+ }
+ ],
+ [{
+ "label": "北林区",
+ "value": "231202"
+ },
+ {
+ "label": "望奎县",
+ "value": "231221"
+ },
+ {
+ "label": "兰西县",
+ "value": "231222"
+ },
+ {
+ "label": "青冈县",
+ "value": "231223"
+ },
+ {
+ "label": "庆安县",
+ "value": "231224"
+ },
+ {
+ "label": "明水县",
+ "value": "231225"
+ },
+ {
+ "label": "绥棱县",
+ "value": "231226"
+ },
+ {
+ "label": "安达市",
+ "value": "231281"
+ },
+ {
+ "label": "肇东市",
+ "value": "231282"
+ },
+ {
+ "label": "海伦市",
+ "value": "231283"
+ }
+ ],
+ [{
+ "label": "加格达奇区",
+ "value": "232701"
+ },
+ {
+ "label": "松岭区",
+ "value": "232702"
+ },
+ {
+ "label": "新林区",
+ "value": "232703"
+ },
+ {
+ "label": "呼中区",
+ "value": "232704"
+ },
+ {
+ "label": "呼玛县",
+ "value": "232721"
+ },
+ {
+ "label": "塔河县",
+ "value": "232722"
+ },
+ {
+ "label": "漠河县",
+ "value": "232723"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "黄浦区",
+ "value": "310101"
+ },
+ {
+ "label": "徐汇区",
+ "value": "310104"
+ },
+ {
+ "label": "长宁区",
+ "value": "310105"
+ },
+ {
+ "label": "静安区",
+ "value": "310106"
+ },
+ {
+ "label": "普陀区",
+ "value": "310107"
+ },
+ {
+ "label": "虹口区",
+ "value": "310109"
+ },
+ {
+ "label": "杨浦区",
+ "value": "310110"
+ },
+ {
+ "label": "闵行区",
+ "value": "310112"
+ },
+ {
+ "label": "宝山区",
+ "value": "310113"
+ },
+ {
+ "label": "嘉定区",
+ "value": "310114"
+ },
+ {
+ "label": "浦东新区",
+ "value": "310115"
+ },
+ {
+ "label": "金山区",
+ "value": "310116"
+ },
+ {
+ "label": "松江区",
+ "value": "310117"
+ },
+ {
+ "label": "青浦区",
+ "value": "310118"
+ },
+ {
+ "label": "奉贤区",
+ "value": "310120"
+ },
+ {
+ "label": "崇明区",
+ "value": "310151"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "玄武区",
+ "value": "320102"
+ },
+ {
+ "label": "秦淮区",
+ "value": "320104"
+ },
+ {
+ "label": "建邺区",
+ "value": "320105"
+ },
+ {
+ "label": "鼓楼区",
+ "value": "320106"
+ },
+ {
+ "label": "浦口区",
+ "value": "320111"
+ },
+ {
+ "label": "栖霞区",
+ "value": "320113"
+ },
+ {
+ "label": "雨花台区",
+ "value": "320114"
+ },
+ {
+ "label": "江宁区",
+ "value": "320115"
+ },
+ {
+ "label": "六合区",
+ "value": "320116"
+ },
+ {
+ "label": "溧水区",
+ "value": "320117"
+ },
+ {
+ "label": "高淳区",
+ "value": "320118"
+ }
+ ],
+ [{
+ "label": "锡山区",
+ "value": "320205"
+ },
+ {
+ "label": "惠山区",
+ "value": "320206"
+ },
+ {
+ "label": "滨湖区",
+ "value": "320211"
+ },
+ {
+ "label": "梁溪区",
+ "value": "320213"
+ },
+ {
+ "label": "新吴区",
+ "value": "320214"
+ },
+ {
+ "label": "江阴市",
+ "value": "320281"
+ },
+ {
+ "label": "宜兴市",
+ "value": "320282"
+ }
+ ],
+ [{
+ "label": "鼓楼区",
+ "value": "320302"
+ },
+ {
+ "label": "云龙区",
+ "value": "320303"
+ },
+ {
+ "label": "贾汪区",
+ "value": "320305"
+ },
+ {
+ "label": "泉山区",
+ "value": "320311"
+ },
+ {
+ "label": "铜山区",
+ "value": "320312"
+ },
+ {
+ "label": "丰县",
+ "value": "320321"
+ },
+ {
+ "label": "沛县",
+ "value": "320322"
+ },
+ {
+ "label": "睢宁县",
+ "value": "320324"
+ },
+ {
+ "label": "徐州经济技术开发区",
+ "value": "320371"
+ },
+ {
+ "label": "新沂市",
+ "value": "320381"
+ },
+ {
+ "label": "邳州市",
+ "value": "320382"
+ }
+ ],
+ [{
+ "label": "天宁区",
+ "value": "320402"
+ },
+ {
+ "label": "钟楼区",
+ "value": "320404"
+ },
+ {
+ "label": "新北区",
+ "value": "320411"
+ },
+ {
+ "label": "武进区",
+ "value": "320412"
+ },
+ {
+ "label": "金坛区",
+ "value": "320413"
+ },
+ {
+ "label": "溧阳市",
+ "value": "320481"
+ }
+ ],
+ [{
+ "label": "虎丘区",
+ "value": "320505"
+ },
+ {
+ "label": "吴中区",
+ "value": "320506"
+ },
+ {
+ "label": "相城区",
+ "value": "320507"
+ },
+ {
+ "label": "姑苏区",
+ "value": "320508"
+ },
+ {
+ "label": "吴江区",
+ "value": "320509"
+ },
+ {
+ "label": "苏州工业园区",
+ "value": "320571"
+ },
+ {
+ "label": "常熟市",
+ "value": "320581"
+ },
+ {
+ "label": "张家港市",
+ "value": "320582"
+ },
+ {
+ "label": "昆山市",
+ "value": "320583"
+ },
+ {
+ "label": "太仓市",
+ "value": "320585"
+ }
+ ],
+ [{
+ "label": "崇川区",
+ "value": "320602"
+ },
+ {
+ "label": "港闸区",
+ "value": "320611"
+ },
+ {
+ "label": "通州区",
+ "value": "320612"
+ },
+ {
+ "label": "海安县",
+ "value": "320621"
+ },
+ {
+ "label": "如东县",
+ "value": "320623"
+ },
+ {
+ "label": "南通经济技术开发区",
+ "value": "320671"
+ },
+ {
+ "label": "启东市",
+ "value": "320681"
+ },
+ {
+ "label": "如皋市",
+ "value": "320682"
+ },
+ {
+ "label": "海门市",
+ "value": "320684"
+ }
+ ],
+ [{
+ "label": "连云区",
+ "value": "320703"
+ },
+ {
+ "label": "海州区",
+ "value": "320706"
+ },
+ {
+ "label": "赣榆区",
+ "value": "320707"
+ },
+ {
+ "label": "东海县",
+ "value": "320722"
+ },
+ {
+ "label": "灌云县",
+ "value": "320723"
+ },
+ {
+ "label": "灌南县",
+ "value": "320724"
+ },
+ {
+ "label": "连云港经济技术开发区",
+ "value": "320771"
+ },
+ {
+ "label": "连云港高新技术产业开发区",
+ "value": "320772"
+ }
+ ],
+ [{
+ "label": "淮安区",
+ "value": "320803"
+ },
+ {
+ "label": "淮阴区",
+ "value": "320804"
+ },
+ {
+ "label": "清江浦区",
+ "value": "320812"
+ },
+ {
+ "label": "洪泽区",
+ "value": "320813"
+ },
+ {
+ "label": "涟水县",
+ "value": "320826"
+ },
+ {
+ "label": "盱眙县",
+ "value": "320830"
+ },
+ {
+ "label": "金湖县",
+ "value": "320831"
+ },
+ {
+ "label": "淮安经济技术开发区",
+ "value": "320871"
+ }
+ ],
+ [{
+ "label": "亭湖区",
+ "value": "320902"
+ },
+ {
+ "label": "盐都区",
+ "value": "320903"
+ },
+ {
+ "label": "大丰区",
+ "value": "320904"
+ },
+ {
+ "label": "响水县",
+ "value": "320921"
+ },
+ {
+ "label": "滨海县",
+ "value": "320922"
+ },
+ {
+ "label": "阜宁县",
+ "value": "320923"
+ },
+ {
+ "label": "射阳县",
+ "value": "320924"
+ },
+ {
+ "label": "建湖县",
+ "value": "320925"
+ },
+ {
+ "label": "盐城经济技术开发区",
+ "value": "320971"
+ },
+ {
+ "label": "东台市",
+ "value": "320981"
+ }
+ ],
+ [{
+ "label": "广陵区",
+ "value": "321002"
+ },
+ {
+ "label": "邗江区",
+ "value": "321003"
+ },
+ {
+ "label": "江都区",
+ "value": "321012"
+ },
+ {
+ "label": "宝应县",
+ "value": "321023"
+ },
+ {
+ "label": "扬州经济技术开发区",
+ "value": "321071"
+ },
+ {
+ "label": "仪征市",
+ "value": "321081"
+ },
+ {
+ "label": "高邮市",
+ "value": "321084"
+ }
+ ],
+ [{
+ "label": "京口区",
+ "value": "321102"
+ },
+ {
+ "label": "润州区",
+ "value": "321111"
+ },
+ {
+ "label": "丹徒区",
+ "value": "321112"
+ },
+ {
+ "label": "镇江新区",
+ "value": "321171"
+ },
+ {
+ "label": "丹阳市",
+ "value": "321181"
+ },
+ {
+ "label": "扬中市",
+ "value": "321182"
+ },
+ {
+ "label": "句容市",
+ "value": "321183"
+ }
+ ],
+ [{
+ "label": "海陵区",
+ "value": "321202"
+ },
+ {
+ "label": "高港区",
+ "value": "321203"
+ },
+ {
+ "label": "姜堰区",
+ "value": "321204"
+ },
+ {
+ "label": "泰州医药高新技术产业开发区",
+ "value": "321271"
+ },
+ {
+ "label": "兴化市",
+ "value": "321281"
+ },
+ {
+ "label": "靖江市",
+ "value": "321282"
+ },
+ {
+ "label": "泰兴市",
+ "value": "321283"
+ }
+ ],
+ [{
+ "label": "宿城区",
+ "value": "321302"
+ },
+ {
+ "label": "宿豫区",
+ "value": "321311"
+ },
+ {
+ "label": "沭阳县",
+ "value": "321322"
+ },
+ {
+ "label": "泗阳县",
+ "value": "321323"
+ },
+ {
+ "label": "泗洪县",
+ "value": "321324"
+ },
+ {
+ "label": "宿迁经济技术开发区",
+ "value": "321371"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "上城区",
+ "value": "330102"
+ },
+ {
+ "label": "下城区",
+ "value": "330103"
+ },
+ {
+ "label": "江干区",
+ "value": "330104"
+ },
+ {
+ "label": "拱墅区",
+ "value": "330105"
+ },
+ {
+ "label": "西湖区",
+ "value": "330106"
+ },
+ {
+ "label": "滨江区",
+ "value": "330108"
+ },
+ {
+ "label": "萧山区",
+ "value": "330109"
+ },
+ {
+ "label": "余杭区",
+ "value": "330110"
+ },
+ {
+ "label": "富阳区",
+ "value": "330111"
+ },
+ {
+ "label": "临安区",
+ "value": "330112"
+ },
+ {
+ "label": "桐庐县",
+ "value": "330122"
+ },
+ {
+ "label": "淳安县",
+ "value": "330127"
+ },
+ {
+ "label": "建德市",
+ "value": "330182"
+ }
+ ],
+ [{
+ "label": "海曙区",
+ "value": "330203"
+ },
+ {
+ "label": "江北区",
+ "value": "330205"
+ },
+ {
+ "label": "北仑区",
+ "value": "330206"
+ },
+ {
+ "label": "镇海区",
+ "value": "330211"
+ },
+ {
+ "label": "鄞州区",
+ "value": "330212"
+ },
+ {
+ "label": "奉化区",
+ "value": "330213"
+ },
+ {
+ "label": "象山县",
+ "value": "330225"
+ },
+ {
+ "label": "宁海县",
+ "value": "330226"
+ },
+ {
+ "label": "余姚市",
+ "value": "330281"
+ },
+ {
+ "label": "慈溪市",
+ "value": "330282"
+ }
+ ],
+ [{
+ "label": "鹿城区",
+ "value": "330302"
+ },
+ {
+ "label": "龙湾区",
+ "value": "330303"
+ },
+ {
+ "label": "瓯海区",
+ "value": "330304"
+ },
+ {
+ "label": "洞头区",
+ "value": "330305"
+ },
+ {
+ "label": "永嘉县",
+ "value": "330324"
+ },
+ {
+ "label": "平阳县",
+ "value": "330326"
+ },
+ {
+ "label": "苍南县",
+ "value": "330327"
+ },
+ {
+ "label": "文成县",
+ "value": "330328"
+ },
+ {
+ "label": "泰顺县",
+ "value": "330329"
+ },
+ {
+ "label": "温州经济技术开发区",
+ "value": "330371"
+ },
+ {
+ "label": "瑞安市",
+ "value": "330381"
+ },
+ {
+ "label": "乐清市",
+ "value": "330382"
+ }
+ ],
+ [{
+ "label": "南湖区",
+ "value": "330402"
+ },
+ {
+ "label": "秀洲区",
+ "value": "330411"
+ },
+ {
+ "label": "嘉善县",
+ "value": "330421"
+ },
+ {
+ "label": "海盐县",
+ "value": "330424"
+ },
+ {
+ "label": "海宁市",
+ "value": "330481"
+ },
+ {
+ "label": "平湖市",
+ "value": "330482"
+ },
+ {
+ "label": "桐乡市",
+ "value": "330483"
+ }
+ ],
+ [{
+ "label": "吴兴区",
+ "value": "330502"
+ },
+ {
+ "label": "南浔区",
+ "value": "330503"
+ },
+ {
+ "label": "德清县",
+ "value": "330521"
+ },
+ {
+ "label": "长兴县",
+ "value": "330522"
+ },
+ {
+ "label": "安吉县",
+ "value": "330523"
+ }
+ ],
+ [{
+ "label": "越城区",
+ "value": "330602"
+ },
+ {
+ "label": "柯桥区",
+ "value": "330603"
+ },
+ {
+ "label": "上虞区",
+ "value": "330604"
+ },
+ {
+ "label": "新昌县",
+ "value": "330624"
+ },
+ {
+ "label": "诸暨市",
+ "value": "330681"
+ },
+ {
+ "label": "嵊州市",
+ "value": "330683"
+ }
+ ],
+ [{
+ "label": "婺城区",
+ "value": "330702"
+ },
+ {
+ "label": "金东区",
+ "value": "330703"
+ },
+ {
+ "label": "武义县",
+ "value": "330723"
+ },
+ {
+ "label": "浦江县",
+ "value": "330726"
+ },
+ {
+ "label": "磐安县",
+ "value": "330727"
+ },
+ {
+ "label": "兰溪市",
+ "value": "330781"
+ },
+ {
+ "label": "义乌市",
+ "value": "330782"
+ },
+ {
+ "label": "东阳市",
+ "value": "330783"
+ },
+ {
+ "label": "永康市",
+ "value": "330784"
+ }
+ ],
+ [{
+ "label": "柯城区",
+ "value": "330802"
+ },
+ {
+ "label": "衢江区",
+ "value": "330803"
+ },
+ {
+ "label": "常山县",
+ "value": "330822"
+ },
+ {
+ "label": "开化县",
+ "value": "330824"
+ },
+ {
+ "label": "龙游县",
+ "value": "330825"
+ },
+ {
+ "label": "江山市",
+ "value": "330881"
+ }
+ ],
+ [{
+ "label": "定海区",
+ "value": "330902"
+ },
+ {
+ "label": "普陀区",
+ "value": "330903"
+ },
+ {
+ "label": "岱山县",
+ "value": "330921"
+ },
+ {
+ "label": "嵊泗县",
+ "value": "330922"
+ }
+ ],
+ [{
+ "label": "椒江区",
+ "value": "331002"
+ },
+ {
+ "label": "黄岩区",
+ "value": "331003"
+ },
+ {
+ "label": "路桥区",
+ "value": "331004"
+ },
+ {
+ "label": "三门县",
+ "value": "331022"
+ },
+ {
+ "label": "天台县",
+ "value": "331023"
+ },
+ {
+ "label": "仙居县",
+ "value": "331024"
+ },
+ {
+ "label": "温岭市",
+ "value": "331081"
+ },
+ {
+ "label": "临海市",
+ "value": "331082"
+ },
+ {
+ "label": "玉环市",
+ "value": "331083"
+ }
+ ],
+ [{
+ "label": "莲都区",
+ "value": "331102"
+ },
+ {
+ "label": "青田县",
+ "value": "331121"
+ },
+ {
+ "label": "缙云县",
+ "value": "331122"
+ },
+ {
+ "label": "遂昌县",
+ "value": "331123"
+ },
+ {
+ "label": "松阳县",
+ "value": "331124"
+ },
+ {
+ "label": "云和县",
+ "value": "331125"
+ },
+ {
+ "label": "庆元县",
+ "value": "331126"
+ },
+ {
+ "label": "景宁畲族自治县",
+ "value": "331127"
+ },
+ {
+ "label": "龙泉市",
+ "value": "331181"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "瑶海区",
+ "value": "340102"
+ },
+ {
+ "label": "庐阳区",
+ "value": "340103"
+ },
+ {
+ "label": "蜀山区",
+ "value": "340104"
+ },
+ {
+ "label": "包河区",
+ "value": "340111"
+ },
+ {
+ "label": "长丰县",
+ "value": "340121"
+ },
+ {
+ "label": "肥东县",
+ "value": "340122"
+ },
+ {
+ "label": "肥西县",
+ "value": "340123"
+ },
+ {
+ "label": "庐江县",
+ "value": "340124"
+ },
+ {
+ "label": "合肥高新技术产业开发区",
+ "value": "340171"
+ },
+ {
+ "label": "合肥经济技术开发区",
+ "value": "340172"
+ },
+ {
+ "label": "合肥新站高新技术产业开发区",
+ "value": "340173"
+ },
+ {
+ "label": "巢湖市",
+ "value": "340181"
+ }
+ ],
+ [{
+ "label": "镜湖区",
+ "value": "340202"
+ },
+ {
+ "label": "弋江区",
+ "value": "340203"
+ },
+ {
+ "label": "鸠江区",
+ "value": "340207"
+ },
+ {
+ "label": "三山区",
+ "value": "340208"
+ },
+ {
+ "label": "芜湖县",
+ "value": "340221"
+ },
+ {
+ "label": "繁昌县",
+ "value": "340222"
+ },
+ {
+ "label": "南陵县",
+ "value": "340223"
+ },
+ {
+ "label": "无为县",
+ "value": "340225"
+ },
+ {
+ "label": "芜湖经济技术开发区",
+ "value": "340271"
+ },
+ {
+ "label": "安徽芜湖长江大桥经济开发区",
+ "value": "340272"
+ }
+ ],
+ [{
+ "label": "龙子湖区",
+ "value": "340302"
+ },
+ {
+ "label": "蚌山区",
+ "value": "340303"
+ },
+ {
+ "label": "禹会区",
+ "value": "340304"
+ },
+ {
+ "label": "淮上区",
+ "value": "340311"
+ },
+ {
+ "label": "怀远县",
+ "value": "340321"
+ },
+ {
+ "label": "五河县",
+ "value": "340322"
+ },
+ {
+ "label": "固镇县",
+ "value": "340323"
+ },
+ {
+ "label": "蚌埠市高新技术开发区",
+ "value": "340371"
+ },
+ {
+ "label": "蚌埠市经济开发区",
+ "value": "340372"
+ }
+ ],
+ [{
+ "label": "大通区",
+ "value": "340402"
+ },
+ {
+ "label": "田家庵区",
+ "value": "340403"
+ },
+ {
+ "label": "谢家集区",
+ "value": "340404"
+ },
+ {
+ "label": "八公山区",
+ "value": "340405"
+ },
+ {
+ "label": "潘集区",
+ "value": "340406"
+ },
+ {
+ "label": "凤台县",
+ "value": "340421"
+ },
+ {
+ "label": "寿县",
+ "value": "340422"
+ }
+ ],
+ [{
+ "label": "花山区",
+ "value": "340503"
+ },
+ {
+ "label": "雨山区",
+ "value": "340504"
+ },
+ {
+ "label": "博望区",
+ "value": "340506"
+ },
+ {
+ "label": "当涂县",
+ "value": "340521"
+ },
+ {
+ "label": "含山县",
+ "value": "340522"
+ },
+ {
+ "label": "和县",
+ "value": "340523"
+ }
+ ],
+ [{
+ "label": "杜集区",
+ "value": "340602"
+ },
+ {
+ "label": "相山区",
+ "value": "340603"
+ },
+ {
+ "label": "烈山区",
+ "value": "340604"
+ },
+ {
+ "label": "濉溪县",
+ "value": "340621"
+ }
+ ],
+ [{
+ "label": "铜官区",
+ "value": "340705"
+ },
+ {
+ "label": "义安区",
+ "value": "340706"
+ },
+ {
+ "label": "郊区",
+ "value": "340711"
+ },
+ {
+ "label": "枞阳县",
+ "value": "340722"
+ }
+ ],
+ [{
+ "label": "迎江区",
+ "value": "340802"
+ },
+ {
+ "label": "大观区",
+ "value": "340803"
+ },
+ {
+ "label": "宜秀区",
+ "value": "340811"
+ },
+ {
+ "label": "怀宁县",
+ "value": "340822"
+ },
+ {
+ "label": "潜山县",
+ "value": "340824"
+ },
+ {
+ "label": "太湖县",
+ "value": "340825"
+ },
+ {
+ "label": "宿松县",
+ "value": "340826"
+ },
+ {
+ "label": "望江县",
+ "value": "340827"
+ },
+ {
+ "label": "岳西县",
+ "value": "340828"
+ },
+ {
+ "label": "安徽安庆经济开发区",
+ "value": "340871"
+ },
+ {
+ "label": "桐城市",
+ "value": "340881"
+ }
+ ],
+ [{
+ "label": "屯溪区",
+ "value": "341002"
+ },
+ {
+ "label": "黄山区",
+ "value": "341003"
+ },
+ {
+ "label": "徽州区",
+ "value": "341004"
+ },
+ {
+ "label": "歙县",
+ "value": "341021"
+ },
+ {
+ "label": "休宁县",
+ "value": "341022"
+ },
+ {
+ "label": "黟县",
+ "value": "341023"
+ },
+ {
+ "label": "祁门县",
+ "value": "341024"
+ }
+ ],
+ [{
+ "label": "琅琊区",
+ "value": "341102"
+ },
+ {
+ "label": "南谯区",
+ "value": "341103"
+ },
+ {
+ "label": "来安县",
+ "value": "341122"
+ },
+ {
+ "label": "全椒县",
+ "value": "341124"
+ },
+ {
+ "label": "定远县",
+ "value": "341125"
+ },
+ {
+ "label": "凤阳县",
+ "value": "341126"
+ },
+ {
+ "label": "苏滁现代产业园",
+ "value": "341171"
+ },
+ {
+ "label": "滁州经济技术开发区",
+ "value": "341172"
+ },
+ {
+ "label": "天长市",
+ "value": "341181"
+ },
+ {
+ "label": "明光市",
+ "value": "341182"
+ }
+ ],
+ [{
+ "label": "颍州区",
+ "value": "341202"
+ },
+ {
+ "label": "颍东区",
+ "value": "341203"
+ },
+ {
+ "label": "颍泉区",
+ "value": "341204"
+ },
+ {
+ "label": "临泉县",
+ "value": "341221"
+ },
+ {
+ "label": "太和县",
+ "value": "341222"
+ },
+ {
+ "label": "阜南县",
+ "value": "341225"
+ },
+ {
+ "label": "颍上县",
+ "value": "341226"
+ },
+ {
+ "label": "阜阳合肥现代产业园区",
+ "value": "341271"
+ },
+ {
+ "label": "阜阳经济技术开发区",
+ "value": "341272"
+ },
+ {
+ "label": "界首市",
+ "value": "341282"
+ }
+ ],
+ [{
+ "label": "埇桥区",
+ "value": "341302"
+ },
+ {
+ "label": "砀山县",
+ "value": "341321"
+ },
+ {
+ "label": "萧县",
+ "value": "341322"
+ },
+ {
+ "label": "灵璧县",
+ "value": "341323"
+ },
+ {
+ "label": "泗县",
+ "value": "341324"
+ },
+ {
+ "label": "宿州马鞍山现代产业园区",
+ "value": "341371"
+ },
+ {
+ "label": "宿州经济技术开发区",
+ "value": "341372"
+ }
+ ],
+ [{
+ "label": "金安区",
+ "value": "341502"
+ },
+ {
+ "label": "裕安区",
+ "value": "341503"
+ },
+ {
+ "label": "叶集区",
+ "value": "341504"
+ },
+ {
+ "label": "霍邱县",
+ "value": "341522"
+ },
+ {
+ "label": "舒城县",
+ "value": "341523"
+ },
+ {
+ "label": "金寨县",
+ "value": "341524"
+ },
+ {
+ "label": "霍山县",
+ "value": "341525"
+ }
+ ],
+ [{
+ "label": "谯城区",
+ "value": "341602"
+ },
+ {
+ "label": "涡阳县",
+ "value": "341621"
+ },
+ {
+ "label": "蒙城县",
+ "value": "341622"
+ },
+ {
+ "label": "利辛县",
+ "value": "341623"
+ }
+ ],
+ [{
+ "label": "贵池区",
+ "value": "341702"
+ },
+ {
+ "label": "东至县",
+ "value": "341721"
+ },
+ {
+ "label": "石台县",
+ "value": "341722"
+ },
+ {
+ "label": "青阳县",
+ "value": "341723"
+ }
+ ],
+ [{
+ "label": "宣州区",
+ "value": "341802"
+ },
+ {
+ "label": "郎溪县",
+ "value": "341821"
+ },
+ {
+ "label": "广德县",
+ "value": "341822"
+ },
+ {
+ "label": "泾县",
+ "value": "341823"
+ },
+ {
+ "label": "绩溪县",
+ "value": "341824"
+ },
+ {
+ "label": "旌德县",
+ "value": "341825"
+ },
+ {
+ "label": "宣城市经济开发区",
+ "value": "341871"
+ },
+ {
+ "label": "宁国市",
+ "value": "341881"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "鼓楼区",
+ "value": "350102"
+ },
+ {
+ "label": "台江区",
+ "value": "350103"
+ },
+ {
+ "label": "仓山区",
+ "value": "350104"
+ },
+ {
+ "label": "马尾区",
+ "value": "350105"
+ },
+ {
+ "label": "晋安区",
+ "value": "350111"
+ },
+ {
+ "label": "闽侯县",
+ "value": "350121"
+ },
+ {
+ "label": "连江县",
+ "value": "350122"
+ },
+ {
+ "label": "罗源县",
+ "value": "350123"
+ },
+ {
+ "label": "闽清县",
+ "value": "350124"
+ },
+ {
+ "label": "永泰县",
+ "value": "350125"
+ },
+ {
+ "label": "平潭县",
+ "value": "350128"
+ },
+ {
+ "label": "福清市",
+ "value": "350181"
+ },
+ {
+ "label": "长乐市",
+ "value": "350182"
+ }
+ ],
+ [{
+ "label": "思明区",
+ "value": "350203"
+ },
+ {
+ "label": "海沧区",
+ "value": "350205"
+ },
+ {
+ "label": "湖里区",
+ "value": "350206"
+ },
+ {
+ "label": "集美区",
+ "value": "350211"
+ },
+ {
+ "label": "同安区",
+ "value": "350212"
+ },
+ {
+ "label": "翔安区",
+ "value": "350213"
+ }
+ ],
+ [{
+ "label": "城厢区",
+ "value": "350302"
+ },
+ {
+ "label": "涵江区",
+ "value": "350303"
+ },
+ {
+ "label": "荔城区",
+ "value": "350304"
+ },
+ {
+ "label": "秀屿区",
+ "value": "350305"
+ },
+ {
+ "label": "仙游县",
+ "value": "350322"
+ }
+ ],
+ [{
+ "label": "梅列区",
+ "value": "350402"
+ },
+ {
+ "label": "三元区",
+ "value": "350403"
+ },
+ {
+ "label": "明溪县",
+ "value": "350421"
+ },
+ {
+ "label": "清流县",
+ "value": "350423"
+ },
+ {
+ "label": "宁化县",
+ "value": "350424"
+ },
+ {
+ "label": "大田县",
+ "value": "350425"
+ },
+ {
+ "label": "尤溪县",
+ "value": "350426"
+ },
+ {
+ "label": "沙县",
+ "value": "350427"
+ },
+ {
+ "label": "将乐县",
+ "value": "350428"
+ },
+ {
+ "label": "泰宁县",
+ "value": "350429"
+ },
+ {
+ "label": "建宁县",
+ "value": "350430"
+ },
+ {
+ "label": "永安市",
+ "value": "350481"
+ }
+ ],
+ [{
+ "label": "鲤城区",
+ "value": "350502"
+ },
+ {
+ "label": "丰泽区",
+ "value": "350503"
+ },
+ {
+ "label": "洛江区",
+ "value": "350504"
+ },
+ {
+ "label": "泉港区",
+ "value": "350505"
+ },
+ {
+ "label": "惠安县",
+ "value": "350521"
+ },
+ {
+ "label": "安溪县",
+ "value": "350524"
+ },
+ {
+ "label": "永春县",
+ "value": "350525"
+ },
+ {
+ "label": "德化县",
+ "value": "350526"
+ },
+ {
+ "label": "金门县",
+ "value": "350527"
+ },
+ {
+ "label": "石狮市",
+ "value": "350581"
+ },
+ {
+ "label": "晋江市",
+ "value": "350582"
+ },
+ {
+ "label": "南安市",
+ "value": "350583"
+ }
+ ],
+ [{
+ "label": "芗城区",
+ "value": "350602"
+ },
+ {
+ "label": "龙文区",
+ "value": "350603"
+ },
+ {
+ "label": "云霄县",
+ "value": "350622"
+ },
+ {
+ "label": "漳浦县",
+ "value": "350623"
+ },
+ {
+ "label": "诏安县",
+ "value": "350624"
+ },
+ {
+ "label": "长泰县",
+ "value": "350625"
+ },
+ {
+ "label": "东山县",
+ "value": "350626"
+ },
+ {
+ "label": "南靖县",
+ "value": "350627"
+ },
+ {
+ "label": "平和县",
+ "value": "350628"
+ },
+ {
+ "label": "华安县",
+ "value": "350629"
+ },
+ {
+ "label": "龙海市",
+ "value": "350681"
+ }
+ ],
+ [{
+ "label": "延平区",
+ "value": "350702"
+ },
+ {
+ "label": "建阳区",
+ "value": "350703"
+ },
+ {
+ "label": "顺昌县",
+ "value": "350721"
+ },
+ {
+ "label": "浦城县",
+ "value": "350722"
+ },
+ {
+ "label": "光泽县",
+ "value": "350723"
+ },
+ {
+ "label": "松溪县",
+ "value": "350724"
+ },
+ {
+ "label": "政和县",
+ "value": "350725"
+ },
+ {
+ "label": "邵武市",
+ "value": "350781"
+ },
+ {
+ "label": "武夷山市",
+ "value": "350782"
+ },
+ {
+ "label": "建瓯市",
+ "value": "350783"
+ }
+ ],
+ [{
+ "label": "新罗区",
+ "value": "350802"
+ },
+ {
+ "label": "永定区",
+ "value": "350803"
+ },
+ {
+ "label": "长汀县",
+ "value": "350821"
+ },
+ {
+ "label": "上杭县",
+ "value": "350823"
+ },
+ {
+ "label": "武平县",
+ "value": "350824"
+ },
+ {
+ "label": "连城县",
+ "value": "350825"
+ },
+ {
+ "label": "漳平市",
+ "value": "350881"
+ }
+ ],
+ [{
+ "label": "蕉城区",
+ "value": "350902"
+ },
+ {
+ "label": "霞浦县",
+ "value": "350921"
+ },
+ {
+ "label": "古田县",
+ "value": "350922"
+ },
+ {
+ "label": "屏南县",
+ "value": "350923"
+ },
+ {
+ "label": "寿宁县",
+ "value": "350924"
+ },
+ {
+ "label": "周宁县",
+ "value": "350925"
+ },
+ {
+ "label": "柘荣县",
+ "value": "350926"
+ },
+ {
+ "label": "福安市",
+ "value": "350981"
+ },
+ {
+ "label": "福鼎市",
+ "value": "350982"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "东湖区",
+ "value": "360102"
+ },
+ {
+ "label": "西湖区",
+ "value": "360103"
+ },
+ {
+ "label": "青云谱区",
+ "value": "360104"
+ },
+ {
+ "label": "湾里区",
+ "value": "360105"
+ },
+ {
+ "label": "青山湖区",
+ "value": "360111"
+ },
+ {
+ "label": "新建区",
+ "value": "360112"
+ },
+ {
+ "label": "南昌县",
+ "value": "360121"
+ },
+ {
+ "label": "安义县",
+ "value": "360123"
+ },
+ {
+ "label": "进贤县",
+ "value": "360124"
+ }
+ ],
+ [{
+ "label": "昌江区",
+ "value": "360202"
+ },
+ {
+ "label": "珠山区",
+ "value": "360203"
+ },
+ {
+ "label": "浮梁县",
+ "value": "360222"
+ },
+ {
+ "label": "乐平市",
+ "value": "360281"
+ }
+ ],
+ [{
+ "label": "安源区",
+ "value": "360302"
+ },
+ {
+ "label": "湘东区",
+ "value": "360313"
+ },
+ {
+ "label": "莲花县",
+ "value": "360321"
+ },
+ {
+ "label": "上栗县",
+ "value": "360322"
+ },
+ {
+ "label": "芦溪县",
+ "value": "360323"
+ }
+ ],
+ [{
+ "label": "濂溪区",
+ "value": "360402"
+ },
+ {
+ "label": "浔阳区",
+ "value": "360403"
+ },
+ {
+ "label": "柴桑区",
+ "value": "360404"
+ },
+ {
+ "label": "武宁县",
+ "value": "360423"
+ },
+ {
+ "label": "修水县",
+ "value": "360424"
+ },
+ {
+ "label": "永修县",
+ "value": "360425"
+ },
+ {
+ "label": "德安县",
+ "value": "360426"
+ },
+ {
+ "label": "都昌县",
+ "value": "360428"
+ },
+ {
+ "label": "湖口县",
+ "value": "360429"
+ },
+ {
+ "label": "彭泽县",
+ "value": "360430"
+ },
+ {
+ "label": "瑞昌市",
+ "value": "360481"
+ },
+ {
+ "label": "共青城市",
+ "value": "360482"
+ },
+ {
+ "label": "庐山市",
+ "value": "360483"
+ }
+ ],
+ [{
+ "label": "渝水区",
+ "value": "360502"
+ },
+ {
+ "label": "分宜县",
+ "value": "360521"
+ }
+ ],
+ [{
+ "label": "月湖区",
+ "value": "360602"
+ },
+ {
+ "label": "余江县",
+ "value": "360622"
+ },
+ {
+ "label": "贵溪市",
+ "value": "360681"
+ }
+ ],
+ [{
+ "label": "章贡区",
+ "value": "360702"
+ },
+ {
+ "label": "南康区",
+ "value": "360703"
+ },
+ {
+ "label": "赣县区",
+ "value": "360704"
+ },
+ {
+ "label": "信丰县",
+ "value": "360722"
+ },
+ {
+ "label": "大余县",
+ "value": "360723"
+ },
+ {
+ "label": "上犹县",
+ "value": "360724"
+ },
+ {
+ "label": "崇义县",
+ "value": "360725"
+ },
+ {
+ "label": "安远县",
+ "value": "360726"
+ },
+ {
+ "label": "龙南县",
+ "value": "360727"
+ },
+ {
+ "label": "定南县",
+ "value": "360728"
+ },
+ {
+ "label": "全南县",
+ "value": "360729"
+ },
+ {
+ "label": "宁都县",
+ "value": "360730"
+ },
+ {
+ "label": "于都县",
+ "value": "360731"
+ },
+ {
+ "label": "兴国县",
+ "value": "360732"
+ },
+ {
+ "label": "会昌县",
+ "value": "360733"
+ },
+ {
+ "label": "寻乌县",
+ "value": "360734"
+ },
+ {
+ "label": "石城县",
+ "value": "360735"
+ },
+ {
+ "label": "瑞金市",
+ "value": "360781"
+ }
+ ],
+ [{
+ "label": "吉州区",
+ "value": "360802"
+ },
+ {
+ "label": "青原区",
+ "value": "360803"
+ },
+ {
+ "label": "吉安县",
+ "value": "360821"
+ },
+ {
+ "label": "吉水县",
+ "value": "360822"
+ },
+ {
+ "label": "峡江县",
+ "value": "360823"
+ },
+ {
+ "label": "新干县",
+ "value": "360824"
+ },
+ {
+ "label": "永丰县",
+ "value": "360825"
+ },
+ {
+ "label": "泰和县",
+ "value": "360826"
+ },
+ {
+ "label": "遂川县",
+ "value": "360827"
+ },
+ {
+ "label": "万安县",
+ "value": "360828"
+ },
+ {
+ "label": "安福县",
+ "value": "360829"
+ },
+ {
+ "label": "永新县",
+ "value": "360830"
+ },
+ {
+ "label": "井冈山市",
+ "value": "360881"
+ }
+ ],
+ [{
+ "label": "袁州区",
+ "value": "360902"
+ },
+ {
+ "label": "奉新县",
+ "value": "360921"
+ },
+ {
+ "label": "万载县",
+ "value": "360922"
+ },
+ {
+ "label": "上高县",
+ "value": "360923"
+ },
+ {
+ "label": "宜丰县",
+ "value": "360924"
+ },
+ {
+ "label": "靖安县",
+ "value": "360925"
+ },
+ {
+ "label": "铜鼓县",
+ "value": "360926"
+ },
+ {
+ "label": "丰城市",
+ "value": "360981"
+ },
+ {
+ "label": "樟树市",
+ "value": "360982"
+ },
+ {
+ "label": "高安市",
+ "value": "360983"
+ }
+ ],
+ [{
+ "label": "临川区",
+ "value": "361002"
+ },
+ {
+ "label": "东乡区",
+ "value": "361003"
+ },
+ {
+ "label": "南城县",
+ "value": "361021"
+ },
+ {
+ "label": "黎川县",
+ "value": "361022"
+ },
+ {
+ "label": "南丰县",
+ "value": "361023"
+ },
+ {
+ "label": "崇仁县",
+ "value": "361024"
+ },
+ {
+ "label": "乐安县",
+ "value": "361025"
+ },
+ {
+ "label": "宜黄县",
+ "value": "361026"
+ },
+ {
+ "label": "金溪县",
+ "value": "361027"
+ },
+ {
+ "label": "资溪县",
+ "value": "361028"
+ },
+ {
+ "label": "广昌县",
+ "value": "361030"
+ }
+ ],
+ [{
+ "label": "信州区",
+ "value": "361102"
+ },
+ {
+ "label": "广丰区",
+ "value": "361103"
+ },
+ {
+ "label": "上饶县",
+ "value": "361121"
+ },
+ {
+ "label": "玉山县",
+ "value": "361123"
+ },
+ {
+ "label": "铅山县",
+ "value": "361124"
+ },
+ {
+ "label": "横峰县",
+ "value": "361125"
+ },
+ {
+ "label": "弋阳县",
+ "value": "361126"
+ },
+ {
+ "label": "余干县",
+ "value": "361127"
+ },
+ {
+ "label": "鄱阳县",
+ "value": "361128"
+ },
+ {
+ "label": "万年县",
+ "value": "361129"
+ },
+ {
+ "label": "婺源县",
+ "value": "361130"
+ },
+ {
+ "label": "德兴市",
+ "value": "361181"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "历下区",
+ "value": "370102"
+ },
+ {
+ "label": "市中区",
+ "value": "370103"
+ },
+ {
+ "label": "槐荫区",
+ "value": "370104"
+ },
+ {
+ "label": "天桥区",
+ "value": "370105"
+ },
+ {
+ "label": "历城区",
+ "value": "370112"
+ },
+ {
+ "label": "长清区",
+ "value": "370113"
+ },
+ {
+ "label": "章丘区",
+ "value": "370114"
+ },
+ {
+ "label": "平阴县",
+ "value": "370124"
+ },
+ {
+ "label": "济阳县",
+ "value": "370125"
+ },
+ {
+ "label": "商河县",
+ "value": "370126"
+ },
+ {
+ "label": "济南高新技术产业开发区",
+ "value": "370171"
+ }
+ ],
+ [{
+ "label": "市南区",
+ "value": "370202"
+ },
+ {
+ "label": "市北区",
+ "value": "370203"
+ },
+ {
+ "label": "黄岛区",
+ "value": "370211"
+ },
+ {
+ "label": "崂山区",
+ "value": "370212"
+ },
+ {
+ "label": "李沧区",
+ "value": "370213"
+ },
+ {
+ "label": "城阳区",
+ "value": "370214"
+ },
+ {
+ "label": "即墨区",
+ "value": "370215"
+ },
+ {
+ "label": "青岛高新技术产业开发区",
+ "value": "370271"
+ },
+ {
+ "label": "胶州市",
+ "value": "370281"
+ },
+ {
+ "label": "平度市",
+ "value": "370283"
+ },
+ {
+ "label": "莱西市",
+ "value": "370285"
+ }
+ ],
+ [{
+ "label": "淄川区",
+ "value": "370302"
+ },
+ {
+ "label": "张店区",
+ "value": "370303"
+ },
+ {
+ "label": "博山区",
+ "value": "370304"
+ },
+ {
+ "label": "临淄区",
+ "value": "370305"
+ },
+ {
+ "label": "周村区",
+ "value": "370306"
+ },
+ {
+ "label": "桓台县",
+ "value": "370321"
+ },
+ {
+ "label": "高青县",
+ "value": "370322"
+ },
+ {
+ "label": "沂源县",
+ "value": "370323"
+ }
+ ],
+ [{
+ "label": "市中区",
+ "value": "370402"
+ },
+ {
+ "label": "薛城区",
+ "value": "370403"
+ },
+ {
+ "label": "峄城区",
+ "value": "370404"
+ },
+ {
+ "label": "台儿庄区",
+ "value": "370405"
+ },
+ {
+ "label": "山亭区",
+ "value": "370406"
+ },
+ {
+ "label": "滕州市",
+ "value": "370481"
+ }
+ ],
+ [{
+ "label": "东营区",
+ "value": "370502"
+ },
+ {
+ "label": "河口区",
+ "value": "370503"
+ },
+ {
+ "label": "垦利区",
+ "value": "370505"
+ },
+ {
+ "label": "利津县",
+ "value": "370522"
+ },
+ {
+ "label": "广饶县",
+ "value": "370523"
+ },
+ {
+ "label": "东营经济技术开发区",
+ "value": "370571"
+ },
+ {
+ "label": "东营港经济开发区",
+ "value": "370572"
+ }
+ ],
+ [{
+ "label": "芝罘区",
+ "value": "370602"
+ },
+ {
+ "label": "福山区",
+ "value": "370611"
+ },
+ {
+ "label": "牟平区",
+ "value": "370612"
+ },
+ {
+ "label": "莱山区",
+ "value": "370613"
+ },
+ {
+ "label": "长岛县",
+ "value": "370634"
+ },
+ {
+ "label": "烟台高新技术产业开发区",
+ "value": "370671"
+ },
+ {
+ "label": "烟台经济技术开发区",
+ "value": "370672"
+ },
+ {
+ "label": "龙口市",
+ "value": "370681"
+ },
+ {
+ "label": "莱阳市",
+ "value": "370682"
+ },
+ {
+ "label": "莱州市",
+ "value": "370683"
+ },
+ {
+ "label": "蓬莱市",
+ "value": "370684"
+ },
+ {
+ "label": "招远市",
+ "value": "370685"
+ },
+ {
+ "label": "栖霞市",
+ "value": "370686"
+ },
+ {
+ "label": "海阳市",
+ "value": "370687"
+ }
+ ],
+ [{
+ "label": "潍城区",
+ "value": "370702"
+ },
+ {
+ "label": "寒亭区",
+ "value": "370703"
+ },
+ {
+ "label": "坊子区",
+ "value": "370704"
+ },
+ {
+ "label": "奎文区",
+ "value": "370705"
+ },
+ {
+ "label": "临朐县",
+ "value": "370724"
+ },
+ {
+ "label": "昌乐县",
+ "value": "370725"
+ },
+ {
+ "label": "潍坊滨海经济技术开发区",
+ "value": "370772"
+ },
+ {
+ "label": "青州市",
+ "value": "370781"
+ },
+ {
+ "label": "诸城市",
+ "value": "370782"
+ },
+ {
+ "label": "寿光市",
+ "value": "370783"
+ },
+ {
+ "label": "安丘市",
+ "value": "370784"
+ },
+ {
+ "label": "高密市",
+ "value": "370785"
+ },
+ {
+ "label": "昌邑市",
+ "value": "370786"
+ }
+ ],
+ [{
+ "label": "任城区",
+ "value": "370811"
+ },
+ {
+ "label": "兖州区",
+ "value": "370812"
+ },
+ {
+ "label": "微山县",
+ "value": "370826"
+ },
+ {
+ "label": "鱼台县",
+ "value": "370827"
+ },
+ {
+ "label": "金乡县",
+ "value": "370828"
+ },
+ {
+ "label": "嘉祥县",
+ "value": "370829"
+ },
+ {
+ "label": "汶上县",
+ "value": "370830"
+ },
+ {
+ "label": "泗水县",
+ "value": "370831"
+ },
+ {
+ "label": "梁山县",
+ "value": "370832"
+ },
+ {
+ "label": "济宁高新技术产业开发区",
+ "value": "370871"
+ },
+ {
+ "label": "曲阜市",
+ "value": "370881"
+ },
+ {
+ "label": "邹城市",
+ "value": "370883"
+ }
+ ],
+ [{
+ "label": "泰山区",
+ "value": "370902"
+ },
+ {
+ "label": "岱岳区",
+ "value": "370911"
+ },
+ {
+ "label": "宁阳县",
+ "value": "370921"
+ },
+ {
+ "label": "东平县",
+ "value": "370923"
+ },
+ {
+ "label": "新泰市",
+ "value": "370982"
+ },
+ {
+ "label": "肥城市",
+ "value": "370983"
+ }
+ ],
+ [{
+ "label": "环翠区",
+ "value": "371002"
+ },
+ {
+ "label": "文登区",
+ "value": "371003"
+ },
+ {
+ "label": "威海火炬高技术产业开发区",
+ "value": "371071"
+ },
+ {
+ "label": "威海经济技术开发区",
+ "value": "371072"
+ },
+ {
+ "label": "威海临港经济技术开发区",
+ "value": "371073"
+ },
+ {
+ "label": "荣成市",
+ "value": "371082"
+ },
+ {
+ "label": "乳山市",
+ "value": "371083"
+ }
+ ],
+ [{
+ "label": "东港区",
+ "value": "371102"
+ },
+ {
+ "label": "岚山区",
+ "value": "371103"
+ },
+ {
+ "label": "五莲县",
+ "value": "371121"
+ },
+ {
+ "label": "莒县",
+ "value": "371122"
+ },
+ {
+ "label": "日照经济技术开发区",
+ "value": "371171"
+ },
+ {
+ "label": "日照国际海洋城",
+ "value": "371172"
+ }
+ ],
+ [{
+ "label": "莱城区",
+ "value": "371202"
+ },
+ {
+ "label": "钢城区",
+ "value": "371203"
+ }
+ ],
+ [{
+ "label": "兰山区",
+ "value": "371302"
+ },
+ {
+ "label": "罗庄区",
+ "value": "371311"
+ },
+ {
+ "label": "河东区",
+ "value": "371312"
+ },
+ {
+ "label": "沂南县",
+ "value": "371321"
+ },
+ {
+ "label": "郯城县",
+ "value": "371322"
+ },
+ {
+ "label": "沂水县",
+ "value": "371323"
+ },
+ {
+ "label": "兰陵县",
+ "value": "371324"
+ },
+ {
+ "label": "费县",
+ "value": "371325"
+ },
+ {
+ "label": "平邑县",
+ "value": "371326"
+ },
+ {
+ "label": "莒南县",
+ "value": "371327"
+ },
+ {
+ "label": "蒙阴县",
+ "value": "371328"
+ },
+ {
+ "label": "临沭县",
+ "value": "371329"
+ },
+ {
+ "label": "临沂高新技术产业开发区",
+ "value": "371371"
+ },
+ {
+ "label": "临沂经济技术开发区",
+ "value": "371372"
+ },
+ {
+ "label": "临沂临港经济开发区",
+ "value": "371373"
+ }
+ ],
+ [{
+ "label": "德城区",
+ "value": "371402"
+ },
+ {
+ "label": "陵城区",
+ "value": "371403"
+ },
+ {
+ "label": "宁津县",
+ "value": "371422"
+ },
+ {
+ "label": "庆云县",
+ "value": "371423"
+ },
+ {
+ "label": "临邑县",
+ "value": "371424"
+ },
+ {
+ "label": "齐河县",
+ "value": "371425"
+ },
+ {
+ "label": "平原县",
+ "value": "371426"
+ },
+ {
+ "label": "夏津县",
+ "value": "371427"
+ },
+ {
+ "label": "武城县",
+ "value": "371428"
+ },
+ {
+ "label": "德州经济技术开发区",
+ "value": "371471"
+ },
+ {
+ "label": "德州运河经济开发区",
+ "value": "371472"
+ },
+ {
+ "label": "乐陵市",
+ "value": "371481"
+ },
+ {
+ "label": "禹城市",
+ "value": "371482"
+ }
+ ],
+ [{
+ "label": "东昌府区",
+ "value": "371502"
+ },
+ {
+ "label": "阳谷县",
+ "value": "371521"
+ },
+ {
+ "label": "莘县",
+ "value": "371522"
+ },
+ {
+ "label": "茌平县",
+ "value": "371523"
+ },
+ {
+ "label": "东阿县",
+ "value": "371524"
+ },
+ {
+ "label": "冠县",
+ "value": "371525"
+ },
+ {
+ "label": "高唐县",
+ "value": "371526"
+ },
+ {
+ "label": "临清市",
+ "value": "371581"
+ }
+ ],
+ [{
+ "label": "滨城区",
+ "value": "371602"
+ },
+ {
+ "label": "沾化区",
+ "value": "371603"
+ },
+ {
+ "label": "惠民县",
+ "value": "371621"
+ },
+ {
+ "label": "阳信县",
+ "value": "371622"
+ },
+ {
+ "label": "无棣县",
+ "value": "371623"
+ },
+ {
+ "label": "博兴县",
+ "value": "371625"
+ },
+ {
+ "label": "邹平县",
+ "value": "371626"
+ }
+ ],
+ [{
+ "label": "牡丹区",
+ "value": "371702"
+ },
+ {
+ "label": "定陶区",
+ "value": "371703"
+ },
+ {
+ "label": "曹县",
+ "value": "371721"
+ },
+ {
+ "label": "单县",
+ "value": "371722"
+ },
+ {
+ "label": "成武县",
+ "value": "371723"
+ },
+ {
+ "label": "巨野县",
+ "value": "371724"
+ },
+ {
+ "label": "郓城县",
+ "value": "371725"
+ },
+ {
+ "label": "鄄城县",
+ "value": "371726"
+ },
+ {
+ "label": "东明县",
+ "value": "371728"
+ },
+ {
+ "label": "菏泽经济技术开发区",
+ "value": "371771"
+ },
+ {
+ "label": "菏泽高新技术开发区",
+ "value": "371772"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "中原区",
+ "value": "410102"
+ },
+ {
+ "label": "二七区",
+ "value": "410103"
+ },
+ {
+ "label": "管城回族区",
+ "value": "410104"
+ },
+ {
+ "label": "金水区",
+ "value": "410105"
+ },
+ {
+ "label": "上街区",
+ "value": "410106"
+ },
+ {
+ "label": "惠济区",
+ "value": "410108"
+ },
+ {
+ "label": "中牟县",
+ "value": "410122"
+ },
+ {
+ "label": "郑州经济技术开发区",
+ "value": "410171"
+ },
+ {
+ "label": "郑州高新技术产业开发区",
+ "value": "410172"
+ },
+ {
+ "label": "郑州航空港经济综合实验区",
+ "value": "410173"
+ },
+ {
+ "label": "巩义市",
+ "value": "410181"
+ },
+ {
+ "label": "荥阳市",
+ "value": "410182"
+ },
+ {
+ "label": "新密市",
+ "value": "410183"
+ },
+ {
+ "label": "新郑市",
+ "value": "410184"
+ },
+ {
+ "label": "登封市",
+ "value": "410185"
+ }
+ ],
+ [{
+ "label": "龙亭区",
+ "value": "410202"
+ },
+ {
+ "label": "顺河回族区",
+ "value": "410203"
+ },
+ {
+ "label": "鼓楼区",
+ "value": "410204"
+ },
+ {
+ "label": "禹王台区",
+ "value": "410205"
+ },
+ {
+ "label": "祥符区",
+ "value": "410212"
+ },
+ {
+ "label": "杞县",
+ "value": "410221"
+ },
+ {
+ "label": "通许县",
+ "value": "410222"
+ },
+ {
+ "label": "尉氏县",
+ "value": "410223"
+ },
+ {
+ "label": "兰考县",
+ "value": "410225"
+ }
+ ],
+ [{
+ "label": "老城区",
+ "value": "410302"
+ },
+ {
+ "label": "西工区",
+ "value": "410303"
+ },
+ {
+ "label": "瀍河回族区",
+ "value": "410304"
+ },
+ {
+ "label": "涧西区",
+ "value": "410305"
+ },
+ {
+ "label": "吉利区",
+ "value": "410306"
+ },
+ {
+ "label": "洛龙区",
+ "value": "410311"
+ },
+ {
+ "label": "孟津县",
+ "value": "410322"
+ },
+ {
+ "label": "新安县",
+ "value": "410323"
+ },
+ {
+ "label": "栾川县",
+ "value": "410324"
+ },
+ {
+ "label": "嵩县",
+ "value": "410325"
+ },
+ {
+ "label": "汝阳县",
+ "value": "410326"
+ },
+ {
+ "label": "宜阳县",
+ "value": "410327"
+ },
+ {
+ "label": "洛宁县",
+ "value": "410328"
+ },
+ {
+ "label": "伊川县",
+ "value": "410329"
+ },
+ {
+ "label": "洛阳高新技术产业开发区",
+ "value": "410371"
+ },
+ {
+ "label": "偃师市",
+ "value": "410381"
+ }
+ ],
+ [{
+ "label": "新华区",
+ "value": "410402"
+ },
+ {
+ "label": "卫东区",
+ "value": "410403"
+ },
+ {
+ "label": "石龙区",
+ "value": "410404"
+ },
+ {
+ "label": "湛河区",
+ "value": "410411"
+ },
+ {
+ "label": "宝丰县",
+ "value": "410421"
+ },
+ {
+ "label": "叶县",
+ "value": "410422"
+ },
+ {
+ "label": "鲁山县",
+ "value": "410423"
+ },
+ {
+ "label": "郏县",
+ "value": "410425"
+ },
+ {
+ "label": "平顶山高新技术产业开发区",
+ "value": "410471"
+ },
+ {
+ "label": "平顶山市新城区",
+ "value": "410472"
+ },
+ {
+ "label": "舞钢市",
+ "value": "410481"
+ },
+ {
+ "label": "汝州市",
+ "value": "410482"
+ }
+ ],
+ [{
+ "label": "文峰区",
+ "value": "410502"
+ },
+ {
+ "label": "北关区",
+ "value": "410503"
+ },
+ {
+ "label": "殷都区",
+ "value": "410505"
+ },
+ {
+ "label": "龙安区",
+ "value": "410506"
+ },
+ {
+ "label": "安阳县",
+ "value": "410522"
+ },
+ {
+ "label": "汤阴县",
+ "value": "410523"
+ },
+ {
+ "label": "滑县",
+ "value": "410526"
+ },
+ {
+ "label": "内黄县",
+ "value": "410527"
+ },
+ {
+ "label": "安阳高新技术产业开发区",
+ "value": "410571"
+ },
+ {
+ "label": "林州市",
+ "value": "410581"
+ }
+ ],
+ [{
+ "label": "鹤山区",
+ "value": "410602"
+ },
+ {
+ "label": "山城区",
+ "value": "410603"
+ },
+ {
+ "label": "淇滨区",
+ "value": "410611"
+ },
+ {
+ "label": "浚县",
+ "value": "410621"
+ },
+ {
+ "label": "淇县",
+ "value": "410622"
+ },
+ {
+ "label": "鹤壁经济技术开发区",
+ "value": "410671"
+ }
+ ],
+ [{
+ "label": "红旗区",
+ "value": "410702"
+ },
+ {
+ "label": "卫滨区",
+ "value": "410703"
+ },
+ {
+ "label": "凤泉区",
+ "value": "410704"
+ },
+ {
+ "label": "牧野区",
+ "value": "410711"
+ },
+ {
+ "label": "新乡县",
+ "value": "410721"
+ },
+ {
+ "label": "获嘉县",
+ "value": "410724"
+ },
+ {
+ "label": "原阳县",
+ "value": "410725"
+ },
+ {
+ "label": "延津县",
+ "value": "410726"
+ },
+ {
+ "label": "封丘县",
+ "value": "410727"
+ },
+ {
+ "label": "长垣县",
+ "value": "410728"
+ },
+ {
+ "label": "新乡高新技术产业开发区",
+ "value": "410771"
+ },
+ {
+ "label": "新乡经济技术开发区",
+ "value": "410772"
+ },
+ {
+ "label": "新乡市平原城乡一体化示范区",
+ "value": "410773"
+ },
+ {
+ "label": "卫辉市",
+ "value": "410781"
+ },
+ {
+ "label": "辉县市",
+ "value": "410782"
+ }
+ ],
+ [{
+ "label": "解放区",
+ "value": "410802"
+ },
+ {
+ "label": "中站区",
+ "value": "410803"
+ },
+ {
+ "label": "马村区",
+ "value": "410804"
+ },
+ {
+ "label": "山阳区",
+ "value": "410811"
+ },
+ {
+ "label": "修武县",
+ "value": "410821"
+ },
+ {
+ "label": "博爱县",
+ "value": "410822"
+ },
+ {
+ "label": "武陟县",
+ "value": "410823"
+ },
+ {
+ "label": "温县",
+ "value": "410825"
+ },
+ {
+ "label": "焦作城乡一体化示范区",
+ "value": "410871"
+ },
+ {
+ "label": "沁阳市",
+ "value": "410882"
+ },
+ {
+ "label": "孟州市",
+ "value": "410883"
+ }
+ ],
+ [{
+ "label": "华龙区",
+ "value": "410902"
+ },
+ {
+ "label": "清丰县",
+ "value": "410922"
+ },
+ {
+ "label": "南乐县",
+ "value": "410923"
+ },
+ {
+ "label": "范县",
+ "value": "410926"
+ },
+ {
+ "label": "台前县",
+ "value": "410927"
+ },
+ {
+ "label": "濮阳县",
+ "value": "410928"
+ },
+ {
+ "label": "河南濮阳工业园区",
+ "value": "410971"
+ },
+ {
+ "label": "濮阳经济技术开发区",
+ "value": "410972"
+ }
+ ],
+ [{
+ "label": "魏都区",
+ "value": "411002"
+ },
+ {
+ "label": "建安区",
+ "value": "411003"
+ },
+ {
+ "label": "鄢陵县",
+ "value": "411024"
+ },
+ {
+ "label": "襄城县",
+ "value": "411025"
+ },
+ {
+ "label": "许昌经济技术开发区",
+ "value": "411071"
+ },
+ {
+ "label": "禹州市",
+ "value": "411081"
+ },
+ {
+ "label": "长葛市",
+ "value": "411082"
+ }
+ ],
+ [{
+ "label": "源汇区",
+ "value": "411102"
+ },
+ {
+ "label": "郾城区",
+ "value": "411103"
+ },
+ {
+ "label": "召陵区",
+ "value": "411104"
+ },
+ {
+ "label": "舞阳县",
+ "value": "411121"
+ },
+ {
+ "label": "临颍县",
+ "value": "411122"
+ },
+ {
+ "label": "漯河经济技术开发区",
+ "value": "411171"
+ }
+ ],
+ [{
+ "label": "湖滨区",
+ "value": "411202"
+ },
+ {
+ "label": "陕州区",
+ "value": "411203"
+ },
+ {
+ "label": "渑池县",
+ "value": "411221"
+ },
+ {
+ "label": "卢氏县",
+ "value": "411224"
+ },
+ {
+ "label": "河南三门峡经济开发区",
+ "value": "411271"
+ },
+ {
+ "label": "义马市",
+ "value": "411281"
+ },
+ {
+ "label": "灵宝市",
+ "value": "411282"
+ }
+ ],
+ [{
+ "label": "宛城区",
+ "value": "411302"
+ },
+ {
+ "label": "卧龙区",
+ "value": "411303"
+ },
+ {
+ "label": "南召县",
+ "value": "411321"
+ },
+ {
+ "label": "方城县",
+ "value": "411322"
+ },
+ {
+ "label": "西峡县",
+ "value": "411323"
+ },
+ {
+ "label": "镇平县",
+ "value": "411324"
+ },
+ {
+ "label": "内乡县",
+ "value": "411325"
+ },
+ {
+ "label": "淅川县",
+ "value": "411326"
+ },
+ {
+ "label": "社旗县",
+ "value": "411327"
+ },
+ {
+ "label": "唐河县",
+ "value": "411328"
+ },
+ {
+ "label": "新野县",
+ "value": "411329"
+ },
+ {
+ "label": "桐柏县",
+ "value": "411330"
+ },
+ {
+ "label": "南阳高新技术产业开发区",
+ "value": "411371"
+ },
+ {
+ "label": "南阳市城乡一体化示范区",
+ "value": "411372"
+ },
+ {
+ "label": "邓州市",
+ "value": "411381"
+ }
+ ],
+ [{
+ "label": "梁园区",
+ "value": "411402"
+ },
+ {
+ "label": "睢阳区",
+ "value": "411403"
+ },
+ {
+ "label": "民权县",
+ "value": "411421"
+ },
+ {
+ "label": "睢县",
+ "value": "411422"
+ },
+ {
+ "label": "宁陵县",
+ "value": "411423"
+ },
+ {
+ "label": "柘城县",
+ "value": "411424"
+ },
+ {
+ "label": "虞城县",
+ "value": "411425"
+ },
+ {
+ "label": "夏邑县",
+ "value": "411426"
+ },
+ {
+ "label": "豫东综合物流产业聚集区",
+ "value": "411471"
+ },
+ {
+ "label": "河南商丘经济开发区",
+ "value": "411472"
+ },
+ {
+ "label": "永城市",
+ "value": "411481"
+ }
+ ],
+ [{
+ "label": "浉河区",
+ "value": "411502"
+ },
+ {
+ "label": "平桥区",
+ "value": "411503"
+ },
+ {
+ "label": "罗山县",
+ "value": "411521"
+ },
+ {
+ "label": "光山县",
+ "value": "411522"
+ },
+ {
+ "label": "新县",
+ "value": "411523"
+ },
+ {
+ "label": "商城县",
+ "value": "411524"
+ },
+ {
+ "label": "固始县",
+ "value": "411525"
+ },
+ {
+ "label": "潢川县",
+ "value": "411526"
+ },
+ {
+ "label": "淮滨县",
+ "value": "411527"
+ },
+ {
+ "label": "息县",
+ "value": "411528"
+ },
+ {
+ "label": "信阳高新技术产业开发区",
+ "value": "411571"
+ }
+ ],
+ [{
+ "label": "川汇区",
+ "value": "411602"
+ },
+ {
+ "label": "扶沟县",
+ "value": "411621"
+ },
+ {
+ "label": "西华县",
+ "value": "411622"
+ },
+ {
+ "label": "商水县",
+ "value": "411623"
+ },
+ {
+ "label": "沈丘县",
+ "value": "411624"
+ },
+ {
+ "label": "郸城县",
+ "value": "411625"
+ },
+ {
+ "label": "淮阳县",
+ "value": "411626"
+ },
+ {
+ "label": "太康县",
+ "value": "411627"
+ },
+ {
+ "label": "鹿邑县",
+ "value": "411628"
+ },
+ {
+ "label": "河南周口经济开发区",
+ "value": "411671"
+ },
+ {
+ "label": "项城市",
+ "value": "411681"
+ }
+ ],
+ [{
+ "label": "驿城区",
+ "value": "411702"
+ },
+ {
+ "label": "西平县",
+ "value": "411721"
+ },
+ {
+ "label": "上蔡县",
+ "value": "411722"
+ },
+ {
+ "label": "平舆县",
+ "value": "411723"
+ },
+ {
+ "label": "正阳县",
+ "value": "411724"
+ },
+ {
+ "label": "确山县",
+ "value": "411725"
+ },
+ {
+ "label": "泌阳县",
+ "value": "411726"
+ },
+ {
+ "label": "汝南县",
+ "value": "411727"
+ },
+ {
+ "label": "遂平县",
+ "value": "411728"
+ },
+ {
+ "label": "新蔡县",
+ "value": "411729"
+ },
+ {
+ "label": "河南驻马店经济开发区",
+ "value": "411771"
+ }
+ ],
+ [{
+ "label": "济源市",
+ "value": "419001"
+ }]
+ ],
+ [
+ [{
+ "label": "江岸区",
+ "value": "420102"
+ },
+ {
+ "label": "江汉区",
+ "value": "420103"
+ },
+ {
+ "label": "硚口区",
+ "value": "420104"
+ },
+ {
+ "label": "汉阳区",
+ "value": "420105"
+ },
+ {
+ "label": "武昌区",
+ "value": "420106"
+ },
+ {
+ "label": "青山区",
+ "value": "420107"
+ },
+ {
+ "label": "洪山区",
+ "value": "420111"
+ },
+ {
+ "label": "东西湖区",
+ "value": "420112"
+ },
+ {
+ "label": "汉南区",
+ "value": "420113"
+ },
+ {
+ "label": "蔡甸区",
+ "value": "420114"
+ },
+ {
+ "label": "江夏区",
+ "value": "420115"
+ },
+ {
+ "label": "黄陂区",
+ "value": "420116"
+ },
+ {
+ "label": "新洲区",
+ "value": "420117"
+ }
+ ],
+ [{
+ "label": "黄石港区",
+ "value": "420202"
+ },
+ {
+ "label": "西塞山区",
+ "value": "420203"
+ },
+ {
+ "label": "下陆区",
+ "value": "420204"
+ },
+ {
+ "label": "铁山区",
+ "value": "420205"
+ },
+ {
+ "label": "阳新县",
+ "value": "420222"
+ },
+ {
+ "label": "大冶市",
+ "value": "420281"
+ }
+ ],
+ [{
+ "label": "茅箭区",
+ "value": "420302"
+ },
+ {
+ "label": "张湾区",
+ "value": "420303"
+ },
+ {
+ "label": "郧阳区",
+ "value": "420304"
+ },
+ {
+ "label": "郧西县",
+ "value": "420322"
+ },
+ {
+ "label": "竹山县",
+ "value": "420323"
+ },
+ {
+ "label": "竹溪县",
+ "value": "420324"
+ },
+ {
+ "label": "房县",
+ "value": "420325"
+ },
+ {
+ "label": "丹江口市",
+ "value": "420381"
+ }
+ ],
+ [{
+ "label": "西陵区",
+ "value": "420502"
+ },
+ {
+ "label": "伍家岗区",
+ "value": "420503"
+ },
+ {
+ "label": "点军区",
+ "value": "420504"
+ },
+ {
+ "label": "猇亭区",
+ "value": "420505"
+ },
+ {
+ "label": "夷陵区",
+ "value": "420506"
+ },
+ {
+ "label": "远安县",
+ "value": "420525"
+ },
+ {
+ "label": "兴山县",
+ "value": "420526"
+ },
+ {
+ "label": "秭归县",
+ "value": "420527"
+ },
+ {
+ "label": "长阳土家族自治县",
+ "value": "420528"
+ },
+ {
+ "label": "五峰土家族自治县",
+ "value": "420529"
+ },
+ {
+ "label": "宜都市",
+ "value": "420581"
+ },
+ {
+ "label": "当阳市",
+ "value": "420582"
+ },
+ {
+ "label": "枝江市",
+ "value": "420583"
+ }
+ ],
+ [{
+ "label": "襄城区",
+ "value": "420602"
+ },
+ {
+ "label": "樊城区",
+ "value": "420606"
+ },
+ {
+ "label": "襄州区",
+ "value": "420607"
+ },
+ {
+ "label": "南漳县",
+ "value": "420624"
+ },
+ {
+ "label": "谷城县",
+ "value": "420625"
+ },
+ {
+ "label": "保康县",
+ "value": "420626"
+ },
+ {
+ "label": "老河口市",
+ "value": "420682"
+ },
+ {
+ "label": "枣阳市",
+ "value": "420683"
+ },
+ {
+ "label": "宜城市",
+ "value": "420684"
+ }
+ ],
+ [{
+ "label": "梁子湖区",
+ "value": "420702"
+ },
+ {
+ "label": "华容区",
+ "value": "420703"
+ },
+ {
+ "label": "鄂城区",
+ "value": "420704"
+ }
+ ],
+ [{
+ "label": "东宝区",
+ "value": "420802"
+ },
+ {
+ "label": "掇刀区",
+ "value": "420804"
+ },
+ {
+ "label": "京山县",
+ "value": "420821"
+ },
+ {
+ "label": "沙洋县",
+ "value": "420822"
+ },
+ {
+ "label": "钟祥市",
+ "value": "420881"
+ }
+ ],
+ [{
+ "label": "孝南区",
+ "value": "420902"
+ },
+ {
+ "label": "孝昌县",
+ "value": "420921"
+ },
+ {
+ "label": "大悟县",
+ "value": "420922"
+ },
+ {
+ "label": "云梦县",
+ "value": "420923"
+ },
+ {
+ "label": "应城市",
+ "value": "420981"
+ },
+ {
+ "label": "安陆市",
+ "value": "420982"
+ },
+ {
+ "label": "汉川市",
+ "value": "420984"
+ }
+ ],
+ [{
+ "label": "沙市区",
+ "value": "421002"
+ },
+ {
+ "label": "荆州区",
+ "value": "421003"
+ },
+ {
+ "label": "公安县",
+ "value": "421022"
+ },
+ {
+ "label": "监利县",
+ "value": "421023"
+ },
+ {
+ "label": "江陵县",
+ "value": "421024"
+ },
+ {
+ "label": "荆州经济技术开发区",
+ "value": "421071"
+ },
+ {
+ "label": "石首市",
+ "value": "421081"
+ },
+ {
+ "label": "洪湖市",
+ "value": "421083"
+ },
+ {
+ "label": "松滋市",
+ "value": "421087"
+ }
+ ],
+ [{
+ "label": "黄州区",
+ "value": "421102"
+ },
+ {
+ "label": "团风县",
+ "value": "421121"
+ },
+ {
+ "label": "红安县",
+ "value": "421122"
+ },
+ {
+ "label": "罗田县",
+ "value": "421123"
+ },
+ {
+ "label": "英山县",
+ "value": "421124"
+ },
+ {
+ "label": "浠水县",
+ "value": "421125"
+ },
+ {
+ "label": "蕲春县",
+ "value": "421126"
+ },
+ {
+ "label": "黄梅县",
+ "value": "421127"
+ },
+ {
+ "label": "龙感湖管理区",
+ "value": "421171"
+ },
+ {
+ "label": "麻城市",
+ "value": "421181"
+ },
+ {
+ "label": "武穴市",
+ "value": "421182"
+ }
+ ],
+ [{
+ "label": "咸安区",
+ "value": "421202"
+ },
+ {
+ "label": "嘉鱼县",
+ "value": "421221"
+ },
+ {
+ "label": "通城县",
+ "value": "421222"
+ },
+ {
+ "label": "崇阳县",
+ "value": "421223"
+ },
+ {
+ "label": "通山县",
+ "value": "421224"
+ },
+ {
+ "label": "赤壁市",
+ "value": "421281"
+ }
+ ],
+ [{
+ "label": "曾都区",
+ "value": "421303"
+ },
+ {
+ "label": "随县",
+ "value": "421321"
+ },
+ {
+ "label": "广水市",
+ "value": "421381"
+ }
+ ],
+ [{
+ "label": "恩施市",
+ "value": "422801"
+ },
+ {
+ "label": "利川市",
+ "value": "422802"
+ },
+ {
+ "label": "建始县",
+ "value": "422822"
+ },
+ {
+ "label": "巴东县",
+ "value": "422823"
+ },
+ {
+ "label": "宣恩县",
+ "value": "422825"
+ },
+ {
+ "label": "咸丰县",
+ "value": "422826"
+ },
+ {
+ "label": "来凤县",
+ "value": "422827"
+ },
+ {
+ "label": "鹤峰县",
+ "value": "422828"
+ }
+ ],
+ [{
+ "label": "仙桃市",
+ "value": "429004"
+ },
+ {
+ "label": "潜江市",
+ "value": "429005"
+ },
+ {
+ "label": "天门市",
+ "value": "429006"
+ },
+ {
+ "label": "神农架林区",
+ "value": "429021"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "芙蓉区",
+ "value": "430102"
+ },
+ {
+ "label": "天心区",
+ "value": "430103"
+ },
+ {
+ "label": "岳麓区",
+ "value": "430104"
+ },
+ {
+ "label": "开福区",
+ "value": "430105"
+ },
+ {
+ "label": "雨花区",
+ "value": "430111"
+ },
+ {
+ "label": "望城区",
+ "value": "430112"
+ },
+ {
+ "label": "长沙县",
+ "value": "430121"
+ },
+ {
+ "label": "浏阳市",
+ "value": "430181"
+ },
+ {
+ "label": "宁乡市",
+ "value": "430182"
+ }
+ ],
+ [{
+ "label": "荷塘区",
+ "value": "430202"
+ },
+ {
+ "label": "芦淞区",
+ "value": "430203"
+ },
+ {
+ "label": "石峰区",
+ "value": "430204"
+ },
+ {
+ "label": "天元区",
+ "value": "430211"
+ },
+ {
+ "label": "株洲县",
+ "value": "430221"
+ },
+ {
+ "label": "攸县",
+ "value": "430223"
+ },
+ {
+ "label": "茶陵县",
+ "value": "430224"
+ },
+ {
+ "label": "炎陵县",
+ "value": "430225"
+ },
+ {
+ "label": "云龙示范区",
+ "value": "430271"
+ },
+ {
+ "label": "醴陵市",
+ "value": "430281"
+ }
+ ],
+ [{
+ "label": "雨湖区",
+ "value": "430302"
+ },
+ {
+ "label": "岳塘区",
+ "value": "430304"
+ },
+ {
+ "label": "湘潭县",
+ "value": "430321"
+ },
+ {
+ "label": "湖南湘潭高新技术产业园区",
+ "value": "430371"
+ },
+ {
+ "label": "湘潭昭山示范区",
+ "value": "430372"
+ },
+ {
+ "label": "湘潭九华示范区",
+ "value": "430373"
+ },
+ {
+ "label": "湘乡市",
+ "value": "430381"
+ },
+ {
+ "label": "韶山市",
+ "value": "430382"
+ }
+ ],
+ [{
+ "label": "珠晖区",
+ "value": "430405"
+ },
+ {
+ "label": "雁峰区",
+ "value": "430406"
+ },
+ {
+ "label": "石鼓区",
+ "value": "430407"
+ },
+ {
+ "label": "蒸湘区",
+ "value": "430408"
+ },
+ {
+ "label": "南岳区",
+ "value": "430412"
+ },
+ {
+ "label": "衡阳县",
+ "value": "430421"
+ },
+ {
+ "label": "衡南县",
+ "value": "430422"
+ },
+ {
+ "label": "衡山县",
+ "value": "430423"
+ },
+ {
+ "label": "衡东县",
+ "value": "430424"
+ },
+ {
+ "label": "祁东县",
+ "value": "430426"
+ },
+ {
+ "label": "衡阳综合保税区",
+ "value": "430471"
+ },
+ {
+ "label": "湖南衡阳高新技术产业园区",
+ "value": "430472"
+ },
+ {
+ "label": "湖南衡阳松木经济开发区",
+ "value": "430473"
+ },
+ {
+ "label": "耒阳市",
+ "value": "430481"
+ },
+ {
+ "label": "常宁市",
+ "value": "430482"
+ }
+ ],
+ [{
+ "label": "双清区",
+ "value": "430502"
+ },
+ {
+ "label": "大祥区",
+ "value": "430503"
+ },
+ {
+ "label": "北塔区",
+ "value": "430511"
+ },
+ {
+ "label": "邵东县",
+ "value": "430521"
+ },
+ {
+ "label": "新邵县",
+ "value": "430522"
+ },
+ {
+ "label": "邵阳县",
+ "value": "430523"
+ },
+ {
+ "label": "隆回县",
+ "value": "430524"
+ },
+ {
+ "label": "洞口县",
+ "value": "430525"
+ },
+ {
+ "label": "绥宁县",
+ "value": "430527"
+ },
+ {
+ "label": "新宁县",
+ "value": "430528"
+ },
+ {
+ "label": "城步苗族自治县",
+ "value": "430529"
+ },
+ {
+ "label": "武冈市",
+ "value": "430581"
+ }
+ ],
+ [{
+ "label": "岳阳楼区",
+ "value": "430602"
+ },
+ {
+ "label": "云溪区",
+ "value": "430603"
+ },
+ {
+ "label": "君山区",
+ "value": "430611"
+ },
+ {
+ "label": "岳阳县",
+ "value": "430621"
+ },
+ {
+ "label": "华容县",
+ "value": "430623"
+ },
+ {
+ "label": "湘阴县",
+ "value": "430624"
+ },
+ {
+ "label": "平江县",
+ "value": "430626"
+ },
+ {
+ "label": "岳阳市屈原管理区",
+ "value": "430671"
+ },
+ {
+ "label": "汨罗市",
+ "value": "430681"
+ },
+ {
+ "label": "临湘市",
+ "value": "430682"
+ }
+ ],
+ [{
+ "label": "武陵区",
+ "value": "430702"
+ },
+ {
+ "label": "鼎城区",
+ "value": "430703"
+ },
+ {
+ "label": "安乡县",
+ "value": "430721"
+ },
+ {
+ "label": "汉寿县",
+ "value": "430722"
+ },
+ {
+ "label": "澧县",
+ "value": "430723"
+ },
+ {
+ "label": "临澧县",
+ "value": "430724"
+ },
+ {
+ "label": "桃源县",
+ "value": "430725"
+ },
+ {
+ "label": "石门县",
+ "value": "430726"
+ },
+ {
+ "label": "常德市西洞庭管理区",
+ "value": "430771"
+ },
+ {
+ "label": "津市市",
+ "value": "430781"
+ }
+ ],
+ [{
+ "label": "永定区",
+ "value": "430802"
+ },
+ {
+ "label": "武陵源区",
+ "value": "430811"
+ },
+ {
+ "label": "慈利县",
+ "value": "430821"
+ },
+ {
+ "label": "桑植县",
+ "value": "430822"
+ }
+ ],
+ [{
+ "label": "资阳区",
+ "value": "430902"
+ },
+ {
+ "label": "赫山区",
+ "value": "430903"
+ },
+ {
+ "label": "南县",
+ "value": "430921"
+ },
+ {
+ "label": "桃江县",
+ "value": "430922"
+ },
+ {
+ "label": "安化县",
+ "value": "430923"
+ },
+ {
+ "label": "益阳市大通湖管理区",
+ "value": "430971"
+ },
+ {
+ "label": "湖南益阳高新技术产业园区",
+ "value": "430972"
+ },
+ {
+ "label": "沅江市",
+ "value": "430981"
+ }
+ ],
+ [{
+ "label": "北湖区",
+ "value": "431002"
+ },
+ {
+ "label": "苏仙区",
+ "value": "431003"
+ },
+ {
+ "label": "桂阳县",
+ "value": "431021"
+ },
+ {
+ "label": "宜章县",
+ "value": "431022"
+ },
+ {
+ "label": "永兴县",
+ "value": "431023"
+ },
+ {
+ "label": "嘉禾县",
+ "value": "431024"
+ },
+ {
+ "label": "临武县",
+ "value": "431025"
+ },
+ {
+ "label": "汝城县",
+ "value": "431026"
+ },
+ {
+ "label": "桂东县",
+ "value": "431027"
+ },
+ {
+ "label": "安仁县",
+ "value": "431028"
+ },
+ {
+ "label": "资兴市",
+ "value": "431081"
+ }
+ ],
+ [{
+ "label": "零陵区",
+ "value": "431102"
+ },
+ {
+ "label": "冷水滩区",
+ "value": "431103"
+ },
+ {
+ "label": "祁阳县",
+ "value": "431121"
+ },
+ {
+ "label": "东安县",
+ "value": "431122"
+ },
+ {
+ "label": "双牌县",
+ "value": "431123"
+ },
+ {
+ "label": "道县",
+ "value": "431124"
+ },
+ {
+ "label": "江永县",
+ "value": "431125"
+ },
+ {
+ "label": "宁远县",
+ "value": "431126"
+ },
+ {
+ "label": "蓝山县",
+ "value": "431127"
+ },
+ {
+ "label": "新田县",
+ "value": "431128"
+ },
+ {
+ "label": "江华瑶族自治县",
+ "value": "431129"
+ },
+ {
+ "label": "永州经济技术开发区",
+ "value": "431171"
+ },
+ {
+ "label": "永州市金洞管理区",
+ "value": "431172"
+ },
+ {
+ "label": "永州市回龙圩管理区",
+ "value": "431173"
+ }
+ ],
+ [{
+ "label": "鹤城区",
+ "value": "431202"
+ },
+ {
+ "label": "中方县",
+ "value": "431221"
+ },
+ {
+ "label": "沅陵县",
+ "value": "431222"
+ },
+ {
+ "label": "辰溪县",
+ "value": "431223"
+ },
+ {
+ "label": "溆浦县",
+ "value": "431224"
+ },
+ {
+ "label": "会同县",
+ "value": "431225"
+ },
+ {
+ "label": "麻阳苗族自治县",
+ "value": "431226"
+ },
+ {
+ "label": "新晃侗族自治县",
+ "value": "431227"
+ },
+ {
+ "label": "芷江侗族自治县",
+ "value": "431228"
+ },
+ {
+ "label": "靖州苗族侗族自治县",
+ "value": "431229"
+ },
+ {
+ "label": "通道侗族自治县",
+ "value": "431230"
+ },
+ {
+ "label": "怀化市洪江管理区",
+ "value": "431271"
+ },
+ {
+ "label": "洪江市",
+ "value": "431281"
+ }
+ ],
+ [{
+ "label": "娄星区",
+ "value": "431302"
+ },
+ {
+ "label": "双峰县",
+ "value": "431321"
+ },
+ {
+ "label": "新化县",
+ "value": "431322"
+ },
+ {
+ "label": "冷水江市",
+ "value": "431381"
+ },
+ {
+ "label": "涟源市",
+ "value": "431382"
+ }
+ ],
+ [{
+ "label": "吉首市",
+ "value": "433101"
+ },
+ {
+ "label": "泸溪县",
+ "value": "433122"
+ },
+ {
+ "label": "凤凰县",
+ "value": "433123"
+ },
+ {
+ "label": "花垣县",
+ "value": "433124"
+ },
+ {
+ "label": "保靖县",
+ "value": "433125"
+ },
+ {
+ "label": "古丈县",
+ "value": "433126"
+ },
+ {
+ "label": "永顺县",
+ "value": "433127"
+ },
+ {
+ "label": "龙山县",
+ "value": "433130"
+ },
+ {
+ "label": "湖南吉首经济开发区",
+ "value": "433172"
+ },
+ {
+ "label": "湖南永顺经济开发区",
+ "value": "433173"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "荔湾区",
+ "value": "440103"
+ },
+ {
+ "label": "越秀区",
+ "value": "440104"
+ },
+ {
+ "label": "海珠区",
+ "value": "440105"
+ },
+ {
+ "label": "天河区",
+ "value": "440106"
+ },
+ {
+ "label": "白云区",
+ "value": "440111"
+ },
+ {
+ "label": "黄埔区",
+ "value": "440112"
+ },
+ {
+ "label": "番禺区",
+ "value": "440113"
+ },
+ {
+ "label": "花都区",
+ "value": "440114"
+ },
+ {
+ "label": "南沙区",
+ "value": "440115"
+ },
+ {
+ "label": "从化区",
+ "value": "440117"
+ },
+ {
+ "label": "增城区",
+ "value": "440118"
+ }
+ ],
+ [{
+ "label": "武江区",
+ "value": "440203"
+ },
+ {
+ "label": "浈江区",
+ "value": "440204"
+ },
+ {
+ "label": "曲江区",
+ "value": "440205"
+ },
+ {
+ "label": "始兴县",
+ "value": "440222"
+ },
+ {
+ "label": "仁化县",
+ "value": "440224"
+ },
+ {
+ "label": "翁源县",
+ "value": "440229"
+ },
+ {
+ "label": "乳源瑶族自治县",
+ "value": "440232"
+ },
+ {
+ "label": "新丰县",
+ "value": "440233"
+ },
+ {
+ "label": "乐昌市",
+ "value": "440281"
+ },
+ {
+ "label": "南雄市",
+ "value": "440282"
+ }
+ ],
+ [{
+ "label": "罗湖区",
+ "value": "440303"
+ },
+ {
+ "label": "福田区",
+ "value": "440304"
+ },
+ {
+ "label": "南山区",
+ "value": "440305"
+ },
+ {
+ "label": "宝安区",
+ "value": "440306"
+ },
+ {
+ "label": "龙岗区",
+ "value": "440307"
+ },
+ {
+ "label": "盐田区",
+ "value": "440308"
+ },
+ {
+ "label": "龙华区",
+ "value": "440309"
+ },
+ {
+ "label": "坪山区",
+ "value": "440310"
+ }
+ ],
+ [{
+ "label": "香洲区",
+ "value": "440402"
+ },
+ {
+ "label": "斗门区",
+ "value": "440403"
+ },
+ {
+ "label": "金湾区",
+ "value": "440404"
+ }
+ ],
+ [{
+ "label": "龙湖区",
+ "value": "440507"
+ },
+ {
+ "label": "金平区",
+ "value": "440511"
+ },
+ {
+ "label": "濠江区",
+ "value": "440512"
+ },
+ {
+ "label": "潮阳区",
+ "value": "440513"
+ },
+ {
+ "label": "潮南区",
+ "value": "440514"
+ },
+ {
+ "label": "澄海区",
+ "value": "440515"
+ },
+ {
+ "label": "南澳县",
+ "value": "440523"
+ }
+ ],
+ [{
+ "label": "禅城区",
+ "value": "440604"
+ },
+ {
+ "label": "南海区",
+ "value": "440605"
+ },
+ {
+ "label": "顺德区",
+ "value": "440606"
+ },
+ {
+ "label": "三水区",
+ "value": "440607"
+ },
+ {
+ "label": "高明区",
+ "value": "440608"
+ }
+ ],
+ [{
+ "label": "蓬江区",
+ "value": "440703"
+ },
+ {
+ "label": "江海区",
+ "value": "440704"
+ },
+ {
+ "label": "新会区",
+ "value": "440705"
+ },
+ {
+ "label": "台山市",
+ "value": "440781"
+ },
+ {
+ "label": "开平市",
+ "value": "440783"
+ },
+ {
+ "label": "鹤山市",
+ "value": "440784"
+ },
+ {
+ "label": "恩平市",
+ "value": "440785"
+ }
+ ],
+ [{
+ "label": "赤坎区",
+ "value": "440802"
+ },
+ {
+ "label": "霞山区",
+ "value": "440803"
+ },
+ {
+ "label": "坡头区",
+ "value": "440804"
+ },
+ {
+ "label": "麻章区",
+ "value": "440811"
+ },
+ {
+ "label": "遂溪县",
+ "value": "440823"
+ },
+ {
+ "label": "徐闻县",
+ "value": "440825"
+ },
+ {
+ "label": "廉江市",
+ "value": "440881"
+ },
+ {
+ "label": "雷州市",
+ "value": "440882"
+ },
+ {
+ "label": "吴川市",
+ "value": "440883"
+ }
+ ],
+ [{
+ "label": "茂南区",
+ "value": "440902"
+ },
+ {
+ "label": "电白区",
+ "value": "440904"
+ },
+ {
+ "label": "高州市",
+ "value": "440981"
+ },
+ {
+ "label": "化州市",
+ "value": "440982"
+ },
+ {
+ "label": "信宜市",
+ "value": "440983"
+ }
+ ],
+ [{
+ "label": "端州区",
+ "value": "441202"
+ },
+ {
+ "label": "鼎湖区",
+ "value": "441203"
+ },
+ {
+ "label": "高要区",
+ "value": "441204"
+ },
+ {
+ "label": "广宁县",
+ "value": "441223"
+ },
+ {
+ "label": "怀集县",
+ "value": "441224"
+ },
+ {
+ "label": "封开县",
+ "value": "441225"
+ },
+ {
+ "label": "德庆县",
+ "value": "441226"
+ },
+ {
+ "label": "四会市",
+ "value": "441284"
+ }
+ ],
+ [{
+ "label": "惠城区",
+ "value": "441302"
+ },
+ {
+ "label": "惠阳区",
+ "value": "441303"
+ },
+ {
+ "label": "博罗县",
+ "value": "441322"
+ },
+ {
+ "label": "惠东县",
+ "value": "441323"
+ },
+ {
+ "label": "龙门县",
+ "value": "441324"
+ }
+ ],
+ [{
+ "label": "梅江区",
+ "value": "441402"
+ },
+ {
+ "label": "梅县区",
+ "value": "441403"
+ },
+ {
+ "label": "大埔县",
+ "value": "441422"
+ },
+ {
+ "label": "丰顺县",
+ "value": "441423"
+ },
+ {
+ "label": "五华县",
+ "value": "441424"
+ },
+ {
+ "label": "平远县",
+ "value": "441426"
+ },
+ {
+ "label": "蕉岭县",
+ "value": "441427"
+ },
+ {
+ "label": "兴宁市",
+ "value": "441481"
+ }
+ ],
+ [{
+ "label": "城区",
+ "value": "441502"
+ },
+ {
+ "label": "海丰县",
+ "value": "441521"
+ },
+ {
+ "label": "陆河县",
+ "value": "441523"
+ },
+ {
+ "label": "陆丰市",
+ "value": "441581"
+ }
+ ],
+ [{
+ "label": "源城区",
+ "value": "441602"
+ },
+ {
+ "label": "紫金县",
+ "value": "441621"
+ },
+ {
+ "label": "龙川县",
+ "value": "441622"
+ },
+ {
+ "label": "连平县",
+ "value": "441623"
+ },
+ {
+ "label": "和平县",
+ "value": "441624"
+ },
+ {
+ "label": "东源县",
+ "value": "441625"
+ }
+ ],
+ [{
+ "label": "江城区",
+ "value": "441702"
+ },
+ {
+ "label": "阳东区",
+ "value": "441704"
+ },
+ {
+ "label": "阳西县",
+ "value": "441721"
+ },
+ {
+ "label": "阳春市",
+ "value": "441781"
+ }
+ ],
+ [{
+ "label": "清城区",
+ "value": "441802"
+ },
+ {
+ "label": "清新区",
+ "value": "441803"
+ },
+ {
+ "label": "佛冈县",
+ "value": "441821"
+ },
+ {
+ "label": "阳山县",
+ "value": "441823"
+ },
+ {
+ "label": "连山壮族瑶族自治县",
+ "value": "441825"
+ },
+ {
+ "label": "连南瑶族自治县",
+ "value": "441826"
+ },
+ {
+ "label": "英德市",
+ "value": "441881"
+ },
+ {
+ "label": "连州市",
+ "value": "441882"
+ }
+ ],
+ [{
+ "label": "东莞市",
+ "value": "441900"
+ }],
+ [{
+ "label": "中山市",
+ "value": "442000"
+ }],
+ [{
+ "label": "湘桥区",
+ "value": "445102"
+ },
+ {
+ "label": "潮安区",
+ "value": "445103"
+ },
+ {
+ "label": "饶平县",
+ "value": "445122"
+ }
+ ],
+ [{
+ "label": "榕城区",
+ "value": "445202"
+ },
+ {
+ "label": "揭东区",
+ "value": "445203"
+ },
+ {
+ "label": "揭西县",
+ "value": "445222"
+ },
+ {
+ "label": "惠来县",
+ "value": "445224"
+ },
+ {
+ "label": "普宁市",
+ "value": "445281"
+ }
+ ],
+ [{
+ "label": "云城区",
+ "value": "445302"
+ },
+ {
+ "label": "云安区",
+ "value": "445303"
+ },
+ {
+ "label": "新兴县",
+ "value": "445321"
+ },
+ {
+ "label": "郁南县",
+ "value": "445322"
+ },
+ {
+ "label": "罗定市",
+ "value": "445381"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "兴宁区",
+ "value": "450102"
+ },
+ {
+ "label": "青秀区",
+ "value": "450103"
+ },
+ {
+ "label": "江南区",
+ "value": "450105"
+ },
+ {
+ "label": "西乡塘区",
+ "value": "450107"
+ },
+ {
+ "label": "良庆区",
+ "value": "450108"
+ },
+ {
+ "label": "邕宁区",
+ "value": "450109"
+ },
+ {
+ "label": "武鸣区",
+ "value": "450110"
+ },
+ {
+ "label": "隆安县",
+ "value": "450123"
+ },
+ {
+ "label": "马山县",
+ "value": "450124"
+ },
+ {
+ "label": "上林县",
+ "value": "450125"
+ },
+ {
+ "label": "宾阳县",
+ "value": "450126"
+ },
+ {
+ "label": "横县",
+ "value": "450127"
+ }
+ ],
+ [{
+ "label": "城中区",
+ "value": "450202"
+ },
+ {
+ "label": "鱼峰区",
+ "value": "450203"
+ },
+ {
+ "label": "柳南区",
+ "value": "450204"
+ },
+ {
+ "label": "柳北区",
+ "value": "450205"
+ },
+ {
+ "label": "柳江区",
+ "value": "450206"
+ },
+ {
+ "label": "柳城县",
+ "value": "450222"
+ },
+ {
+ "label": "鹿寨县",
+ "value": "450223"
+ },
+ {
+ "label": "融安县",
+ "value": "450224"
+ },
+ {
+ "label": "融水苗族自治县",
+ "value": "450225"
+ },
+ {
+ "label": "三江侗族自治县",
+ "value": "450226"
+ }
+ ],
+ [{
+ "label": "秀峰区",
+ "value": "450302"
+ },
+ {
+ "label": "叠彩区",
+ "value": "450303"
+ },
+ {
+ "label": "象山区",
+ "value": "450304"
+ },
+ {
+ "label": "七星区",
+ "value": "450305"
+ },
+ {
+ "label": "雁山区",
+ "value": "450311"
+ },
+ {
+ "label": "临桂区",
+ "value": "450312"
+ },
+ {
+ "label": "阳朔县",
+ "value": "450321"
+ },
+ {
+ "label": "灵川县",
+ "value": "450323"
+ },
+ {
+ "label": "全州县",
+ "value": "450324"
+ },
+ {
+ "label": "兴安县",
+ "value": "450325"
+ },
+ {
+ "label": "永福县",
+ "value": "450326"
+ },
+ {
+ "label": "灌阳县",
+ "value": "450327"
+ },
+ {
+ "label": "龙胜各族自治县",
+ "value": "450328"
+ },
+ {
+ "label": "资源县",
+ "value": "450329"
+ },
+ {
+ "label": "平乐县",
+ "value": "450330"
+ },
+ {
+ "label": "荔浦县",
+ "value": "450331"
+ },
+ {
+ "label": "恭城瑶族自治县",
+ "value": "450332"
+ }
+ ],
+ [{
+ "label": "万秀区",
+ "value": "450403"
+ },
+ {
+ "label": "长洲区",
+ "value": "450405"
+ },
+ {
+ "label": "龙圩区",
+ "value": "450406"
+ },
+ {
+ "label": "苍梧县",
+ "value": "450421"
+ },
+ {
+ "label": "藤县",
+ "value": "450422"
+ },
+ {
+ "label": "蒙山县",
+ "value": "450423"
+ },
+ {
+ "label": "岑溪市",
+ "value": "450481"
+ }
+ ],
+ [{
+ "label": "海城区",
+ "value": "450502"
+ },
+ {
+ "label": "银海区",
+ "value": "450503"
+ },
+ {
+ "label": "铁山港区",
+ "value": "450512"
+ },
+ {
+ "label": "合浦县",
+ "value": "450521"
+ }
+ ],
+ [{
+ "label": "港口区",
+ "value": "450602"
+ },
+ {
+ "label": "防城区",
+ "value": "450603"
+ },
+ {
+ "label": "上思县",
+ "value": "450621"
+ },
+ {
+ "label": "东兴市",
+ "value": "450681"
+ }
+ ],
+ [{
+ "label": "钦南区",
+ "value": "450702"
+ },
+ {
+ "label": "钦北区",
+ "value": "450703"
+ },
+ {
+ "label": "灵山县",
+ "value": "450721"
+ },
+ {
+ "label": "浦北县",
+ "value": "450722"
+ }
+ ],
+ [{
+ "label": "港北区",
+ "value": "450802"
+ },
+ {
+ "label": "港南区",
+ "value": "450803"
+ },
+ {
+ "label": "覃塘区",
+ "value": "450804"
+ },
+ {
+ "label": "平南县",
+ "value": "450821"
+ },
+ {
+ "label": "桂平市",
+ "value": "450881"
+ }
+ ],
+ [{
+ "label": "玉州区",
+ "value": "450902"
+ },
+ {
+ "label": "福绵区",
+ "value": "450903"
+ },
+ {
+ "label": "容县",
+ "value": "450921"
+ },
+ {
+ "label": "陆川县",
+ "value": "450922"
+ },
+ {
+ "label": "博白县",
+ "value": "450923"
+ },
+ {
+ "label": "兴业县",
+ "value": "450924"
+ },
+ {
+ "label": "北流市",
+ "value": "450981"
+ }
+ ],
+ [{
+ "label": "右江区",
+ "value": "451002"
+ },
+ {
+ "label": "田阳县",
+ "value": "451021"
+ },
+ {
+ "label": "田东县",
+ "value": "451022"
+ },
+ {
+ "label": "平果县",
+ "value": "451023"
+ },
+ {
+ "label": "德保县",
+ "value": "451024"
+ },
+ {
+ "label": "那坡县",
+ "value": "451026"
+ },
+ {
+ "label": "凌云县",
+ "value": "451027"
+ },
+ {
+ "label": "乐业县",
+ "value": "451028"
+ },
+ {
+ "label": "田林县",
+ "value": "451029"
+ },
+ {
+ "label": "西林县",
+ "value": "451030"
+ },
+ {
+ "label": "隆林各族自治县",
+ "value": "451031"
+ },
+ {
+ "label": "靖西市",
+ "value": "451081"
+ }
+ ],
+ [{
+ "label": "八步区",
+ "value": "451102"
+ },
+ {
+ "label": "平桂区",
+ "value": "451103"
+ },
+ {
+ "label": "昭平县",
+ "value": "451121"
+ },
+ {
+ "label": "钟山县",
+ "value": "451122"
+ },
+ {
+ "label": "富川瑶族自治县",
+ "value": "451123"
+ }
+ ],
+ [{
+ "label": "金城江区",
+ "value": "451202"
+ },
+ {
+ "label": "宜州区",
+ "value": "451203"
+ },
+ {
+ "label": "南丹县",
+ "value": "451221"
+ },
+ {
+ "label": "天峨县",
+ "value": "451222"
+ },
+ {
+ "label": "凤山县",
+ "value": "451223"
+ },
+ {
+ "label": "东兰县",
+ "value": "451224"
+ },
+ {
+ "label": "罗城仫佬族自治县",
+ "value": "451225"
+ },
+ {
+ "label": "环江毛南族自治县",
+ "value": "451226"
+ },
+ {
+ "label": "巴马瑶族自治县",
+ "value": "451227"
+ },
+ {
+ "label": "都安瑶族自治县",
+ "value": "451228"
+ },
+ {
+ "label": "大化瑶族自治县",
+ "value": "451229"
+ }
+ ],
+ [{
+ "label": "兴宾区",
+ "value": "451302"
+ },
+ {
+ "label": "忻城县",
+ "value": "451321"
+ },
+ {
+ "label": "象州县",
+ "value": "451322"
+ },
+ {
+ "label": "武宣县",
+ "value": "451323"
+ },
+ {
+ "label": "金秀瑶族自治县",
+ "value": "451324"
+ },
+ {
+ "label": "合山市",
+ "value": "451381"
+ }
+ ],
+ [{
+ "label": "江州区",
+ "value": "451402"
+ },
+ {
+ "label": "扶绥县",
+ "value": "451421"
+ },
+ {
+ "label": "宁明县",
+ "value": "451422"
+ },
+ {
+ "label": "龙州县",
+ "value": "451423"
+ },
+ {
+ "label": "大新县",
+ "value": "451424"
+ },
+ {
+ "label": "天等县",
+ "value": "451425"
+ },
+ {
+ "label": "凭祥市",
+ "value": "451481"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "秀英区",
+ "value": "460105"
+ },
+ {
+ "label": "龙华区",
+ "value": "460106"
+ },
+ {
+ "label": "琼山区",
+ "value": "460107"
+ },
+ {
+ "label": "美兰区",
+ "value": "460108"
+ }
+ ],
+ [{
+ "label": "海棠区",
+ "value": "460202"
+ },
+ {
+ "label": "吉阳区",
+ "value": "460203"
+ },
+ {
+ "label": "天涯区",
+ "value": "460204"
+ },
+ {
+ "label": "崖州区",
+ "value": "460205"
+ }
+ ],
+ [{
+ "label": "西沙群岛",
+ "value": "460321"
+ },
+ {
+ "label": "南沙群岛",
+ "value": "460322"
+ },
+ {
+ "label": "中沙群岛的岛礁及其海域",
+ "value": "460323"
+ }
+ ],
+ [{
+ "label": "儋州市",
+ "value": "460400"
+ }],
+ [{
+ "label": "五指山市",
+ "value": "469001"
+ },
+ {
+ "label": "琼海市",
+ "value": "469002"
+ },
+ {
+ "label": "文昌市",
+ "value": "469005"
+ },
+ {
+ "label": "万宁市",
+ "value": "469006"
+ },
+ {
+ "label": "东方市",
+ "value": "469007"
+ },
+ {
+ "label": "定安县",
+ "value": "469021"
+ },
+ {
+ "label": "屯昌县",
+ "value": "469022"
+ },
+ {
+ "label": "澄迈县",
+ "value": "469023"
+ },
+ {
+ "label": "临高县",
+ "value": "469024"
+ },
+ {
+ "label": "白沙黎族自治县",
+ "value": "469025"
+ },
+ {
+ "label": "昌江黎族自治县",
+ "value": "469026"
+ },
+ {
+ "label": "乐东黎族自治县",
+ "value": "469027"
+ },
+ {
+ "label": "陵水黎族自治县",
+ "value": "469028"
+ },
+ {
+ "label": "保亭黎族苗族自治县",
+ "value": "469029"
+ },
+ {
+ "label": "琼中黎族苗族自治县",
+ "value": "469030"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "万州区",
+ "value": "500101"
+ },
+ {
+ "label": "涪陵区",
+ "value": "500102"
+ },
+ {
+ "label": "渝中区",
+ "value": "500103"
+ },
+ {
+ "label": "大渡口区",
+ "value": "500104"
+ },
+ {
+ "label": "江北区",
+ "value": "500105"
+ },
+ {
+ "label": "沙坪坝区",
+ "value": "500106"
+ },
+ {
+ "label": "九龙坡区",
+ "value": "500107"
+ },
+ {
+ "label": "南岸区",
+ "value": "500108"
+ },
+ {
+ "label": "北碚区",
+ "value": "500109"
+ },
+ {
+ "label": "綦江区",
+ "value": "500110"
+ },
+ {
+ "label": "大足区",
+ "value": "500111"
+ },
+ {
+ "label": "渝北区",
+ "value": "500112"
+ },
+ {
+ "label": "巴南区",
+ "value": "500113"
+ },
+ {
+ "label": "黔江区",
+ "value": "500114"
+ },
+ {
+ "label": "长寿区",
+ "value": "500115"
+ },
+ {
+ "label": "江津区",
+ "value": "500116"
+ },
+ {
+ "label": "合川区",
+ "value": "500117"
+ },
+ {
+ "label": "永川区",
+ "value": "500118"
+ },
+ {
+ "label": "南川区",
+ "value": "500119"
+ },
+ {
+ "label": "璧山区",
+ "value": "500120"
+ },
+ {
+ "label": "铜梁区",
+ "value": "500151"
+ },
+ {
+ "label": "潼南区",
+ "value": "500152"
+ },
+ {
+ "label": "荣昌区",
+ "value": "500153"
+ },
+ {
+ "label": "开州区",
+ "value": "500154"
+ },
+ {
+ "label": "梁平区",
+ "value": "500155"
+ },
+ {
+ "label": "武隆区",
+ "value": "500156"
+ }
+ ],
+ [{
+ "label": "城口县",
+ "value": "500229"
+ },
+ {
+ "label": "丰都县",
+ "value": "500230"
+ },
+ {
+ "label": "垫江县",
+ "value": "500231"
+ },
+ {
+ "label": "忠县",
+ "value": "500233"
+ },
+ {
+ "label": "云阳县",
+ "value": "500235"
+ },
+ {
+ "label": "奉节县",
+ "value": "500236"
+ },
+ {
+ "label": "巫山县",
+ "value": "500237"
+ },
+ {
+ "label": "巫溪县",
+ "value": "500238"
+ },
+ {
+ "label": "石柱土家族自治县",
+ "value": "500240"
+ },
+ {
+ "label": "秀山土家族苗族自治县",
+ "value": "500241"
+ },
+ {
+ "label": "酉阳土家族苗族自治县",
+ "value": "500242"
+ },
+ {
+ "label": "彭水苗族土家族自治县",
+ "value": "500243"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "锦江区",
+ "value": "510104"
+ },
+ {
+ "label": "青羊区",
+ "value": "510105"
+ },
+ {
+ "label": "金牛区",
+ "value": "510106"
+ },
+ {
+ "label": "武侯区",
+ "value": "510107"
+ },
+ {
+ "label": "成华区",
+ "value": "510108"
+ },
+ {
+ "label": "龙泉驿区",
+ "value": "510112"
+ },
+ {
+ "label": "青白江区",
+ "value": "510113"
+ },
+ {
+ "label": "新都区",
+ "value": "510114"
+ },
+ {
+ "label": "温江区",
+ "value": "510115"
+ },
+ {
+ "label": "双流区",
+ "value": "510116"
+ },
+ {
+ "label": "郫都区",
+ "value": "510117"
+ },
+ {
+ "label": "金堂县",
+ "value": "510121"
+ },
+ {
+ "label": "大邑县",
+ "value": "510129"
+ },
+ {
+ "label": "蒲江县",
+ "value": "510131"
+ },
+ {
+ "label": "新津县",
+ "value": "510132"
+ },
+ {
+ "label": "都江堰市",
+ "value": "510181"
+ },
+ {
+ "label": "彭州市",
+ "value": "510182"
+ },
+ {
+ "label": "邛崃市",
+ "value": "510183"
+ },
+ {
+ "label": "崇州市",
+ "value": "510184"
+ },
+ {
+ "label": "简阳市",
+ "value": "510185"
+ }
+ ],
+ [{
+ "label": "自流井区",
+ "value": "510302"
+ },
+ {
+ "label": "贡井区",
+ "value": "510303"
+ },
+ {
+ "label": "大安区",
+ "value": "510304"
+ },
+ {
+ "label": "沿滩区",
+ "value": "510311"
+ },
+ {
+ "label": "荣县",
+ "value": "510321"
+ },
+ {
+ "label": "富顺县",
+ "value": "510322"
+ }
+ ],
+ [{
+ "label": "东区",
+ "value": "510402"
+ },
+ {
+ "label": "西区",
+ "value": "510403"
+ },
+ {
+ "label": "仁和区",
+ "value": "510411"
+ },
+ {
+ "label": "米易县",
+ "value": "510421"
+ },
+ {
+ "label": "盐边县",
+ "value": "510422"
+ }
+ ],
+ [{
+ "label": "江阳区",
+ "value": "510502"
+ },
+ {
+ "label": "纳溪区",
+ "value": "510503"
+ },
+ {
+ "label": "龙马潭区",
+ "value": "510504"
+ },
+ {
+ "label": "泸县",
+ "value": "510521"
+ },
+ {
+ "label": "合江县",
+ "value": "510522"
+ },
+ {
+ "label": "叙永县",
+ "value": "510524"
+ },
+ {
+ "label": "古蔺县",
+ "value": "510525"
+ }
+ ],
+ [{
+ "label": "旌阳区",
+ "value": "510603"
+ },
+ {
+ "label": "罗江区",
+ "value": "510604"
+ },
+ {
+ "label": "中江县",
+ "value": "510623"
+ },
+ {
+ "label": "广汉市",
+ "value": "510681"
+ },
+ {
+ "label": "什邡市",
+ "value": "510682"
+ },
+ {
+ "label": "绵竹市",
+ "value": "510683"
+ }
+ ],
+ [{
+ "label": "涪城区",
+ "value": "510703"
+ },
+ {
+ "label": "游仙区",
+ "value": "510704"
+ },
+ {
+ "label": "安州区",
+ "value": "510705"
+ },
+ {
+ "label": "三台县",
+ "value": "510722"
+ },
+ {
+ "label": "盐亭县",
+ "value": "510723"
+ },
+ {
+ "label": "梓潼县",
+ "value": "510725"
+ },
+ {
+ "label": "北川羌族自治县",
+ "value": "510726"
+ },
+ {
+ "label": "平武县",
+ "value": "510727"
+ },
+ {
+ "label": "江油市",
+ "value": "510781"
+ }
+ ],
+ [{
+ "label": "利州区",
+ "value": "510802"
+ },
+ {
+ "label": "昭化区",
+ "value": "510811"
+ },
+ {
+ "label": "朝天区",
+ "value": "510812"
+ },
+ {
+ "label": "旺苍县",
+ "value": "510821"
+ },
+ {
+ "label": "青川县",
+ "value": "510822"
+ },
+ {
+ "label": "剑阁县",
+ "value": "510823"
+ },
+ {
+ "label": "苍溪县",
+ "value": "510824"
+ }
+ ],
+ [{
+ "label": "船山区",
+ "value": "510903"
+ },
+ {
+ "label": "安居区",
+ "value": "510904"
+ },
+ {
+ "label": "蓬溪县",
+ "value": "510921"
+ },
+ {
+ "label": "射洪县",
+ "value": "510922"
+ },
+ {
+ "label": "大英县",
+ "value": "510923"
+ }
+ ],
+ [{
+ "label": "市中区",
+ "value": "511002"
+ },
+ {
+ "label": "东兴区",
+ "value": "511011"
+ },
+ {
+ "label": "威远县",
+ "value": "511024"
+ },
+ {
+ "label": "资中县",
+ "value": "511025"
+ },
+ {
+ "label": "内江经济开发区",
+ "value": "511071"
+ },
+ {
+ "label": "隆昌市",
+ "value": "511083"
+ }
+ ],
+ [{
+ "label": "市中区",
+ "value": "511102"
+ },
+ {
+ "label": "沙湾区",
+ "value": "511111"
+ },
+ {
+ "label": "五通桥区",
+ "value": "511112"
+ },
+ {
+ "label": "金口河区",
+ "value": "511113"
+ },
+ {
+ "label": "犍为县",
+ "value": "511123"
+ },
+ {
+ "label": "井研县",
+ "value": "511124"
+ },
+ {
+ "label": "夹江县",
+ "value": "511126"
+ },
+ {
+ "label": "沐川县",
+ "value": "511129"
+ },
+ {
+ "label": "峨边彝族自治县",
+ "value": "511132"
+ },
+ {
+ "label": "马边彝族自治县",
+ "value": "511133"
+ },
+ {
+ "label": "峨眉山市",
+ "value": "511181"
+ }
+ ],
+ [{
+ "label": "顺庆区",
+ "value": "511302"
+ },
+ {
+ "label": "高坪区",
+ "value": "511303"
+ },
+ {
+ "label": "嘉陵区",
+ "value": "511304"
+ },
+ {
+ "label": "南部县",
+ "value": "511321"
+ },
+ {
+ "label": "营山县",
+ "value": "511322"
+ },
+ {
+ "label": "蓬安县",
+ "value": "511323"
+ },
+ {
+ "label": "仪陇县",
+ "value": "511324"
+ },
+ {
+ "label": "西充县",
+ "value": "511325"
+ },
+ {
+ "label": "阆中市",
+ "value": "511381"
+ }
+ ],
+ [{
+ "label": "东坡区",
+ "value": "511402"
+ },
+ {
+ "label": "彭山区",
+ "value": "511403"
+ },
+ {
+ "label": "仁寿县",
+ "value": "511421"
+ },
+ {
+ "label": "洪雅县",
+ "value": "511423"
+ },
+ {
+ "label": "丹棱县",
+ "value": "511424"
+ },
+ {
+ "label": "青神县",
+ "value": "511425"
+ }
+ ],
+ [{
+ "label": "翠屏区",
+ "value": "511502"
+ },
+ {
+ "label": "南溪区",
+ "value": "511503"
+ },
+ {
+ "label": "宜宾县",
+ "value": "511521"
+ },
+ {
+ "label": "江安县",
+ "value": "511523"
+ },
+ {
+ "label": "长宁县",
+ "value": "511524"
+ },
+ {
+ "label": "高县",
+ "value": "511525"
+ },
+ {
+ "label": "珙县",
+ "value": "511526"
+ },
+ {
+ "label": "筠连县",
+ "value": "511527"
+ },
+ {
+ "label": "兴文县",
+ "value": "511528"
+ },
+ {
+ "label": "屏山县",
+ "value": "511529"
+ }
+ ],
+ [{
+ "label": "广安区",
+ "value": "511602"
+ },
+ {
+ "label": "前锋区",
+ "value": "511603"
+ },
+ {
+ "label": "岳池县",
+ "value": "511621"
+ },
+ {
+ "label": "武胜县",
+ "value": "511622"
+ },
+ {
+ "label": "邻水县",
+ "value": "511623"
+ },
+ {
+ "label": "华蓥市",
+ "value": "511681"
+ }
+ ],
+ [{
+ "label": "通川区",
+ "value": "511702"
+ },
+ {
+ "label": "达川区",
+ "value": "511703"
+ },
+ {
+ "label": "宣汉县",
+ "value": "511722"
+ },
+ {
+ "label": "开江县",
+ "value": "511723"
+ },
+ {
+ "label": "大竹县",
+ "value": "511724"
+ },
+ {
+ "label": "渠县",
+ "value": "511725"
+ },
+ {
+ "label": "达州经济开发区",
+ "value": "511771"
+ },
+ {
+ "label": "万源市",
+ "value": "511781"
+ }
+ ],
+ [{
+ "label": "雨城区",
+ "value": "511802"
+ },
+ {
+ "label": "名山区",
+ "value": "511803"
+ },
+ {
+ "label": "荥经县",
+ "value": "511822"
+ },
+ {
+ "label": "汉源县",
+ "value": "511823"
+ },
+ {
+ "label": "石棉县",
+ "value": "511824"
+ },
+ {
+ "label": "天全县",
+ "value": "511825"
+ },
+ {
+ "label": "芦山县",
+ "value": "511826"
+ },
+ {
+ "label": "宝兴县",
+ "value": "511827"
+ }
+ ],
+ [{
+ "label": "巴州区",
+ "value": "511902"
+ },
+ {
+ "label": "恩阳区",
+ "value": "511903"
+ },
+ {
+ "label": "通江县",
+ "value": "511921"
+ },
+ {
+ "label": "南江县",
+ "value": "511922"
+ },
+ {
+ "label": "平昌县",
+ "value": "511923"
+ },
+ {
+ "label": "巴中经济开发区",
+ "value": "511971"
+ }
+ ],
+ [{
+ "label": "雁江区",
+ "value": "512002"
+ },
+ {
+ "label": "安岳县",
+ "value": "512021"
+ },
+ {
+ "label": "乐至县",
+ "value": "512022"
+ }
+ ],
+ [{
+ "label": "马尔康市",
+ "value": "513201"
+ },
+ {
+ "label": "汶川县",
+ "value": "513221"
+ },
+ {
+ "label": "理县",
+ "value": "513222"
+ },
+ {
+ "label": "茂县",
+ "value": "513223"
+ },
+ {
+ "label": "松潘县",
+ "value": "513224"
+ },
+ {
+ "label": "九寨沟县",
+ "value": "513225"
+ },
+ {
+ "label": "金川县",
+ "value": "513226"
+ },
+ {
+ "label": "小金县",
+ "value": "513227"
+ },
+ {
+ "label": "黑水县",
+ "value": "513228"
+ },
+ {
+ "label": "壤塘县",
+ "value": "513230"
+ },
+ {
+ "label": "阿坝县",
+ "value": "513231"
+ },
+ {
+ "label": "若尔盖县",
+ "value": "513232"
+ },
+ {
+ "label": "红原县",
+ "value": "513233"
+ }
+ ],
+ [{
+ "label": "康定市",
+ "value": "513301"
+ },
+ {
+ "label": "泸定县",
+ "value": "513322"
+ },
+ {
+ "label": "丹巴县",
+ "value": "513323"
+ },
+ {
+ "label": "九龙县",
+ "value": "513324"
+ },
+ {
+ "label": "雅江县",
+ "value": "513325"
+ },
+ {
+ "label": "道孚县",
+ "value": "513326"
+ },
+ {
+ "label": "炉霍县",
+ "value": "513327"
+ },
+ {
+ "label": "甘孜县",
+ "value": "513328"
+ },
+ {
+ "label": "新龙县",
+ "value": "513329"
+ },
+ {
+ "label": "德格县",
+ "value": "513330"
+ },
+ {
+ "label": "白玉县",
+ "value": "513331"
+ },
+ {
+ "label": "石渠县",
+ "value": "513332"
+ },
+ {
+ "label": "色达县",
+ "value": "513333"
+ },
+ {
+ "label": "理塘县",
+ "value": "513334"
+ },
+ {
+ "label": "巴塘县",
+ "value": "513335"
+ },
+ {
+ "label": "乡城县",
+ "value": "513336"
+ },
+ {
+ "label": "稻城县",
+ "value": "513337"
+ },
+ {
+ "label": "得荣县",
+ "value": "513338"
+ }
+ ],
+ [{
+ "label": "西昌市",
+ "value": "513401"
+ },
+ {
+ "label": "木里藏族自治县",
+ "value": "513422"
+ },
+ {
+ "label": "盐源县",
+ "value": "513423"
+ },
+ {
+ "label": "德昌县",
+ "value": "513424"
+ },
+ {
+ "label": "会理县",
+ "value": "513425"
+ },
+ {
+ "label": "会东县",
+ "value": "513426"
+ },
+ {
+ "label": "宁南县",
+ "value": "513427"
+ },
+ {
+ "label": "普格县",
+ "value": "513428"
+ },
+ {
+ "label": "布拖县",
+ "value": "513429"
+ },
+ {
+ "label": "金阳县",
+ "value": "513430"
+ },
+ {
+ "label": "昭觉县",
+ "value": "513431"
+ },
+ {
+ "label": "喜德县",
+ "value": "513432"
+ },
+ {
+ "label": "冕宁县",
+ "value": "513433"
+ },
+ {
+ "label": "越西县",
+ "value": "513434"
+ },
+ {
+ "label": "甘洛县",
+ "value": "513435"
+ },
+ {
+ "label": "美姑县",
+ "value": "513436"
+ },
+ {
+ "label": "雷波县",
+ "value": "513437"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "南明区",
+ "value": "520102"
+ },
+ {
+ "label": "云岩区",
+ "value": "520103"
+ },
+ {
+ "label": "花溪区",
+ "value": "520111"
+ },
+ {
+ "label": "乌当区",
+ "value": "520112"
+ },
+ {
+ "label": "白云区",
+ "value": "520113"
+ },
+ {
+ "label": "观山湖区",
+ "value": "520115"
+ },
+ {
+ "label": "开阳县",
+ "value": "520121"
+ },
+ {
+ "label": "息烽县",
+ "value": "520122"
+ },
+ {
+ "label": "修文县",
+ "value": "520123"
+ },
+ {
+ "label": "清镇市",
+ "value": "520181"
+ }
+ ],
+ [{
+ "label": "钟山区",
+ "value": "520201"
+ },
+ {
+ "label": "六枝特区",
+ "value": "520203"
+ },
+ {
+ "label": "水城县",
+ "value": "520221"
+ },
+ {
+ "label": "盘州市",
+ "value": "520281"
+ }
+ ],
+ [{
+ "label": "红花岗区",
+ "value": "520302"
+ },
+ {
+ "label": "汇川区",
+ "value": "520303"
+ },
+ {
+ "label": "播州区",
+ "value": "520304"
+ },
+ {
+ "label": "桐梓县",
+ "value": "520322"
+ },
+ {
+ "label": "绥阳县",
+ "value": "520323"
+ },
+ {
+ "label": "正安县",
+ "value": "520324"
+ },
+ {
+ "label": "道真仡佬族苗族自治县",
+ "value": "520325"
+ },
+ {
+ "label": "务川仡佬族苗族自治县",
+ "value": "520326"
+ },
+ {
+ "label": "凤冈县",
+ "value": "520327"
+ },
+ {
+ "label": "湄潭县",
+ "value": "520328"
+ },
+ {
+ "label": "余庆县",
+ "value": "520329"
+ },
+ {
+ "label": "习水县",
+ "value": "520330"
+ },
+ {
+ "label": "赤水市",
+ "value": "520381"
+ },
+ {
+ "label": "仁怀市",
+ "value": "520382"
+ }
+ ],
+ [{
+ "label": "西秀区",
+ "value": "520402"
+ },
+ {
+ "label": "平坝区",
+ "value": "520403"
+ },
+ {
+ "label": "普定县",
+ "value": "520422"
+ },
+ {
+ "label": "镇宁布依族苗族自治县",
+ "value": "520423"
+ },
+ {
+ "label": "关岭布依族苗族自治县",
+ "value": "520424"
+ },
+ {
+ "label": "紫云苗族布依族自治县",
+ "value": "520425"
+ }
+ ],
+ [{
+ "label": "七星关区",
+ "value": "520502"
+ },
+ {
+ "label": "大方县",
+ "value": "520521"
+ },
+ {
+ "label": "黔西县",
+ "value": "520522"
+ },
+ {
+ "label": "金沙县",
+ "value": "520523"
+ },
+ {
+ "label": "织金县",
+ "value": "520524"
+ },
+ {
+ "label": "纳雍县",
+ "value": "520525"
+ },
+ {
+ "label": "威宁彝族回族苗族自治县",
+ "value": "520526"
+ },
+ {
+ "label": "赫章县",
+ "value": "520527"
+ }
+ ],
+ [{
+ "label": "碧江区",
+ "value": "520602"
+ },
+ {
+ "label": "万山区",
+ "value": "520603"
+ },
+ {
+ "label": "江口县",
+ "value": "520621"
+ },
+ {
+ "label": "玉屏侗族自治县",
+ "value": "520622"
+ },
+ {
+ "label": "石阡县",
+ "value": "520623"
+ },
+ {
+ "label": "思南县",
+ "value": "520624"
+ },
+ {
+ "label": "印江土家族苗族自治县",
+ "value": "520625"
+ },
+ {
+ "label": "德江县",
+ "value": "520626"
+ },
+ {
+ "label": "沿河土家族自治县",
+ "value": "520627"
+ },
+ {
+ "label": "松桃苗族自治县",
+ "value": "520628"
+ }
+ ],
+ [{
+ "label": "兴义市",
+ "value": "522301"
+ },
+ {
+ "label": "兴仁县",
+ "value": "522322"
+ },
+ {
+ "label": "普安县",
+ "value": "522323"
+ },
+ {
+ "label": "晴隆县",
+ "value": "522324"
+ },
+ {
+ "label": "贞丰县",
+ "value": "522325"
+ },
+ {
+ "label": "望谟县",
+ "value": "522326"
+ },
+ {
+ "label": "册亨县",
+ "value": "522327"
+ },
+ {
+ "label": "安龙县",
+ "value": "522328"
+ }
+ ],
+ [{
+ "label": "凯里市",
+ "value": "522601"
+ },
+ {
+ "label": "黄平县",
+ "value": "522622"
+ },
+ {
+ "label": "施秉县",
+ "value": "522623"
+ },
+ {
+ "label": "三穗县",
+ "value": "522624"
+ },
+ {
+ "label": "镇远县",
+ "value": "522625"
+ },
+ {
+ "label": "岑巩县",
+ "value": "522626"
+ },
+ {
+ "label": "天柱县",
+ "value": "522627"
+ },
+ {
+ "label": "锦屏县",
+ "value": "522628"
+ },
+ {
+ "label": "剑河县",
+ "value": "522629"
+ },
+ {
+ "label": "台江县",
+ "value": "522630"
+ },
+ {
+ "label": "黎平县",
+ "value": "522631"
+ },
+ {
+ "label": "榕江县",
+ "value": "522632"
+ },
+ {
+ "label": "从江县",
+ "value": "522633"
+ },
+ {
+ "label": "雷山县",
+ "value": "522634"
+ },
+ {
+ "label": "麻江县",
+ "value": "522635"
+ },
+ {
+ "label": "丹寨县",
+ "value": "522636"
+ }
+ ],
+ [{
+ "label": "都匀市",
+ "value": "522701"
+ },
+ {
+ "label": "福泉市",
+ "value": "522702"
+ },
+ {
+ "label": "荔波县",
+ "value": "522722"
+ },
+ {
+ "label": "贵定县",
+ "value": "522723"
+ },
+ {
+ "label": "瓮安县",
+ "value": "522725"
+ },
+ {
+ "label": "独山县",
+ "value": "522726"
+ },
+ {
+ "label": "平塘县",
+ "value": "522727"
+ },
+ {
+ "label": "罗甸县",
+ "value": "522728"
+ },
+ {
+ "label": "长顺县",
+ "value": "522729"
+ },
+ {
+ "label": "龙里县",
+ "value": "522730"
+ },
+ {
+ "label": "惠水县",
+ "value": "522731"
+ },
+ {
+ "label": "三都水族自治县",
+ "value": "522732"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "五华区",
+ "value": "530102"
+ },
+ {
+ "label": "盘龙区",
+ "value": "530103"
+ },
+ {
+ "label": "官渡区",
+ "value": "530111"
+ },
+ {
+ "label": "西山区",
+ "value": "530112"
+ },
+ {
+ "label": "东川区",
+ "value": "530113"
+ },
+ {
+ "label": "呈贡区",
+ "value": "530114"
+ },
+ {
+ "label": "晋宁区",
+ "value": "530115"
+ },
+ {
+ "label": "富民县",
+ "value": "530124"
+ },
+ {
+ "label": "宜良县",
+ "value": "530125"
+ },
+ {
+ "label": "石林彝族自治县",
+ "value": "530126"
+ },
+ {
+ "label": "嵩明县",
+ "value": "530127"
+ },
+ {
+ "label": "禄劝彝族苗族自治县",
+ "value": "530128"
+ },
+ {
+ "label": "寻甸回族彝族自治县",
+ "value": "530129"
+ },
+ {
+ "label": "安宁市",
+ "value": "530181"
+ }
+ ],
+ [{
+ "label": "麒麟区",
+ "value": "530302"
+ },
+ {
+ "label": "沾益区",
+ "value": "530303"
+ },
+ {
+ "label": "马龙县",
+ "value": "530321"
+ },
+ {
+ "label": "陆良县",
+ "value": "530322"
+ },
+ {
+ "label": "师宗县",
+ "value": "530323"
+ },
+ {
+ "label": "罗平县",
+ "value": "530324"
+ },
+ {
+ "label": "富源县",
+ "value": "530325"
+ },
+ {
+ "label": "会泽县",
+ "value": "530326"
+ },
+ {
+ "label": "宣威市",
+ "value": "530381"
+ }
+ ],
+ [{
+ "label": "红塔区",
+ "value": "530402"
+ },
+ {
+ "label": "江川区",
+ "value": "530403"
+ },
+ {
+ "label": "澄江县",
+ "value": "530422"
+ },
+ {
+ "label": "通海县",
+ "value": "530423"
+ },
+ {
+ "label": "华宁县",
+ "value": "530424"
+ },
+ {
+ "label": "易门县",
+ "value": "530425"
+ },
+ {
+ "label": "峨山彝族自治县",
+ "value": "530426"
+ },
+ {
+ "label": "新平彝族傣族自治县",
+ "value": "530427"
+ },
+ {
+ "label": "元江哈尼族彝族傣族自治县",
+ "value": "530428"
+ }
+ ],
+ [{
+ "label": "隆阳区",
+ "value": "530502"
+ },
+ {
+ "label": "施甸县",
+ "value": "530521"
+ },
+ {
+ "label": "龙陵县",
+ "value": "530523"
+ },
+ {
+ "label": "昌宁县",
+ "value": "530524"
+ },
+ {
+ "label": "腾冲市",
+ "value": "530581"
+ }
+ ],
+ [{
+ "label": "昭阳区",
+ "value": "530602"
+ },
+ {
+ "label": "鲁甸县",
+ "value": "530621"
+ },
+ {
+ "label": "巧家县",
+ "value": "530622"
+ },
+ {
+ "label": "盐津县",
+ "value": "530623"
+ },
+ {
+ "label": "大关县",
+ "value": "530624"
+ },
+ {
+ "label": "永善县",
+ "value": "530625"
+ },
+ {
+ "label": "绥江县",
+ "value": "530626"
+ },
+ {
+ "label": "镇雄县",
+ "value": "530627"
+ },
+ {
+ "label": "彝良县",
+ "value": "530628"
+ },
+ {
+ "label": "威信县",
+ "value": "530629"
+ },
+ {
+ "label": "水富县",
+ "value": "530630"
+ }
+ ],
+ [{
+ "label": "古城区",
+ "value": "530702"
+ },
+ {
+ "label": "玉龙纳西族自治县",
+ "value": "530721"
+ },
+ {
+ "label": "永胜县",
+ "value": "530722"
+ },
+ {
+ "label": "华坪县",
+ "value": "530723"
+ },
+ {
+ "label": "宁蒗彝族自治县",
+ "value": "530724"
+ }
+ ],
+ [{
+ "label": "思茅区",
+ "value": "530802"
+ },
+ {
+ "label": "宁洱哈尼族彝族自治县",
+ "value": "530821"
+ },
+ {
+ "label": "墨江哈尼族自治县",
+ "value": "530822"
+ },
+ {
+ "label": "景东彝族自治县",
+ "value": "530823"
+ },
+ {
+ "label": "景谷傣族彝族自治县",
+ "value": "530824"
+ },
+ {
+ "label": "镇沅彝族哈尼族拉祜族自治县",
+ "value": "530825"
+ },
+ {
+ "label": "江城哈尼族彝族自治县",
+ "value": "530826"
+ },
+ {
+ "label": "孟连傣族拉祜族佤族自治县",
+ "value": "530827"
+ },
+ {
+ "label": "澜沧拉祜族自治县",
+ "value": "530828"
+ },
+ {
+ "label": "西盟佤族自治县",
+ "value": "530829"
+ }
+ ],
+ [{
+ "label": "临翔区",
+ "value": "530902"
+ },
+ {
+ "label": "凤庆县",
+ "value": "530921"
+ },
+ {
+ "label": "云县",
+ "value": "530922"
+ },
+ {
+ "label": "永德县",
+ "value": "530923"
+ },
+ {
+ "label": "镇康县",
+ "value": "530924"
+ },
+ {
+ "label": "双江拉祜族佤族布朗族傣族自治县",
+ "value": "530925"
+ },
+ {
+ "label": "耿马傣族佤族自治县",
+ "value": "530926"
+ },
+ {
+ "label": "沧源佤族自治县",
+ "value": "530927"
+ }
+ ],
+ [{
+ "label": "楚雄市",
+ "value": "532301"
+ },
+ {
+ "label": "双柏县",
+ "value": "532322"
+ },
+ {
+ "label": "牟定县",
+ "value": "532323"
+ },
+ {
+ "label": "南华县",
+ "value": "532324"
+ },
+ {
+ "label": "姚安县",
+ "value": "532325"
+ },
+ {
+ "label": "大姚县",
+ "value": "532326"
+ },
+ {
+ "label": "永仁县",
+ "value": "532327"
+ },
+ {
+ "label": "元谋县",
+ "value": "532328"
+ },
+ {
+ "label": "武定县",
+ "value": "532329"
+ },
+ {
+ "label": "禄丰县",
+ "value": "532331"
+ }
+ ],
+ [{
+ "label": "个旧市",
+ "value": "532501"
+ },
+ {
+ "label": "开远市",
+ "value": "532502"
+ },
+ {
+ "label": "蒙自市",
+ "value": "532503"
+ },
+ {
+ "label": "弥勒市",
+ "value": "532504"
+ },
+ {
+ "label": "屏边苗族自治县",
+ "value": "532523"
+ },
+ {
+ "label": "建水县",
+ "value": "532524"
+ },
+ {
+ "label": "石屏县",
+ "value": "532525"
+ },
+ {
+ "label": "泸西县",
+ "value": "532527"
+ },
+ {
+ "label": "元阳县",
+ "value": "532528"
+ },
+ {
+ "label": "红河县",
+ "value": "532529"
+ },
+ {
+ "label": "金平苗族瑶族傣族自治县",
+ "value": "532530"
+ },
+ {
+ "label": "绿春县",
+ "value": "532531"
+ },
+ {
+ "label": "河口瑶族自治县",
+ "value": "532532"
+ }
+ ],
+ [{
+ "label": "文山市",
+ "value": "532601"
+ },
+ {
+ "label": "砚山县",
+ "value": "532622"
+ },
+ {
+ "label": "西畴县",
+ "value": "532623"
+ },
+ {
+ "label": "麻栗坡县",
+ "value": "532624"
+ },
+ {
+ "label": "马关县",
+ "value": "532625"
+ },
+ {
+ "label": "丘北县",
+ "value": "532626"
+ },
+ {
+ "label": "广南县",
+ "value": "532627"
+ },
+ {
+ "label": "富宁县",
+ "value": "532628"
+ }
+ ],
+ [{
+ "label": "景洪市",
+ "value": "532801"
+ },
+ {
+ "label": "勐海县",
+ "value": "532822"
+ },
+ {
+ "label": "勐腊县",
+ "value": "532823"
+ }
+ ],
+ [{
+ "label": "大理市",
+ "value": "532901"
+ },
+ {
+ "label": "漾濞彝族自治县",
+ "value": "532922"
+ },
+ {
+ "label": "祥云县",
+ "value": "532923"
+ },
+ {
+ "label": "宾川县",
+ "value": "532924"
+ },
+ {
+ "label": "弥渡县",
+ "value": "532925"
+ },
+ {
+ "label": "南涧彝族自治县",
+ "value": "532926"
+ },
+ {
+ "label": "巍山彝族回族自治县",
+ "value": "532927"
+ },
+ {
+ "label": "永平县",
+ "value": "532928"
+ },
+ {
+ "label": "云龙县",
+ "value": "532929"
+ },
+ {
+ "label": "洱源县",
+ "value": "532930"
+ },
+ {
+ "label": "剑川县",
+ "value": "532931"
+ },
+ {
+ "label": "鹤庆县",
+ "value": "532932"
+ }
+ ],
+ [{
+ "label": "瑞丽市",
+ "value": "533102"
+ },
+ {
+ "label": "芒市",
+ "value": "533103"
+ },
+ {
+ "label": "梁河县",
+ "value": "533122"
+ },
+ {
+ "label": "盈江县",
+ "value": "533123"
+ },
+ {
+ "label": "陇川县",
+ "value": "533124"
+ }
+ ],
+ [{
+ "label": "泸水市",
+ "value": "533301"
+ },
+ {
+ "label": "福贡县",
+ "value": "533323"
+ },
+ {
+ "label": "贡山独龙族怒族自治县",
+ "value": "533324"
+ },
+ {
+ "label": "兰坪白族普米族自治县",
+ "value": "533325"
+ }
+ ],
+ [{
+ "label": "香格里拉市",
+ "value": "533401"
+ },
+ {
+ "label": "德钦县",
+ "value": "533422"
+ },
+ {
+ "label": "维西傈僳族自治县",
+ "value": "533423"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "城关区",
+ "value": "540102"
+ },
+ {
+ "label": "堆龙德庆区",
+ "value": "540103"
+ },
+ {
+ "label": "林周县",
+ "value": "540121"
+ },
+ {
+ "label": "当雄县",
+ "value": "540122"
+ },
+ {
+ "label": "尼木县",
+ "value": "540123"
+ },
+ {
+ "label": "曲水县",
+ "value": "540124"
+ },
+ {
+ "label": "达孜县",
+ "value": "540126"
+ },
+ {
+ "label": "墨竹工卡县",
+ "value": "540127"
+ },
+ {
+ "label": "格尔木藏青工业园区",
+ "value": "540171"
+ },
+ {
+ "label": "拉萨经济技术开发区",
+ "value": "540172"
+ },
+ {
+ "label": "西藏文化旅游创意园区",
+ "value": "540173"
+ },
+ {
+ "label": "达孜工业园区",
+ "value": "540174"
+ }
+ ],
+ [{
+ "label": "桑珠孜区",
+ "value": "540202"
+ },
+ {
+ "label": "南木林县",
+ "value": "540221"
+ },
+ {
+ "label": "江孜县",
+ "value": "540222"
+ },
+ {
+ "label": "定日县",
+ "value": "540223"
+ },
+ {
+ "label": "萨迦县",
+ "value": "540224"
+ },
+ {
+ "label": "拉孜县",
+ "value": "540225"
+ },
+ {
+ "label": "昂仁县",
+ "value": "540226"
+ },
+ {
+ "label": "谢通门县",
+ "value": "540227"
+ },
+ {
+ "label": "白朗县",
+ "value": "540228"
+ },
+ {
+ "label": "仁布县",
+ "value": "540229"
+ },
+ {
+ "label": "康马县",
+ "value": "540230"
+ },
+ {
+ "label": "定结县",
+ "value": "540231"
+ },
+ {
+ "label": "仲巴县",
+ "value": "540232"
+ },
+ {
+ "label": "亚东县",
+ "value": "540233"
+ },
+ {
+ "label": "吉隆县",
+ "value": "540234"
+ },
+ {
+ "label": "聂拉木县",
+ "value": "540235"
+ },
+ {
+ "label": "萨嘎县",
+ "value": "540236"
+ },
+ {
+ "label": "岗巴县",
+ "value": "540237"
+ }
+ ],
+ [{
+ "label": "卡若区",
+ "value": "540302"
+ },
+ {
+ "label": "江达县",
+ "value": "540321"
+ },
+ {
+ "label": "贡觉县",
+ "value": "540322"
+ },
+ {
+ "label": "类乌齐县",
+ "value": "540323"
+ },
+ {
+ "label": "丁青县",
+ "value": "540324"
+ },
+ {
+ "label": "察雅县",
+ "value": "540325"
+ },
+ {
+ "label": "八宿县",
+ "value": "540326"
+ },
+ {
+ "label": "左贡县",
+ "value": "540327"
+ },
+ {
+ "label": "芒康县",
+ "value": "540328"
+ },
+ {
+ "label": "洛隆县",
+ "value": "540329"
+ },
+ {
+ "label": "边坝县",
+ "value": "540330"
+ }
+ ],
+ [{
+ "label": "巴宜区",
+ "value": "540402"
+ },
+ {
+ "label": "工布江达县",
+ "value": "540421"
+ },
+ {
+ "label": "米林县",
+ "value": "540422"
+ },
+ {
+ "label": "墨脱县",
+ "value": "540423"
+ },
+ {
+ "label": "波密县",
+ "value": "540424"
+ },
+ {
+ "label": "察隅县",
+ "value": "540425"
+ },
+ {
+ "label": "朗县",
+ "value": "540426"
+ }
+ ],
+ [{
+ "label": "乃东区",
+ "value": "540502"
+ },
+ {
+ "label": "扎囊县",
+ "value": "540521"
+ },
+ {
+ "label": "贡嘎县",
+ "value": "540522"
+ },
+ {
+ "label": "桑日县",
+ "value": "540523"
+ },
+ {
+ "label": "琼结县",
+ "value": "540524"
+ },
+ {
+ "label": "曲松县",
+ "value": "540525"
+ },
+ {
+ "label": "措美县",
+ "value": "540526"
+ },
+ {
+ "label": "洛扎县",
+ "value": "540527"
+ },
+ {
+ "label": "加查县",
+ "value": "540528"
+ },
+ {
+ "label": "隆子县",
+ "value": "540529"
+ },
+ {
+ "label": "错那县",
+ "value": "540530"
+ },
+ {
+ "label": "浪卡子县",
+ "value": "540531"
+ }
+ ],
+ [{
+ "label": "那曲县",
+ "value": "542421"
+ },
+ {
+ "label": "嘉黎县",
+ "value": "542422"
+ },
+ {
+ "label": "比如县",
+ "value": "542423"
+ },
+ {
+ "label": "聂荣县",
+ "value": "542424"
+ },
+ {
+ "label": "安多县",
+ "value": "542425"
+ },
+ {
+ "label": "申扎县",
+ "value": "542426"
+ },
+ {
+ "label": "索县",
+ "value": "542427"
+ },
+ {
+ "label": "班戈县",
+ "value": "542428"
+ },
+ {
+ "label": "巴青县",
+ "value": "542429"
+ },
+ {
+ "label": "尼玛县",
+ "value": "542430"
+ },
+ {
+ "label": "双湖县",
+ "value": "542431"
+ }
+ ],
+ [{
+ "label": "普兰县",
+ "value": "542521"
+ },
+ {
+ "label": "札达县",
+ "value": "542522"
+ },
+ {
+ "label": "噶尔县",
+ "value": "542523"
+ },
+ {
+ "label": "日土县",
+ "value": "542524"
+ },
+ {
+ "label": "革吉县",
+ "value": "542525"
+ },
+ {
+ "label": "改则县",
+ "value": "542526"
+ },
+ {
+ "label": "措勤县",
+ "value": "542527"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "新城区",
+ "value": "610102"
+ },
+ {
+ "label": "碑林区",
+ "value": "610103"
+ },
+ {
+ "label": "莲湖区",
+ "value": "610104"
+ },
+ {
+ "label": "灞桥区",
+ "value": "610111"
+ },
+ {
+ "label": "未央区",
+ "value": "610112"
+ },
+ {
+ "label": "雁塔区",
+ "value": "610113"
+ },
+ {
+ "label": "阎良区",
+ "value": "610114"
+ },
+ {
+ "label": "临潼区",
+ "value": "610115"
+ },
+ {
+ "label": "长安区",
+ "value": "610116"
+ },
+ {
+ "label": "高陵区",
+ "value": "610117"
+ },
+ {
+ "label": "鄠邑区",
+ "value": "610118"
+ },
+ {
+ "label": "蓝田县",
+ "value": "610122"
+ },
+ {
+ "label": "周至县",
+ "value": "610124"
+ }
+ ],
+ [{
+ "label": "王益区",
+ "value": "610202"
+ },
+ {
+ "label": "印台区",
+ "value": "610203"
+ },
+ {
+ "label": "耀州区",
+ "value": "610204"
+ },
+ {
+ "label": "宜君县",
+ "value": "610222"
+ }
+ ],
+ [{
+ "label": "渭滨区",
+ "value": "610302"
+ },
+ {
+ "label": "金台区",
+ "value": "610303"
+ },
+ {
+ "label": "陈仓区",
+ "value": "610304"
+ },
+ {
+ "label": "凤翔县",
+ "value": "610322"
+ },
+ {
+ "label": "岐山县",
+ "value": "610323"
+ },
+ {
+ "label": "扶风县",
+ "value": "610324"
+ },
+ {
+ "label": "眉县",
+ "value": "610326"
+ },
+ {
+ "label": "陇县",
+ "value": "610327"
+ },
+ {
+ "label": "千阳县",
+ "value": "610328"
+ },
+ {
+ "label": "麟游县",
+ "value": "610329"
+ },
+ {
+ "label": "凤县",
+ "value": "610330"
+ },
+ {
+ "label": "太白县",
+ "value": "610331"
+ }
+ ],
+ [{
+ "label": "秦都区",
+ "value": "610402"
+ },
+ {
+ "label": "杨陵区",
+ "value": "610403"
+ },
+ {
+ "label": "渭城区",
+ "value": "610404"
+ },
+ {
+ "label": "三原县",
+ "value": "610422"
+ },
+ {
+ "label": "泾阳县",
+ "value": "610423"
+ },
+ {
+ "label": "乾县",
+ "value": "610424"
+ },
+ {
+ "label": "礼泉县",
+ "value": "610425"
+ },
+ {
+ "label": "永寿县",
+ "value": "610426"
+ },
+ {
+ "label": "彬县",
+ "value": "610427"
+ },
+ {
+ "label": "长武县",
+ "value": "610428"
+ },
+ {
+ "label": "旬邑县",
+ "value": "610429"
+ },
+ {
+ "label": "淳化县",
+ "value": "610430"
+ },
+ {
+ "label": "武功县",
+ "value": "610431"
+ },
+ {
+ "label": "兴平市",
+ "value": "610481"
+ }
+ ],
+ [{
+ "label": "临渭区",
+ "value": "610502"
+ },
+ {
+ "label": "华州区",
+ "value": "610503"
+ },
+ {
+ "label": "潼关县",
+ "value": "610522"
+ },
+ {
+ "label": "大荔县",
+ "value": "610523"
+ },
+ {
+ "label": "合阳县",
+ "value": "610524"
+ },
+ {
+ "label": "澄城县",
+ "value": "610525"
+ },
+ {
+ "label": "蒲城县",
+ "value": "610526"
+ },
+ {
+ "label": "白水县",
+ "value": "610527"
+ },
+ {
+ "label": "富平县",
+ "value": "610528"
+ },
+ {
+ "label": "韩城市",
+ "value": "610581"
+ },
+ {
+ "label": "华阴市",
+ "value": "610582"
+ }
+ ],
+ [{
+ "label": "宝塔区",
+ "value": "610602"
+ },
+ {
+ "label": "安塞区",
+ "value": "610603"
+ },
+ {
+ "label": "延长县",
+ "value": "610621"
+ },
+ {
+ "label": "延川县",
+ "value": "610622"
+ },
+ {
+ "label": "子长县",
+ "value": "610623"
+ },
+ {
+ "label": "志丹县",
+ "value": "610625"
+ },
+ {
+ "label": "吴起县",
+ "value": "610626"
+ },
+ {
+ "label": "甘泉县",
+ "value": "610627"
+ },
+ {
+ "label": "富县",
+ "value": "610628"
+ },
+ {
+ "label": "洛川县",
+ "value": "610629"
+ },
+ {
+ "label": "宜川县",
+ "value": "610630"
+ },
+ {
+ "label": "黄龙县",
+ "value": "610631"
+ },
+ {
+ "label": "黄陵县",
+ "value": "610632"
+ }
+ ],
+ [{
+ "label": "汉台区",
+ "value": "610702"
+ },
+ {
+ "label": "南郑区",
+ "value": "610703"
+ },
+ {
+ "label": "城固县",
+ "value": "610722"
+ },
+ {
+ "label": "洋县",
+ "value": "610723"
+ },
+ {
+ "label": "西乡县",
+ "value": "610724"
+ },
+ {
+ "label": "勉县",
+ "value": "610725"
+ },
+ {
+ "label": "宁强县",
+ "value": "610726"
+ },
+ {
+ "label": "略阳县",
+ "value": "610727"
+ },
+ {
+ "label": "镇巴县",
+ "value": "610728"
+ },
+ {
+ "label": "留坝县",
+ "value": "610729"
+ },
+ {
+ "label": "佛坪县",
+ "value": "610730"
+ }
+ ],
+ [{
+ "label": "榆阳区",
+ "value": "610802"
+ },
+ {
+ "label": "横山区",
+ "value": "610803"
+ },
+ {
+ "label": "府谷县",
+ "value": "610822"
+ },
+ {
+ "label": "靖边县",
+ "value": "610824"
+ },
+ {
+ "label": "定边县",
+ "value": "610825"
+ },
+ {
+ "label": "绥德县",
+ "value": "610826"
+ },
+ {
+ "label": "米脂县",
+ "value": "610827"
+ },
+ {
+ "label": "佳县",
+ "value": "610828"
+ },
+ {
+ "label": "吴堡县",
+ "value": "610829"
+ },
+ {
+ "label": "清涧县",
+ "value": "610830"
+ },
+ {
+ "label": "子洲县",
+ "value": "610831"
+ },
+ {
+ "label": "神木市",
+ "value": "610881"
+ }
+ ],
+ [{
+ "label": "汉滨区",
+ "value": "610902"
+ },
+ {
+ "label": "汉阴县",
+ "value": "610921"
+ },
+ {
+ "label": "石泉县",
+ "value": "610922"
+ },
+ {
+ "label": "宁陕县",
+ "value": "610923"
+ },
+ {
+ "label": "紫阳县",
+ "value": "610924"
+ },
+ {
+ "label": "岚皋县",
+ "value": "610925"
+ },
+ {
+ "label": "平利县",
+ "value": "610926"
+ },
+ {
+ "label": "镇坪县",
+ "value": "610927"
+ },
+ {
+ "label": "旬阳县",
+ "value": "610928"
+ },
+ {
+ "label": "白河县",
+ "value": "610929"
+ }
+ ],
+ [{
+ "label": "商州区",
+ "value": "611002"
+ },
+ {
+ "label": "洛南县",
+ "value": "611021"
+ },
+ {
+ "label": "丹凤县",
+ "value": "611022"
+ },
+ {
+ "label": "商南县",
+ "value": "611023"
+ },
+ {
+ "label": "山阳县",
+ "value": "611024"
+ },
+ {
+ "label": "镇安县",
+ "value": "611025"
+ },
+ {
+ "label": "柞水县",
+ "value": "611026"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "城关区",
+ "value": "620102"
+ },
+ {
+ "label": "七里河区",
+ "value": "620103"
+ },
+ {
+ "label": "西固区",
+ "value": "620104"
+ },
+ {
+ "label": "安宁区",
+ "value": "620105"
+ },
+ {
+ "label": "红古区",
+ "value": "620111"
+ },
+ {
+ "label": "永登县",
+ "value": "620121"
+ },
+ {
+ "label": "皋兰县",
+ "value": "620122"
+ },
+ {
+ "label": "榆中县",
+ "value": "620123"
+ },
+ {
+ "label": "兰州新区",
+ "value": "620171"
+ }
+ ],
+ [{
+ "label": "嘉峪关市",
+ "value": "620201"
+ }],
+ [{
+ "label": "金川区",
+ "value": "620302"
+ },
+ {
+ "label": "永昌县",
+ "value": "620321"
+ }
+ ],
+ [{
+ "label": "白银区",
+ "value": "620402"
+ },
+ {
+ "label": "平川区",
+ "value": "620403"
+ },
+ {
+ "label": "靖远县",
+ "value": "620421"
+ },
+ {
+ "label": "会宁县",
+ "value": "620422"
+ },
+ {
+ "label": "景泰县",
+ "value": "620423"
+ }
+ ],
+ [{
+ "label": "秦州区",
+ "value": "620502"
+ },
+ {
+ "label": "麦积区",
+ "value": "620503"
+ },
+ {
+ "label": "清水县",
+ "value": "620521"
+ },
+ {
+ "label": "秦安县",
+ "value": "620522"
+ },
+ {
+ "label": "甘谷县",
+ "value": "620523"
+ },
+ {
+ "label": "武山县",
+ "value": "620524"
+ },
+ {
+ "label": "张家川回族自治县",
+ "value": "620525"
+ }
+ ],
+ [{
+ "label": "凉州区",
+ "value": "620602"
+ },
+ {
+ "label": "民勤县",
+ "value": "620621"
+ },
+ {
+ "label": "古浪县",
+ "value": "620622"
+ },
+ {
+ "label": "天祝藏族自治县",
+ "value": "620623"
+ }
+ ],
+ [{
+ "label": "甘州区",
+ "value": "620702"
+ },
+ {
+ "label": "肃南裕固族自治县",
+ "value": "620721"
+ },
+ {
+ "label": "民乐县",
+ "value": "620722"
+ },
+ {
+ "label": "临泽县",
+ "value": "620723"
+ },
+ {
+ "label": "高台县",
+ "value": "620724"
+ },
+ {
+ "label": "山丹县",
+ "value": "620725"
+ }
+ ],
+ [{
+ "label": "崆峒区",
+ "value": "620802"
+ },
+ {
+ "label": "泾川县",
+ "value": "620821"
+ },
+ {
+ "label": "灵台县",
+ "value": "620822"
+ },
+ {
+ "label": "崇信县",
+ "value": "620823"
+ },
+ {
+ "label": "华亭县",
+ "value": "620824"
+ },
+ {
+ "label": "庄浪县",
+ "value": "620825"
+ },
+ {
+ "label": "静宁县",
+ "value": "620826"
+ },
+ {
+ "label": "平凉工业园区",
+ "value": "620871"
+ }
+ ],
+ [{
+ "label": "肃州区",
+ "value": "620902"
+ },
+ {
+ "label": "金塔县",
+ "value": "620921"
+ },
+ {
+ "label": "瓜州县",
+ "value": "620922"
+ },
+ {
+ "label": "肃北蒙古族自治县",
+ "value": "620923"
+ },
+ {
+ "label": "阿克塞哈萨克族自治县",
+ "value": "620924"
+ },
+ {
+ "label": "玉门市",
+ "value": "620981"
+ },
+ {
+ "label": "敦煌市",
+ "value": "620982"
+ }
+ ],
+ [{
+ "label": "西峰区",
+ "value": "621002"
+ },
+ {
+ "label": "庆城县",
+ "value": "621021"
+ },
+ {
+ "label": "环县",
+ "value": "621022"
+ },
+ {
+ "label": "华池县",
+ "value": "621023"
+ },
+ {
+ "label": "合水县",
+ "value": "621024"
+ },
+ {
+ "label": "正宁县",
+ "value": "621025"
+ },
+ {
+ "label": "宁县",
+ "value": "621026"
+ },
+ {
+ "label": "镇原县",
+ "value": "621027"
+ }
+ ],
+ [{
+ "label": "安定区",
+ "value": "621102"
+ },
+ {
+ "label": "通渭县",
+ "value": "621121"
+ },
+ {
+ "label": "陇西县",
+ "value": "621122"
+ },
+ {
+ "label": "渭源县",
+ "value": "621123"
+ },
+ {
+ "label": "临洮县",
+ "value": "621124"
+ },
+ {
+ "label": "漳县",
+ "value": "621125"
+ },
+ {
+ "label": "岷县",
+ "value": "621126"
+ }
+ ],
+ [{
+ "label": "武都区",
+ "value": "621202"
+ },
+ {
+ "label": "成县",
+ "value": "621221"
+ },
+ {
+ "label": "文县",
+ "value": "621222"
+ },
+ {
+ "label": "宕昌县",
+ "value": "621223"
+ },
+ {
+ "label": "康县",
+ "value": "621224"
+ },
+ {
+ "label": "西和县",
+ "value": "621225"
+ },
+ {
+ "label": "礼县",
+ "value": "621226"
+ },
+ {
+ "label": "徽县",
+ "value": "621227"
+ },
+ {
+ "label": "两当县",
+ "value": "621228"
+ }
+ ],
+ [{
+ "label": "临夏市",
+ "value": "622901"
+ },
+ {
+ "label": "临夏县",
+ "value": "622921"
+ },
+ {
+ "label": "康乐县",
+ "value": "622922"
+ },
+ {
+ "label": "永靖县",
+ "value": "622923"
+ },
+ {
+ "label": "广河县",
+ "value": "622924"
+ },
+ {
+ "label": "和政县",
+ "value": "622925"
+ },
+ {
+ "label": "东乡族自治县",
+ "value": "622926"
+ },
+ {
+ "label": "积石山保安族东乡族撒拉族自治县",
+ "value": "622927"
+ }
+ ],
+ [{
+ "label": "合作市",
+ "value": "623001"
+ },
+ {
+ "label": "临潭县",
+ "value": "623021"
+ },
+ {
+ "label": "卓尼县",
+ "value": "623022"
+ },
+ {
+ "label": "舟曲县",
+ "value": "623023"
+ },
+ {
+ "label": "迭部县",
+ "value": "623024"
+ },
+ {
+ "label": "玛曲县",
+ "value": "623025"
+ },
+ {
+ "label": "碌曲县",
+ "value": "623026"
+ },
+ {
+ "label": "夏河县",
+ "value": "623027"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "城东区",
+ "value": "630102"
+ },
+ {
+ "label": "城中区",
+ "value": "630103"
+ },
+ {
+ "label": "城西区",
+ "value": "630104"
+ },
+ {
+ "label": "城北区",
+ "value": "630105"
+ },
+ {
+ "label": "大通回族土族自治县",
+ "value": "630121"
+ },
+ {
+ "label": "湟中县",
+ "value": "630122"
+ },
+ {
+ "label": "湟源县",
+ "value": "630123"
+ }
+ ],
+ [{
+ "label": "乐都区",
+ "value": "630202"
+ },
+ {
+ "label": "平安区",
+ "value": "630203"
+ },
+ {
+ "label": "民和回族土族自治县",
+ "value": "630222"
+ },
+ {
+ "label": "互助土族自治县",
+ "value": "630223"
+ },
+ {
+ "label": "化隆回族自治县",
+ "value": "630224"
+ },
+ {
+ "label": "循化撒拉族自治县",
+ "value": "630225"
+ }
+ ],
+ [{
+ "label": "门源回族自治县",
+ "value": "632221"
+ },
+ {
+ "label": "祁连县",
+ "value": "632222"
+ },
+ {
+ "label": "海晏县",
+ "value": "632223"
+ },
+ {
+ "label": "刚察县",
+ "value": "632224"
+ }
+ ],
+ [{
+ "label": "同仁县",
+ "value": "632321"
+ },
+ {
+ "label": "尖扎县",
+ "value": "632322"
+ },
+ {
+ "label": "泽库县",
+ "value": "632323"
+ },
+ {
+ "label": "河南蒙古族自治县",
+ "value": "632324"
+ }
+ ],
+ [{
+ "label": "共和县",
+ "value": "632521"
+ },
+ {
+ "label": "同德县",
+ "value": "632522"
+ },
+ {
+ "label": "贵德县",
+ "value": "632523"
+ },
+ {
+ "label": "兴海县",
+ "value": "632524"
+ },
+ {
+ "label": "贵南县",
+ "value": "632525"
+ }
+ ],
+ [{
+ "label": "玛沁县",
+ "value": "632621"
+ },
+ {
+ "label": "班玛县",
+ "value": "632622"
+ },
+ {
+ "label": "甘德县",
+ "value": "632623"
+ },
+ {
+ "label": "达日县",
+ "value": "632624"
+ },
+ {
+ "label": "久治县",
+ "value": "632625"
+ },
+ {
+ "label": "玛多县",
+ "value": "632626"
+ }
+ ],
+ [{
+ "label": "玉树市",
+ "value": "632701"
+ },
+ {
+ "label": "杂多县",
+ "value": "632722"
+ },
+ {
+ "label": "称多县",
+ "value": "632723"
+ },
+ {
+ "label": "治多县",
+ "value": "632724"
+ },
+ {
+ "label": "囊谦县",
+ "value": "632725"
+ },
+ {
+ "label": "曲麻莱县",
+ "value": "632726"
+ }
+ ],
+ [{
+ "label": "格尔木市",
+ "value": "632801"
+ },
+ {
+ "label": "德令哈市",
+ "value": "632802"
+ },
+ {
+ "label": "乌兰县",
+ "value": "632821"
+ },
+ {
+ "label": "都兰县",
+ "value": "632822"
+ },
+ {
+ "label": "天峻县",
+ "value": "632823"
+ },
+ {
+ "label": "大柴旦行政委员会",
+ "value": "632857"
+ },
+ {
+ "label": "冷湖行政委员会",
+ "value": "632858"
+ },
+ {
+ "label": "茫崖行政委员会",
+ "value": "632859"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "兴庆区",
+ "value": "640104"
+ },
+ {
+ "label": "西夏区",
+ "value": "640105"
+ },
+ {
+ "label": "金凤区",
+ "value": "640106"
+ },
+ {
+ "label": "永宁县",
+ "value": "640121"
+ },
+ {
+ "label": "贺兰县",
+ "value": "640122"
+ },
+ {
+ "label": "灵武市",
+ "value": "640181"
+ }
+ ],
+ [{
+ "label": "大武口区",
+ "value": "640202"
+ },
+ {
+ "label": "惠农区",
+ "value": "640205"
+ },
+ {
+ "label": "平罗县",
+ "value": "640221"
+ }
+ ],
+ [{
+ "label": "利通区",
+ "value": "640302"
+ },
+ {
+ "label": "红寺堡区",
+ "value": "640303"
+ },
+ {
+ "label": "盐池县",
+ "value": "640323"
+ },
+ {
+ "label": "同心县",
+ "value": "640324"
+ },
+ {
+ "label": "青铜峡市",
+ "value": "640381"
+ }
+ ],
+ [{
+ "label": "原州区",
+ "value": "640402"
+ },
+ {
+ "label": "西吉县",
+ "value": "640422"
+ },
+ {
+ "label": "隆德县",
+ "value": "640423"
+ },
+ {
+ "label": "泾源县",
+ "value": "640424"
+ },
+ {
+ "label": "彭阳县",
+ "value": "640425"
+ }
+ ],
+ [{
+ "label": "沙坡头区",
+ "value": "640502"
+ },
+ {
+ "label": "中宁县",
+ "value": "640521"
+ },
+ {
+ "label": "海原县",
+ "value": "640522"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "天山区",
+ "value": "650102"
+ },
+ {
+ "label": "沙依巴克区",
+ "value": "650103"
+ },
+ {
+ "label": "新市区",
+ "value": "650104"
+ },
+ {
+ "label": "水磨沟区",
+ "value": "650105"
+ },
+ {
+ "label": "头屯河区",
+ "value": "650106"
+ },
+ {
+ "label": "达坂城区",
+ "value": "650107"
+ },
+ {
+ "label": "米东区",
+ "value": "650109"
+ },
+ {
+ "label": "乌鲁木齐县",
+ "value": "650121"
+ },
+ {
+ "label": "乌鲁木齐经济技术开发区",
+ "value": "650171"
+ },
+ {
+ "label": "乌鲁木齐高新技术产业开发区",
+ "value": "650172"
+ }
+ ],
+ [{
+ "label": "独山子区",
+ "value": "650202"
+ },
+ {
+ "label": "克拉玛依区",
+ "value": "650203"
+ },
+ {
+ "label": "白碱滩区",
+ "value": "650204"
+ },
+ {
+ "label": "乌尔禾区",
+ "value": "650205"
+ }
+ ],
+ [{
+ "label": "高昌区",
+ "value": "650402"
+ },
+ {
+ "label": "鄯善县",
+ "value": "650421"
+ },
+ {
+ "label": "托克逊县",
+ "value": "650422"
+ }
+ ],
+ [{
+ "label": "伊州区",
+ "value": "650502"
+ },
+ {
+ "label": "巴里坤哈萨克自治县",
+ "value": "650521"
+ },
+ {
+ "label": "伊吾县",
+ "value": "650522"
+ }
+ ],
+ [{
+ "label": "昌吉市",
+ "value": "652301"
+ },
+ {
+ "label": "阜康市",
+ "value": "652302"
+ },
+ {
+ "label": "呼图壁县",
+ "value": "652323"
+ },
+ {
+ "label": "玛纳斯县",
+ "value": "652324"
+ },
+ {
+ "label": "奇台县",
+ "value": "652325"
+ },
+ {
+ "label": "吉木萨尔县",
+ "value": "652327"
+ },
+ {
+ "label": "木垒哈萨克自治县",
+ "value": "652328"
+ }
+ ],
+ [{
+ "label": "博乐市",
+ "value": "652701"
+ },
+ {
+ "label": "阿拉山口市",
+ "value": "652702"
+ },
+ {
+ "label": "精河县",
+ "value": "652722"
+ },
+ {
+ "label": "温泉县",
+ "value": "652723"
+ }
+ ],
+ [{
+ "label": "库尔勒市",
+ "value": "652801"
+ },
+ {
+ "label": "轮台县",
+ "value": "652822"
+ },
+ {
+ "label": "尉犁县",
+ "value": "652823"
+ },
+ {
+ "label": "若羌县",
+ "value": "652824"
+ },
+ {
+ "label": "且末县",
+ "value": "652825"
+ },
+ {
+ "label": "焉耆回族自治县",
+ "value": "652826"
+ },
+ {
+ "label": "和静县",
+ "value": "652827"
+ },
+ {
+ "label": "和硕县",
+ "value": "652828"
+ },
+ {
+ "label": "博湖县",
+ "value": "652829"
+ },
+ {
+ "label": "库尔勒经济技术开发区",
+ "value": "652871"
+ }
+ ],
+ [{
+ "label": "阿克苏市",
+ "value": "652901"
+ },
+ {
+ "label": "温宿县",
+ "value": "652922"
+ },
+ {
+ "label": "库车县",
+ "value": "652923"
+ },
+ {
+ "label": "沙雅县",
+ "value": "652924"
+ },
+ {
+ "label": "新和县",
+ "value": "652925"
+ },
+ {
+ "label": "拜城县",
+ "value": "652926"
+ },
+ {
+ "label": "乌什县",
+ "value": "652927"
+ },
+ {
+ "label": "阿瓦提县",
+ "value": "652928"
+ },
+ {
+ "label": "柯坪县",
+ "value": "652929"
+ }
+ ],
+ [{
+ "label": "阿图什市",
+ "value": "653001"
+ },
+ {
+ "label": "阿克陶县",
+ "value": "653022"
+ },
+ {
+ "label": "阿合奇县",
+ "value": "653023"
+ },
+ {
+ "label": "乌恰县",
+ "value": "653024"
+ }
+ ],
+ [{
+ "label": "喀什市",
+ "value": "653101"
+ },
+ {
+ "label": "疏附县",
+ "value": "653121"
+ },
+ {
+ "label": "疏勒县",
+ "value": "653122"
+ },
+ {
+ "label": "英吉沙县",
+ "value": "653123"
+ },
+ {
+ "label": "泽普县",
+ "value": "653124"
+ },
+ {
+ "label": "莎车县",
+ "value": "653125"
+ },
+ {
+ "label": "叶城县",
+ "value": "653126"
+ },
+ {
+ "label": "麦盖提县",
+ "value": "653127"
+ },
+ {
+ "label": "岳普湖县",
+ "value": "653128"
+ },
+ {
+ "label": "伽师县",
+ "value": "653129"
+ },
+ {
+ "label": "巴楚县",
+ "value": "653130"
+ },
+ {
+ "label": "塔什库尔干塔吉克自治县",
+ "value": "653131"
+ }
+ ],
+ [{
+ "label": "和田市",
+ "value": "653201"
+ },
+ {
+ "label": "和田县",
+ "value": "653221"
+ },
+ {
+ "label": "墨玉县",
+ "value": "653222"
+ },
+ {
+ "label": "皮山县",
+ "value": "653223"
+ },
+ {
+ "label": "洛浦县",
+ "value": "653224"
+ },
+ {
+ "label": "策勒县",
+ "value": "653225"
+ },
+ {
+ "label": "于田县",
+ "value": "653226"
+ },
+ {
+ "label": "民丰县",
+ "value": "653227"
+ }
+ ],
+ [{
+ "label": "伊宁市",
+ "value": "654002"
+ },
+ {
+ "label": "奎屯市",
+ "value": "654003"
+ },
+ {
+ "label": "霍尔果斯市",
+ "value": "654004"
+ },
+ {
+ "label": "伊宁县",
+ "value": "654021"
+ },
+ {
+ "label": "察布查尔锡伯自治县",
+ "value": "654022"
+ },
+ {
+ "label": "霍城县",
+ "value": "654023"
+ },
+ {
+ "label": "巩留县",
+ "value": "654024"
+ },
+ {
+ "label": "新源县",
+ "value": "654025"
+ },
+ {
+ "label": "昭苏县",
+ "value": "654026"
+ },
+ {
+ "label": "特克斯县",
+ "value": "654027"
+ },
+ {
+ "label": "尼勒克县",
+ "value": "654028"
+ }
+ ],
+ [{
+ "label": "塔城市",
+ "value": "654201"
+ },
+ {
+ "label": "乌苏市",
+ "value": "654202"
+ },
+ {
+ "label": "额敏县",
+ "value": "654221"
+ },
+ {
+ "label": "沙湾县",
+ "value": "654223"
+ },
+ {
+ "label": "托里县",
+ "value": "654224"
+ },
+ {
+ "label": "裕民县",
+ "value": "654225"
+ },
+ {
+ "label": "和布克赛尔蒙古自治县",
+ "value": "654226"
+ }
+ ],
+ [{
+ "label": "阿勒泰市",
+ "value": "654301"
+ },
+ {
+ "label": "布尔津县",
+ "value": "654321"
+ },
+ {
+ "label": "富蕴县",
+ "value": "654322"
+ },
+ {
+ "label": "福海县",
+ "value": "654323"
+ },
+ {
+ "label": "哈巴河县",
+ "value": "654324"
+ },
+ {
+ "label": "青河县",
+ "value": "654325"
+ },
+ {
+ "label": "吉木乃县",
+ "value": "654326"
+ }
+ ],
+ [{
+ "label": "石河子市",
+ "value": "659001"
+ },
+ {
+ "label": "阿拉尔市",
+ "value": "659002"
+ },
+ {
+ "label": "图木舒克市",
+ "value": "659003"
+ },
+ {
+ "label": "五家渠市",
+ "value": "659004"
+ },
+ {
+ "label": "铁门关市",
+ "value": "659006"
+ }
+ ]
+ ],
+ [
+ [{
+ "label": "台北",
+ "value": "660101"
+ }],
+ [{
+ "label": "高雄",
+ "value": "660201"
+ }],
+ [{
+ "label": "基隆",
+ "value": "660301"
+ }],
+ [{
+ "label": "台中",
+ "value": "660401"
+ }],
+ [{
+ "label": "台南",
+ "value": "660501"
+ }],
+ [{
+ "label": "新竹",
+ "value": "660601"
+ }],
+ [{
+ "label": "嘉义",
+ "value": "660701"
+ }],
+ [{
+ "label": "宜兰",
+ "value": "660801"
+ }],
+ [{
+ "label": "桃园",
+ "value": "660901"
+ }],
+ [{
+ "label": "苗栗",
+ "value": "661001"
+ }],
+ [{
+ "label": "彰化",
+ "value": "661101"
+ }],
+ [{
+ "label": "南投",
+ "value": "661201"
+ }],
+ [{
+ "label": "云林",
+ "value": "661301"
+ }],
+ [{
+ "label": "屏东",
+ "value": "661401"
+ }],
+ [{
+ "label": "台东",
+ "value": "661501"
+ }],
+ [{
+ "label": "花莲",
+ "value": "661601"
+ }],
+ [{
+ "label": "澎湖",
+ "value": "661701"
+ }]
+ ],
+ [
+ [{
+ "label": "香港岛",
+ "value": "670101"
+ }],
+ [{
+ "label": "九龙",
+ "value": "670201"
+ }],
+ [{
+ "label": "新界",
+ "value": "670301"
+ }]
+ ],
+ [
+ [{
+ "label": "澳门半岛",
+ "value": "680101"
+ }],
+ [{
+ "label": "氹仔岛",
+ "value": "680201"
+ }],
+ [{
+ "label": "路环岛",
+ "value": "680301"
+ }],
+ [{
+ "label": "路氹城",
+ "value": "680401"
+ }]
+ ]
+]
+export default areaData;
diff --git a/src/components/mpvue-citypicker/city-data/city.js b/src/components/mpvue-citypicker/city-data/city.js
new file mode 100644
index 0000000..8c1dc26
--- /dev/null
+++ b/src/components/mpvue-citypicker/city-data/city.js
@@ -0,0 +1,1503 @@
+/* eslint-disable */
+var cityData = [
+ [{
+ "label": "市辖区",
+ "value": "1101"
+ }],
+ [{
+ "label": "市辖区",
+ "value": "1201"
+ }],
+ [{
+ "label": "石家庄市",
+ "value": "1301"
+ },
+ {
+ "label": "唐山市",
+ "value": "1302"
+ },
+ {
+ "label": "秦皇岛市",
+ "value": "1303"
+ },
+ {
+ "label": "邯郸市",
+ "value": "1304"
+ },
+ {
+ "label": "邢台市",
+ "value": "1305"
+ },
+ {
+ "label": "保定市",
+ "value": "1306"
+ },
+ {
+ "label": "张家口市",
+ "value": "1307"
+ },
+ {
+ "label": "承德市",
+ "value": "1308"
+ },
+ {
+ "label": "沧州市",
+ "value": "1309"
+ },
+ {
+ "label": "廊坊市",
+ "value": "1310"
+ },
+ {
+ "label": "衡水市",
+ "value": "1311"
+ }
+ ],
+ [{
+ "label": "太原市",
+ "value": "1401"
+ },
+ {
+ "label": "大同市",
+ "value": "1402"
+ },
+ {
+ "label": "阳泉市",
+ "value": "1403"
+ },
+ {
+ "label": "长治市",
+ "value": "1404"
+ },
+ {
+ "label": "晋城市",
+ "value": "1405"
+ },
+ {
+ "label": "朔州市",
+ "value": "1406"
+ },
+ {
+ "label": "晋中市",
+ "value": "1407"
+ },
+ {
+ "label": "运城市",
+ "value": "1408"
+ },
+ {
+ "label": "忻州市",
+ "value": "1409"
+ },
+ {
+ "label": "临汾市",
+ "value": "1410"
+ },
+ {
+ "label": "吕梁市",
+ "value": "1411"
+ }
+ ],
+ [{
+ "label": "呼和浩特市",
+ "value": "1501"
+ },
+ {
+ "label": "包头市",
+ "value": "1502"
+ },
+ {
+ "label": "乌海市",
+ "value": "1503"
+ },
+ {
+ "label": "赤峰市",
+ "value": "1504"
+ },
+ {
+ "label": "通辽市",
+ "value": "1505"
+ },
+ {
+ "label": "鄂尔多斯市",
+ "value": "1506"
+ },
+ {
+ "label": "呼伦贝尔市",
+ "value": "1507"
+ },
+ {
+ "label": "巴彦淖尔市",
+ "value": "1508"
+ },
+ {
+ "label": "乌兰察布市",
+ "value": "1509"
+ },
+ {
+ "label": "兴安盟",
+ "value": "1522"
+ },
+ {
+ "label": "锡林郭勒盟",
+ "value": "1525"
+ },
+ {
+ "label": "阿拉善盟",
+ "value": "1529"
+ }
+ ],
+ [{
+ "label": "沈阳市",
+ "value": "2101"
+ },
+ {
+ "label": "大连市",
+ "value": "2102"
+ },
+ {
+ "label": "鞍山市",
+ "value": "2103"
+ },
+ {
+ "label": "抚顺市",
+ "value": "2104"
+ },
+ {
+ "label": "本溪市",
+ "value": "2105"
+ },
+ {
+ "label": "丹东市",
+ "value": "2106"
+ },
+ {
+ "label": "锦州市",
+ "value": "2107"
+ },
+ {
+ "label": "营口市",
+ "value": "2108"
+ },
+ {
+ "label": "阜新市",
+ "value": "2109"
+ },
+ {
+ "label": "辽阳市",
+ "value": "2110"
+ },
+ {
+ "label": "盘锦市",
+ "value": "2111"
+ },
+ {
+ "label": "铁岭市",
+ "value": "2112"
+ },
+ {
+ "label": "朝阳市",
+ "value": "2113"
+ },
+ {
+ "label": "葫芦岛市",
+ "value": "2114"
+ }
+ ],
+ [{
+ "label": "长春市",
+ "value": "2201"
+ },
+ {
+ "label": "吉林市",
+ "value": "2202"
+ },
+ {
+ "label": "四平市",
+ "value": "2203"
+ },
+ {
+ "label": "辽源市",
+ "value": "2204"
+ },
+ {
+ "label": "通化市",
+ "value": "2205"
+ },
+ {
+ "label": "白山市",
+ "value": "2206"
+ },
+ {
+ "label": "松原市",
+ "value": "2207"
+ },
+ {
+ "label": "白城市",
+ "value": "2208"
+ },
+ {
+ "label": "延边朝鲜族自治州",
+ "value": "2224"
+ }
+ ],
+ [{
+ "label": "哈尔滨市",
+ "value": "2301"
+ },
+ {
+ "label": "齐齐哈尔市",
+ "value": "2302"
+ },
+ {
+ "label": "鸡西市",
+ "value": "2303"
+ },
+ {
+ "label": "鹤岗市",
+ "value": "2304"
+ },
+ {
+ "label": "双鸭山市",
+ "value": "2305"
+ },
+ {
+ "label": "大庆市",
+ "value": "2306"
+ },
+ {
+ "label": "伊春市",
+ "value": "2307"
+ },
+ {
+ "label": "佳木斯市",
+ "value": "2308"
+ },
+ {
+ "label": "七台河市",
+ "value": "2309"
+ },
+ {
+ "label": "牡丹江市",
+ "value": "2310"
+ },
+ {
+ "label": "黑河市",
+ "value": "2311"
+ },
+ {
+ "label": "绥化市",
+ "value": "2312"
+ },
+ {
+ "label": "大兴安岭地区",
+ "value": "2327"
+ }
+ ],
+ [{
+ "label": "市辖区",
+ "value": "3101"
+ }],
+ [{
+ "label": "南京市",
+ "value": "3201"
+ },
+ {
+ "label": "无锡市",
+ "value": "3202"
+ },
+ {
+ "label": "徐州市",
+ "value": "3203"
+ },
+ {
+ "label": "常州市",
+ "value": "3204"
+ },
+ {
+ "label": "苏州市",
+ "value": "3205"
+ },
+ {
+ "label": "南通市",
+ "value": "3206"
+ },
+ {
+ "label": "连云港市",
+ "value": "3207"
+ },
+ {
+ "label": "淮安市",
+ "value": "3208"
+ },
+ {
+ "label": "盐城市",
+ "value": "3209"
+ },
+ {
+ "label": "扬州市",
+ "value": "3210"
+ },
+ {
+ "label": "镇江市",
+ "value": "3211"
+ },
+ {
+ "label": "泰州市",
+ "value": "3212"
+ },
+ {
+ "label": "宿迁市",
+ "value": "3213"
+ }
+ ],
+ [{
+ "label": "杭州市",
+ "value": "3301"
+ },
+ {
+ "label": "宁波市",
+ "value": "3302"
+ },
+ {
+ "label": "温州市",
+ "value": "3303"
+ },
+ {
+ "label": "嘉兴市",
+ "value": "3304"
+ },
+ {
+ "label": "湖州市",
+ "value": "3305"
+ },
+ {
+ "label": "绍兴市",
+ "value": "3306"
+ },
+ {
+ "label": "金华市",
+ "value": "3307"
+ },
+ {
+ "label": "衢州市",
+ "value": "3308"
+ },
+ {
+ "label": "舟山市",
+ "value": "3309"
+ },
+ {
+ "label": "台州市",
+ "value": "3310"
+ },
+ {
+ "label": "丽水市",
+ "value": "3311"
+ }
+ ],
+ [{
+ "label": "合肥市",
+ "value": "3401"
+ },
+ {
+ "label": "芜湖市",
+ "value": "3402"
+ },
+ {
+ "label": "蚌埠市",
+ "value": "3403"
+ },
+ {
+ "label": "淮南市",
+ "value": "3404"
+ },
+ {
+ "label": "马鞍山市",
+ "value": "3405"
+ },
+ {
+ "label": "淮北市",
+ "value": "3406"
+ },
+ {
+ "label": "铜陵市",
+ "value": "3407"
+ },
+ {
+ "label": "安庆市",
+ "value": "3408"
+ },
+ {
+ "label": "黄山市",
+ "value": "3410"
+ },
+ {
+ "label": "滁州市",
+ "value": "3411"
+ },
+ {
+ "label": "阜阳市",
+ "value": "3412"
+ },
+ {
+ "label": "宿州市",
+ "value": "3413"
+ },
+ {
+ "label": "六安市",
+ "value": "3415"
+ },
+ {
+ "label": "亳州市",
+ "value": "3416"
+ },
+ {
+ "label": "池州市",
+ "value": "3417"
+ },
+ {
+ "label": "宣城市",
+ "value": "3418"
+ }
+ ],
+ [{
+ "label": "福州市",
+ "value": "3501"
+ },
+ {
+ "label": "厦门市",
+ "value": "3502"
+ },
+ {
+ "label": "莆田市",
+ "value": "3503"
+ },
+ {
+ "label": "三明市",
+ "value": "3504"
+ },
+ {
+ "label": "泉州市",
+ "value": "3505"
+ },
+ {
+ "label": "漳州市",
+ "value": "3506"
+ },
+ {
+ "label": "南平市",
+ "value": "3507"
+ },
+ {
+ "label": "龙岩市",
+ "value": "3508"
+ },
+ {
+ "label": "宁德市",
+ "value": "3509"
+ }
+ ],
+ [{
+ "label": "南昌市",
+ "value": "3601"
+ },
+ {
+ "label": "景德镇市",
+ "value": "3602"
+ },
+ {
+ "label": "萍乡市",
+ "value": "3603"
+ },
+ {
+ "label": "九江市",
+ "value": "3604"
+ },
+ {
+ "label": "新余市",
+ "value": "3605"
+ },
+ {
+ "label": "鹰潭市",
+ "value": "3606"
+ },
+ {
+ "label": "赣州市",
+ "value": "3607"
+ },
+ {
+ "label": "吉安市",
+ "value": "3608"
+ },
+ {
+ "label": "宜春市",
+ "value": "3609"
+ },
+ {
+ "label": "抚州市",
+ "value": "3610"
+ },
+ {
+ "label": "上饶市",
+ "value": "3611"
+ }
+ ],
+ [{
+ "label": "济南市",
+ "value": "3701"
+ },
+ {
+ "label": "青岛市",
+ "value": "3702"
+ },
+ {
+ "label": "淄博市",
+ "value": "3703"
+ },
+ {
+ "label": "枣庄市",
+ "value": "3704"
+ },
+ {
+ "label": "东营市",
+ "value": "3705"
+ },
+ {
+ "label": "烟台市",
+ "value": "3706"
+ },
+ {
+ "label": "潍坊市",
+ "value": "3707"
+ },
+ {
+ "label": "济宁市",
+ "value": "3708"
+ },
+ {
+ "label": "泰安市",
+ "value": "3709"
+ },
+ {
+ "label": "威海市",
+ "value": "3710"
+ },
+ {
+ "label": "日照市",
+ "value": "3711"
+ },
+ {
+ "label": "莱芜市",
+ "value": "3712"
+ },
+ {
+ "label": "临沂市",
+ "value": "3713"
+ },
+ {
+ "label": "德州市",
+ "value": "3714"
+ },
+ {
+ "label": "聊城市",
+ "value": "3715"
+ },
+ {
+ "label": "滨州市",
+ "value": "3716"
+ },
+ {
+ "label": "菏泽市",
+ "value": "3717"
+ }
+ ],
+ [{
+ "label": "郑州市",
+ "value": "4101"
+ },
+ {
+ "label": "开封市",
+ "value": "4102"
+ },
+ {
+ "label": "洛阳市",
+ "value": "4103"
+ },
+ {
+ "label": "平顶山市",
+ "value": "4104"
+ },
+ {
+ "label": "安阳市",
+ "value": "4105"
+ },
+ {
+ "label": "鹤壁市",
+ "value": "4106"
+ },
+ {
+ "label": "新乡市",
+ "value": "4107"
+ },
+ {
+ "label": "焦作市",
+ "value": "4108"
+ },
+ {
+ "label": "濮阳市",
+ "value": "4109"
+ },
+ {
+ "label": "许昌市",
+ "value": "4110"
+ },
+ {
+ "label": "漯河市",
+ "value": "4111"
+ },
+ {
+ "label": "三门峡市",
+ "value": "4112"
+ },
+ {
+ "label": "南阳市",
+ "value": "4113"
+ },
+ {
+ "label": "商丘市",
+ "value": "4114"
+ },
+ {
+ "label": "信阳市",
+ "value": "4115"
+ },
+ {
+ "label": "周口市",
+ "value": "4116"
+ },
+ {
+ "label": "驻马店市",
+ "value": "4117"
+ },
+ {
+ "label": "省直辖县级行政区划",
+ "value": "4190"
+ }
+ ],
+ [{
+ "label": "武汉市",
+ "value": "4201"
+ },
+ {
+ "label": "黄石市",
+ "value": "4202"
+ },
+ {
+ "label": "十堰市",
+ "value": "4203"
+ },
+ {
+ "label": "宜昌市",
+ "value": "4205"
+ },
+ {
+ "label": "襄阳市",
+ "value": "4206"
+ },
+ {
+ "label": "鄂州市",
+ "value": "4207"
+ },
+ {
+ "label": "荆门市",
+ "value": "4208"
+ },
+ {
+ "label": "孝感市",
+ "value": "4209"
+ },
+ {
+ "label": "荆州市",
+ "value": "4210"
+ },
+ {
+ "label": "黄冈市",
+ "value": "4211"
+ },
+ {
+ "label": "咸宁市",
+ "value": "4212"
+ },
+ {
+ "label": "随州市",
+ "value": "4213"
+ },
+ {
+ "label": "恩施土家族苗族自治州",
+ "value": "4228"
+ },
+ {
+ "label": "省直辖县级行政区划",
+ "value": "4290"
+ }
+ ],
+ [{
+ "label": "长沙市",
+ "value": "4301"
+ },
+ {
+ "label": "株洲市",
+ "value": "4302"
+ },
+ {
+ "label": "湘潭市",
+ "value": "4303"
+ },
+ {
+ "label": "衡阳市",
+ "value": "4304"
+ },
+ {
+ "label": "邵阳市",
+ "value": "4305"
+ },
+ {
+ "label": "岳阳市",
+ "value": "4306"
+ },
+ {
+ "label": "常德市",
+ "value": "4307"
+ },
+ {
+ "label": "张家界市",
+ "value": "4308"
+ },
+ {
+ "label": "益阳市",
+ "value": "4309"
+ },
+ {
+ "label": "郴州市",
+ "value": "4310"
+ },
+ {
+ "label": "永州市",
+ "value": "4311"
+ },
+ {
+ "label": "怀化市",
+ "value": "4312"
+ },
+ {
+ "label": "娄底市",
+ "value": "4313"
+ },
+ {
+ "label": "湘西土家族苗族自治州",
+ "value": "4331"
+ }
+ ],
+ [{
+ "label": "广州市",
+ "value": "4401"
+ },
+ {
+ "label": "韶关市",
+ "value": "4402"
+ },
+ {
+ "label": "深圳市",
+ "value": "4403"
+ },
+ {
+ "label": "珠海市",
+ "value": "4404"
+ },
+ {
+ "label": "汕头市",
+ "value": "4405"
+ },
+ {
+ "label": "佛山市",
+ "value": "4406"
+ },
+ {
+ "label": "江门市",
+ "value": "4407"
+ },
+ {
+ "label": "湛江市",
+ "value": "4408"
+ },
+ {
+ "label": "茂名市",
+ "value": "4409"
+ },
+ {
+ "label": "肇庆市",
+ "value": "4412"
+ },
+ {
+ "label": "惠州市",
+ "value": "4413"
+ },
+ {
+ "label": "梅州市",
+ "value": "4414"
+ },
+ {
+ "label": "汕尾市",
+ "value": "4415"
+ },
+ {
+ "label": "河源市",
+ "value": "4416"
+ },
+ {
+ "label": "阳江市",
+ "value": "4417"
+ },
+ {
+ "label": "清远市",
+ "value": "4418"
+ },
+ {
+ "label": "东莞市",
+ "value": "4419"
+ },
+ {
+ "label": "中山市",
+ "value": "4420"
+ },
+ {
+ "label": "潮州市",
+ "value": "4451"
+ },
+ {
+ "label": "揭阳市",
+ "value": "4452"
+ },
+ {
+ "label": "云浮市",
+ "value": "4453"
+ }
+ ],
+ [{
+ "label": "南宁市",
+ "value": "4501"
+ },
+ {
+ "label": "柳州市",
+ "value": "4502"
+ },
+ {
+ "label": "桂林市",
+ "value": "4503"
+ },
+ {
+ "label": "梧州市",
+ "value": "4504"
+ },
+ {
+ "label": "北海市",
+ "value": "4505"
+ },
+ {
+ "label": "防城港市",
+ "value": "4506"
+ },
+ {
+ "label": "钦州市",
+ "value": "4507"
+ },
+ {
+ "label": "贵港市",
+ "value": "4508"
+ },
+ {
+ "label": "玉林市",
+ "value": "4509"
+ },
+ {
+ "label": "百色市",
+ "value": "4510"
+ },
+ {
+ "label": "贺州市",
+ "value": "4511"
+ },
+ {
+ "label": "河池市",
+ "value": "4512"
+ },
+ {
+ "label": "来宾市",
+ "value": "4513"
+ },
+ {
+ "label": "崇左市",
+ "value": "4514"
+ }
+ ],
+ [{
+ "label": "海口市",
+ "value": "4601"
+ },
+ {
+ "label": "三亚市",
+ "value": "4602"
+ },
+ {
+ "label": "三沙市",
+ "value": "4603"
+ },
+ {
+ "label": "儋州市",
+ "value": "4604"
+ },
+ {
+ "label": "省直辖县级行政区划",
+ "value": "4690"
+ }
+ ],
+ [{
+ "label": "市辖区",
+ "value": "5001"
+ },
+ {
+ "label": "县",
+ "value": "5002"
+ }
+ ],
+ [{
+ "label": "成都市",
+ "value": "5101"
+ },
+ {
+ "label": "自贡市",
+ "value": "5103"
+ },
+ {
+ "label": "攀枝花市",
+ "value": "5104"
+ },
+ {
+ "label": "泸州市",
+ "value": "5105"
+ },
+ {
+ "label": "德阳市",
+ "value": "5106"
+ },
+ {
+ "label": "绵阳市",
+ "value": "5107"
+ },
+ {
+ "label": "广元市",
+ "value": "5108"
+ },
+ {
+ "label": "遂宁市",
+ "value": "5109"
+ },
+ {
+ "label": "内江市",
+ "value": "5110"
+ },
+ {
+ "label": "乐山市",
+ "value": "5111"
+ },
+ {
+ "label": "南充市",
+ "value": "5113"
+ },
+ {
+ "label": "眉山市",
+ "value": "5114"
+ },
+ {
+ "label": "宜宾市",
+ "value": "5115"
+ },
+ {
+ "label": "广安市",
+ "value": "5116"
+ },
+ {
+ "label": "达州市",
+ "value": "5117"
+ },
+ {
+ "label": "雅安市",
+ "value": "5118"
+ },
+ {
+ "label": "巴中市",
+ "value": "5119"
+ },
+ {
+ "label": "资阳市",
+ "value": "5120"
+ },
+ {
+ "label": "阿坝藏族羌族自治州",
+ "value": "5132"
+ },
+ {
+ "label": "甘孜藏族自治州",
+ "value": "5133"
+ },
+ {
+ "label": "凉山彝族自治州",
+ "value": "5134"
+ }
+ ],
+ [{
+ "label": "贵阳市",
+ "value": "5201"
+ },
+ {
+ "label": "六盘水市",
+ "value": "5202"
+ },
+ {
+ "label": "遵义市",
+ "value": "5203"
+ },
+ {
+ "label": "安顺市",
+ "value": "5204"
+ },
+ {
+ "label": "毕节市",
+ "value": "5205"
+ },
+ {
+ "label": "铜仁市",
+ "value": "5206"
+ },
+ {
+ "label": "黔西南布依族苗族自治州",
+ "value": "5223"
+ },
+ {
+ "label": "黔东南苗族侗族自治州",
+ "value": "5226"
+ },
+ {
+ "label": "黔南布依族苗族自治州",
+ "value": "5227"
+ }
+ ],
+ [{
+ "label": "昆明市",
+ "value": "5301"
+ },
+ {
+ "label": "曲靖市",
+ "value": "5303"
+ },
+ {
+ "label": "玉溪市",
+ "value": "5304"
+ },
+ {
+ "label": "保山市",
+ "value": "5305"
+ },
+ {
+ "label": "昭通市",
+ "value": "5306"
+ },
+ {
+ "label": "丽江市",
+ "value": "5307"
+ },
+ {
+ "label": "普洱市",
+ "value": "5308"
+ },
+ {
+ "label": "临沧市",
+ "value": "5309"
+ },
+ {
+ "label": "楚雄彝族自治州",
+ "value": "5323"
+ },
+ {
+ "label": "红河哈尼族彝族自治州",
+ "value": "5325"
+ },
+ {
+ "label": "文山壮族苗族自治州",
+ "value": "5326"
+ },
+ {
+ "label": "西双版纳傣族自治州",
+ "value": "5328"
+ },
+ {
+ "label": "大理白族自治州",
+ "value": "5329"
+ },
+ {
+ "label": "德宏傣族景颇族自治州",
+ "value": "5331"
+ },
+ {
+ "label": "怒江傈僳族自治州",
+ "value": "5333"
+ },
+ {
+ "label": "迪庆藏族自治州",
+ "value": "5334"
+ }
+ ],
+ [{
+ "label": "拉萨市",
+ "value": "5401"
+ },
+ {
+ "label": "日喀则市",
+ "value": "5402"
+ },
+ {
+ "label": "昌都市",
+ "value": "5403"
+ },
+ {
+ "label": "林芝市",
+ "value": "5404"
+ },
+ {
+ "label": "山南市",
+ "value": "5405"
+ },
+ {
+ "label": "那曲地区",
+ "value": "5424"
+ },
+ {
+ "label": "阿里地区",
+ "value": "5425"
+ }
+ ],
+ [{
+ "label": "西安市",
+ "value": "6101"
+ },
+ {
+ "label": "铜川市",
+ "value": "6102"
+ },
+ {
+ "label": "宝鸡市",
+ "value": "6103"
+ },
+ {
+ "label": "咸阳市",
+ "value": "6104"
+ },
+ {
+ "label": "渭南市",
+ "value": "6105"
+ },
+ {
+ "label": "延安市",
+ "value": "6106"
+ },
+ {
+ "label": "汉中市",
+ "value": "6107"
+ },
+ {
+ "label": "榆林市",
+ "value": "6108"
+ },
+ {
+ "label": "安康市",
+ "value": "6109"
+ },
+ {
+ "label": "商洛市",
+ "value": "6110"
+ }
+ ],
+ [{
+ "label": "兰州市",
+ "value": "6201"
+ },
+ {
+ "label": "嘉峪关市",
+ "value": "6202"
+ },
+ {
+ "label": "金昌市",
+ "value": "6203"
+ },
+ {
+ "label": "白银市",
+ "value": "6204"
+ },
+ {
+ "label": "天水市",
+ "value": "6205"
+ },
+ {
+ "label": "武威市",
+ "value": "6206"
+ },
+ {
+ "label": "张掖市",
+ "value": "6207"
+ },
+ {
+ "label": "平凉市",
+ "value": "6208"
+ },
+ {
+ "label": "酒泉市",
+ "value": "6209"
+ },
+ {
+ "label": "庆阳市",
+ "value": "6210"
+ },
+ {
+ "label": "定西市",
+ "value": "6211"
+ },
+ {
+ "label": "陇南市",
+ "value": "6212"
+ },
+ {
+ "label": "临夏回族自治州",
+ "value": "6229"
+ },
+ {
+ "label": "甘南藏族自治州",
+ "value": "6230"
+ }
+ ],
+ [{
+ "label": "西宁市",
+ "value": "6301"
+ },
+ {
+ "label": "海东市",
+ "value": "6302"
+ },
+ {
+ "label": "海北藏族自治州",
+ "value": "6322"
+ },
+ {
+ "label": "黄南藏族自治州",
+ "value": "6323"
+ },
+ {
+ "label": "海南藏族自治州",
+ "value": "6325"
+ },
+ {
+ "label": "果洛藏族自治州",
+ "value": "6326"
+ },
+ {
+ "label": "玉树藏族自治州",
+ "value": "6327"
+ },
+ {
+ "label": "海西蒙古族藏族自治州",
+ "value": "6328"
+ }
+ ],
+ [{
+ "label": "银川市",
+ "value": "6401"
+ },
+ {
+ "label": "石嘴山市",
+ "value": "6402"
+ },
+ {
+ "label": "吴忠市",
+ "value": "6403"
+ },
+ {
+ "label": "固原市",
+ "value": "6404"
+ },
+ {
+ "label": "中卫市",
+ "value": "6405"
+ }
+ ],
+ [{
+ "label": "乌鲁木齐市",
+ "value": "6501"
+ },
+ {
+ "label": "克拉玛依市",
+ "value": "6502"
+ },
+ {
+ "label": "吐鲁番市",
+ "value": "6504"
+ },
+ {
+ "label": "哈密市",
+ "value": "6505"
+ },
+ {
+ "label": "昌吉回族自治州",
+ "value": "6523"
+ },
+ {
+ "label": "博尔塔拉蒙古自治州",
+ "value": "6527"
+ },
+ {
+ "label": "巴音郭楞蒙古自治州",
+ "value": "6528"
+ },
+ {
+ "label": "阿克苏地区",
+ "value": "6529"
+ },
+ {
+ "label": "克孜勒苏柯尔克孜自治州",
+ "value": "6530"
+ },
+ {
+ "label": "喀什地区",
+ "value": "6531"
+ },
+ {
+ "label": "和田地区",
+ "value": "6532"
+ },
+ {
+ "label": "伊犁哈萨克自治州",
+ "value": "6540"
+ },
+ {
+ "label": "塔城地区",
+ "value": "6542"
+ },
+ {
+ "label": "阿勒泰地区",
+ "value": "6543"
+ },
+ {
+ "label": "自治区直辖县级行政区划",
+ "value": "6590"
+ }
+ ],
+ [{
+ "label": "台北",
+ "value": "6601"
+ },
+ {
+ "label": "高雄",
+ "value": "6602"
+ },
+ {
+ "label": "基隆",
+ "value": "6603"
+ },
+ {
+ "label": "台中",
+ "value": "6604"
+ },
+ {
+ "label": "台南",
+ "value": "6605"
+ },
+ {
+ "label": "新竹",
+ "value": "6606"
+ },
+ {
+ "label": "嘉义",
+ "value": "6607"
+ },
+ {
+ "label": "宜兰",
+ "value": "6608"
+ },
+ {
+ "label": "桃园",
+ "value": "6609"
+ },
+ {
+ "label": "苗栗",
+ "value": "6610"
+ },
+ {
+ "label": "彰化",
+ "value": "6611"
+ },
+ {
+ "label": "南投",
+ "value": "6612"
+ },
+ {
+ "label": "云林",
+ "value": "6613"
+ },
+ {
+ "label": "屏东",
+ "value": "6614"
+ },
+ {
+ "label": "台东",
+ "value": "6615"
+ },
+ {
+ "label": "花莲",
+ "value": "6616"
+ },
+ {
+ "label": "澎湖",
+ "value": "6617"
+ }
+ ],
+ [{
+ "label": "香港岛",
+ "value": "6701"
+ },
+ {
+ "label": "九龙",
+ "value": "6702"
+ },
+ {
+ "label": "新界",
+ "value": "6703"
+ }
+ ],
+ [{
+ "label": "澳门半岛",
+ "value": "6801"
+ },
+ {
+ "label": "氹仔岛",
+ "value": "6802"
+ },
+ {
+ "label": "路环岛",
+ "value": "6803"
+ },
+ {
+ "label": "路氹城",
+ "value": "6804"
+ }
+ ]
+]
+export default cityData;
diff --git a/src/components/mpvue-citypicker/city-data/province.js b/src/components/mpvue-citypicker/city-data/province.js
new file mode 100644
index 0000000..1bd680e
--- /dev/null
+++ b/src/components/mpvue-citypicker/city-data/province.js
@@ -0,0 +1,139 @@
+/* eslint-disable */
+var provinceData = [{
+ "label": "北京市",
+ "value": "11"
+ },
+ {
+ "label": "天津市",
+ "value": "12"
+ },
+ {
+ "label": "河北省",
+ "value": "13"
+ },
+ {
+ "label": "山西省",
+ "value": "14"
+ },
+ {
+ "label": "内蒙古自治区",
+ "value": "15"
+ },
+ {
+ "label": "辽宁省",
+ "value": "21"
+ },
+ {
+ "label": "吉林省",
+ "value": "22"
+ },
+ {
+ "label": "黑龙江省",
+ "value": "23"
+ },
+ {
+ "label": "上海市",
+ "value": "31"
+ },
+ {
+ "label": "江苏省",
+ "value": "32"
+ },
+ {
+ "label": "浙江省",
+ "value": "33"
+ },
+ {
+ "label": "安徽省",
+ "value": "34"
+ },
+ {
+ "label": "福建省",
+ "value": "35"
+ },
+ {
+ "label": "江西省",
+ "value": "36"
+ },
+ {
+ "label": "山东省",
+ "value": "37"
+ },
+ {
+ "label": "河南省",
+ "value": "41"
+ },
+ {
+ "label": "湖北省",
+ "value": "42"
+ },
+ {
+ "label": "湖南省",
+ "value": "43"
+ },
+ {
+ "label": "广东省",
+ "value": "44"
+ },
+ {
+ "label": "广西壮族自治区",
+ "value": "45"
+ },
+ {
+ "label": "海南省",
+ "value": "46"
+ },
+ {
+ "label": "重庆市",
+ "value": "50"
+ },
+ {
+ "label": "四川省",
+ "value": "51"
+ },
+ {
+ "label": "贵州省",
+ "value": "52"
+ },
+ {
+ "label": "云南省",
+ "value": "53"
+ },
+ {
+ "label": "西藏自治区",
+ "value": "54"
+ },
+ {
+ "label": "陕西省",
+ "value": "61"
+ },
+ {
+ "label": "甘肃省",
+ "value": "62"
+ },
+ {
+ "label": "青海省",
+ "value": "63"
+ },
+ {
+ "label": "宁夏回族自治区",
+ "value": "64"
+ },
+ {
+ "label": "新疆维吾尔自治区",
+ "value": "65"
+ },
+ {
+ "label": "台湾",
+ "value": "66"
+ },
+ {
+ "label": "香港",
+ "value": "67"
+ },
+ {
+ "label": "澳门",
+ "value": "68"
+ }
+]
+export default provinceData;
diff --git a/src/components/mpvue-citypicker/mpvueCityPicker.vue b/src/components/mpvue-citypicker/mpvueCityPicker.vue
new file mode 100644
index 0000000..ec02c8b
--- /dev/null
+++ b/src/components/mpvue-citypicker/mpvueCityPicker.vue
@@ -0,0 +1,230 @@
+
+
+
+
+
+
+
+
+ {{item.label}}
+
+
+ {{item.label}}
+
+
+ {{item.label}}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/mpvue-echarts/src/echarts.vue b/src/components/mpvue-echarts/src/echarts.vue
new file mode 100644
index 0000000..e1cbb66
--- /dev/null
+++ b/src/components/mpvue-echarts/src/echarts.vue
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
diff --git a/src/components/mpvue-echarts/src/wx-canvas.js b/src/components/mpvue-echarts/src/wx-canvas.js
new file mode 100644
index 0000000..ef58893
--- /dev/null
+++ b/src/components/mpvue-echarts/src/wx-canvas.js
@@ -0,0 +1,73 @@
+export default class WxCanvas {
+ constructor(ctx, canvasId) {
+ this.ctx = ctx;
+ this.canvasId = canvasId;
+ this.chart = null;
+
+ WxCanvas.initStyle(ctx);
+ this.initEvent();
+ }
+
+ getContext(contextType) {
+ return contextType === '2d' ? this.ctx : null;
+ }
+
+ setChart(chart) {
+ this.chart = chart;
+ }
+
+ attachEvent() {
+ // noop
+ }
+
+ detachEvent() {
+ // noop
+ }
+
+ static initStyle(ctx) {
+ const styles = ['fillStyle', 'strokeStyle', 'globalAlpha',
+ 'textAlign', 'textBaseAlign', 'shadow', 'lineWidth',
+ 'lineCap', 'lineJoin', 'lineDash', 'miterLimit', 'fontSize'];
+
+ styles.forEach((style) => {
+ Object.defineProperty(ctx, style, {
+ set: (value) => {
+ if ((style !== 'fillStyle' && style !== 'strokeStyle')
+ || (value !== 'none' && value !== null)
+ ) {
+ ctx[`set${style.charAt(0).toUpperCase()}${style.slice(1)}`](value);
+ }
+ },
+ });
+ });
+
+ ctx.createRadialGradient = () => ctx.createCircularGradient(arguments);
+ }
+
+ initEvent() {
+ this.event = {};
+ const eventNames = [{
+ wxName: 'touchStart',
+ ecName: 'mousedown',
+ }, {
+ wxName: 'touchMove',
+ ecName: 'mousemove',
+ }, {
+ wxName: 'touchEnd',
+ ecName: 'mouseup',
+ }, {
+ wxName: 'touchEnd',
+ ecName: 'click',
+ }];
+
+ eventNames.forEach((name) => {
+ this.event[name.wxName] = (e) => {
+ const touch = e.mp.touches[0];
+ this.chart._zr.handler.dispatch(name.ecName, {
+ zrX: name.wxName === 'tap' ? touch.clientX : touch.x,
+ zrY: name.wxName === 'tap' ? touch.clientY : touch.y,
+ });
+ };
+ });
+ }
+}
diff --git a/src/components/mpvue-picker/mpvuePicker.vue b/src/components/mpvue-picker/mpvuePicker.vue
new file mode 100644
index 0000000..93397ee
--- /dev/null
+++ b/src/components/mpvue-picker/mpvuePicker.vue
@@ -0,0 +1,484 @@
+
+
+
+
+
+ 取消
+ 确定
+
+
+
+
+ {{item.label}}
+
+
+
+
+
+
+ {{item.label}}
+
+
+ {{item.label}}
+
+
+
+
+
+
+
+
+
+ {{item.label}}
+
+
+
+
+
+
+
+
+ {{item.label}}
+
+
+
+
+
+
+
+
+ {{item.label}}
+
+
+
+ {{item.label}}
+
+
+
+
+
+
+ {{item.label}}
+
+
+
+ {{item.label}}
+
+
+
+
+ {{item.label}}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/mpvueGestureLock/gestureLock.js b/src/components/mpvueGestureLock/gestureLock.js
new file mode 100644
index 0000000..21cf459
--- /dev/null
+++ b/src/components/mpvueGestureLock/gestureLock.js
@@ -0,0 +1,175 @@
+class GestureLock {
+
+ constructor(containerWidth, cycleRadius) {
+ this.containerWidth = containerWidth; // 容器宽度
+ this.cycleRadius = cycleRadius; // 圆的半径
+
+ this.circleArray = []; // 全部圆的对象数组
+ this.checkPoints = []; // 选中的圆的对象数组
+ this.lineArray = []; // 已激活锁之间的线段数组
+ this.lastCheckPoint = 0; // 最后一个激活的锁
+ this.offsetX = 0; // 容器的 X 偏移
+ this.offsetY = 0; // 容器的 Y 偏移
+ this.activeLine = {}; // 最后一个激活的锁与当前位置之间的线段
+
+ this.windowWidth = wx.getSystemInfoSync().windowWidth; // 窗口大小(用于rpx 和 px 转换)
+
+ this.initCircleArray();
+ }
+
+ // 初始化 画布上的 9个圆
+ initCircleArray() {
+ const cycleMargin = (this.containerWidth - 6 * this.cycleRadius) / 6;
+ let count = 0;
+ for (let i = 0; i < 3; i++) {
+ for (let j = 0; j < 3; j++) {
+ count++;
+ this.circleArray.push({
+ count: count,
+ x: this.rpxTopx((cycleMargin + this.cycleRadius) * (j * 2 + 1)),
+ y: this.rpxTopx((cycleMargin + this.cycleRadius) * (i * 2 + 1)),
+ radius: this.rpxTopx(this.cycleRadius),
+ check: false,
+ style: {
+ left: (cycleMargin + this.cycleRadius) * (j * 2 + 1) - this.cycleRadius + 'rpx',
+ top: (cycleMargin + this.cycleRadius) * (i * 2 + 1) - this.cycleRadius + 'rpx',
+ width: this.cycleRadius * 2 + 'rpx',
+ }
+ });
+ }
+ }
+ }
+
+ onTouchStart(e) {
+ this.setOffset(e);
+ this.checkTouch({
+ x: e.touches[0].pageX - this.offsetX,
+ y: e.touches[0].pageY - this.offsetY
+ });
+ }
+
+ onTouchMove(e) {
+ this.moveDraw(e)
+ }
+
+ onTouchEnd(e) {
+ const checkPoints = this.checkPoints;
+ this.reset();
+ return checkPoints;
+ }
+
+ // 初始化 偏移量
+ setOffset(e) {
+ this.offsetX = e.currentTarget.offsetLeft;
+ this.offsetY = e.currentTarget.offsetTop;
+ }
+
+ // 检测当时 触摸位置是否位于 锁上
+ checkTouch({
+ x,
+ y
+ }) {
+ for (let i = 0; i < this.circleArray.length; i++) {
+ let point = this.circleArray[i];
+ if (this.isPointInCycle(x, y, point.x, point.y, point.radius)) {
+ if (!point.check) {
+ this.checkPoints.push(point.count);
+ if (this.lastCheckPoint != 0) {
+ // 已激活锁之间的线段
+ const line = this.drawLine(this.lastCheckPoint, point);
+ this.lineArray.push(line);
+ }
+ this.lastCheckPoint = point;
+ }
+ point.check = true;
+ return;
+ }
+ }
+ }
+
+ // 画线 - 返回 样式 对象
+ drawLine(start, end) {
+ const width = this.getPointDis(start.x, start.y, end.x, end.y);
+ const rotate = this.getAngle(start, end);
+
+ return {
+ activeLeft: start.x + 'px',
+ activeTop: start.y + 'px',
+ activeWidth: width + 'px',
+ activeRotate: rotate + 'deg'
+ }
+
+ }
+
+ // 获取 画线的 角度
+ getAngle(start, end) {
+ var diff_x = end.x - start.x,
+ diff_y = end.y - start.y;
+ if (diff_x >= 0) {
+ return 360 * Math.atan(diff_y / diff_x) / (2 * Math.PI);
+ } else {
+ return 180 + 360 * Math.atan(diff_y / diff_x) / (2 * Math.PI);
+ }
+ }
+
+ // 判断 当前点是否位于 锁内
+ isPointInCycle(x, y, circleX, circleY, radius) {
+ return (this.getPointDis(x, y, circleX, circleY) < radius) ? true : false;
+ }
+
+ // 获取两点之间距离
+ getPointDis(ax, ay, bx, by) {
+ return Math.sqrt(Math.pow(ax - bx, 2) + Math.pow(ay - by, 2));
+ }
+
+ // 移动 绘制
+ moveDraw(e) {
+ // 画经过的圆
+ const x = e.touches[0].pageX - this.offsetX;
+ const y = e.touches[0].pageY - this.offsetY;
+ this.checkTouch({
+ x,
+ y
+ });
+
+ // 画 最后一个激活的锁与当前位置之间的线段
+ this.activeLine = this.drawLine(this.lastCheckPoint, {
+ x,
+ y
+ });
+ }
+
+ // 使 画布 恢复初始状态
+ reset() {
+ this.circleArray.forEach((item) => {
+ item.check = false;
+ });
+ this.checkPoints = [];
+ this.lineArray = [];
+ this.activeLine = {};
+ this.lastCheckPoint = 0;
+ }
+
+
+ // 获取 最后一个激活的锁与当前位置之间的线段
+ getActiveLine() {
+ return this.activeLine;
+ }
+
+ // 获取 圆对象数组
+ getCycleArray() {
+ return this.circleArray;
+ }
+
+ // 获取 已激活锁之间的线段
+ getLineArray() {
+ return this.lineArray;
+ }
+
+ // 将 RPX 转换成 PX
+ rpxTopx(rpx) {
+ return rpx / 750 * this.windowWidth;
+ }
+}
+
+export default GestureLock;
diff --git a/src/components/mpvueGestureLock/index.vue b/src/components/mpvueGestureLock/index.vue
new file mode 100644
index 0000000..a2cefdd
--- /dev/null
+++ b/src/components/mpvueGestureLock/index.vue
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/my-paging/my-paging.vue b/src/components/my-paging/my-paging.vue
new file mode 100644
index 0000000..7c04929
--- /dev/null
+++ b/src/components/my-paging/my-paging.vue
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/page-foot/page-foot.vue b/src/components/page-foot/page-foot.vue
new file mode 100644
index 0000000..1154dbe
--- /dev/null
+++ b/src/components/page-foot/page-foot.vue
@@ -0,0 +1,38 @@
+
+
+ 感谢{{name}}提供本示例,
+ 我也提交
+
+
+
+
+
diff --git a/src/components/page-head/page-head.vue b/src/components/page-head/page-head.vue
new file mode 100644
index 0000000..07ed46d
--- /dev/null
+++ b/src/components/page-head/page-head.vue
@@ -0,0 +1,16 @@
+
+
+ {{title}}
+
+
+
diff --git a/src/components/pullDown/pullDown.vue b/src/components/pullDown/pullDown.vue
new file mode 100644
index 0000000..10058a2
--- /dev/null
+++ b/src/components/pullDown/pullDown.vue
@@ -0,0 +1,663 @@
+
+
+
+
+
+ {{label}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/show-modal/show-modal.vue b/src/components/show-modal/show-modal.vue
new file mode 100644
index 0000000..f8b523a
--- /dev/null
+++ b/src/components/show-modal/show-modal.vue
@@ -0,0 +1,456 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ cancelText }}
+
+
+
+ {{confirmText}}
+ ({{seconds}}s关闭)
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/tab-nvue/mediaList.vue b/src/components/tab-nvue/mediaList.vue
new file mode 100644
index 0000000..ea3d224
--- /dev/null
+++ b/src/components/tab-nvue/mediaList.vue
@@ -0,0 +1,175 @@
+
+
+
+
+
+ {{options.title}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/u-charts/u-charts.js b/src/components/u-charts/u-charts.js
new file mode 100644
index 0000000..3b1b798
--- /dev/null
+++ b/src/components/u-charts/u-charts.js
@@ -0,0 +1,5046 @@
+/*
+ * uCharts v1.8.5.20190815
+ * uni-app平台高性能跨全端图表,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)
+ * Copyright (c) 2019 QIUN秋云 https://www.ucharts.cn All rights reserved.
+ * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+ *
+ * uCharts官方网站
+ * https://www.uCharts.cn
+ *
+ * 开源地址:
+ * https://gitee.com/uCharts/uCharts
+ *
+ * uni-app插件市场地址:
+ * http://ext.dcloud.net.cn/plugin?id=271
+ *
+ */
+
+'use strict';
+
+var config = {
+ yAxisWidth: 15,
+ yAxisSplit: 5,
+ xAxisHeight: 15,
+ xAxisLineHeight: 15,
+ legendHeight: 15,
+ yAxisTitleWidth: 15,
+ padding: [10, 10, 10, 10],
+ pixelRatio: 1,
+ rotate: false,
+ columePadding: 3,
+ fontSize: 13,
+ //dataPointShape: ['diamond', 'circle', 'triangle', 'rect'],
+ dataPointShape: ['circle', 'circle', 'circle', 'circle'],
+ colors: ['#1890ff', '#2fc25b', '#facc14', '#f04864', '#8543e0', '#90ed7d'],
+ pieChartLinePadding: 15,
+ pieChartTextPadding: 5,
+ xAxisTextPadding: 3,
+ titleColor: '#333333',
+ titleFontSize: 20,
+ subtitleColor: '#999999',
+ subtitleFontSize: 15,
+ toolTipPadding: 3,
+ toolTipBackground: '#000000',
+ toolTipOpacity: 0.7,
+ toolTipLineHeight: 20,
+ radarGridCount: 3,
+ radarLabelTextMargin: 15,
+ gaugeLabelTextMargin: 15
+};
+
+let assign;
+if (Object.assign) {
+ assign = Object.assign;
+} else {
+ // 使用polyfill
+ assign = function(target, varArgs) {
+ if (target == null) {
+ throw new TypeError('Cannot convert undefined or null to object');
+ }
+ var to = Object(target);
+ for (var index = 1; index < arguments.length; index++) {
+ var nextSource = arguments[index];
+ if (nextSource != null) {
+ for (var nextKey in nextSource) {
+ if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
+ to[nextKey] = nextSource[nextKey];
+ }
+ }
+ }
+ }
+ return to;
+ }
+}
+
+var util = {
+ toFixed: function toFixed(num, limit) {
+ limit = limit || 2;
+ if (this.isFloat(num)) {
+ num = num.toFixed(limit);
+ }
+ return num;
+ },
+ isFloat: function isFloat(num) {
+ return num % 1 !== 0;
+ },
+ approximatelyEqual: function approximatelyEqual(num1, num2) {
+ return Math.abs(num1 - num2) < 1e-10;
+ },
+ isSameSign: function isSameSign(num1, num2) {
+ return Math.abs(num1) === num1 && Math.abs(num2) === num2 || Math.abs(num1) !== num1 && Math.abs(num2) !== num2;
+ },
+ isSameXCoordinateArea: function isSameXCoordinateArea(p1, p2) {
+ return this.isSameSign(p1.x, p2.x);
+ },
+ isCollision: function isCollision(obj1, obj2) {
+ obj1.end = {};
+ obj1.end.x = obj1.start.x + obj1.width;
+ obj1.end.y = obj1.start.y - obj1.height;
+ obj2.end = {};
+ obj2.end.x = obj2.start.x + obj2.width;
+ obj2.end.y = obj2.start.y - obj2.height;
+ var flag = obj2.start.x > obj1.end.x || obj2.end.x < obj1.start.x || obj2.end.y > obj1.start.y || obj2.start.y < obj1.end.y;
+ return !flag;
+ }
+};
+
+//兼容H5点击事件
+function getH5Offset(e) {
+ e.mp = {
+ changedTouches: []
+ };
+ e.mp.changedTouches.push({
+ x: e.offsetX,
+ y: e.offsetY
+ });
+ return e;
+}
+
+// hex 转 rgba
+function hexToRgb(hexValue, opc) {
+ var rgx = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
+ var hex = hexValue.replace(rgx, function(m, r, g, b) {
+ return r + r + g + g + b + b;
+ });
+ var rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
+ var r = parseInt(rgb[1], 16);
+ var g = parseInt(rgb[2], 16);
+ var b = parseInt(rgb[3], 16);
+ return 'rgba(' + r + ',' + g + ',' + b + ',' + opc + ')';
+}
+
+function findRange(num, type, limit) {
+ if (isNaN(num)) {
+ throw new Error('[uCharts] unvalid series data!');
+ }
+ limit = limit || 10;
+ type = type ? type : 'upper';
+ var multiple = 1;
+ while (limit < 1) {
+ limit *= 10;
+ multiple *= 10;
+ }
+ if (type === 'upper') {
+ num = Math.ceil(num * multiple);
+ } else {
+ num = Math.floor(num * multiple);
+ }
+ while (num % limit !== 0) {
+ if (type === 'upper') {
+ num++;
+ } else {
+ num--;
+ }
+ }
+ return num / multiple;
+}
+
+function calCandleMA(dayArr, nameArr, colorArr, kdata) {
+ let seriesTemp = [];
+ for (let k = 0; k < dayArr.length; k++) {
+ let seriesItem = {
+ data: [],
+ name: nameArr[k],
+ color: colorArr[k]
+ };
+ for (let i = 0, len = kdata.length; i < len; i++) {
+ if (i < dayArr[k]) {
+ seriesItem.data.push(null);
+ continue;
+ }
+ let sum = 0;
+ for (let j = 0; j < dayArr[k]; j++) {
+ sum += kdata[i - j][1];
+ }
+ seriesItem.data.push(+(sum / dayArr[k]).toFixed(3));
+ }
+ seriesTemp.push(seriesItem);
+ }
+ return seriesTemp;
+}
+
+function calValidDistance(distance, chartData, config, opts) {
+ var dataChartAreaWidth = opts.width - opts.area[1] - opts.area[3];
+ var dataChartWidth = chartData.eachSpacing * (opts.chartData.xAxisData.xAxisPoints.length-1);
+ var validDistance = distance;
+ if (distance >= 0) {
+ validDistance = 0;
+ } else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) {
+ validDistance = dataChartAreaWidth - dataChartWidth;
+ }
+ return validDistance;
+}
+
+function isInAngleRange(angle, startAngle, endAngle) {
+ function adjust(angle) {
+ while (angle < 0) {
+ angle += 2 * Math.PI;
+ }
+ while (angle > 2 * Math.PI) {
+ angle -= 2 * Math.PI;
+ }
+ return angle;
+ }
+ angle = adjust(angle);
+ startAngle = adjust(startAngle);
+ endAngle = adjust(endAngle);
+ if (startAngle > endAngle) {
+ endAngle += 2 * Math.PI;
+ if (angle < startAngle) {
+ angle += 2 * Math.PI;
+ }
+ }
+ return angle >= startAngle && angle <= endAngle;
+}
+
+function calRotateTranslate(x, y, h) {
+ var xv = x;
+ var yv = h - y;
+ var transX = xv + (h - yv - xv) / Math.sqrt(2);
+ transX *= -1;
+ var transY = (h - yv) * (Math.sqrt(2) - 1) - (h - yv - xv) / Math.sqrt(2);
+ return {
+ transX: transX,
+ transY: transY
+ };
+}
+
+function createCurveControlPoints(points, i) {
+
+ function isNotMiddlePoint(points, i) {
+ if (points[i - 1] && points[i + 1]) {
+ return points[i].y >= Math.max(points[i - 1].y, points[i + 1].y) || points[i].y <= Math.min(points[i - 1].y,
+ points[
+ i + 1].y);
+ } else {
+ return false;
+ }
+ }
+ var a = 0.2;
+ var b = 0.2;
+ var pAx = null;
+ var pAy = null;
+ var pBx = null;
+ var pBy = null;
+ if (i < 1) {
+ pAx = points[0].x + (points[1].x - points[0].x) * a;
+ pAy = points[0].y + (points[1].y - points[0].y) * a;
+ } else {
+ pAx = points[i].x + (points[i + 1].x - points[i - 1].x) * a;
+ pAy = points[i].y + (points[i + 1].y - points[i - 1].y) * a;
+ }
+
+ if (i > points.length - 3) {
+ var last = points.length - 1;
+ pBx = points[last].x - (points[last].x - points[last - 1].x) * b;
+ pBy = points[last].y - (points[last].y - points[last - 1].y) * b;
+ } else {
+ pBx = points[i + 1].x - (points[i + 2].x - points[i].x) * b;
+ pBy = points[i + 1].y - (points[i + 2].y - points[i].y) * b;
+ }
+ if (isNotMiddlePoint(points, i + 1)) {
+ pBy = points[i + 1].y;
+ }
+ if (isNotMiddlePoint(points, i)) {
+ pAy = points[i].y;
+ }
+ return {
+ ctrA: {
+ x: pAx,
+ y: pAy
+ },
+ ctrB: {
+ x: pBx,
+ y: pBy
+ }
+ };
+}
+
+function convertCoordinateOrigin(x, y, center) {
+ return {
+ x: center.x + x,
+ y: center.y - y
+ };
+}
+
+function avoidCollision(obj, target) {
+ if (target) {
+ // is collision test
+ while (util.isCollision(obj, target)) {
+ if (obj.start.x > 0) {
+ obj.start.y--;
+ } else if (obj.start.x < 0) {
+ obj.start.y++;
+ } else {
+ if (obj.start.y > 0) {
+ obj.start.y++;
+ } else {
+ obj.start.y--;
+ }
+ }
+ }
+ }
+ return obj;
+}
+
+function fillSeries(series, opts, config) {
+ var index = 0;
+ return series.map(function(item) {
+ if (!item.color) {
+ item.color = config.colors[index];
+ index = (index + 1) % config.colors.length;
+ }
+ if (!item.type) {
+ item.type = opts.type;
+ }
+ if (typeof item.show == "undefined") {
+ item.show = true;
+ }
+ if (!item.type) {
+ item.type = opts.type;
+ }
+ if (!item.pointShape) {
+ item.pointShape = "circle";
+ }
+ if (!item.legendShape) {
+ switch (item.type) {
+ case 'line':
+ item.legendShape = "line";
+ break;
+ case 'column':
+ item.legendShape = "rect";
+ break;
+ case 'area':
+ item.legendShape = "triangle";
+ break;
+ default:
+ item.legendShape = "circle";
+ }
+ }
+ return item;
+ });
+}
+
+function getDataRange(minData, maxData) {
+ var limit = 0;
+ var range = maxData - minData;
+ if (range >= 10000) {
+ limit = 1000;
+ } else if (range >= 1000) {
+ limit = 100;
+ } else if (range >= 100) {
+ limit = 10;
+ } else if (range >= 10) {
+ limit = 5;
+ } else if (range >= 1) {
+ limit = 1;
+ } else if (range >= 0.1) {
+ limit = 0.1;
+ } else if (range >= 0.01) {
+ limit = 0.01;
+ } else if (range >= 0.001) {
+ limit = 0.001;
+ } else if (range >= 0.0001) {
+ limit = 0.0001;
+ } else if (range >= 0.00001) {
+ limit = 0.00001;
+ } else {
+ limit = 0.000001;
+ }
+ return {
+ minRange: findRange(minData, 'lower', limit),
+ maxRange: findRange(maxData, 'upper', limit)
+ };
+}
+
+function measureText(text) {
+ var fontSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : config.fontSize;
+ text = String(text);
+ var text = text.split('');
+ var width = 0;
+ for (let i = 0; i < text.length; i++) {
+ let item = text[i];
+ if (/[a-zA-Z]/.test(item)) {
+ width += 7;
+ } else if (/[0-9]/.test(item)) {
+ width += 5.5;
+ } else if (/\./.test(item)) {
+ width += 2.7;
+ } else if (/-/.test(item)) {
+ width += 3.25;
+ } else if (/[\u4e00-\u9fa5]/.test(item)) {
+ width += 10;
+ } else if (/\(|\)/.test(item)) {
+ width += 3.73;
+ } else if (/\s/.test(item)) {
+ width += 2.5;
+ } else if (/%/.test(item)) {
+ width += 8;
+ } else {
+ width += 10;
+ }
+ }
+ return width * fontSize / 10;
+}
+
+function dataCombine(series) {
+ return series.reduce(function(a, b) {
+ return (a.data ? a.data : a).concat(b.data);
+ }, []);
+}
+
+function dataCombineStack(series, len) {
+ var sum = new Array(len);
+ for (var j = 0; j < sum.length; j++) {
+ sum[j] = 0;
+ }
+ for (var i = 0; i < series.length; i++) {
+ for (var j = 0; j < sum.length; j++) {
+ sum[j] += series[i].data[j];
+ }
+ }
+ return series.reduce(function(a, b) {
+ return (a.data ? a.data : a).concat(b.data).concat(sum);
+ }, []);
+}
+
+function getTouches(touches, opts, e) {
+ let x, y;
+ if (touches.clientX) {
+ if (opts.rotate) {
+ y = opts.height - touches.clientX * opts.pixelRatio;
+ x = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pixelRatio / 2) * (opts.pixelRatio - 1)) *
+ opts.pixelRatio;
+ } else {
+ x = touches.clientX * opts.pixelRatio;
+ y = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pixelRatio / 2) * (opts.pixelRatio - 1)) *
+ opts.pixelRatio;
+ }
+ } else {
+ if (opts.rotate) {
+ y = opts.height - touches.x * opts.pixelRatio;
+ x = touches.y * opts.pixelRatio;
+ } else {
+ x = touches.x * opts.pixelRatio;
+ y = touches.y * opts.pixelRatio;
+ }
+ }
+ return {
+ x: x,
+ y: y
+ }
+}
+
+function getSeriesDataItem(series, index) {
+ var data = [];
+ for (let i = 0; i < series.length; i++) {
+ let item = series[i];
+ if (item.data[index] !== null && typeof item.data[index] !== 'undefined' && item.show) {
+ let seriesItem = {};
+ seriesItem.color = item.color;
+ seriesItem.type = item.type;
+ seriesItem.style = item.style;
+ seriesItem.pointShape = item.pointShape;
+ seriesItem.disableLegend = item.disableLegend;
+ seriesItem.name = item.name;
+ seriesItem.show = item.show;
+ seriesItem.data = item.format ? item.format(item.data[index]) : item.data[index];
+ data.push(seriesItem);
+ }
+ }
+ return data;
+}
+
+function getMaxTextListLength(list) {
+ var lengthList = list.map(function(item) {
+ return measureText(item);
+ });
+ return Math.max.apply(null, lengthList);
+}
+
+function getRadarCoordinateSeries(length) {
+ var eachAngle = 2 * Math.PI / length;
+ var CoordinateSeries = [];
+ for (var i = 0; i < length; i++) {
+ CoordinateSeries.push(eachAngle * i);
+ }
+
+ return CoordinateSeries.map(function(item) {
+ return -1 * item + Math.PI / 2;
+ });
+}
+
+function getToolTipData(seriesData, calPoints, index, categories) {
+ var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
+
+ var textList = seriesData.map(function(item) {
+ return {
+ text: option.format ? option.format(item, categories[index]) : item.name + ': ' + item.data,
+ color: item.color
+ };
+ });
+ var validCalPoints = [];
+ var offset = {
+ x: 0,
+ y: 0
+ };
+ for (let i = 0; i < calPoints.length; i++) {
+ let points = calPoints[i];
+ if (typeof points[index] !== 'undefined' && points[index] !== null) {
+ validCalPoints.push(points[index]);
+ }
+ }
+ for (let i = 0; i < validCalPoints.length; i++) {
+ let item = validCalPoints[i];
+ offset.x = Math.round(item.x);
+ offset.y += item.y;
+ }
+ offset.y /= validCalPoints.length;
+ return {
+ textList: textList,
+ offset: offset
+ };
+}
+
+function getMixToolTipData(seriesData, calPoints, index, categories) {
+ var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
+ var textList = seriesData.map(function(item) {
+ return {
+ text: option.format ? option.format(item, categories[index]) : item.name + ': ' + item.data,
+ color: item.color,
+ disableLegend: item.disableLegend ? true : false
+ };
+ });
+ textList = textList.filter(function(item) {
+ if (item.disableLegend !== true) {
+ return item;
+ }
+ });
+ var validCalPoints = [];
+ var offset = {
+ x: 0,
+ y: 0
+ };
+ for (let i = 0; i < calPoints.length; i++) {
+ let points = calPoints[i];
+ if (typeof points[index] !== 'undefined' && points[index] !== null) {
+ validCalPoints.push(points[index]);
+ }
+ }
+ for (let i = 0; i < validCalPoints.length; i++) {
+ let item = validCalPoints[i];
+ offset.x = Math.round(item.x);
+ offset.y += item.y;
+ }
+ offset.y /= validCalPoints.length;
+ return {
+ textList: textList,
+ offset: offset
+ };
+}
+
+function getCandleToolTipData(series, seriesData, calPoints, index, categories, extra) {
+ var option = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};
+ let upColor = extra.color.upFill;
+ let downColor = extra.color.downFill;
+ //颜色顺序为开盘,收盘,最低,最高
+ let color = [upColor, upColor, downColor, upColor];
+ var textList = [];
+ let text0 = {
+ text: categories[index],
+ color: null
+ };
+ textList.push(text0);
+ seriesData.map(function(item) {
+ if (index == 0 && item.data[1] - item.data[0] < 0) {
+ color[1] = downColor;
+ } else {
+ if (item.data[0] < series[index - 1][1]) {
+ color[0] = downColor;
+ }
+ if (item.data[1] < item.data[0]) {
+ color[1] = downColor;
+ }
+ if (item.data[2] > series[index - 1][1]) {
+ color[2] = upColor;
+ }
+ if (item.data[3] < series[index - 1][1]) {
+ color[3] = downColor;
+ }
+ }
+ let text1 = {
+ text: '开盘:' + item.data[0],
+ color: color[0]
+ };
+ let text2 = {
+ text: '收盘:' + item.data[1],
+ color: color[1]
+ };
+ let text3 = {
+ text: '最低:' + item.data[2],
+ color: color[2]
+ };
+ let text4 = {
+ text: '最高:' + item.data[3],
+ color: color[3]
+ };
+ textList.push(text1, text2, text3, text4);
+ });
+ var validCalPoints = [];
+ var offset = {
+ x: 0,
+ y: 0
+ };
+ for (let i = 0; i < calPoints.length; i++) {
+ let points = calPoints[i];
+ if (typeof points[index] !== 'undefined' && points[index] !== null) {
+ validCalPoints.push(points[index]);
+ }
+ }
+ offset.x = Math.round(validCalPoints[0][0].x);
+ return {
+ textList: textList,
+ offset: offset
+ };
+}
+
+function filterSeries(series) {
+ let tempSeries = [];
+ for (let i = 0; i < series.length; i++) {
+ if (series[i].show == true) {
+ tempSeries.push(series[i])
+ }
+ }
+ return tempSeries;
+}
+
+function findCurrentIndex(currentPoints, xAxisPoints, opts, config) {
+ var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
+ var currentIndex = -1;
+ var spacing = 0;
+ if((opts.type=='line' || opts.type=='area') && opts.xAxis.boundaryGap=='justify'){
+ spacing = opts.chartData.eachSpacing/2;
+ }
+ if (isInExactChartArea(currentPoints, opts, config)) {
+ xAxisPoints.forEach(function(item, index) {
+ if (currentPoints.x + offset + spacing > item) {
+ currentIndex = index;
+ }
+ });
+ }
+ return currentIndex;
+}
+
+function findLegendIndex(currentPoints, legendData, opts) {
+ let currentIndex = -1;
+ if (isInExactLegendArea(currentPoints, legendData.area)) {
+ let points = legendData.points;
+ let index = -1;
+ for (let i = 0, len = points.length; i < len; i++) {
+ let item = points[i];
+ for (let j = 0; j < item.length; j++) {
+ index += 1;
+ let area = item[j]['area'];
+ if (currentPoints.x > area[0] && currentPoints.x < area[2] && currentPoints.y > area[1] && currentPoints.y < area[3]) {
+ currentIndex = index;
+ break;
+ }
+ }
+ }
+ return currentIndex;
+ }
+ return currentIndex;
+}
+
+function isInExactLegendArea(currentPoints, area) {
+ return currentPoints.x > area.start.x && currentPoints.x < area.end.x && currentPoints.y > area.start.y &&
+ currentPoints.y < area.end.y;
+}
+
+function isInExactChartArea(currentPoints, opts, config) {
+ return currentPoints.x < opts.width - opts.area[1] + 10 && currentPoints.x > opts.area[3] -10 && currentPoints.y > opts.area[0] && currentPoints.y < opts.height - opts.area[2];
+}
+
+function findRadarChartCurrentIndex(currentPoints, radarData, count) {
+ var eachAngleArea = 2 * Math.PI / count;
+ var currentIndex = -1;
+ if (isInExactPieChartArea(currentPoints, radarData.center, radarData.radius)) {
+ var fixAngle = function fixAngle(angle) {
+ if (angle < 0) {
+ angle += 2 * Math.PI;
+ }
+ if (angle > 2 * Math.PI) {
+ angle -= 2 * Math.PI;
+ }
+ return angle;
+ };
+
+ var angle = Math.atan2(radarData.center.y - currentPoints.y, currentPoints.x - radarData.center.x);
+ angle = -1 * angle;
+ if (angle < 0) {
+ angle += 2 * Math.PI;
+ }
+
+ var angleList = radarData.angleList.map(function(item) {
+ item = fixAngle(-1 * item);
+
+ return item;
+ });
+
+ angleList.forEach(function(item, index) {
+ var rangeStart = fixAngle(item - eachAngleArea / 2);
+ var rangeEnd = fixAngle(item + eachAngleArea / 2);
+ if (rangeEnd < rangeStart) {
+ rangeEnd += 2 * Math.PI;
+ }
+ if (angle >= rangeStart && angle <= rangeEnd || angle + 2 * Math.PI >= rangeStart && angle + 2 * Math.PI <=
+ rangeEnd) {
+ currentIndex = index;
+ }
+ });
+ }
+
+ return currentIndex;
+}
+
+function findFunnelChartCurrentIndex(currentPoints, funnelData) {
+ var currentIndex = -1;
+ for (var i = 0, len = funnelData.series.length; i < len; i++) {
+ var item = funnelData.series[i];
+ if (currentPoints.x > item.funnelArea[0] && currentPoints.x < item.funnelArea[2] && currentPoints.y > item.funnelArea[1] && currentPoints.y < item.funnelArea[3]) {
+ currentIndex = i;
+ break;
+ }
+ }
+ return currentIndex;
+}
+
+function findWordChartCurrentIndex(currentPoints, wordData) {
+ var currentIndex = -1;
+ for (var i = 0, len = wordData.length; i < len; i++) {
+ var item = wordData[i];
+ if (currentPoints.x > item.area[0] && currentPoints.x < item.area[2] && currentPoints.y > item.area[1] && currentPoints.y < item.area[3]) {
+ currentIndex = i;
+ break;
+ }
+ }
+ return currentIndex;
+}
+
+function findMapChartCurrentIndex(currentPoints, opts) {
+ var currentIndex = -1;
+ var cData=opts.chartData.mapData;
+ var data=opts.series;
+ var tmp=pointToCoordinate(currentPoints.y, currentPoints.x,cData.bounds,cData.scale,cData.xoffset,cData.yoffset);
+ var poi=[tmp.x, tmp.y];
+ for (var i = 0, len = data.length; i < len; i++) {
+ var item = data[i].geometry.coordinates;
+ if(isPoiWithinPoly(poi,item)){
+ currentIndex = i;
+ break;
+ }
+ }
+ return currentIndex;
+}
+
+function findPieChartCurrentIndex(currentPoints, pieData) {
+ var currentIndex = -1;
+ if (isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) {
+ var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x);
+ angle = -angle;
+ for (var i = 0, len = pieData.series.length; i < len; i++) {
+ var item = pieData.series[i];
+ if (isInAngleRange(angle, item._start_, item._start_ + item._proportion_ * 2 * Math.PI)) {
+ currentIndex = i;
+ break;
+ }
+ }
+ }
+
+ return currentIndex;
+}
+
+function isInExactPieChartArea(currentPoints, center, radius) {
+ return Math.pow(currentPoints.x - center.x, 2) + Math.pow(currentPoints.y - center.y, 2) <= Math.pow(radius, 2);
+}
+
+function splitPoints(points) {
+ var newPoints = [];
+ var items = [];
+ points.forEach(function(item, index) {
+ if (item !== null) {
+ items.push(item);
+ } else {
+ if (items.length) {
+ newPoints.push(items);
+ }
+ items = [];
+ }
+ });
+ if (items.length) {
+ newPoints.push(items);
+ }
+
+ return newPoints;
+}
+
+function calLegendData(series, opts, config, chartData) {
+ let legendData = {
+ area: {
+ start: {
+ x: 0,
+ y: 0
+ },
+ end: {
+ x: 0,
+ y: 0
+ },
+ width: 0,
+ height: 0,
+ wholeWidth: 0,
+ wholeHeight: 0
+ },
+ points: [],
+ widthArr: [],
+ heightArr: []
+ };
+ if (opts.legend.show === false) {
+ chartData.legendData = legendData;
+ return legendData;
+ }
+
+ let padding = opts.legend.padding;
+ let margin = opts.legend.margin;
+ let fontSize = opts.legend.fontSize;
+ let shapeWidth = 15 * opts.pixelRatio;
+ let shapeRight = 5 * opts.pixelRatio;
+ let lineHeight = Math.max(opts.legend.lineHeight * opts.pixelRatio, fontSize);
+ if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {
+ let legendList = [];
+ let widthCount = 0;
+ let widthCountArr = [];
+ let currentRow = [];
+ for (let i = 0; i < series.length; i++) {
+ let item = series[i];
+ let itemWidth = shapeWidth + shapeRight + measureText(item.name || 'undefined', fontSize) + opts.legend.itemGap;
+ if (widthCount + itemWidth > opts.width - opts.padding[1] - opts.padding[3]) {
+ legendList.push(currentRow);
+ widthCountArr.push(widthCount - opts.legend.itemGap);
+ widthCount = itemWidth;
+ currentRow = [item];
+ } else {
+ widthCount += itemWidth;
+ currentRow.push(item);
+ }
+ }
+ if (currentRow.length) {
+ legendList.push(currentRow);
+ widthCountArr.push(widthCount - opts.legend.itemGap);
+ legendData.widthArr = widthCountArr;
+ let legendWidth = Math.max.apply(null, widthCountArr);
+ switch (opts.legend.float) {
+ case 'left':
+ legendData.area.start.x = opts.padding[3];
+ legendData.area.end.x = opts.padding[3] + 2 * padding;
+ break;
+ case 'right':
+ legendData.area.start.x = opts.width - opts.padding[1] - legendWidth - 2 * padding;
+ legendData.area.end.x = opts.width - opts.padding[1];
+ break;
+ default:
+ legendData.area.start.x = (opts.width - legendWidth) / 2 - padding;
+ legendData.area.end.x = (opts.width + legendWidth) / 2 + padding;
+ }
+ legendData.area.width = legendWidth + 2 * padding;
+ legendData.area.wholeWidth = legendWidth + 2 * padding;
+ legendData.area.height = legendList.length * lineHeight + 2 * padding;
+ legendData.area.wholeHeight = legendList.length * lineHeight + 2 * padding + 2 * margin;
+ legendData.points = legendList;
+ }
+ } else {
+ let len = series.length;
+ let maxHeight = opts.height - opts.padding[0] - opts.padding[2] - 2 * margin - 2 * padding;
+ let maxLength = Math.min(Math.floor(maxHeight / lineHeight), len);
+ legendData.area.height = maxLength * lineHeight + padding * 2;
+ legendData.area.wholeHeight = maxLength * lineHeight + padding * 2;
+ switch (opts.legend.float) {
+ case 'top':
+ legendData.area.start.y = opts.padding[0] + margin;
+ legendData.area.end.y = opts.padding[0] + margin + legendData.area.height;
+ break;
+ case 'bottom':
+ legendData.area.start.y = opts.height - opts.padding[2] - margin - legendData.area.height;
+ legendData.area.end.y = opts.height - opts.padding[2] - margin;
+ break;
+ default:
+ legendData.area.start.y = (opts.height - legendData.area.height) / 2;
+ legendData.area.end.y = (opts.height + legendData.area.height) / 2;
+ }
+ let lineNum = len % maxLength === 0 ? len / maxLength : Math.floor((len / maxLength) + 1);
+ let currentRow = [];
+ for (let i = 0; i < lineNum; i++) {
+ let temp = series.slice(i * maxLength, i * maxLength + maxLength);
+ currentRow.push(temp);
+ }
+
+ legendData.points = currentRow;
+
+ if (currentRow.length) {
+ for (let i = 0; i < currentRow.length; i++) {
+ let item = currentRow[i];
+ let maxWidth = 0;
+ for (let j = 0; j < item.length; j++) {
+ let itemWidth = shapeWidth + shapeRight + measureText(item[j].name || 'undefined', fontSize) + opts.legend.itemGap;
+ if (itemWidth > maxWidth) {
+ maxWidth = itemWidth;
+ }
+ }
+ legendData.widthArr.push(maxWidth);
+ legendData.heightArr.push(item.length * lineHeight + padding * 2);
+ }
+ let legendWidth = 0
+ for (let i = 0; i < legendData.widthArr.length; i++) {
+ legendWidth += legendData.widthArr[i];
+ }
+ legendData.area.width = legendWidth - opts.legend.itemGap + 2 * padding;
+ legendData.area.wholeWidth = legendData.area.width + padding;
+ }
+ }
+
+ switch (opts.legend.position) {
+ case 'top':
+ legendData.area.start.y = opts.padding[0] + margin;
+ legendData.area.end.y = opts.padding[0] + margin + legendData.area.height;
+ break;
+ case 'bottom':
+ legendData.area.start.y = opts.height - opts.padding[2] - legendData.area.height - margin;
+ legendData.area.end.y = opts.height - opts.padding[2] - margin;
+ break;
+ case 'left':
+ legendData.area.start.x = opts.padding[3];
+ legendData.area.end.x = opts.padding[3] + legendData.area.width;
+ break;
+ case 'right':
+ legendData.area.start.x = opts.width - opts.padding[1] - legendData.area.width;
+ legendData.area.end.x = opts.width - opts.padding[1];
+ break;
+ }
+ chartData.legendData = legendData;
+ return legendData;
+}
+
+function calCategoriesData(categories, opts, config, eachSpacing) {
+ var result = {
+ angle: 0,
+ xAxisHeight: config.xAxisHeight
+ };
+ var categoriesTextLenth = categories.map(function(item) {
+ return measureText(item);
+ });
+ var maxTextLength = Math.max.apply(this, categoriesTextLenth);
+
+ if (opts.xAxis.rotateLabel == true && maxTextLength + 2 * config.xAxisTextPadding > eachSpacing) {
+ result.angle = 45 * Math.PI / 180;
+ result.xAxisHeight = 2 * config.xAxisTextPadding + maxTextLength * Math.sin(result.angle);
+ }
+ return result;
+}
+
+function getRadarDataPoints(angleList, center, radius, series, opts) {
+ var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
+
+ var radarOption = opts.extra.radar || {};
+ radarOption.max = radarOption.max || 0;
+ var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series)));
+
+ var data = [];
+ for (let i = 0; i < series.length; i++) {
+ let each = series[i];
+ let listItem = {};
+ listItem.color = each.color;
+ listItem.data = [];
+ each.data.forEach(function(item, index) {
+ let tmp = {};
+ tmp.angle = angleList[index];
+
+ tmp.proportion = item / maxData;
+ tmp.position = convertCoordinateOrigin(radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion *
+ process * Math.sin(tmp.angle), center);
+ listItem.data.push(tmp);
+ });
+
+ data.push(listItem);
+ }
+
+ return data;
+}
+
+function getPieDataPoints(series, radius) {
+ var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
+
+ var count = 0;
+ var _start_ = 0;
+ for (let i = 0; i < series.length; i++) {
+ let item = series[i];
+ item.data = item.data === null ? 0 : item.data;
+ count += item.data;
+ }
+ for (let i = 0; i < series.length; i++) {
+ let item = series[i];
+ item.data = item.data === null ? 0 : item.data;
+ if (count === 0) {
+ item._proportion_ = 1 / series.length * process;
+ } else {
+ item._proportion_ = item.data / count * process;
+ }
+ item._radius_ = radius;
+ }
+ for (let i = 0; i < series.length; i++) {
+ let item = series[i];
+ item._start_ = _start_;
+ _start_ += 2 * item._proportion_ * Math.PI;
+ }
+
+ return series;
+}
+
+function getFunnelDataPoints(series, radius) {
+ var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
+ series = series.sort(function(a,b){return parseInt(b.data)-parseInt(a.data);});
+ for (let i = 0; i < series.length; i++) {
+ series[i].radius = series[i].data/series[0].data*radius*process;
+ series[i]._proportion_ = series[i].data/series[0].data;
+ }
+ return series.reverse();
+}
+
+function getRoseDataPoints(series, type, minRadius, radius) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var count = 0;
+ var _start_ = 0;
+
+ var dataArr = [];
+ for (let i = 0; i < series.length; i++) {
+ let item = series[i];
+ item.data = item.data === null ? 0 : item.data;
+ count += item.data;
+ dataArr.push(item.data);
+ }
+
+ var minData = Math.min.apply(null, dataArr);
+ var maxData = Math.max.apply(null, dataArr);
+ var radiusLength = radius - minRadius;
+
+ for (let i = 0; i < series.length; i++) {
+ let item = series[i];
+ item.data = item.data === null ? 0 : item.data;
+ if (count === 0 || type == 'area') {
+ item._proportion_ = item.data / count * process;
+ item._rose_proportion_ = 1 / series.length * process;
+ } else {
+ item._proportion_ = item.data / count * process;
+ item._rose_proportion_ = item.data / count * process;
+ }
+ item._radius_ = minRadius + radiusLength * ((item.data - minData) / (maxData - minData));
+ }
+ for (let i = 0; i < series.length; i++) {
+ let item = series[i];
+ item._start_ = _start_;
+ _start_ += 2 * item._rose_proportion_ * Math.PI;
+ }
+
+ return series;
+}
+
+function getArcbarDataPoints(series, arcbarOption) {
+ var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
+ if (process == 1) {
+ process = 0.999999;
+ }
+ for (let i = 0; i < series.length; i++) {
+ let item = series[i];
+ item.data = item.data === null ? 0 : item.data;
+ let totalAngle;
+ if (arcbarOption.type == 'default') {
+ if (arcbarOption.endAngle < arcbarOption.startAngle) {
+ totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle;
+ } else{
+ totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;
+ }
+ } else {
+ totalAngle = 2;
+ }
+ item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle;
+ if (item._proportion_ >= 2) {
+ item._proportion_ = item._proportion_ % 2;
+ }
+ }
+ return series;
+}
+
+function getGaugeAxisPoints(categories, startAngle, endAngle) {
+ let totalAngle = startAngle - endAngle + 1;
+ let tempStartAngle = startAngle;
+ for (let i = 0; i < categories.length; i++) {
+ categories[i].value = categories[i].value === null ? 0 : categories[i].value;
+ categories[i]._startAngle_ = tempStartAngle;
+ categories[i]._endAngle_ = totalAngle * categories[i].value + startAngle;
+ if (categories[i]._endAngle_ >= 2) {
+ categories[i]._endAngle_ = categories[i]._endAngle_ % 2;
+ }
+ tempStartAngle = categories[i]._endAngle_;
+ }
+ return categories;
+}
+
+function getGaugeDataPoints(series, categories, gaugeOption) {
+ let process = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
+ for (let i = 0; i < series.length; i++) {
+ let item = series[i];
+ item.data = item.data === null ? 0 : item.data;
+ if (gaugeOption.pointer.color == 'auto') {
+ for (let i = 0; i < categories.length; i++) {
+ if (item.data <= categories[i].value) {
+ item.color = categories[i].color;
+ break;
+ }
+ }
+ } else {
+ item.color = gaugeOption.pointer.color;
+ }
+ let totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;
+ item._endAngle_ = totalAngle * item.data + gaugeOption.startAngle;
+ item._oldAngle_ = gaugeOption.oldAngle;
+ if (gaugeOption.oldAngle < gaugeOption.endAngle) {
+ item._oldAngle_ += 2;
+ }
+ if (item.data >= gaugeOption.oldData) {
+ item._proportion_ = (item._endAngle_ - item._oldAngle_) * process + gaugeOption.oldAngle;
+ } else {
+ item._proportion_ = item._oldAngle_ - (item._oldAngle_ - item._endAngle_) * process;
+ }
+ if (item._proportion_ >= 2) {
+ item._proportion_ = item._proportion_ % 2;
+ }
+ }
+ return series;
+}
+
+function getPieTextMaxLength(series) {
+ series = getPieDataPoints(series);
+ let maxLength = 0;
+ for (let i = 0; i < series.length; i++) {
+ let item = series[i];
+ let text = item.format ? item.format(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%';
+ maxLength = Math.max(maxLength, measureText(text));
+ }
+
+ return maxLength;
+}
+
+function fixColumeData(points, eachSpacing, columnLen, index, config, opts) {
+ return points.map(function(item) {
+ if (item === null) {
+ return null;
+ }
+ item.width = Math.ceil((eachSpacing - 2 * config.columePadding) / columnLen);
+
+ if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {
+ item.width = Math.min(item.width, +opts.extra.column.width);
+ }
+ if (item.width <= 0) {
+ item.width = 1;
+ }
+ item.x += (index + 0.5 - columnLen / 2) * item.width;
+ return item;
+ });
+}
+
+function fixColumeMeterData(points, eachSpacing, columnLen, index, config, opts, border) {
+ return points.map(function(item) {
+ if (item === null) {
+ return null;
+ }
+ item.width = Math.ceil((eachSpacing - 2 * config.columePadding) / 2);
+
+ if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {
+ item.width = Math.min(item.width, +opts.extra.column.width);
+ }
+
+ if (index > 0) {
+ item.width -= 2 * border;
+ }
+ return item;
+ });
+}
+
+function fixColumeStackData(points, eachSpacing, columnLen, index, config, opts, series) {
+
+ return points.map(function(item, indexn) {
+
+ if (item === null) {
+ return null;
+ }
+ item.width = Math.ceil((eachSpacing - 2 * config.columePadding) / 2);
+
+ if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {
+ item.width = Math.min(item.width, +opts.extra.column.width);
+ }
+ return item;
+ });
+}
+
+function getXAxisPoints(categories, opts, config) {
+ var yAxisTotalWidth = config.yAxisWidth + config.yAxisTitleWidth;
+ var spacingValid = opts.width - opts.area[1] - opts.area[3];
+ var dataCount = opts.enableScroll ? Math.min(opts.xAxis.itemCount, categories.length) : categories.length;
+ if((opts.type=='line' || opts.type=='area') && dataCount>1 && opts.xAxis.boundaryGap=='justify'){
+ dataCount -=1;
+ }
+ var eachSpacing = spacingValid / dataCount;
+
+ var xAxisPoints = [];
+ var startX = opts.area[3];
+ var endX = opts.width - opts.area[1];
+ categories.forEach(function(item, index) {
+ xAxisPoints.push(startX + index * eachSpacing);
+ });
+ if(opts.xAxis.boundaryGap !=='justify'){
+ if (opts.enableScroll === true) {
+ xAxisPoints.push(startX + categories.length * eachSpacing);
+ } else {
+ xAxisPoints.push(endX);
+ }
+ }
+ return {
+ xAxisPoints: xAxisPoints,
+ startX: startX,
+ endX: endX,
+ eachSpacing: eachSpacing
+ };
+}
+
+function getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {
+ var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;
+ var points = [];
+ var validHeight = opts.height - opts.area[0] - opts.area[2];
+ data.forEach(function(item, index) {
+ if (item === null) {
+ points.push(null);
+ } else {
+ var cPoints = [];
+ item.forEach(function(items, indexs) {
+ var point = {};
+ point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);
+ var value = items.value || items;
+ var height = validHeight * (value - minRange) / (maxRange - minRange);
+ height *= process;
+ point.y = opts.height - Math.round(height) - opts.area[2];
+ cPoints.push(point);
+ });
+ points.push(cPoints);
+ }
+ });
+
+ return points;
+}
+
+function getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {
+ var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;
+ var boundaryGap='center';
+ if (opts.type == 'line'||opts.type == 'area'){
+ boundaryGap=opts.xAxis.boundaryGap;
+ }
+ var points = [];
+ var validHeight = opts.height - opts.area[0] - opts.area[2];
+ data.forEach(function(item, index) {
+ if (item === null) {
+ points.push(null);
+ } else {
+ var point = {};
+ point.color = item.color;
+ point.x = xAxisPoints[index];
+ if(boundaryGap=='center'){
+ point.x += Math.round(eachSpacing / 2);
+ }
+ var value = item;
+ if (typeof item === 'object' && item !== null) {
+ value = item.value
+ }
+ var height = validHeight * (value - minRange) / (maxRange - minRange);
+ height *= process;
+ point.y = opts.height - Math.round(height) - opts.area[2];
+ points.push(point);
+ }
+ });
+
+ return points;
+}
+
+function getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) {
+ var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;
+ var points = [];
+ var validHeight = opts.height - opts.area[0] - opts.area[2];
+
+ data.forEach(function(item, index) {
+ if (item === null) {
+ points.push(null);
+ } else {
+ var point = {};
+ point.color = item.color;
+ point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);
+
+ if (seriesIndex > 0) {
+ var value = 0;
+ for (let i = 0; i <= seriesIndex; i++) {
+ value += stackSeries[i].data[index];
+ }
+ var value0 = value - item;
+ var height = validHeight * (value - minRange) / (maxRange - minRange);
+ var height0 = validHeight * (value0 - minRange) / (maxRange - minRange);
+ } else {
+ var value = item;
+ var height = validHeight * (value - minRange) / (maxRange - minRange);
+ var height0 = 0;
+ }
+ var heightc = height0;
+ height *= process;
+ heightc *= process;
+ point.y = opts.height - Math.round(height) - opts.area[2];
+ point.y0 = opts.height - Math.round(heightc) - opts.area[2];
+ points.push(point);
+ }
+ });
+
+ return points;
+}
+
+function getYAxisTextList(series, opts, config, stack) {
+ var data;
+ if (stack == 'stack') {
+ data = dataCombineStack(series, opts.categories.length);
+ } else {
+ data = dataCombine(series);
+ }
+ var sorted = [];
+ // remove null from data
+ data = data.filter(function(item) {
+ //return item !== null;
+ if (typeof item === 'object' && item !== null) {
+ if (Array.isArray(item)) {
+ return item !== null;
+ } else {
+ return item.value !== null;
+ }
+ } else {
+ return item !== null;
+ }
+ });
+ data.map(function(item) {
+ if (typeof item === 'object') {
+ if (Array.isArray(item)) {
+ item.map(function(subitem) {
+ sorted.push(subitem);
+ })
+ } else {
+ sorted.push(item.value);
+ }
+ } else {
+ sorted.push(item);
+ }
+ })
+ var minData = 0;
+ var maxData = 0;
+ if (sorted.length > 0) {
+ minData = Math.min.apply(this, sorted);
+ maxData = Math.max.apply(this, sorted);
+ }
+ if (typeof opts.yAxis.min === 'number') {
+ minData = Math.min(opts.yAxis.min, minData);
+ }
+ if (typeof opts.yAxis.max === 'number') {
+ maxData = Math.max(opts.yAxis.max, maxData);
+ }
+
+ if (minData === maxData) {
+ var rangeSpan = maxData || 10;
+ maxData += rangeSpan;
+ }
+
+ var dataRange = getDataRange(minData, maxData);
+ var minRange = dataRange.minRange;
+ var maxRange = dataRange.maxRange;
+
+ var range = [];
+ var eachRange = (maxRange - minRange) / config.yAxisSplit;
+
+ for (var i = 0; i <= config.yAxisSplit; i++) {
+ range.push(minRange + eachRange * i);
+ }
+ return range.reverse();
+}
+
+function calYAxisData(series, opts, config) {
+ //堆叠图重算Y轴
+ var columnstyle = assign({}, {
+ type: ""
+ }, opts.extra.column);
+ var ranges = getYAxisTextList(series, opts, config, columnstyle.type);
+ var yAxisWidth = config.yAxisWidth;
+ var yAxisFontSize = opts.yAxis.fontSize || config.fontSize;
+ var rangesFormat = ranges.map(function(item) {
+ item = util.toFixed(item, 6);
+ item = opts.yAxis.format ? opts.yAxis.format(Number(item)) : item;
+ yAxisWidth = Math.max(yAxisWidth, measureText(item, yAxisFontSize) + 5);
+ return item;
+ });
+ if (opts.yAxis.disabled === true) {
+ yAxisWidth = 0;
+ }
+
+ return {
+ rangesFormat: rangesFormat,
+ ranges: ranges,
+ yAxisWidth: yAxisWidth
+ };
+}
+
+function calTooltipYAxisData(point, series, opts, config, eachSpacing) {
+ var ranges = getYAxisTextList(series, opts, config);
+ var spacingValid = opts.height - opts.area[0] - opts.area[2];
+ let maxVal = ranges[0];
+ let minVal = ranges[ranges.length - 1];
+ let minAxis = opts.padding[3];
+ let maxAxis = opts.padding[1] + spacingValid;
+ let item = maxVal - (maxVal - minVal) * (point - minAxis) / (maxAxis - minAxis);
+ item = opts.yAxis.format ? opts.yAxis.format(Number(item)) : item;
+ return item;
+}
+
+function calMarkLineData(minRange, maxRange, points, opts) {
+ let spacingValid = opts.height - opts.area[0] - opts.area[2];
+ for (let i = 0; i < points.length; i++) {
+ let height = spacingValid * (points[i].value - minRange) / (maxRange - minRange);
+ points[i].y = opts.height - Math.round(height) - opts.area[2];
+ }
+ return points;
+}
+
+function contextRotate(context, opts) {
+ if (opts.rotateLock !== true) {
+ context.translate(opts.height, 0);
+ context.rotate(90 * Math.PI / 180);
+ } else if (opts._rotate_ !== true) {
+ context.translate(opts.height, 0);
+ context.rotate(90 * Math.PI / 180);
+ opts._rotate_ = true;
+ }
+}
+
+function drawPointShape(points, color, shape, context, opts) {
+ context.beginPath();
+ context.setStrokeStyle("#ffffff");
+ context.setLineWidth(1 * opts.pixelRatio);
+ context.setFillStyle(color);
+ if (shape === 'diamond') {
+ points.forEach(function(item, index) {
+ if (item !== null) {
+ context.moveTo(item.x, item.y - 4.5);
+ context.lineTo(item.x - 4.5, item.y);
+ context.lineTo(item.x, item.y + 4.5);
+ context.lineTo(item.x + 4.5, item.y);
+ context.lineTo(item.x, item.y - 4.5);
+ }
+ });
+ } else if (shape === 'circle') {
+ points.forEach(function(item, index) {
+ if (item !== null) {
+ context.moveTo(item.x + 3.5 * opts.pixelRatio, item.y);
+ context.arc(item.x, item.y, 4 * opts.pixelRatio, 0, 2 * Math.PI, false);
+ }
+ });
+ } else if (shape === 'rect') {
+ points.forEach(function(item, index) {
+ if (item !== null) {
+ context.moveTo(item.x - 3.5, item.y - 3.5);
+ context.rect(item.x - 3.5, item.y - 3.5, 7, 7);
+ }
+ });
+ } else if (shape === 'triangle') {
+ points.forEach(function(item, index) {
+ if (item !== null) {
+ context.moveTo(item.x, item.y - 4.5);
+ context.lineTo(item.x - 4.5, item.y + 4.5);
+ context.lineTo(item.x + 4.5, item.y + 4.5);
+ context.lineTo(item.x, item.y - 4.5);
+ }
+ });
+ }
+ context.closePath();
+ context.fill();
+ context.stroke();
+}
+
+function drawRingTitle(opts, config, context, center) {
+ var titlefontSize = opts.title.fontSize || config.titleFontSize;
+ var subtitlefontSize = opts.subtitle.fontSize || config.subtitleFontSize;
+ var title = opts.title.name || '';
+ var subtitle = opts.subtitle.name || '';
+ var titleFontColor = opts.title.color || config.titleColor;
+ var subtitleFontColor = opts.subtitle.color || config.subtitleColor;
+ var titleHeight = title ? titlefontSize : 0;
+ var subtitleHeight = subtitle ? subtitlefontSize : 0;
+ var margin = 5;
+
+ if (subtitle) {
+ var textWidth = measureText(subtitle, subtitlefontSize);
+ var startX = center.x - textWidth / 2 + (opts.subtitle.offsetX || 0);
+ var startY = center.y + subtitlefontSize / 2 + (opts.subtitle.offsetY || 0);
+ if (title) {
+ startY += (titleHeight + margin) / 2;
+ }
+ context.beginPath();
+ context.setFontSize(subtitlefontSize);
+ context.setFillStyle(subtitleFontColor);
+ context.fillText(subtitle, startX, startY);
+ context.closePath();
+ context.stroke();
+ }
+ if (title) {
+ var _textWidth = measureText(title, titlefontSize);
+ var _startX = center.x - _textWidth / 2 + (opts.title.offsetX || 0);
+ var _startY = center.y + titlefontSize / 2 + (opts.title.offsetY || 0);
+ if (subtitle) {
+ _startY -= (subtitleHeight + margin) / 2;
+ }
+ context.beginPath();
+ context.setFontSize(titlefontSize);
+ context.setFillStyle(titleFontColor);
+ context.fillText(title, _startX, _startY);
+ context.closePath();
+ context.stroke();
+ }
+}
+
+function drawPointText(points, series, config, context) {
+ // 绘制数据文案
+ var data = series.data;
+ points.forEach(function(item, index) {
+ if (item !== null) {
+ //var formatVal = series.format ? series.format(data[index]) : data[index];
+ context.beginPath();
+ context.setFontSize(series.textSize || config.fontSize);
+ context.setFillStyle(series.textColor || '#666666');
+ var value = data[index]
+ if (typeof data[index] === 'object' && data[index] !== null) {
+ value = data[index].value
+ }
+ var formatVal = series.format ? series.format(value) : value;
+ context.fillText(String(formatVal), item.x - measureText(formatVal, series.textSize || config.fontSize) / 2, item.y -
+ 2);
+ context.closePath();
+ context.stroke();
+ }
+ });
+
+}
+
+function drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context) {
+ radius -= gaugeOption.width / 2 + config.gaugeLabelTextMargin;
+
+ let totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;
+ let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;
+ let totalNumber = gaugeOption.endNumber - gaugeOption.startNumber;
+ let splitNumber = totalNumber / gaugeOption.splitLine.splitNumber;
+ let nowAngle = gaugeOption.startAngle;
+ let nowNumber = gaugeOption.startNumber;
+ for (let i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) {
+ var pos = {
+ x: radius * Math.cos(nowAngle * Math.PI),
+ y: radius * Math.sin(nowAngle * Math.PI)
+ };
+ var labelText = gaugeOption.labelFormat ? gaugeOption.labelFormat(nowNumber) : nowNumber;
+ pos.x += centerPosition.x - measureText(labelText) / 2;
+ pos.y += centerPosition.y;
+ var startX = pos.x;
+ var startY = pos.y;
+ context.beginPath();
+ context.setFontSize(config.fontSize);
+ context.setFillStyle(gaugeOption.labelColor || '#666666');
+ context.fillText(labelText, startX, startY + config.fontSize / 2);
+ context.closePath();
+ context.stroke();
+
+ nowAngle += splitAngle;
+ if (nowAngle >= 2) {
+ nowAngle = nowAngle % 2;
+ }
+ nowNumber += splitNumber;
+ }
+
+}
+
+function drawRadarLabel(angleList, radius, centerPosition, opts, config, context) {
+ var radarOption = opts.extra.radar || {};
+ radius += config.radarLabelTextMargin;
+
+ angleList.forEach(function(angle, index) {
+ var pos = {
+ x: radius * Math.cos(angle),
+ y: radius * Math.sin(angle)
+ };
+ var posRelativeCanvas = convertCoordinateOrigin(pos.x, pos.y, centerPosition);
+ var startX = posRelativeCanvas.x;
+ var startY = posRelativeCanvas.y;
+ if (util.approximatelyEqual(pos.x, 0)) {
+ startX -= measureText(opts.categories[index] || '') / 2;
+ } else if (pos.x < 0) {
+ startX -= measureText(opts.categories[index] || '');
+ }
+ context.beginPath();
+ context.setFontSize(config.fontSize);
+ context.setFillStyle(radarOption.labelColor || '#666666');
+ context.fillText(opts.categories[index] || '', startX, startY + config.fontSize / 2);
+ context.closePath();
+ context.stroke();
+ });
+
+}
+
+function drawPieText(series, opts, config, context, radius, center) {
+ var lineRadius = config.pieChartLinePadding;
+ var textObjectCollection = [];
+ var lastTextObject = null;
+
+ var seriesConvert = series.map(function(item) {
+ var text = item.format ? item.format(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_.toFixed(4) * 100) +'%';
+ if(item._rose_proportion_) item._proportion_=item._rose_proportion_;
+ var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2);
+ var color = item.color;
+ var radius = item._radius_;
+ return {
+ arc: arc,
+ text: text,
+ color: color,
+ radius: radius,
+ textColor: item.textColor,
+ textSize: item.textSize,
+ };
+ });
+ for (let i = 0; i < seriesConvert.length; i++) {
+ let item = seriesConvert[i];
+ // line end
+ let orginX1 = Math.cos(item.arc) * (item.radius + lineRadius);
+ let orginY1 = Math.sin(item.arc) * (item.radius + lineRadius);
+
+ // line start
+ let orginX2 = Math.cos(item.arc) * item.radius;
+ let orginY2 = Math.sin(item.arc) * item.radius;
+
+ // text start
+ let orginX3 = orginX1 >= 0 ? orginX1 + config.pieChartTextPadding : orginX1 - config.pieChartTextPadding;
+ let orginY3 = orginY1;
+ let textWidth = measureText(item.text);
+ let startY = orginY3;
+
+ if (lastTextObject && util.isSameXCoordinateArea(lastTextObject.start, {
+ x: orginX3
+ })) {
+ if (orginX3 > 0) {
+ startY = Math.min(orginY3, lastTextObject.start.y);
+ } else if (orginX1 < 0) {
+ startY = Math.max(orginY3, lastTextObject.start.y);
+ } else {
+ if (orginY3 > 0) {
+ startY = Math.max(orginY3, lastTextObject.start.y);
+ } else {
+ startY = Math.min(orginY3, lastTextObject.start.y);
+ }
+ }
+ }
+ if (orginX3 < 0) {
+ orginX3 -= textWidth;
+ }
+
+ let textObject = {
+ lineStart: {
+ x: orginX2,
+ y: orginY2
+ },
+ lineEnd: {
+ x: orginX1,
+ y: orginY1
+ },
+ start: {
+ x: orginX3,
+ y: startY
+ },
+ width: textWidth,
+ height: config.fontSize,
+ text: item.text,
+ color: item.color,
+ textColor: item.textColor,
+ textSize: item.textSize
+ };
+ lastTextObject = avoidCollision(textObject, lastTextObject);
+ textObjectCollection.push(lastTextObject);
+ }
+
+ for (let i = 0; i < textObjectCollection.length; i++) {
+ let item = textObjectCollection[i];
+ let lineStartPoistion = convertCoordinateOrigin(item.lineStart.x, item.lineStart.y, center);
+ let lineEndPoistion = convertCoordinateOrigin(item.lineEnd.x, item.lineEnd.y, center);
+ let textPosition = convertCoordinateOrigin(item.start.x, item.start.y, center);
+ context.setLineWidth(1 * opts.pixelRatio);
+ context.setFontSize(config.fontSize);
+ context.beginPath();
+ context.setStrokeStyle(item.color);
+ context.setFillStyle(item.color);
+ context.moveTo(lineStartPoistion.x, lineStartPoistion.y);
+ let curveStartX = item.start.x < 0 ? textPosition.x + item.width : textPosition.x;
+ let textStartX = item.start.x < 0 ? textPosition.x - 5 : textPosition.x + 5;
+ context.quadraticCurveTo(lineEndPoistion.x, lineEndPoistion.y, curveStartX, textPosition.y);
+ context.moveTo(lineStartPoistion.x, lineStartPoistion.y);
+ context.stroke();
+ context.closePath();
+ context.beginPath();
+ context.moveTo(textPosition.x + item.width, textPosition.y);
+ context.arc(curveStartX, textPosition.y, 2, 0, 2 * Math.PI);
+ context.closePath();
+ context.fill();
+ context.beginPath();
+ context.setFontSize(item.textSize || config.fontSize);
+ context.setFillStyle(item.textColor || '#666666');
+ context.fillText(item.text, textStartX, textPosition.y + 3);
+ context.closePath();
+ context.stroke();
+ context.closePath();
+ }
+}
+
+function drawToolTipSplitLine(offsetX, opts, config, context) {
+ var toolTipOption = opts.extra.tooltip || {};
+ toolTipOption.gridType = toolTipOption.gridType == undefined ? 'solid' : toolTipOption.gridType;
+ toolTipOption.dashLength = toolTipOption.dashLength == undefined ? 4 : toolTipOption.dashLength;
+ var startY = opts.area[0];
+ var endY = opts.height - opts.area[2];
+
+ if (toolTipOption.gridType == 'dash') {
+ context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);
+ }
+ context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');
+ context.setLineWidth(1 * opts.pixelRatio);
+ context.beginPath();
+ context.moveTo(offsetX, startY);
+ context.lineTo(offsetX, endY);
+ context.stroke();
+ context.setLineDash([]);
+
+ if (toolTipOption.xAxisLabel) {
+ let labelText = opts.categories[opts.tooltip.index];
+ context.setFontSize(config.fontSize);
+ let textWidth = measureText(labelText, config.fontSize);
+
+ let textX = offsetX - 0.5 * textWidth;
+ let textY = endY;
+ context.beginPath();
+ context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));
+ context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);
+ context.setLineWidth(1 * opts.pixelRatio);
+ context.rect(textX - config.toolTipPadding, textY, textWidth + 2 * config.toolTipPadding, config.fontSize + 2 * config.toolTipPadding);
+ context.closePath();
+ context.stroke();
+ context.fill();
+
+ context.beginPath();
+ context.setFontSize(config.fontSize);
+ context.setFillStyle(toolTipOption.labelFontColor || config.fontColor);
+ context.fillText(String(labelText), textX, textY + config.toolTipPadding + config.fontSize);
+ context.closePath();
+ context.stroke();
+ }
+}
+
+function drawMarkLine(minRange, maxRange, opts, config, context) {
+ let markLineOption = assign({}, {
+ type: 'solid',
+ dashLength: 4,
+ data: []
+ }, opts.extra.markLine);
+ let startX = opts.area[3];
+ let endX = opts.width - opts.padding[1];
+ let points = calMarkLineData(minRange, maxRange, markLineOption.data, opts);
+
+ for (let i = 0; i < points.length; i++) {
+ let item = assign({}, {
+ lineColor: '#DE4A42',
+ showLabel: false,
+ labelFontColor: '#666666',
+ labelBgColor: '#DFE8FF',
+ labelBgOpacity: 0.8,
+ yAxisIndex: 0
+ }, points[i]);
+
+ if (markLineOption.type == 'dash') {
+ context.setLineDash([markLineOption.dashLength, markLineOption.dashLength]);
+ }
+ context.setStrokeStyle(item.lineColor);
+ context.setLineWidth(1 * opts.pixelRatio);
+ context.beginPath();
+ context.moveTo(startX, item.y);
+ context.lineTo(endX, item.y);
+ context.stroke();
+ context.setLineDash([]);
+ if (item.showLabel) {
+ let labelText = opts.yAxis.format ? opts.yAxis.format(Number(item.value)) : item.value;
+ context.setFontSize(config.fontSize);
+ let textWidth = measureText(labelText, config.fontSize);
+ let bgStartX = opts.padding[3] + config.yAxisTitleWidth - config.toolTipPadding;
+ let bgEndX = Math.max(opts.area[3], textWidth + config.toolTipPadding * 2);
+ let bgWidth = bgEndX - bgStartX;
+
+ let textX = bgStartX + (bgWidth - textWidth) / 2;
+ let textY = item.y;
+ context.setFillStyle(hexToRgb(item.labelBgColor, item.labelBgOpacity));
+ context.setStrokeStyle(item.labelBgColor);
+ context.setLineWidth(1 * opts.pixelRatio);
+ context.beginPath();
+ context.rect(bgStartX, textY - 0.5 * config.fontSize - config.toolTipPadding, bgWidth, config.fontSize + 2 * config.toolTipPadding);
+ context.closePath();
+ context.stroke();
+ context.fill();
+
+ context.beginPath();
+ context.setFontSize(config.fontSize);
+ context.setFillStyle(item.labelFontColor);
+ context.fillText(String(labelText), textX, textY + 0.5 * config.fontSize);
+ context.stroke();
+ }
+ }
+}
+
+function drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) {
+ var toolTipOption = assign({}, {
+ gridType: 'solid',
+ dashLength: 4
+ }, opts.extra.tooltip);
+
+ var startX = opts.area[3];
+ var endX = opts.width - opts.padding[1];
+
+ if (toolTipOption.gridType == 'dash') {
+ context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);
+ }
+ context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');
+ context.setLineWidth(1 * opts.pixelRatio);
+ context.beginPath();
+ context.moveTo(startX, opts.tooltip.offset.y);
+ context.lineTo(endX, opts.tooltip.offset.y);
+ context.stroke();
+ context.setLineDash([]);
+
+ if (toolTipOption.yAxisLabel) {
+ let labelText = calTooltipYAxisData(opts.tooltip.offset.y, opts.series, opts, config, eachSpacing);
+ context.setFontSize(config.fontSize);
+ let textWidth = measureText(labelText, config.fontSize);
+ let bgStartX = opts.padding[3] + config.yAxisTitleWidth - config.toolTipPadding;
+ let bgEndX = Math.max(opts.area[3], textWidth + config.toolTipPadding * 2);
+ let bgWidth = bgEndX - bgStartX;
+
+ let textX = bgStartX + (bgWidth - textWidth) / 2;
+ let textY = opts.tooltip.offset.y;
+ context.beginPath();
+ context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));
+ context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);
+ context.setLineWidth(1 * opts.pixelRatio);
+ context.rect(bgStartX, textY - 0.5 * config.fontSize - config.toolTipPadding, bgWidth, config.fontSize + 2 * config.toolTipPadding);
+ context.closePath();
+ context.stroke();
+ context.fill();
+
+ context.beginPath();
+ context.setFontSize(config.fontSize);
+ context.setFillStyle(toolTipOption.labelFontColor || config.fontColor);
+ context.fillText(labelText, textX, textY + 0.5 * config.fontSize);
+ context.closePath();
+ context.stroke();
+ }
+}
+
+function drawToolTipSplitArea(offsetX, opts, config, context, eachSpacing) {
+ var toolTipOption = assign({}, {
+ activeBgColor: '#000000',
+ activeBgOpacity: 0.08
+ }, opts.extra.tooltip);
+ var startY = opts.area[0];
+ var endY = opts.height - opts.area[2];
+ context.beginPath();
+ context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity));
+ context.rect(offsetX - eachSpacing / 2, startY, eachSpacing, endY - startY);
+ context.closePath();
+ context.fill();
+}
+
+function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxisPoints) {
+ var toolTipOption = assign({}, {
+ bgColor: '#000000',
+ bgOpacity: 0.7,
+ fontColor: '#FFFFFF'
+ }, opts.extra.tooltip);
+ var legendWidth = 4 * opts.pixelRatio;
+ var legendMarginRight = 5 * opts.pixelRatio;
+ var arrowWidth = 8 * opts.pixelRatio;
+ var isOverRightBorder = false;
+ if (opts.type == 'line' || opts.type == 'area' || opts.type == 'candle' || opts.type == 'mix') {
+ drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context);
+ }
+
+ offset = assign({
+ x: 0,
+ y: 0
+ }, offset);
+ offset.y -= 8 * opts.pixelRatio;
+ var textWidth = textList.map(function(item) {
+ return measureText(item.text, config.fontSize);
+ });
+ var toolTipWidth = legendWidth + legendMarginRight + 4 * config.toolTipPadding + Math.max.apply(null, textWidth);
+ var toolTipHeight = 2 * config.toolTipPadding + textList.length * config.toolTipLineHeight;
+
+ // if beyond the right border
+ if (offset.x - Math.abs(opts._scrollDistance_) + arrowWidth + toolTipWidth > opts.width) {
+ isOverRightBorder = true;
+ }
+ if (toolTipHeight + offset.y > opts.height) {
+ offset.y = opts.height - toolTipHeight;
+ }
+ // draw background rect
+ context.beginPath();
+ context.setFillStyle(hexToRgb(toolTipOption.bgColor || config.toolTipBackground, toolTipOption.bgOpacity || config.toolTipOpacity));
+ if (isOverRightBorder) {
+ context.moveTo(offset.x, offset.y + 10 * opts.pixelRatio);
+ context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pixelRatio - 5 * opts.pixelRatio);
+ context.lineTo(offset.x - arrowWidth, offset.y);
+ context.lineTo(offset.x - arrowWidth - Math.round(toolTipWidth), offset.y);
+ context.lineTo(offset.x - arrowWidth - Math.round(toolTipWidth), offset.y + toolTipHeight);
+ context.lineTo(offset.x - arrowWidth, offset.y + toolTipHeight);
+ context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pixelRatio + 5 * opts.pixelRatio);
+ context.lineTo(offset.x, offset.y + 10 * opts.pixelRatio);
+ } else {
+ context.moveTo(offset.x, offset.y + 10 * opts.pixelRatio);
+ context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pixelRatio - 5 * opts.pixelRatio);
+ context.lineTo(offset.x + arrowWidth, offset.y);
+ context.lineTo(offset.x + arrowWidth + Math.round(toolTipWidth), offset.y);
+ context.lineTo(offset.x + arrowWidth + Math.round(toolTipWidth), offset.y + toolTipHeight);
+ context.lineTo(offset.x + arrowWidth, offset.y + toolTipHeight);
+ context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pixelRatio + 5 * opts.pixelRatio);
+ context.lineTo(offset.x, offset.y + 10 * opts.pixelRatio);
+ }
+
+ context.closePath();
+ context.fill();
+
+ // draw legend
+ textList.forEach(function(item, index) {
+ if (item.color !== null) {
+ context.beginPath();
+ context.setFillStyle(item.color);
+ var startX = offset.x + arrowWidth + 2 * config.toolTipPadding;
+ var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index +
+ config.toolTipPadding + 1;
+ if (isOverRightBorder) {
+ startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding;
+ }
+ context.fillRect(startX, startY, legendWidth, config.fontSize);
+ context.closePath();
+ }
+ });
+
+ // draw text list
+
+ textList.forEach(function(item, index) {
+ var startX = offset.x + arrowWidth + 2 * config.toolTipPadding + legendWidth + legendMarginRight;
+ if (isOverRightBorder) {
+ startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding + +legendWidth + legendMarginRight;
+ }
+ var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index +
+ config.toolTipPadding;
+ context.beginPath();
+ context.setFontSize(config.fontSize);
+ context.setFillStyle(toolTipOption.fontColor);
+ context.fillText(item.text, startX, startY + config.fontSize);
+ context.closePath();
+ context.stroke();
+ });
+}
+
+function drawYAxisTitle(title, opts, config, context) {
+ var startX = config.xAxisHeight + (opts.height - config.xAxisHeight - measureText(title)) / 2;
+ context.save();
+ context.beginPath();
+ context.setFontSize(config.fontSize);
+ context.setFillStyle(opts.yAxis.titleFontColor || '#333333');
+ context.translate(0, opts.height);
+ context.rotate(-90 * Math.PI / 180);
+ context.fillText(title, startX, opts.padding[3] + 0.5 * config.fontSize);
+ context.closePath();
+ context.stroke();
+ context.restore();
+}
+
+function drawColumnDataPoints(series, opts, config, context) {
+ let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ let ranges = [].concat(opts.chartData.yAxisData.ranges);
+ let xAxisData = opts.chartData.xAxisData,
+ xAxisPoints = xAxisData.xAxisPoints,
+ eachSpacing = xAxisData.eachSpacing;
+ let columnOption = assign({}, {
+ type: 'group',
+ width: eachSpacing / 2,
+ meter: {
+ border: 4,
+ fillColor: '#FFFFFF'
+ }
+ }, opts.extra.column);
+ let minRange = ranges.pop();
+ let maxRange = ranges.shift();
+ let calPoints = [];
+
+ context.save();
+ if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+ context.translate(opts._scrollDistance_, 0);
+ }
+ if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {
+ drawToolTipSplitArea(opts.tooltip.offset.x, opts, config, context, eachSpacing);
+ }
+
+ series.forEach(function(eachSeries, seriesIndex) {
+ var data = eachSeries.data;
+ switch (columnOption.type) {
+ case 'group':
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ var tooltipPoints = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
+ calPoints.push(tooltipPoints);
+ points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);
+ points.forEach(function(item, index) {
+ if (item !== null) {
+ context.beginPath();
+ context.setStrokeStyle(item.color || eachSeries.color);
+ context.setLineWidth(1)
+ context.setFillStyle(item.color || eachSeries.color);
+ var startX = item.x - item.width / 2;
+ var height = opts.height - item.y - opts.area[2];
+ context.moveTo(startX-1, item.y);
+ context.lineTo(startX+item.width-2,item.y);
+ context.lineTo(startX+item.width-2,opts.height - opts.area[2]);
+ context.lineTo(startX,opts.height - opts.area[2]);
+ context.lineTo(startX,item.y);
+ //context.rect(startX, item.y, item.width, height);
+ context.closePath();
+ context.stroke();
+ context.fill();
+ }
+ });
+ break;
+ case 'stack':
+ // 绘制堆叠数据图
+ var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config,
+ seriesIndex,
+ series, process);
+ calPoints.push(points);
+ points = fixColumeStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series);
+
+ points.forEach(function(item, index) {
+ if (item !== null) {
+ context.beginPath();
+ context.setFillStyle(item.color || eachSeries.color);
+ var startX = item.x - item.width / 2 + 1;
+ var height = opts.height - item.y - opts.area[2];
+ var height0 = opts.height - item.y0 - opts.area[2];
+ if (seriesIndex > 0) {
+ height -= height0;
+ }
+ context.moveTo(startX, item.y);
+ context.fillRect(startX, item.y, item.width - 2, height);
+ context.closePath();
+ context.fill();
+ }
+ });
+ break;
+ case 'meter':
+ // 绘制温度计数据图
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ calPoints.push(points);
+ points = fixColumeMeterData(points, eachSpacing, series.length, seriesIndex, config, opts, columnOption.meter
+ .border);
+ if (seriesIndex == 0) {
+ points.forEach(function(item, index) {
+ if (item !== null) {
+ //画背景颜色
+ context.beginPath();
+ context.setFillStyle(columnOption.meter.fillColor);
+ var startX = item.x - item.width / 2;
+ var height = opts.height - item.y - opts.area[2];
+ context.moveTo(startX, item.y);
+ context.fillRect(startX, item.y, item.width, height);
+ context.closePath();
+ context.fill();
+ //画边框线
+ if (columnOption.meter.border > 0) {
+ context.beginPath();
+ context.setStrokeStyle(eachSeries.color);
+ context.setLineWidth(columnOption.meter.border * opts.pixelRatio);
+ context.moveTo(startX + columnOption.meter.border * 0.5, item.y + height);
+ context.lineTo(startX + columnOption.meter.border * 0.5, item.y + columnOption.meter.border * 0.5);
+ context.lineTo(startX + item.width - columnOption.meter.border * 0.5, item.y + columnOption.meter.border * 0.5);
+ context.lineTo(startX + item.width - columnOption.meter.border * 0.5, item.y + height);
+ context.stroke();
+ }
+ }
+ });
+ } else {
+ points.forEach(function(item, index) {
+ if (item !== null) {
+ context.beginPath();
+ context.setFillStyle(item.color || eachSeries.color);
+ var startX = item.x - item.width / 2;
+ var height = opts.height - item.y - opts.area[2];
+ context.moveTo(startX, item.y);
+ context.fillRect(startX, item.y, item.width, height);
+ context.closePath();
+ context.fill();
+ }
+ });
+ }
+ break;
+ }
+ });
+
+ if (opts.dataLabel !== false && process === 1) {
+ series.forEach(function(eachSeries, seriesIndex) {
+ var data = eachSeries.data;
+ switch (columnOption.type) {
+ case 'group':
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);
+
+ drawPointText(points, eachSeries, config, context);
+ break;
+ case 'stack':
+ var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config,
+ seriesIndex,
+ series, process);
+ drawPointText(points, eachSeries, config, context);
+ break;
+ case 'meter':
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ drawPointText(points, eachSeries, config, context);
+ break;
+ }
+ });
+ }
+
+ context.restore();
+
+ return {
+ xAxisPoints: xAxisPoints,
+ calPoints: calPoints,
+ eachSpacing: eachSpacing,
+ minRange: minRange,
+ maxRange: maxRange
+ };
+}
+
+function drawCandleDataPoints(series, seriesMA, opts, config, context) {
+ var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
+ var candleOption = assign({}, {
+ color: {},
+ average: {}
+ }, opts.extra.candle);
+ candleOption.color = assign({}, {
+ upLine: '#f04864',
+ upFill: '#f04864',
+ downLine: '#2fc25b',
+ downFill: '#2fc25b'
+ }, candleOption.color);
+ candleOption.average = assign({}, {
+ show: false,
+ name: [],
+ day: [],
+ color: config.colors
+ }, candleOption.average);
+ opts.extra.candle = candleOption;
+
+ let ranges = [].concat(opts.chartData.yAxisData.ranges);
+ let xAxisData = opts.chartData.xAxisData,
+ xAxisPoints = xAxisData.xAxisPoints,
+ eachSpacing = xAxisData.eachSpacing;
+
+ let minRange = ranges.pop();
+ let maxRange = ranges.shift();
+ let calPoints = [];
+
+ context.save();
+ if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+ context.translate(opts._scrollDistance_, 0);
+ }
+ //画均线
+ if (candleOption.average.show) {
+ seriesMA.forEach(function(eachSeries, seriesIndex) {
+ var data = eachSeries.data;
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ //calPoints.push(points);
+ var splitPointList = splitPoints(points);
+
+ splitPointList.forEach(function(points, index) {
+ context.beginPath();
+ context.setStrokeStyle(eachSeries.color);
+ context.setLineWidth(1);
+ if (points.length === 1) {
+ context.moveTo(points[0].x, points[0].y);
+ context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);
+ } else {
+ context.moveTo(points[0].x, points[0].y);
+ points.forEach(function(item, index) {
+ if (index > 0) {
+ var ctrlPoint = createCurveControlPoints(points, index - 1);
+ context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,
+ item.x, item
+ .y);
+ }
+ });
+ context.moveTo(points[0].x, points[0].y);
+ }
+ context.closePath();
+ context.stroke();
+ });
+ });
+ }
+ //画K线
+ series.forEach(function(eachSeries, seriesIndex) {
+ var data = eachSeries.data;
+ var points = getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ calPoints.push(points);
+ var splitPointList = splitPoints(points);
+ splitPointList = splitPointList[0];
+
+ splitPointList.forEach(function(points, index) {
+ context.beginPath();
+ //如果上涨
+ if (data[index][1] - data[index][0] > 0) {
+ context.setStrokeStyle(candleOption.color.upLine);
+ context.setFillStyle(candleOption.color.upFill);
+ context.setLineWidth(1 * opts.pixelRatio);
+ context.moveTo(points[3].x, points[3].y); //顶点
+ context.lineTo(points[1].x, points[1].y); //收盘中间点
+ context.lineTo(points[1].x - eachSpacing / 4, points[1].y); //收盘左侧点
+ context.lineTo(points[0].x - eachSpacing / 4, points[0].y); //开盘左侧点
+ context.lineTo(points[0].x, points[0].y); //开盘中间点
+ context.lineTo(points[2].x, points[2].y); //底点
+ context.lineTo(points[0].x, points[0].y); //开盘中间点
+ context.lineTo(points[0].x + eachSpacing / 4, points[0].y); //开盘右侧点
+ context.lineTo(points[1].x + eachSpacing / 4, points[1].y); //收盘右侧点
+ context.lineTo(points[1].x, points[1].y); //收盘中间点
+ context.moveTo(points[3].x, points[3].y); //顶点
+ } else {
+ context.setStrokeStyle(candleOption.color.downLine);
+ context.setFillStyle(candleOption.color.downFill);
+ context.setLineWidth(1 * opts.pixelRatio);
+ context.moveTo(points[3].x, points[3].y); //顶点
+ context.lineTo(points[0].x, points[0].y); //开盘中间点
+ context.lineTo(points[0].x - eachSpacing / 4, points[0].y); //开盘左侧点
+ context.lineTo(points[1].x - eachSpacing / 4, points[1].y); //收盘左侧点
+ context.lineTo(points[1].x, points[1].y); //收盘中间点
+ context.lineTo(points[2].x, points[2].y); //底点
+ context.lineTo(points[1].x, points[1].y); //收盘中间点
+ context.lineTo(points[1].x + eachSpacing / 4, points[1].y); //收盘右侧点
+ context.lineTo(points[0].x + eachSpacing / 4, points[0].y); //开盘右侧点
+ context.lineTo(points[0].x, points[0].y); //开盘中间点
+ context.moveTo(points[3].x, points[3].y); //顶点
+ }
+ context.closePath();
+ context.fill();
+ context.stroke();
+ });
+ });
+
+ context.restore();
+
+ return {
+ xAxisPoints: xAxisPoints,
+ calPoints: calPoints,
+ eachSpacing: eachSpacing,
+ minRange: minRange,
+ maxRange: maxRange
+ };
+}
+
+function drawAreaDataPoints(series, opts, config, context) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var areaOption = assign({},{
+ type: 'straight',
+ opacity: 0.2,
+ addLine: false,
+ width: 2
+ },opts.extra.area);
+
+ let ranges = [].concat(opts.chartData.yAxisData.ranges);
+ let xAxisData = opts.chartData.xAxisData,
+ xAxisPoints = xAxisData.xAxisPoints,
+ eachSpacing = xAxisData.eachSpacing;
+
+ let minRange = ranges.pop();
+ let maxRange = ranges.shift();
+ let endY = opts.height - opts.area[2];
+ let calPoints = [];
+
+ context.save();
+ if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+ context.translate(opts._scrollDistance_, 0);
+ }
+
+ series.forEach(function(eachSeries, seriesIndex) {
+ let data = eachSeries.data;
+ let points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ calPoints.push(points);
+
+ let splitPointList = splitPoints(points);
+
+ for (let i = 0; i < splitPointList.length; i++) {
+ let points = splitPointList[i];
+ // 绘制区域数
+ context.beginPath();
+ context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity));
+ context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity));
+ context.setLineWidth(areaOption.width * opts.pixelRatio);
+ if (points.length > 1) {
+ let firstPoint = points[0];
+ let lastPoint = points[points.length - 1];
+
+ context.moveTo(firstPoint.x, firstPoint.y);
+ if (areaOption.type === 'curve') {
+ points.forEach(function(item, index) {
+ if (index > 0) {
+ let ctrlPoint = createCurveControlPoints(points, index - 1);
+ context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,item.x, item.y);
+ }
+ });
+ } else {
+ points.forEach(function(item, index) {
+ if (index > 0) {
+ context.lineTo(item.x, item.y);
+ }
+ });
+ }
+
+ context.lineTo(lastPoint.x, endY);
+ context.lineTo(firstPoint.x, endY);
+ context.lineTo(firstPoint.x, firstPoint.y);
+ } else {
+ let item = points[0];
+ context.moveTo(item.x - eachSpacing / 2, item.y);
+ context.lineTo(item.x + eachSpacing / 2, item.y);
+ context.lineTo(item.x + eachSpacing / 2, endY);
+ context.lineTo(item.x - eachSpacing / 2, endY);
+ context.moveTo(item.x - eachSpacing / 2, item.y);
+ }
+ context.closePath();
+ context.fill();
+
+ //画连线
+ if (areaOption.addLine) {
+ context.beginPath();
+ context.setStrokeStyle(eachSeries.color);
+ context.setLineWidth(areaOption.width * opts.pixelRatio);
+ if (points.length === 1) {
+ context.moveTo(points[0].x, points[0].y);
+ context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);
+ } else {
+ context.moveTo(points[0].x, points[0].y);
+ if (areaOption.type === 'curve') {
+ points.forEach(function(item, index) {
+ if (index > 0) {
+ let ctrlPoint = createCurveControlPoints(points, index - 1);
+ context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,item.x,item.y);
+ }
+ });
+ } else {
+ points.forEach(function(item, index) {
+ if (index > 0) {
+ context.lineTo(item.x, item.y);
+ }
+ });
+ }
+ context.moveTo(points[0].x, points[0].y);
+ }
+ context.closePath();
+ context.stroke();
+ }
+ }
+
+ //画点
+ if (opts.dataPointShape !== false) {
+ var shape = config.dataPointShape[seriesIndex % config.dataPointShape.length];
+ drawPointShape(points, eachSeries.color, shape, context, opts);
+ }
+
+ });
+
+ if (opts.dataLabel !== false && process === 1) {
+ series.forEach(function(eachSeries, seriesIndex) {
+ var data = eachSeries.data;
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ drawPointText(points, eachSeries, config, context);
+ });
+ }
+
+ context.restore();
+
+ return {
+ xAxisPoints: xAxisPoints,
+ calPoints: calPoints,
+ eachSpacing: eachSpacing,
+ minRange: minRange,
+ maxRange: maxRange
+ };
+}
+
+function drawLineDataPoints(series, opts, config, context) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var lineOption = opts.extra.line || {
+ type: 'straight',
+ width: 2
+ };
+ lineOption.type = lineOption.type ? lineOption.type : 'straight';
+ lineOption.width = lineOption.width ? lineOption.width : 2;
+
+ let ranges = [].concat(opts.chartData.yAxisData.ranges);
+ let xAxisData = opts.chartData.xAxisData,
+ xAxisPoints = xAxisData.xAxisPoints,
+ eachSpacing = xAxisData.eachSpacing;
+
+ var minRange = ranges.pop();
+ var maxRange = ranges.shift();
+ var calPoints = [];
+
+ context.save();
+ if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+ context.translate(opts._scrollDistance_, 0);
+ }
+
+ series.forEach(function(eachSeries, seriesIndex) {
+ var data = eachSeries.data;
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ calPoints.push(points);
+ var splitPointList = splitPoints(points);
+
+ splitPointList.forEach(function(points, index) {
+ context.beginPath();
+ context.setStrokeStyle(eachSeries.color);
+ context.setLineWidth(lineOption.width * opts.pixelRatio);
+ if (points.length === 1) {
+ context.moveTo(points[0].x, points[0].y);
+ context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);
+ } else {
+ context.moveTo(points[0].x, points[0].y);
+ if (lineOption.type === 'curve') {
+ points.forEach(function(item, index) {
+ if (index > 0) {
+ var ctrlPoint = createCurveControlPoints(points, index - 1);
+ context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,
+ item.x, item
+ .y);
+ }
+ });
+ } else {
+ points.forEach(function(item, index) {
+ if (index > 0) {
+ context.lineTo(item.x, item.y);
+ }
+ });
+ }
+ context.moveTo(points[0].x, points[0].y);
+ }
+ context.closePath();
+ context.stroke();
+ });
+
+ if (opts.dataPointShape !== false) {
+ var shape = config.dataPointShape[seriesIndex % config.dataPointShape.length];
+ drawPointShape(points, eachSeries.color, shape, context, opts);
+ }
+ });
+
+ if (opts.dataLabel !== false && process === 1) {
+ series.forEach(function(eachSeries, seriesIndex) {
+ var data = eachSeries.data;
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ drawPointText(points, eachSeries, config, context);
+ });
+ }
+
+ context.restore();
+
+ return {
+ xAxisPoints: xAxisPoints,
+ calPoints: calPoints,
+ eachSpacing: eachSpacing,
+ minRange: minRange,
+ maxRange: maxRange
+ };
+}
+
+function drawMixDataPoints(series, opts, config, context) {
+ let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ let ranges = [].concat(opts.chartData.yAxisData.ranges);
+ let xAxisData = opts.chartData.xAxisData,
+ xAxisPoints = xAxisData.xAxisPoints,
+ eachSpacing = xAxisData.eachSpacing;
+
+ let minRange = ranges.pop();
+ let maxRange = ranges.shift();
+ let endY = opts.height - opts.area[2];
+ let calPoints = [];
+
+ var columnIndex = 0;
+ var columnLength = 0;
+ series.forEach(function(eachSeries, seriesIndex) {
+ if (eachSeries.type == 'column') {
+ columnLength += 1;
+ }
+ });
+ context.save();
+ if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+ context.translate(opts._scrollDistance_, 0);
+ }
+
+ series.forEach(function(eachSeries, seriesIndex) {
+ var data = eachSeries.data;
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ calPoints.push(points);
+
+ // 绘制柱状数据图
+ if (eachSeries.type == 'column') {
+ points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);
+ points.forEach(function(item, index) {
+ if (item !== null) {
+ context.beginPath();
+ context.setStrokeStyle(item.color || eachSeries.color);
+ context.setLineWidth(1)
+ context.setFillStyle(item.color || eachSeries.color);
+ var startX = item.x - item.width / 2;
+ var height = opts.height - item.y - opts.area[2];
+ context.moveTo(startX, item.y);
+ context.moveTo(startX-1, item.y);
+ context.lineTo(startX+item.width-2,item.y);
+ context.lineTo(startX+item.width-2,opts.height - opts.area[2]);
+ context.lineTo(startX,opts.height - opts.area[2]);
+ context.lineTo(startX,item.y);
+ //context.rect(startX, item.y, item.width, height);
+ context.closePath();
+ context.stroke();
+ context.fill();
+ context.closePath();
+ context.fill();
+ }
+ });
+ columnIndex += 1;
+ }
+
+ //绘制区域图数据
+
+ if (eachSeries.type == 'area') {
+ let splitPointList = splitPoints(points);
+ for (let i = 0; i < splitPointList.length; i++) {
+ let points = splitPointList[i];
+ // 绘制区域数据
+ context.beginPath();
+ context.setStrokeStyle(eachSeries.color);
+ context.setFillStyle(hexToRgb(eachSeries.color, 0.2));
+ context.setLineWidth(2 * opts.pixelRatio);
+ if (points.length > 1) {
+ var firstPoint = points[0];
+ let lastPoint = points[points.length - 1];
+ context.moveTo(firstPoint.x, firstPoint.y);
+ if (eachSeries.style === 'curve') {
+ points.forEach(function(item, index) {
+ if (index > 0) {
+ var ctrlPoint = createCurveControlPoints(points, index - 1);
+ context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);
+ }
+ });
+ } else {
+ points.forEach(function(item, index) {
+ if (index > 0) {
+ context.lineTo(item.x, item.y);
+ }
+ });
+ }
+ context.lineTo(lastPoint.x, endY);
+ context.lineTo(firstPoint.x, endY);
+ context.lineTo(firstPoint.x, firstPoint.y);
+ } else {
+ let item = points[0];
+ context.moveTo(item.x - eachSpacing / 2, item.y);
+ context.lineTo(item.x + eachSpacing / 2, item.y);
+ context.lineTo(item.x + eachSpacing / 2, endY);
+ context.lineTo(item.x - eachSpacing / 2, endY);
+ context.moveTo(item.x - eachSpacing / 2, item.y);
+ }
+ context.closePath();
+ context.fill();
+ }
+ }
+
+ // 绘制折线数据图
+ if (eachSeries.type == 'line') {
+ var splitPointList = splitPoints(points);
+ splitPointList.forEach(function(points, index) {
+ context.beginPath();
+ context.setStrokeStyle(eachSeries.color);
+ context.setLineWidth(2 * opts.pixelRatio);
+ if (points.length === 1) {
+ context.moveTo(points[0].x, points[0].y);
+ context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);
+ } else {
+ context.moveTo(points[0].x, points[0].y);
+ if (eachSeries.style == 'curve') {
+ points.forEach(function(item, index) {
+ if (index > 0) {
+ var ctrlPoint = createCurveControlPoints(points, index - 1);
+ context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,
+ item.x,
+ item.y);
+ }
+ });
+ } else {
+ points.forEach(function(item, index) {
+ if (index > 0) {
+ context.lineTo(item.x, item.y);
+ }
+ });
+ }
+ context.moveTo(points[0].x, points[0].y);
+ }
+ context.closePath();
+ context.stroke();
+ });
+ }
+
+ // 绘制点数据图
+ if (eachSeries.type == 'point') {
+ points.forEach(function(pointsa, index) {
+ if (pointsa) {
+ context.beginPath();
+ context.setFillStyle(eachSeries.color);
+ context.setStrokeStyle('#FFFFFF');
+ context.setLineWidth(1 * opts.pixelRatio);
+ context.moveTo(pointsa.x + 3.5 * opts.pixelRatio, pointsa.y);
+ context.arc(pointsa.x, pointsa.y, 4 * opts.pixelRatio, 0, 2 * Math.PI);
+ context.closePath();
+ context.fill();
+ context.stroke();
+ }
+ });
+ }
+
+ if (eachSeries.addPoint == true && eachSeries.type !== 'column') {
+ var shape = config.dataPointShape[seriesIndex % config.dataPointShape.length];
+ drawPointShape(points, eachSeries.color, shape, context, opts);
+ }
+ });
+ if (opts.dataLabel !== false && process === 1) {
+ var columnIndex = 0;
+ series.forEach(function(eachSeries, seriesIndex) {
+ var data = eachSeries.data;
+ var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+ if (eachSeries.type !== 'column') {
+ drawPointText(points, eachSeries, config, context);
+ } else {
+ points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);
+ drawPointText(points, eachSeries, config, context);
+ columnIndex += 1;
+ }
+
+ });
+ }
+
+ context.restore();
+
+ return {
+ xAxisPoints: xAxisPoints,
+ calPoints: calPoints,
+ eachSpacing: eachSpacing,
+ minRange: minRange,
+ maxRange: maxRange
+ };
+}
+
+function drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints) {
+ var toolTipOption = opts.extra.tooltip || {};
+ if (toolTipOption.horizentalLine && opts.tooltip && process === 1 && (opts.type == 'line' || opts.type == 'area' || opts.type == 'column' || opts.type == 'candle' || opts.type == 'mix')) {
+ drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints)
+ }
+ context.save();
+ if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+ context.translate(opts._scrollDistance_, 0);
+ }
+ if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {
+ drawToolTip(opts.tooltip.textList, opts.tooltip.offset, opts, config, context, eachSpacing, xAxisPoints);
+ }
+ context.restore();
+
+}
+
+function drawXAxis(categories, opts, config, context) {
+
+ let xAxisData = opts.chartData.xAxisData,
+ xAxisPoints = xAxisData.xAxisPoints,
+ startX = xAxisData.startX,
+ endX = xAxisData.endX,
+ eachSpacing = xAxisData.eachSpacing;
+ var boundaryGap='center';
+ if (opts.type == 'line'||opts.type == 'area'){
+ boundaryGap=opts.xAxis.boundaryGap;
+ }
+ var startY = opts.height - opts.area[2];
+ var endY = opts.area[0];
+
+ //绘制滚动条
+ if (opts.enableScroll && opts.xAxis.scrollShow) {
+ var scrollY = opts.height - opts.area[2] + config.xAxisHeight;
+ var scrollScreenWidth = endX - startX;
+ var scrollTotalWidth = eachSpacing * (xAxisPoints.length - 1);
+ var scrollWidth = scrollScreenWidth * scrollScreenWidth / scrollTotalWidth;
+ var scrollLeft = 0;
+ if (opts._scrollDistance_) {
+ scrollLeft = -opts._scrollDistance_ * (scrollScreenWidth) / scrollTotalWidth;
+ }
+ context.beginPath();
+ context.setLineCap('round');
+ context.setLineWidth(6 * opts.pixelRatio);
+ context.setStrokeStyle(opts.xAxis.scrollBackgroundColor || "#EFEBEF");
+ context.moveTo(startX, scrollY);
+ context.lineTo(endX, scrollY);
+ context.stroke();
+ context.closePath();
+ context.beginPath();
+ context.setLineCap('round');
+ context.setLineWidth(6 * opts.pixelRatio);
+ context.setStrokeStyle(opts.xAxis.scrollColor || "#A6A6A6");
+ context.moveTo(startX + scrollLeft, scrollY);
+ context.lineTo(startX + scrollLeft + scrollWidth, scrollY);
+ context.stroke();
+ context.closePath();
+ context.setLineCap('butt');
+ }
+
+ context.save();
+
+ if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {
+ context.translate(opts._scrollDistance_, 0);
+ }
+
+
+ if (opts.xAxis.disableGrid !== true) {
+ context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc");
+ context.setLineCap('butt');
+ context.setLineWidth(1 * opts.pixelRatio);
+ if (opts.xAxis.gridType == 'dash') {
+ context.setLineDash([opts.xAxis.dashLength, opts.xAxis.dashLength]);
+ }
+ if (opts.xAxis.type === 'calibration') {
+ xAxisPoints.forEach(function(item, index) {
+ if (index > 0) {
+ context.beginPath();
+ context.moveTo(item - eachSpacing / 2, startY);
+ context.lineTo(item - eachSpacing / 2, startY + 4 * opts.pixelRatio);
+ context.closePath();
+ context.stroke();
+ }
+ });
+ } else {
+ opts.xAxis.gridEval = opts.xAxis.gridEval || 1;
+ xAxisPoints.forEach(function(item, index) {
+ if (index % opts.xAxis.gridEval == 0) {
+ context.beginPath();
+ context.moveTo(item, startY);
+ context.lineTo(item, endY);
+ context.stroke();
+ }
+ });
+ }
+ context.setLineDash([]);
+ }
+
+
+ //不绘制X轴
+ if (opts.xAxis.disabled !== true) {
+ // 对X轴列表做抽稀处理
+ let validWidth = opts.width - opts.padding[1] - opts.padding[3] - config.yAxisWidth - config.yAxisTitleWidth;
+ //默认全部显示X轴标签
+ let maxXAxisListLength = categories.length;
+ //如果设置了X轴单屏数量
+ if (opts.xAxis.labelCount) {
+ //如果设置X轴密度
+ if (opts.xAxis.itemCount) {
+ maxXAxisListLength = Math.ceil(categories.length / opts.xAxis.itemCount * opts.xAxis.labelCount);
+ } else {
+ maxXAxisListLength = opts.xAxis.labelCount;
+ }
+ maxXAxisListLength -= 1;
+ }
+
+ let ratio = Math.ceil(categories.length / maxXAxisListLength);
+
+ let newCategories = [];
+ let cgLength = categories.length;
+ for (let i = 0; i < cgLength; i++) {
+ if (i % ratio !== 0) {
+ newCategories.push("");
+ } else {
+ newCategories.push(categories[i]);
+ }
+ }
+ newCategories[cgLength - 1] = categories[cgLength - 1];
+
+ var xAxisFontSize = opts.xAxis.fontSize || config.fontSize;
+ if (config._xAxisTextAngle_ === 0) {
+ newCategories.forEach(function(item, index) {
+ var offset = - measureText(item, xAxisFontSize) / 2;
+ if(boundaryGap == 'center'){
+ offset+=eachSpacing / 2;
+ }
+ context.beginPath();
+ context.setFontSize(xAxisFontSize);
+ context.setFillStyle(opts.xAxis.fontColor || '#666666');
+ context.fillText(item, xAxisPoints[index] + offset, startY + xAxisFontSize + (config.xAxisHeight - xAxisFontSize) / 2);
+ context.closePath();
+ context.stroke();
+ });
+
+ } else {
+ newCategories.forEach(function(item, index) {
+ context.save();
+ context.beginPath();
+ context.setFontSize(xAxisFontSize);
+ context.setFillStyle(opts.xAxis.fontColor || '#666666');
+ var textWidth = measureText(item);
+ var offset = - textWidth;
+ if(boundaryGap == 'center'){
+ offset+=eachSpacing / 2;
+ }
+ var _calRotateTranslate = calRotateTranslate(xAxisPoints[index] + eachSpacing / 2, startY + xAxisFontSize / 2 + 5, opts.height),
+ transX = _calRotateTranslate.transX,
+ transY = _calRotateTranslate.transY;
+
+ context.rotate(-1 * config._xAxisTextAngle_);
+ context.translate(transX, transY);
+ context.fillText(item, xAxisPoints[index] + offset, startY + xAxisFontSize + 5);
+ context.closePath();
+ context.stroke();
+ context.restore();
+ });
+ }
+ }
+ context.restore();
+
+}
+
+function drawYAxisGrid(categories, opts, config, context) {
+ if (opts.yAxis.disableGrid === true) {
+ return;
+ }
+ let spacingValid = opts.height - opts.area[0] - opts.area[2];
+ let eachSpacing = spacingValid / config.yAxisSplit;
+ let startX = opts.area[3];
+ let xAxisPoints = opts.chartData.xAxisData.xAxisPoints,
+ xAxiseachSpacing = opts.chartData.xAxisData.eachSpacing;
+ let TotalWidth = xAxiseachSpacing * (xAxisPoints.length - 1);
+ let endX = startX + TotalWidth;
+
+ let points = [];
+ for (let i = 0; i < config.yAxisSplit + 1; i++) {
+ points.push(opts.height - opts.area[2] - eachSpacing * i);
+ }
+
+ context.save();
+ if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {
+ context.translate(opts._scrollDistance_, 0);
+ }
+
+ if (opts.yAxis.gridType == 'dash') {
+ context.setLineDash([opts.yAxis.dashLength, opts.yAxis.dashLength]);
+ }
+ context.setStrokeStyle(opts.yAxis.gridColor || "#cccccc");
+ context.setLineWidth(1 * opts.pixelRatio);
+ points.forEach(function(item, index) {
+ context.beginPath();
+ context.moveTo(startX, item);
+ context.lineTo(endX, item);
+ context.stroke();
+ });
+ context.setLineDash([]);
+
+ context.restore();
+}
+
+function drawYAxis(series, opts, config, context) {
+ if (opts.yAxis.disabled === true) {
+ return;
+ }
+ let rangesFormat = opts.chartData.yAxisData.rangesFormat;
+ var spacingValid = opts.height - opts.area[0] - opts.area[2];
+ var eachSpacing = Math.floor(spacingValid / config.yAxisSplit);
+ var startX = opts.area[3];
+ var endX = opts.width - opts.area[1];
+ var endY = opts.height - opts.area[2];
+ var fillEndY = endY + config.xAxisHeight;
+ if (opts.xAxis.scrollShow) {
+ fillEndY -= 3 * opts.pixelRatio;
+ }
+ // set YAxis background
+ context.beginPath();
+ context.setFillStyle(opts.background || '#ffffff');
+ if (opts._scrollDistance_ < 0) {
+ context.fillRect(0, 0, startX, fillEndY);
+ }
+ if(opts.enableScroll == true){
+ context.fillRect(endX, 0, opts.width, fillEndY);
+ }
+ context.closePath();
+ context.stroke();
+
+ var points = [];
+ for (var i = 0; i <= config.yAxisSplit; i++) {
+ points.push(opts.area[0] + eachSpacing * i);
+ }
+
+ var yAxisFontSize = opts.yAxis.fontSize || config.fontSize;
+ rangesFormat.forEach(function(item, index) {
+ var pos = points[index] ? points[index] : endY;
+ context.beginPath();
+ context.setFontSize(yAxisFontSize);
+ context.setFillStyle(opts.yAxis.fontColor || '#666666');
+ context.fillText(String(item), opts.area[3] - config.yAxisWidth, pos + yAxisFontSize / 2);
+ context.closePath();
+ context.stroke();
+ });
+
+ if (opts.yAxis.title) {
+ drawYAxisTitle(opts.yAxis.title, opts, config, context);
+ }
+}
+
+function drawLegend(series, opts, config, context, chartData) {
+ if (opts.legend.show === false) {
+ return;
+ }
+ let legendData = chartData.legendData;
+ let legendList = legendData.points;
+ let legendArea = legendData.area;
+ let padding = opts.legend.padding;
+ let fontSize = opts.legend.fontSize;
+ let shapeWidth = 15 * opts.pixelRatio;
+ let shapeRight = 5 * opts.pixelRatio;
+ let itemGap = opts.legend.itemGap;
+ let lineHeight = Math.max(opts.legend.lineHeight * opts.pixelRatio, fontSize);
+
+ //画背景及边框
+ context.beginPath();
+ context.setLineWidth(opts.legend.borderWidth);
+ context.setStrokeStyle(opts.legend.borderColor);
+ context.setFillStyle(opts.legend.backgroundColor);
+ context.moveTo(legendArea.start.x, legendArea.start.y);
+ context.rect(legendArea.start.x, legendArea.start.y, legendArea.width, legendArea.height);
+ context.closePath();
+ context.fill();
+ context.stroke();
+
+ legendList.forEach(function(itemList, listIndex) {
+ let width = 0;
+ let height = 0;
+ width = legendData.widthArr[listIndex];
+ height = legendData.heightArr[listIndex];
+ let startX = 0;
+ let startY = 0;
+ if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {
+ startX = legendArea.start.x + (legendArea.width - width) / 2;
+ startY = legendArea.start.y + padding + listIndex * lineHeight;
+ } else {
+ if (listIndex == 0) {
+ width = 0;
+ } else {
+ width = legendData.widthArr[listIndex - 1];
+ }
+ startX = legendArea.start.x + padding + width;
+ startY = legendArea.start.y + padding + (legendArea.height - height) / 2;
+ }
+
+ context.setFontSize(config.fontSize);
+ for (let i = 0; i < itemList.length; i++) {
+ let item = itemList[i];
+ item.area = [0, 0, 0, 0];
+ item.area[0] = startX;
+ item.area[1] = startY;
+ item.area[3] = startY + lineHeight;
+ context.beginPath();
+ context.setLineWidth(1 * opts.pixelRatio);
+ context.setStrokeStyle(item.show ? item.color : opts.legend.hiddenColor);
+ context.setFillStyle(item.show ? item.color : opts.legend.hiddenColor);
+ switch (item.legendShape) {
+ case 'line':
+ context.moveTo(startX, startY + 0.5 * lineHeight - 2 * opts.pixelRatio);
+ context.fillRect(startX, startY + 0.5 * lineHeight - 2 * opts.pixelRatio, 15 * opts.pixelRatio, 4 * opts.pixelRatio);
+ break;
+ case 'triangle':
+ context.moveTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);
+ context.lineTo(startX + 2.5 * opts.pixelRatio, startY + 0.5 * lineHeight + 5 * opts.pixelRatio);
+ context.lineTo(startX + 12.5 * opts.pixelRatio, startY + 0.5 * lineHeight + 5 * opts.pixelRatio);
+ context.lineTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);
+ break;
+ case 'diamond':
+ context.moveTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);
+ context.lineTo(startX + 2.5 * opts.pixelRatio, startY + 0.5 * lineHeight);
+ context.lineTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight + 5 * opts.pixelRatio);
+ context.lineTo(startX + 12.5 * opts.pixelRatio, startY + 0.5 * lineHeight);
+ context.lineTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);
+ break;
+ case 'circle':
+ context.moveTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight);
+ context.arc(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight, 5 * opts.pixelRatio, 0, 2 * Math.PI);
+ break;
+ case 'rect':
+ context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);
+ context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio, 15 * opts.pixelRatio, 10 * opts.pixelRatio);
+ break;
+ default:
+ context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);
+ context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio, 15 * opts.pixelRatio, 10 * opts.pixelRatio);
+ }
+ context.closePath();
+ context.fill();
+ context.stroke();
+
+ startX += shapeWidth + shapeRight;
+ let fontTrans = 0.5 * lineHeight + 0.5 * fontSize - 2;
+ context.beginPath();
+ context.setFontSize(fontSize);
+ context.setFillStyle(item.show ? opts.legend.fontColor : opts.legend.hiddenColor);
+ context.fillText(item.name, startX, startY + fontTrans);
+ context.closePath();
+ context.stroke();
+ if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {
+ startX += measureText(item.name, fontSize) + itemGap;
+ item.area[2] = startX;
+ } else {
+ item.area[2] = startX + measureText(item.name, fontSize) + itemGap;;
+ startX -= shapeWidth + shapeRight;
+ startY += lineHeight;
+ }
+ }
+ });
+}
+
+function drawPieDataPoints(series, opts, config, context) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var pieOption = assign({}, {
+ activeOpacity: 0.5,
+ activeRadius: 10 * opts.pixelRatio,
+ offsetAngle: 0,
+ labelWidth: 15 * opts.pixelRatio,
+ ringWidth: 0,
+ border:false,
+ borderWidth:2,
+ borderColor:'#FFFFFF'
+ }, opts.extra.pie);
+ var centerPosition = {
+ x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
+ y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2
+ };
+ if (config.pieChartLinePadding == 0) {
+ config.pieChartLinePadding = pieOption.activeRadius;
+ }
+
+ var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);
+
+ series = getPieDataPoints(series, radius, process);
+
+ var activeRadius = pieOption.activeRadius;
+
+ series = series.map(function(eachSeries) {
+ eachSeries._start_ += (pieOption.offsetAngle) * Math.PI / 180;
+ return eachSeries;
+ });
+ series.forEach(function(eachSeries, seriesIndex) {
+ if (opts.tooltip) {
+ if (opts.tooltip.index == seriesIndex) {
+ context.beginPath();
+ context.setFillStyle(hexToRgb(eachSeries.color, opts.extra.pie.activeOpacity || 0.5));
+ context.moveTo(centerPosition.x, centerPosition.y);
+ context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_ + activeRadius, eachSeries._start_,
+ eachSeries._start_ + 2 *
+ eachSeries._proportion_ * Math.PI);
+ context.closePath();
+ context.fill();
+ }
+ }
+ context.beginPath();
+ context.setLineWidth(pieOption.borderWidth * opts.pixelRatio);
+ context.lineJoin = "round";
+ context.setStrokeStyle(pieOption.borderColor);
+ context.setFillStyle(eachSeries.color);
+ context.moveTo(centerPosition.x, centerPosition.y);
+ context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);
+ context.closePath();
+ context.fill();
+ if (pieOption.border == true) {
+ context.stroke();
+ }
+ });
+
+ if (opts.type === 'ring') {
+ var innerPieWidth = radius * 0.6;
+ if (typeof opts.extra.pie.ringWidth === 'number' && opts.extra.pie.ringWidth > 0) {
+ innerPieWidth = Math.max(0, radius - opts.extra.pie.ringWidth);
+ }
+ context.beginPath();
+ context.setFillStyle(opts.background || '#ffffff');
+ context.moveTo(centerPosition.x, centerPosition.y);
+ context.arc(centerPosition.x, centerPosition.y, innerPieWidth, 0, 2 * Math.PI);
+ context.closePath();
+ context.fill();
+ }
+
+ if (opts.dataLabel !== false && process === 1) {
+ var valid = false;
+ for (var i = 0, len = series.length; i < len; i++) {
+ if (series[i].data > 0) {
+ valid = true;
+ break;
+ }
+ }
+
+ if (valid) {
+ drawPieText(series, opts, config, context, radius, centerPosition);
+ }
+ }
+
+ if (process === 1 && opts.type === 'ring') {
+ drawRingTitle(opts, config, context, centerPosition);
+ }
+
+ return {
+ center: centerPosition,
+ radius: radius,
+ series: series
+ };
+}
+
+function drawRoseDataPoints(series, opts, config, context) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var roseOption = assign({}, {
+ type: 'area',
+ activeOpacity: 0.5,
+ activeRadius: 10 * opts.pixelRatio,
+ offsetAngle: 0,
+ labelWidth: 15 * opts.pixelRatio,
+ border:false,
+ borderWidth:2,
+ borderColor:'#FFFFFF'
+ }, opts.extra.rose);
+ if (config.pieChartLinePadding == 0) {
+ config.pieChartLinePadding = roseOption.activeRadius;
+ }
+ var centerPosition = {
+ x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
+ y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2
+ };
+ var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);
+ var minRadius = roseOption.minRadius || radius * 0.5;
+
+ series = getRoseDataPoints(series, roseOption.type, minRadius, radius, process);
+
+ var activeRadius = roseOption.activeRadius;
+
+ series = series.map(function(eachSeries) {
+ eachSeries._start_ += (roseOption.offsetAngle || 0) * Math.PI / 180;
+ return eachSeries;
+ });
+
+ series.forEach(function(eachSeries, seriesIndex) {
+ if (opts.tooltip) {
+ if (opts.tooltip.index == seriesIndex) {
+ context.beginPath();
+ context.setFillStyle(hexToRgb(eachSeries.color, roseOption.activeOpacity || 0.5));
+ context.moveTo(centerPosition.x, centerPosition.y);
+ context.arc(centerPosition.x, centerPosition.y, activeRadius + eachSeries._radius_, eachSeries._start_,
+ eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI);
+ context.closePath();
+ context.fill();
+ }
+ }
+ context.beginPath();
+ context.setLineWidth(roseOption.borderWidth * opts.pixelRatio);
+ context.lineJoin = "round";
+ context.setStrokeStyle(roseOption.borderColor);
+ context.setFillStyle(eachSeries.color);
+ context.moveTo(centerPosition.x, centerPosition.y);
+ context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 *
+ eachSeries._rose_proportion_ * Math.PI);
+ context.closePath();
+ context.fill();
+ if (roseOption.border == true) {
+ context.stroke();
+ }
+ });
+
+ if (opts.dataLabel !== false && process === 1) {
+ var valid = false;
+ for (var i = 0, len = series.length; i < len; i++) {
+ if (series[i].data > 0) {
+ valid = true;
+ break;
+ }
+ }
+
+ if (valid) {
+ drawPieText(series, opts, config, context, radius, centerPosition);
+ }
+ }
+
+ return {
+ center: centerPosition,
+ radius: radius,
+ series: series
+ };
+}
+
+function drawArcbarDataPoints(series, opts, config, context) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var arcbarOption = assign({}, {
+ startAngle: 0.75,
+ endAngle: 0.25,
+ type: 'default',
+ width: 12 * opts.pixelRatio
+ }, opts.extra.arcbar);
+
+ series = getArcbarDataPoints(series, arcbarOption, process);
+ var centerPosition = {
+ x: opts.width / 2,
+ y: opts.height / 2
+ };
+ var radius = Math.min(centerPosition.x, centerPosition.y);
+ radius -= 5 * opts.pixelRatio;
+ radius -= arcbarOption.width / 2;
+
+ //背景颜色
+ context.setLineWidth(arcbarOption.width);
+ context.setStrokeStyle(arcbarOption.backgroundColor || '#E9E9E9');
+ context.setLineCap('round');
+ context.beginPath();
+ if (arcbarOption.type == 'default') {
+ context.arc(centerPosition.x, centerPosition.y, radius, arcbarOption.startAngle * Math.PI, arcbarOption.endAngle *
+ Math.PI, false);
+ } else {
+ context.arc(centerPosition.x, centerPosition.y, radius, 0, 2 * Math.PI, false);
+ }
+ context.stroke();
+
+ for (let i = 0; i < series.length; i++) {
+ let eachSeries = series[i];
+ context.setLineWidth(arcbarOption.width);
+ context.setStrokeStyle(eachSeries.color);
+ context.setLineCap('round');
+ context.beginPath();
+ context.arc(centerPosition.x, centerPosition.y, radius, arcbarOption.startAngle * Math.PI, eachSeries._proportion_ *
+ Math.PI, false);
+ context.stroke();
+ }
+
+ drawRingTitle(opts, config, context, centerPosition);
+
+ return {
+ center: centerPosition,
+ radius: radius,
+ series: series
+ };
+}
+
+function drawGaugeDataPoints(categories, series, opts, config, context) {
+ var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
+ var gaugeOption = assign({}, {
+ startAngle: 0.75,
+ endAngle: 0.25,
+ width: 15,
+ splitLine: {
+ fixRadius: 0,
+ splitNumber: 10,
+ width: 15,
+ color: '#FFFFFF',
+ childNumber: 5,
+ childWidth: 5
+ },
+ pointer: {
+ width: 15,
+ color: 'auto'
+ }
+ }, opts.extra.gauge);
+
+ if (gaugeOption.oldAngle == undefined) {
+ gaugeOption.oldAngle = gaugeOption.startAngle;
+ }
+ if (gaugeOption.oldData == undefined) {
+ gaugeOption.oldData = 0;
+ }
+ categories = getGaugeAxisPoints(categories, gaugeOption.startAngle, gaugeOption.endAngle);
+
+ var centerPosition = {
+ x: opts.width / 2,
+ y: opts.height / 2
+ };
+ var radius = Math.min(centerPosition.x, centerPosition.y);
+ radius -= 5 * opts.pixelRatio;
+ radius -= gaugeOption.width / 2;
+ var innerRadius = radius - gaugeOption.width;
+
+ //画背景
+ context.setLineWidth(gaugeOption.width);
+ context.setLineCap('butt');
+ for (let i = 0; i < categories.length; i++) {
+ let eachCategories = categories[i];
+ context.beginPath();
+ context.setStrokeStyle(eachCategories.color);
+ context.arc(centerPosition.x, centerPosition.y, radius, eachCategories._startAngle_ * Math.PI, eachCategories._endAngle_ *
+ Math.PI, false);
+ context.stroke();
+ }
+ context.save();
+
+ //画刻度线
+ let totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;
+ let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;
+ let childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;
+ let startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;
+ let endX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;
+ let childendX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.childWidth;
+
+ context.translate(centerPosition.x, centerPosition.y);
+ context.rotate((gaugeOption.startAngle - 1) * Math.PI);
+
+ for (let i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) {
+ context.beginPath();
+ context.setStrokeStyle(gaugeOption.splitLine.color);
+ context.setLineWidth(2 * opts.pixelRatio);
+ context.moveTo(startX, 0);
+ context.lineTo(endX, 0);
+ context.stroke();
+ context.rotate(splitAngle * Math.PI);
+ }
+ context.restore();
+
+ context.save();
+ context.translate(centerPosition.x, centerPosition.y);
+ context.rotate((gaugeOption.startAngle - 1) * Math.PI);
+
+ for (let i = 0; i < gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; i++) {
+ context.beginPath();
+ context.setStrokeStyle(gaugeOption.splitLine.color);
+ context.setLineWidth(1 * opts.pixelRatio);
+ context.moveTo(startX, 0);
+ context.lineTo(childendX, 0);
+ context.stroke();
+ context.rotate(childAngle * Math.PI);
+ }
+ context.restore();
+
+ //画指针
+ series = getGaugeDataPoints(series, categories, gaugeOption, process);
+
+ for (let i = 0; i < series.length; i++) {
+ let eachSeries = series[i];
+ context.save();
+ context.translate(centerPosition.x, centerPosition.y);
+ context.rotate((eachSeries._proportion_ - 1) * Math.PI);
+ context.beginPath();
+ context.setFillStyle(eachSeries.color);
+ context.moveTo(gaugeOption.pointer.width, 0);
+ context.lineTo(0, -gaugeOption.pointer.width / 2);
+ context.lineTo(-innerRadius, 0);
+ context.lineTo(0, gaugeOption.pointer.width / 2);
+ context.lineTo(gaugeOption.pointer.width, 0);
+ context.closePath();
+ context.fill();
+ context.beginPath();
+ context.setFillStyle('#FFFFFF');
+ context.arc(0, 0, gaugeOption.pointer.width / 6, 0, 2 * Math.PI, false);
+ context.fill();
+ context.restore();
+ }
+
+ if (opts.dataLabel !== false) {
+ drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context);
+ }
+
+ drawRingTitle(opts, config, context, centerPosition);
+
+ if (process === 1 && opts.type === 'gauge') {
+ opts.extra.gauge.oldAngle = series[0]._proportion_;
+ opts.extra.gauge.oldData = series[0].data;
+ }
+ return {
+ center: centerPosition,
+ radius: radius,
+ innerRadius: innerRadius,
+ categories: categories,
+ totalAngle: totalAngle
+ };
+}
+
+function drawRadarDataPoints(series, opts, config, context) {
+ var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ var radarOption = assign({},{
+ gridColor: '#cccccc',
+ labelColor: '#666666',
+ opacity: 0.2
+ },opts.extra.radar);
+
+ var coordinateAngle = getRadarCoordinateSeries(opts.categories.length);
+
+ var centerPosition = {
+ x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
+ y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2
+ };
+
+ var radius = Math.min(centerPosition.x - (getMaxTextListLength(opts.categories) + config.radarLabelTextMargin),
+ centerPosition.y - config.radarLabelTextMargin);
+ //TODO逻辑不对
+ radius -= opts.padding[1];
+
+ // draw grid
+ context.beginPath();
+ context.setLineWidth(1 * opts.pixelRatio);
+ context.setStrokeStyle(radarOption.gridColor);
+ coordinateAngle.forEach(function(angle) {
+ var pos = convertCoordinateOrigin(radius * Math.cos(angle), radius * Math.sin(angle), centerPosition);
+ context.moveTo(centerPosition.x, centerPosition.y);
+ context.lineTo(pos.x, pos.y);
+ });
+ context.stroke();
+ context.closePath();
+ // draw split line grid
+
+ var _loop = function _loop(i) {
+ var startPos = {};
+ context.beginPath();
+ context.setLineWidth(1 * opts.pixelRatio);
+ context.setStrokeStyle(radarOption.gridColor);
+ coordinateAngle.forEach(function(angle, index) {
+ var pos = convertCoordinateOrigin(radius / config.radarGridCount * i * Math.cos(angle), radius / config.radarGridCount *
+ i * Math.sin(angle), centerPosition);
+ if (index === 0) {
+ startPos = pos;
+ context.moveTo(pos.x, pos.y);
+ } else {
+ context.lineTo(pos.x, pos.y);
+ }
+ });
+ context.lineTo(startPos.x, startPos.y);
+ context.stroke();
+ context.closePath();
+ };
+
+ for (var i = 1; i <= config.radarGridCount; i++) {
+ _loop(i);
+ }
+
+ var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process);
+
+ radarDataPoints.forEach(function(eachSeries, seriesIndex) {
+ // 绘制区域数据
+ context.beginPath();
+ context.setFillStyle(hexToRgb(eachSeries.color, radarOption.opacity));
+ eachSeries.data.forEach(function(item, index) {
+ if (index === 0) {
+ context.moveTo(item.position.x, item.position.y);
+ } else {
+ context.lineTo(item.position.x, item.position.y);
+ }
+ });
+ context.closePath();
+ context.fill();
+
+ if (opts.dataPointShape !== false) {
+ var shape = config.dataPointShape[seriesIndex % config.dataPointShape.length];
+ var points = eachSeries.data.map(function(item) {
+ return item.position;
+ });
+ drawPointShape(points, eachSeries.color, shape, context, opts);
+ }
+ });
+ // draw label text
+ drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context);
+
+ return {
+ center: centerPosition,
+ radius: radius,
+ angleList: coordinateAngle
+ };
+}
+
+function normalInt(min, max, iter) {
+ iter = iter==0?1:iter;
+ var arr = [];
+ for (var i = 0; i < iter; i++) {
+ arr[i] = Math.random();
+ };
+ return Math.floor(arr.reduce(function(i,j){return i+j})/iter*(max-min))+min;
+};
+
+function collisionNew(area,points,width,height){
+ var isIn=false;
+ for(let i=0;ipoints[i].area[2]||area[1]>points[i].area[3]||area[2]width || area[3]>height){
+ isIn=true;
+ break;
+ }else{
+ isIn=false;
+ }
+ }else{
+ isIn=true;
+ break;
+ }
+ }
+ }
+ return isIn;
+};
+
+function getBoundingBox(data) {
+ var bounds = {}, coords;
+ bounds.xMin = 180;
+ bounds.xMax = 0;
+ bounds.yMin = 90;
+ bounds.yMax = 0
+ for (var i = 0; i < data.length; i++) {
+ var coorda = data[i].geometry.coordinates
+ for (var k = 0; k < coorda.length; k++) {
+ coords = coorda[k];
+ if (coords.length == 1) {
+ coords = coords[0]
+ }
+ for (var j = 0; j < coords.length; j++) {
+ var longitude = coords[j][0];
+ var latitude = coords[j][1];
+ var point = {
+ x: longitude,
+ y: latitude
+ }
+ bounds.xMin = bounds.xMin < point.x ? bounds.xMin : point.x;
+ bounds.xMax = bounds.xMax > point.x ? bounds.xMax : point.x;
+ bounds.yMin = bounds.yMin < point.y ? bounds.yMin : point.y;
+ bounds.yMax = bounds.yMax > point.y ? bounds.yMax : point.y;
+ }
+ }
+ }
+ return bounds;
+}
+
+function coordinateToPoint(latitude, longitude,bounds,scale,xoffset,yoffset) {
+ return {
+ x: (longitude - bounds.xMin) * scale+xoffset,
+ y: (bounds.yMax - latitude) * scale+yoffset
+ };
+}
+
+function pointToCoordinate(pointY, pointX,bounds,scale,xoffset,yoffset) {
+ return {
+ x: (pointX-xoffset)/scale+bounds.xMin,
+ y: bounds.yMax - (pointY-yoffset)/scale
+ };
+}
+
+function isRayIntersectsSegment(poi,s_poi,e_poi){
+ if (s_poi[1]==e_poi[1]){return false;}
+ if (s_poi[1]>poi[1] && e_poi[1]>poi[1]){return false;}
+ if (s_poi[1]poi[1]){return false;}
+ if (e_poi[1]==poi[1] && s_poi[1]>poi[1]){return false;}
+ if (s_poi[0]0.7) {
+ return true;
+ }else {return false};
+ };
+ for (let i = 0; i < points.length; i++) {
+ let text = points[i].name;
+ let tHeight = points[i].textSize;
+ let tWidth = measureText(text,tHeight);
+ let isSpin = Spin();
+ let x,y,area,areav;
+ let breaknum=0;
+ while(true) {
+ breaknum++;
+ let isCollision;
+ if (isSpin) {
+ x = normalInt(-opts.width/2, opts.width/2,5) - tWidth/2;
+ y = normalInt(-opts.height/2, opts.height/2,5)+tHeight/2;
+ area=[y-5-tWidth+opts.width/2,(-x-5+opts.height/2),y+5+opts.width/2,(-x+tHeight+5+opts.height/2)];
+ areav=[opts.width-(opts.width/2-opts.height/2)-(-x+tHeight+5+opts.height/2)-5,(opts.height/2-opts.width/2)+(y-5-tWidth+opts.width/2)-5,opts.width-(opts.width/2-opts.height/2)-(-x+tHeight+5+opts.height/2)+tHeight,(opts.height/2-opts.width/2)+(y-5-tWidth+opts.width/2)+tWidth+5];
+ isCollision = collisionNew(areav,points,opts.height,opts.width);
+ }else{
+ x = normalInt(-opts.width/2, opts.width/2,5) - tWidth/2;
+ y = normalInt(-opts.height/2, opts.height/2,5)+tHeight/2;
+ area=[x-5+opts.width/2,y-5-tHeight+opts.height/2,x+tWidth+5+opts.width/2,y+5+opts.height/2];
+ isCollision = collisionNew(area,points,opts.width,opts.height);
+ }
+ if (!isCollision) break;
+ if (breaknum==1000){
+ area=[-1000,-1000,-1000,-1000];
+ break;
+ }
+ };
+ if (isSpin) {
+ points[i].area=areav;
+ points[i].areav=area;
+ }else{
+ points[i].area=area;
+ }
+ points[i].rotate=isSpin;
+ };
+ break;
+ }
+ return points;
+}
+
+
+function drawWordCloudDataPoints(series, opts, config, context) {
+ let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ let wordOption = assign({},{
+ type: 'normal',
+ autoColors: true
+ },opts.extra.word);
+
+ context.beginPath();
+ context.setFillStyle(opts.background||'#FFFFFF');
+ context.rect(0,0,opts.width,opts.height);
+ context.fill();
+ context.save();
+ let points = opts.chartData.wordCloudData;
+ context.translate(opts.width/2,opts.height/2);
+
+ for(let i=0;i0){
+ if (opts.tooltip) {
+ if (opts.tooltip.index == i) {
+ context.strokeText(text,(points[i].areav[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].areav[1]+5+tHeight-opts.height/2)*process);
+ }else{
+ context.fillText(text,(points[i].areav[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].areav[1]+5+tHeight-opts.height/2)*process);
+ }
+ }else{
+ context.fillText(text,(points[i].areav[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].areav[1]+5+tHeight-opts.height/2)*process);
+ }
+ }
+ }else{
+ if(points[i].area[0]>0){
+ if (opts.tooltip) {
+ if (opts.tooltip.index == i) {
+ context.strokeText(text,(points[i].area[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].area[1]+5+tHeight-opts.height/2)*process);
+ }else{
+ context.fillText(text,(points[i].area[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].area[1]+5+tHeight-opts.height/2)*process);
+ }
+ }else{
+ context.fillText(text,(points[i].area[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].area[1]+5+tHeight-opts.height/2)*process);
+ }
+
+ }
+ }
+
+ context.stroke();
+ context.restore();
+ }
+ context.restore();
+}
+
+function drawFunnelDataPoints(series, opts, config, context) {
+ let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+ let funnelOption = assign({},{
+ activeWidth:10,
+ activeOpacity:0.3,
+ border:false,
+ borderWidth:2,
+ borderColor:'#FFFFFF',
+ fillOpacity:1,
+ labelAlign:'right'
+ },opts.extra.funnel);
+ let eachSpacing = (opts.height - opts.area[0] - opts.area[2])/series.length;
+ let centerPosition = {
+ x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
+ y: opts.height-opts.area[2]
+ };
+ let activeWidth = funnelOption.activeWidth;
+ let radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - activeWidth, (opts.height - opts.area[0] - opts.area[2]) / 2 - activeWidth);
+ series = getFunnelDataPoints(series, radius, process);
+ context.save();
+ context.translate(centerPosition.x,centerPosition.y);
+ for(let i=0;i 0 && arguments[0] !== undefined ? arguments[0] : {};
+ this.opts = assign({}, this.opts, data);
+ this.opts.updateData = true;
+ let scrollPosition = data.scrollPosition || 'current';
+ switch (scrollPosition) {
+ case 'current':
+ this.opts._scrollDistance_ = this.scrollOption.currentOffset;
+ break;
+ case 'left':
+ this.opts._scrollDistance_ = 0;
+ this.scrollOption = {
+ currentOffset: 0,
+ startTouchX: 0,
+ distance: 0,
+ lastMoveTime: 0
+ };
+ break;
+ case 'right':
+ let _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config),
+ yAxisWidth = _calYAxisData.yAxisWidth;
+ this.config.yAxisWidth = yAxisWidth;
+ let offsetLeft = 0;
+ let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),
+ xAxisPoints = _getXAxisPoints0.xAxisPoints,
+ startX = _getXAxisPoints0.startX,
+ endX = _getXAxisPoints0.endX,
+ eachSpacing = _getXAxisPoints0.eachSpacing;
+ let totalWidth = eachSpacing * (xAxisPoints.length - 1);
+ let screenWidth = endX - startX;
+ offsetLeft = screenWidth - totalWidth;
+ this.scrollOption = {
+ currentOffset: offsetLeft,
+ startTouchX: offsetLeft,
+ distance: 0,
+ lastMoveTime: 0
+ };
+ this.opts._scrollDistance_ = offsetLeft;
+ break;
+ }
+ drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
+};
+
+Charts.prototype.zoom = function() {
+ var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.opts.xAxis.itemCount;
+ if (this.opts.enableScroll !== true) {
+ console.log('请启用滚动条后使用!')
+ return;
+ }
+ //当前屏幕中间点
+ let centerPoint = Math.round(Math.abs(this.scrollOption.currentOffset) / this.opts.chartData.eachSpacing) + Math.round(
+ this.opts.xAxis.itemCount / 2);
+ this.opts.animation = false;
+ this.opts.xAxis.itemCount = val.itemCount;
+ //重新计算x轴偏移距离
+ let _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config),
+ yAxisWidth = _calYAxisData.yAxisWidth;
+ this.config.yAxisWidth = yAxisWidth;
+ let offsetLeft = 0;
+ let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),
+ xAxisPoints = _getXAxisPoints0.xAxisPoints,
+ startX = _getXAxisPoints0.startX,
+ endX = _getXAxisPoints0.endX,
+ eachSpacing = _getXAxisPoints0.eachSpacing;
+ let centerLeft = eachSpacing * centerPoint;
+ let screenWidth = endX - startX;
+ let MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1);
+ offsetLeft = screenWidth / 2 - centerLeft;
+ if (offsetLeft > 0) {
+ offsetLeft = 0;
+ }
+ if (offsetLeft < MaxLeft) {
+ offsetLeft = MaxLeft;
+ }
+ this.scrollOption = {
+ currentOffset: offsetLeft,
+ startTouchX: offsetLeft,
+ distance: 0,
+ lastMoveTime: 0
+ };
+ this.opts._scrollDistance_ = offsetLeft;
+ drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
+};
+
+Charts.prototype.stopAnimation = function() {
+ this.animationInstance && this.animationInstance.stop();
+};
+
+Charts.prototype.addEventListener = function(type, listener) {
+ this.event.addEventListener(type, listener);
+};
+
+Charts.prototype.getCurrentDataIndex = function(e) {
+ var touches = null;
+ if (e.changedTouches) {
+ touches = e.changedTouches[0];
+ } else {
+ touches = e.mp.changedTouches[0];
+ }
+ if (touches) {
+ let _touches$ = getTouches(touches, this.opts, e);
+ if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose') {
+ return findPieChartCurrentIndex({
+ x: _touches$.x,
+ y: _touches$.y
+ }, this.opts.chartData.pieData);
+ } else if (this.opts.type === 'radar') {
+ return findRadarChartCurrentIndex({
+ x: _touches$.x,
+ y: _touches$.y
+ }, this.opts.chartData.radarData, this.opts.categories.length);
+ } else if (this.opts.type === 'funnel') {
+ return findFunnelChartCurrentIndex({
+ x: _touches$.x,
+ y: _touches$.y
+ }, this.opts.chartData.funnelData);
+ } else if (this.opts.type === 'map') {
+ return findMapChartCurrentIndex({
+ x: _touches$.x,
+ y: _touches$.y
+ }, this.opts);
+ }else if (this.opts.type === 'word') {
+ return findWordChartCurrentIndex({
+ x: _touches$.x,
+ y: _touches$.y
+ }, this.opts.chartData.wordCloudData);
+ } else {
+ return findCurrentIndex({
+ x: _touches$.x,
+ y: _touches$.y
+ }, this.opts.chartData.xAxisPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset));
+ }
+ }
+ return -1;
+};
+
+Charts.prototype.getLegendDataIndex = function(e) {
+ var touches = null;
+ if (e.changedTouches) {
+ touches = e.changedTouches[0];
+ } else {
+ touches = e.mp.changedTouches[0];
+ }
+ if (touches) {
+ let _touches$ = getTouches(touches, this.opts, e);
+ return findLegendIndex({
+ x: _touches$.x,
+ y: _touches$.y
+ }, this.opts.chartData.legendData);
+ }
+ return -1;
+};
+
+Charts.prototype.touchLegend = function(e) {
+ var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+ var touches = null;
+ if (e.changedTouches) {
+ touches = e.changedTouches[0];
+ } else {
+ touches = e.mp.changedTouches[0];
+ }
+ if (touches) {
+ var _touches$ = getTouches(touches, this.opts, e);
+ var index = this.getLegendDataIndex(e);
+ if (index >= 0) {
+ this.opts.series[index].show = !this.opts.series[index].show;
+ this.opts.animation = option.animation ? true : false;
+ drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
+ }
+ }
+
+};
+
+Charts.prototype.showToolTip = function(e) {
+ var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+ var touches = null;
+ if (e.changedTouches) {
+ touches = e.changedTouches[0];
+ } else {
+ touches = e.mp.changedTouches[0];
+ }
+ if (!touches) {
+ console.log("touchError");
+ }
+ var _touches$ = getTouches(touches, this.opts, e);
+ var currentOffset = this.scrollOption.currentOffset;
+ var opts = assign({}, this.opts, {
+ _scrollDistance_: currentOffset,
+ animation: false
+ });
+ if (this.opts.type === 'line' || this.opts.type === 'area' || this.opts.type === 'column') {
+ var index = this.getCurrentDataIndex(e);
+ if (index > -1) {
+ var seriesData = getSeriesDataItem(this.opts.series, index);
+ if (seriesData.length !== 0) {
+ var _getToolTipData = getToolTipData(seriesData, this.opts.chartData.calPoints, index, this.opts.categories,option),
+ textList = _getToolTipData.textList,
+ offset = _getToolTipData.offset;
+ offset.y = _touches$.y;
+ opts.tooltip = {
+ textList: textList,
+ offset: offset,
+ option: option,
+ index: index
+ };
+ }
+ }
+ drawCharts.call(this, opts.type, opts, this.config, this.context);
+ }
+ if (this.opts.type === 'mix') {
+ var index = this.getCurrentDataIndex(e);
+ if (index > -1) {
+ var currentOffset = this.scrollOption.currentOffset;
+ var opts = assign({}, this.opts, {
+ _scrollDistance_: currentOffset,
+ animation: false
+ });
+ var seriesData = getSeriesDataItem(this.opts.series, index);
+ if (seriesData.length !== 0) {
+ var _getMixToolTipData = getMixToolTipData(seriesData, this.opts.chartData.calPoints, index, this.opts.categories,option),
+ textList = _getMixToolTipData.textList,
+ offset = _getMixToolTipData.offset;
+ offset.y = _touches$.y;
+ opts.tooltip = {
+ textList: textList,
+ offset: offset,
+ option: option,
+ index: index
+ };
+ }
+ }
+ drawCharts.call(this, opts.type, opts, this.config, this.context);
+ }
+ if (this.opts.type === 'candle') {
+ var index = this.getCurrentDataIndex(e);
+ if (index > -1) {
+ var currentOffset = this.scrollOption.currentOffset;
+ var opts = assign({}, this.opts, {
+ _scrollDistance_: currentOffset,
+ animation: false
+ });
+ var seriesData = getSeriesDataItem(this.opts.series, index);
+ if (seriesData.length !== 0) {
+ var _getToolTipData = getCandleToolTipData(this.opts.series[0].data, seriesData, this.opts.chartData.calPoints,
+ index, this.opts.categories, this.opts.extra.candle, option),
+ textList = _getToolTipData.textList,
+ offset = _getToolTipData.offset;
+ offset.y = _touches$.y;
+ opts.tooltip = {
+ textList: textList,
+ offset: offset,
+ option: option,
+ index: index
+ };
+ }
+ }
+ drawCharts.call(this, opts.type, opts, this.config, this.context);
+ }
+ if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose'||this.opts.type === 'funnel' ) {
+ var index = this.getCurrentDataIndex(e);
+ if (index > -1) {
+ var currentOffset = this.scrollOption.currentOffset;
+ var opts = assign({}, this.opts, {
+ _scrollDistance_: currentOffset,
+ animation: false
+ });
+ var seriesData = this.opts._series_[index];
+ var textList = [{
+ text: option.format ? option.format(seriesData) : seriesData.name + ': ' + seriesData.data,
+ color: seriesData.color
+ }];
+ var offset = {
+ x: _touches$.x,
+ y: _touches$.y
+ };
+ opts.tooltip = {
+ textList: textList,
+ offset: offset,
+ option: option,
+ index: index
+ };
+ }
+ drawCharts.call(this, opts.type, opts, this.config, this.context);
+ }
+ if (this.opts.type === 'map'||this.opts.type === 'word') {
+ var index = this.getCurrentDataIndex(e);
+ if (index > -1) {
+ var currentOffset = this.scrollOption.currentOffset;
+ var opts = assign({}, this.opts, {
+ _scrollDistance_: currentOffset,
+ animation: false
+ });
+ var seriesData = this.opts._series_[index];
+ var textList = [{
+ text: option.format ? option.format(seriesData) : seriesData.properties.name ,
+ color: seriesData.color
+ }];
+ var offset = {
+ x: _touches$.x,
+ y: _touches$.y
+ };
+ opts.tooltip = {
+ textList: textList,
+ offset: offset,
+ option: option,
+ index: index
+ };
+ }
+ opts.updateData = false;
+ drawCharts.call(this, opts.type, opts, this.config, this.context);
+ }
+ if (this.opts.type === 'radar') {
+ var index = this.getCurrentDataIndex(e);
+ if (index > -1) {
+ var currentOffset = this.scrollOption.currentOffset;
+ var opts = assign({}, this.opts, {
+ _scrollDistance_: currentOffset,
+ animation: false
+ });
+ var seriesData = getSeriesDataItem(this.opts.series, index);
+ if (seriesData.length !== 0) {
+ var textList = seriesData.map(function(item) {
+ return {
+ text: option.format ? option.format(item) : item.name + ': ' + item.data,
+ color: item.color
+ };
+ });
+ var offset = {
+ x: _touches$.x,
+ y: _touches$.y
+ };
+ opts.tooltip = {
+ textList: textList,
+ offset: offset,
+ option: option,
+ index: index
+ };
+ }
+ }
+ drawCharts.call(this, opts.type, opts, this.config, this.context);
+ }
+};
+
+Charts.prototype.translate = function(distance) {
+ this.scrollOption = {
+ currentOffset: distance,
+ startTouchX: distance,
+ distance: 0,
+ lastMoveTime: 0
+ };
+ let opts = assign({}, this.opts, {
+ _scrollDistance_: distance,
+ animation: false
+ });
+ drawCharts.call(this, this.opts.type, opts, this.config, this.context);
+};
+
+Charts.prototype.scrollStart = function(e) {
+ var touches = null;
+ if (e.changedTouches) {
+ touches = e.changedTouches[0];
+ } else {
+ touches = e.mp.changedTouches[0];
+ }
+ var _touches$ = getTouches(touches, this.opts, e);
+ if (touches && this.opts.enableScroll === true) {
+ this.scrollOption.startTouchX = _touches$.x;
+ }
+};
+
+Charts.prototype.scroll = function(e) {
+ if (this.scrollOption.lastMoveTime === 0) {
+ this.scrollOption.lastMoveTime = Date.now();
+ }
+ let Limit = this.opts.extra.touchMoveLimit || 20;
+ let currMoveTime = Date.now();
+ let duration = currMoveTime - this.scrollOption.lastMoveTime;
+ if (duration < Math.floor(1000 / Limit)) return;
+ this.scrollOption.lastMoveTime = currMoveTime;
+ var touches = null;
+ if (e.changedTouches) {
+ touches = e.changedTouches[0];
+ } else {
+ touches = e.mp.changedTouches[0];
+ }
+ if (touches && this.opts.enableScroll === true) {
+ var _touches$ = getTouches(touches, this.opts, e);
+ var _distance;
+ _distance = _touches$.x - this.scrollOption.startTouchX;
+ var currentOffset = this.scrollOption.currentOffset;
+ var validDistance = calValidDistance(currentOffset + _distance, this.opts.chartData, this.config, this.opts);
+ this.scrollOption.distance = _distance = validDistance - currentOffset;
+ var opts = assign({}, this.opts, {
+ _scrollDistance_: currentOffset + _distance,
+ animation: false
+ });
+ drawCharts.call(this, opts.type, opts, this.config, this.context);
+ return currentOffset + _distance;
+ }
+};
+
+Charts.prototype.scrollEnd = function(e) {
+ if (this.opts.enableScroll === true) {
+ var _scrollOption = this.scrollOption,
+ currentOffset = _scrollOption.currentOffset,
+ distance = _scrollOption.distance;
+ this.scrollOption.currentOffset = currentOffset + distance;
+ this.scrollOption.distance = 0;
+ }
+};
+if (typeof module === "object" && typeof module.exports === "object") {
+ module.exports = Charts;
+ //export default Charts;//建议使用nodejs的module导出方式,如报错请使用export方式导出
+}
diff --git a/src/libs/versionUpdate.js b/src/libs/versionUpdate.js
new file mode 100644
index 0000000..4417176
--- /dev/null
+++ b/src/libs/versionUpdate.js
@@ -0,0 +1,24 @@
+import axios from 'axios'
+
+const isNewVersion = () => {
+ let updae_url=""
+ // let updae_url = getApp().globalData.text;
+ let url = updae_url+ `/static/version.json?t=${new Date().getTime()}`
+ axios.get(url).then(res => {
+ if (res.status === 200) {
+ let vueVersion = res.data.version;
+ let localVueVersion = localStorage.getItem('vueVersion');
+ if (localVueVersion && localVueVersion != vueVersion) {
+ localStorage.setItem('vueVersion', vueVersion);
+ window.location.reload();
+ return;
+ } else {
+ localStorage.setItem('vueVersion', vueVersion);
+ }
+ }
+ })
+}
+
+export default {
+ isNewVersion
+}
diff --git a/src/main.js b/src/main.js
new file mode 100644
index 0000000..e5bb2f8
--- /dev/null
+++ b/src/main.js
@@ -0,0 +1,76 @@
+import App from './App'
+import store from './store'
+import './router/my_router.js'; //引入拦截
+import VueClipboard from 'vue-clipboard2' //复制粘贴
+import uView from './uni_modules/vk-uview-ui';// 引入 uView UI
+// import uView2 from './components/uview-ui'
+import comMessage from './mycomponents/common/comMessage.vue'
+
+// #ifndef VUE3
+import Vue from 'vue'
+console.log("Vuew2222");
+Vue.config.productionTip = false
+Vue.prototype.$store = store
+Vue.prototype.$adpid = "1111111111"
+Vue.prototype.$backgroundAudioData = {
+ playing: false,
+ playTime: 0,
+ formatedPlayTime: '00:00:00'
+}
+App.mpType = 'app'
+const app = new Vue({
+ store,
+ ...App
+})
+app.$mount()
+// #endif
+
+import {
+ createSSRApp
+} from "vue";
+export function createApp() {
+ const app = createSSRApp(App);
+ app.use(store)
+ app.use(VueClipboard)
+ app.use(uView)
+ // app.use(uView2)
+ app.component('comMessage', comMessage)
+ console.log("网络22请求")
+ // startApp(app);
+ return {
+ app,
+ };
+}
+
+export function startApp(app) {
+ uni.request({
+ url: `./static/config.json?t=${new Date().getTime()}`,
+ method: 'get',
+ data: {},
+ success: (res) => {
+ if (res.data != "") {
+ //在配置中读url,company等信息
+ // app.config.globalProperties.$baseInfo = res.data.baseInfo;
+ // getApp().globalData.dev_url = res.data.baseInfo.dev.value;
+ // getApp().globalData.request_url = res.data.baseInfo.request_url.value;
+ // getApp().globalData.tenantId = res.data.baseInfo.tenantId.value;
+ // app.config.globalProperties.$recepit_configList = res.data.recepit_configList;
+ // getApp().globalData.recepit_configList = res.data.recepit_configList;
+ // getApp().globalData.feed_configList = res.data.feed_configList;
+ // getApp().globalData.isDevelopment = res.data.baseInfo.isDevelopment.value
+ // Vue.prototype.$dev_url = res.data.baseInfo.dev.value;
+ // console.log("网络",res.data.baseInfo.request_url.value)
+ // console.log("开发环境12",res.data.baseInfo.isDevelopment.value)
+ // uni.setStorageSync("request_url",res.data.baseInfo.request_url.value)
+ // uni.setStorageSync("isDevelopment",res.data.baseInfo.isDevelopment.value)
+ }
+ },
+ fail: (error) => {
+
+ }
+ })
+
+ return {
+ startApp
+ };
+}
diff --git a/src/manifest.json b/src/manifest.json
new file mode 100644
index 0000000..949117c
--- /dev/null
+++ b/src/manifest.json
@@ -0,0 +1,85 @@
+{
+ "name" : "wms",
+ "appid" : "__UNI__43932FE",
+ "description" : "",
+ "versionName" : "1.0.0",
+ "versionCode" : 1,
+ "transformPx" : false,
+ /* 5+App特有相关 */
+ "app-plus" : {
+ "usingComponents" : true,
+ "nvueStyleCompiler" : "uni-app",
+ "compilerVersion" : 3,
+ "compatible" : {
+ "ignoreVersion" : true //true表示忽略版本检查提示框,HBuilderX1.9.0及以上版本支持
+ },
+ "splashscreen" : {
+ "alwaysShowBeforeRender" : true,
+ "waiting" : true,
+ "autoclose" : true,
+ "delay" : 0
+ },
+ /* 模块配置 */
+ "modules" : {
+ "Bluetooth" : {},
+ "Barcode" : {},
+ "Camera" : {}
+ },
+ /* 应用发布信息 */
+ "distribute" : {
+ /* android打包配置 */
+ "android" : {
+ "permissions" : [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ],
+ "minSdkVersion" : 23
+ },
+ /* ios打包配置 */
+ "ios" : {
+ "dSYMs" : false
+ },
+ /* SDK配置 */
+ "sdkConfigs" : {
+ "ad" : {}
+ }
+ }
+ },
+ /* 快应用特有相关 */
+ "quickapp" : {},
+ /* 小程序特有相关 */
+ "mp-weixin" : {
+ "appid" : "",
+ "setting" : {
+ "urlCheck" : false
+ },
+ "usingComponents" : true
+ },
+ "mp-alipay" : {
+ "usingComponents" : true
+ },
+ "mp-baidu" : {
+ "usingComponents" : true
+ },
+ "mp-toutiao" : {
+ "usingComponents" : true
+ },
+ "uniStatistics" : {
+ "enable" : false
+ },
+ "vueVersion" : "3"
+}
diff --git a/src/mycomponents/balance/balance.vue b/src/mycomponents/balance/balance.vue
new file mode 100644
index 0000000..d6f8c46
--- /dev/null
+++ b/src/mycomponents/balance/balance.vue
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 复制采购
+ |制品
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/balance/balanceDetailPopup.vue b/src/mycomponents/balance/balanceDetailPopup.vue
new file mode 100644
index 0000000..62c0be1
--- /dev/null
+++ b/src/mycomponents/balance/balanceDetailPopup.vue
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/mycomponents/balance/balanceLabel.vue b/src/mycomponents/balance/balanceLabel.vue
new file mode 100644
index 0000000..1b20c0f
--- /dev/null
+++ b/src/mycomponents/balance/balanceLabel.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/balance/balanceMove.vue b/src/mycomponents/balance/balanceMove.vue
new file mode 100644
index 0000000..c906afe
--- /dev/null
+++ b/src/mycomponents/balance/balanceMove.vue
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/balance/balanceSelect.vue b/src/mycomponents/balance/balanceSelect.vue
new file mode 100644
index 0000000..0b63c99
--- /dev/null
+++ b/src/mycomponents/balance/balanceSelect.vue
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/balance/batch.vue b/src/mycomponents/balance/batch.vue
new file mode 100644
index 0000000..1fda071
--- /dev/null
+++ b/src/mycomponents/balance/batch.vue
@@ -0,0 +1,24 @@
+
+
+ 批次
+ {{batch}}
+
+
+
+
+
+
diff --git a/src/mycomponents/balance/bussinessType.vue b/src/mycomponents/balance/bussinessType.vue
new file mode 100644
index 0000000..82029e3
--- /dev/null
+++ b/src/mycomponents/balance/bussinessType.vue
@@ -0,0 +1,37 @@
+
+
+ {{businessTypeDesc(bussinessType)}}
+ {{number}}
+
+
+
+
+
+
diff --git a/src/mycomponents/balance/handleBalance.vue b/src/mycomponents/balance/handleBalance.vue
new file mode 100644
index 0000000..1707d4a
--- /dev/null
+++ b/src/mycomponents/balance/handleBalance.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/balance/location.vue b/src/mycomponents/balance/location.vue
new file mode 100644
index 0000000..d5956aa
--- /dev/null
+++ b/src/mycomponents/balance/location.vue
@@ -0,0 +1,31 @@
+
+
+ {{title}}
+ {{locationCode}}
+
+
+
+
+
+
diff --git a/src/mycomponents/balance/moveStatus.vue b/src/mycomponents/balance/moveStatus.vue
new file mode 100644
index 0000000..b65f39d
--- /dev/null
+++ b/src/mycomponents/balance/moveStatus.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
+ —>
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/balance/pack.vue b/src/mycomponents/balance/pack.vue
new file mode 100644
index 0000000..f34c1ec
--- /dev/null
+++ b/src/mycomponents/balance/pack.vue
@@ -0,0 +1,34 @@
+
+
+ 包装
+ {{packingCode}}
+
+
+
+
+
+
diff --git a/src/mycomponents/balance/productionLabel.vue b/src/mycomponents/balance/productionLabel.vue
new file mode 100644
index 0000000..4f3824a
--- /dev/null
+++ b/src/mycomponents/balance/productionLabel.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/balance/purchaseLabel.vue b/src/mycomponents/balance/purchaseLabel.vue
new file mode 100644
index 0000000..92c9736
--- /dev/null
+++ b/src/mycomponents/balance/purchaseLabel.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/balance/recommendBalance.vue b/src/mycomponents/balance/recommendBalance.vue
new file mode 100644
index 0000000..1acfad8
--- /dev/null
+++ b/src/mycomponents/balance/recommendBalance.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+ 推荐
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/balance/toLocation.vue b/src/mycomponents/balance/toLocation.vue
new file mode 100644
index 0000000..d44ba99
--- /dev/null
+++ b/src/mycomponents/balance/toLocation.vue
@@ -0,0 +1,31 @@
+
+
+ {{title}}
+ {{locationCode}}
+
+
+
+
+
+
diff --git a/src/mycomponents/batch/batch.vue b/src/mycomponents/batch/batch.vue
new file mode 100644
index 0000000..d251eac
--- /dev/null
+++ b/src/mycomponents/batch/batch.vue
@@ -0,0 +1,25 @@
+
+
+ 批次
+  {{batch}}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/mycomponents/button/requestButton.vue b/src/mycomponents/button/requestButton.vue
new file mode 100644
index 0000000..8db55a8
--- /dev/null
+++ b/src/mycomponents/button/requestButton.vue
@@ -0,0 +1,57 @@
+
+
+
+
+ {{btnName}}
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/common/comBlankView.vue b/src/mycomponents/common/comBlankView.vue
new file mode 100644
index 0000000..96a64f6
--- /dev/null
+++ b/src/mycomponents/common/comBlankView.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/common/comEmptyView.vue b/src/mycomponents/common/comEmptyView.vue
new file mode 100644
index 0000000..c8b41ab
--- /dev/null
+++ b/src/mycomponents/common/comEmptyView.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/common/comListHint.vue b/src/mycomponents/common/comListHint.vue
new file mode 100644
index 0000000..7808084
--- /dev/null
+++ b/src/mycomponents/common/comListHint.vue
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+ 编号:{{number}}
+
+
+
+
+ {{itemCode}}
+
+
+ {{itemDesc}}
+
+
+
+
+
+
+ 执行中
+
+
+ 待执行
+
+
+
+
+
+
+
+
+ {{item.title}} :
+ {{item.content}}
+
+
+
+
+
+
+ {{getContent("worker")}}
+
+
+
+ {{formatDate(getContent("date"))}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/common/comListItem.vue b/src/mycomponents/common/comListItem.vue
new file mode 100644
index 0000000..6d7794f
--- /dev/null
+++ b/src/mycomponents/common/comListItem.vue
@@ -0,0 +1,108 @@
+
+
+
+
+ {{item.title}} :
+ {{item.content}}
+ {{formatDate(item.content)}}
+ {{boolean(item.content)}}
+ {{getTransferModeName(item.content)}}
+ {{getLocationTypeNameList(getDirectoryItemArray(item.content))}}
+ {{getUomInfo(item.content)}}
+ {{getInspectType(item.content)}}
+ {{getSampleMethod(item.content)}}
+ {{getRequestStateInfo(item.content)}}
+ {{getInventoryStatusName(item.content)}}
+ {{getLocationTypeName(item.content)}}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/common/comMessage.vue b/src/mycomponents/common/comMessage.vue
new file mode 100644
index 0000000..9b560ca
--- /dev/null
+++ b/src/mycomponents/common/comMessage.vue
@@ -0,0 +1,479 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ cancelText }}
+
+
+
+ {{confirmText}}
+ ({{seconds}}s关闭)
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/common/comPopup.vue b/src/mycomponents/common/comPopup.vue
new file mode 100644
index 0000000..d0b37dc
--- /dev/null
+++ b/src/mycomponents/common/comPopup.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/common/comUploadCamera.vue b/src/mycomponents/common/comUploadCamera.vue
new file mode 100644
index 0000000..b1f0857
--- /dev/null
+++ b/src/mycomponents/common/comUploadCamera.vue
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/container/container.vue b/src/mycomponents/container/container.vue
new file mode 100644
index 0000000..cf510da
--- /dev/null
+++ b/src/mycomponents/container/container.vue
@@ -0,0 +1,24 @@
+
+
+ 托码
+ {{container}}
+
+
+
+
+
+
diff --git a/src/mycomponents/container/containerInfo.vue b/src/mycomponents/container/containerInfo.vue
new file mode 100644
index 0000000..36ef39f
--- /dev/null
+++ b/src/mycomponents/container/containerInfo.vue
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+ {{ itemDetail.number }}
+
+
+ 总容量 : {{ itemDetail.capacity }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/container/containerStatus.vue b/src/mycomponents/container/containerStatus.vue
new file mode 100644
index 0000000..c3fe658
--- /dev/null
+++ b/src/mycomponents/container/containerStatus.vue
@@ -0,0 +1,47 @@
+
+
+ {{statusDesc(status)}}
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/container/targetContainer.vue b/src/mycomponents/container/targetContainer.vue
new file mode 100644
index 0000000..e8e0ac2
--- /dev/null
+++ b/src/mycomponents/container/targetContainer.vue
@@ -0,0 +1,68 @@
+
+
+ {{title}}
+
+   请扫描
+   {{containerCode}}
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/detail/comDetailCard.vue b/src/mycomponents/detail/comDetailCard.vue
new file mode 100644
index 0000000..708a35d
--- /dev/null
+++ b/src/mycomponents/detail/comDetailCard.vue
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/detail/comJobDetailCard.vue b/src/mycomponents/detail/comJobDetailCard.vue
new file mode 100644
index 0000000..7f1d111
--- /dev/null
+++ b/src/mycomponents/detail/comJobDetailCard.vue
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/mycomponents/detail/comRequestDetailCard.vue b/src/mycomponents/detail/comRequestDetailCard.vue
new file mode 100644
index 0000000..e687afa
--- /dev/null
+++ b/src/mycomponents/detail/comRequestDetailCard.vue
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/detail/detailBalanceInfo.vue b/src/mycomponents/detail/detailBalanceInfo.vue
new file mode 100644
index 0000000..43cfb89
--- /dev/null
+++ b/src/mycomponents/detail/detailBalanceInfo.vue
@@ -0,0 +1,67 @@
+
+
+
+
+ 箱码 :
+ {{dataContent.packingNumber}}
+
+
+ 批次 :
+ {{dataContent.batch}}
+
+
+ 数量 :
+
+ {{Number(dataContent.qty)}}
+ {{getUomInfo(dataContent.uom)}}
+
+
+
+ 库存状态 :
+ {{getInventoryStatusInfo(dataContent.inventoryStatus)}}
+
+
+ 来源库位 :
+ {{dataContent.fromLocationCode}}
+
+
+
+
+
+
+
diff --git a/src/mycomponents/detail/detailCommonInfo.vue b/src/mycomponents/detail/detailCommonInfo.vue
new file mode 100644
index 0000000..9705aa5
--- /dev/null
+++ b/src/mycomponents/detail/detailCommonInfo.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 关闭
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/detail/detailHandleInfo.vue b/src/mycomponents/detail/detailHandleInfo.vue
new file mode 100644
index 0000000..aa0597d
--- /dev/null
+++ b/src/mycomponents/detail/detailHandleInfo.vue
@@ -0,0 +1,63 @@
+
+
+
+
+ 扫描箱码 :
+ {{dataContent.record.packingNumber}}
+
+
+ 扫描批次 :
+ {{dataContent.record.batch}}
+
+
+ 扫描数量 :
+
+ {{Number(dataContent.record.qty)}}
+ {{dataContent.record.uom}}
+
+
+
+ 扫描状态 :
+ {{getInventoryStatusInfo(dataContent.record.inventoryStatus)}}
+
+
+ 目标库位 :
+ {{dataContent.record.locationCode}}
+
+
+
+
+
+
+
diff --git a/src/mycomponents/detail/detailItemInfo.vue b/src/mycomponents/detail/detailItemInfo.vue
new file mode 100644
index 0000000..b1d54b8
--- /dev/null
+++ b/src/mycomponents/detail/detailItemInfo.vue
@@ -0,0 +1,46 @@
+
+
+
+ 物品描述1 :
+ {{dataContent.itemDesc1}}
+
+
+ 物品描述2 :
+ {{dataContent.itemDesc2}}
+
+
+ 数量 :
+ {{dataContent.qty}}{{getUomInfo(dataContent.uom)}}
+
+
+
+
+
+
+
diff --git a/src/mycomponents/detail/detailList.vue b/src/mycomponents/detail/detailList.vue
new file mode 100644
index 0000000..b14fe54
--- /dev/null
+++ b/src/mycomponents/detail/detailList.vue
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/mycomponents/detail/detailPackageInfo.vue b/src/mycomponents/detail/detailPackageInfo.vue
new file mode 100644
index 0000000..8a45c8d
--- /dev/null
+++ b/src/mycomponents/detail/detailPackageInfo.vue
@@ -0,0 +1,65 @@
+
+
+
+ 供应商代码 :
+ {{dataContent.supplierCode}}
+
+
+ 采购订单 :
+ {{dataContent.asnNumber}}
+
+
+ 订单行 :
+ {{dataContent.poNumber}}
+
+
+ 订单行 :
+
+ {{dataContent.poLine}}
+
+
+
+ 标包 :
+
+ {{dataContent.packQty}}{{dataContent.packUnit}}
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/detail/detailRecommendInfo.vue b/src/mycomponents/detail/detailRecommendInfo.vue
new file mode 100644
index 0000000..729d5fb
--- /dev/null
+++ b/src/mycomponents/detail/detailRecommendInfo.vue
@@ -0,0 +1,71 @@
+
+
+
+
+ 明细箱码 :
+ {{dataContent.packingNumber}}
+
+
+ 明细批次 :
+ {{dataContent.batch}}
+
+
+ 明细数量 :
+
+ {{Number(dataContent.qty)}}
+ {{getUomInfo(dataContent.uom)}}
+
+
+
+ 明细状态 :
+ {{getInventoryStatusInfo(dataContent.inventoryStatus)}}
+
+
+ 来源库位 :
+ {{dataContent.fromLocationCode}}
+
+
+ 目标库位 :
+ {{dataContent.toLocationCode}}
+
+
+
+
+
+
+
diff --git a/src/mycomponents/detail/jobDetailPopup.vue b/src/mycomponents/detail/jobDetailPopup.vue
new file mode 100644
index 0000000..2e65f35
--- /dev/null
+++ b/src/mycomponents/detail/jobDetailPopup.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/detail/recordDetailBasicInfo.vue b/src/mycomponents/detail/recordDetailBasicInfo.vue
new file mode 100644
index 0000000..0b63bbe
--- /dev/null
+++ b/src/mycomponents/detail/recordDetailBasicInfo.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/detail/recordDetailCommonInfo.vue b/src/mycomponents/detail/recordDetailCommonInfo.vue
new file mode 100644
index 0000000..ef7a547
--- /dev/null
+++ b/src/mycomponents/detail/recordDetailCommonInfo.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 关闭
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/detail/recordDetailPopup.vue b/src/mycomponents/detail/recordDetailPopup.vue
new file mode 100644
index 0000000..a92991f
--- /dev/null
+++ b/src/mycomponents/detail/recordDetailPopup.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/detail/requestDetailBasicInfo.vue b/src/mycomponents/detail/requestDetailBasicInfo.vue
new file mode 100644
index 0000000..e78caa4
--- /dev/null
+++ b/src/mycomponents/detail/requestDetailBasicInfo.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/detail/requestDetailCommonInfo.vue b/src/mycomponents/detail/requestDetailCommonInfo.vue
new file mode 100644
index 0000000..3fa9226
--- /dev/null
+++ b/src/mycomponents/detail/requestDetailCommonInfo.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 关闭
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/form/customerFrom.vue b/src/mycomponents/form/customerFrom.vue
new file mode 100644
index 0000000..7f04e98
--- /dev/null
+++ b/src/mycomponents/form/customerFrom.vue
@@ -0,0 +1,214 @@
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+
+
+
+ 点检部位 : {{ item.position }}
+
+
+ 点检内容 : {{ item.content }}
+
+
+
+
+ 点检方法 : {{item.methond}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+
+
+
+ {{ item.content }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/mycomponents/form/selectPopup.vue b/src/mycomponents/form/selectPopup.vue
new file mode 100644
index 0000000..72cb9bf
--- /dev/null
+++ b/src/mycomponents/form/selectPopup.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+ {{title}}
+
+
+
+
+
+
+ {{index+1}} . {{item.name}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/mycomponents/item/item.vue b/src/mycomponents/item/item.vue
new file mode 100644
index 0000000..abcceaa
--- /dev/null
+++ b/src/mycomponents/item/item.vue
@@ -0,0 +1,48 @@
+
+
+
+
+
+ {{dataContent.itemCode}}
+
+
+ {{dataContent.itemName}}
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/item/itemCompareQty.vue b/src/mycomponents/item/itemCompareQty.vue
new file mode 100644
index 0000000..6d46301
--- /dev/null
+++ b/src/mycomponents/item/itemCompareQty.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/item/itemDetailInfo.vue b/src/mycomponents/item/itemDetailInfo.vue
new file mode 100644
index 0000000..6649a07
--- /dev/null
+++ b/src/mycomponents/item/itemDetailInfo.vue
@@ -0,0 +1,74 @@
+
+
+
+
+ 物料号
+ {{dataContent.code}}
+
+
+ 物料名称
+ {{dataContent.name}}
+
+
+ 描述1
+ {{dataContent.desc1}}
+
+
+ 描述2
+ {{dataContent.desc2}}
+
+
+ 状态
+ {{dataContent.status}}
+
+
+ 类型
+ {{dataContent.type}}
+
+
+ 制造件
+ {{dataContent.canMake}}
+
+
+
+ 采购件
+ {{dataContent.canBuy}}
+
+
+ 外包件
+ {{dataContent.canOutsourcing}}
+
+
+ 回收件
+ {{dataContent.isRecycled}}
+
+
+ ABC类
+ {{dataContent.abcClass}}
+
+
+
+
+
+
+
diff --git a/src/mycomponents/item/itemInfo.vue b/src/mycomponents/item/itemInfo.vue
new file mode 100644
index 0000000..f40e16c
--- /dev/null
+++ b/src/mycomponents/item/itemInfo.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+ {{ itemdetail.code }}
+
+
+ {{ itemdetail.name }}
+
+
+ {{ itemdetail.desc1 }}
+ {{ itemdetail.desc2 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/item/itemInfoPopup.vue b/src/mycomponents/item/itemInfoPopup.vue
new file mode 100644
index 0000000..9ce3580
--- /dev/null
+++ b/src/mycomponents/item/itemInfoPopup.vue
@@ -0,0 +1,159 @@
+
+
+
+
+
+
+ 编号:{{number}}
+
+
+
+
+ {{itemCode}}
+
+
+ {{itemDesc}}
+
+
+
+
+
+
+ 执行中
+
+
+ 待执行
+
+
+
+
+
+
+
+
+ {{item.title}} :
+ {{item.content}}
+
+
+
+
+
+
+ {{getContent("worker")}}
+
+
+
+ {{formatDate(getContent("date"))}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/item/itemQty.vue b/src/mycomponents/item/itemQty.vue
new file mode 100644
index 0000000..ed98009
--- /dev/null
+++ b/src/mycomponents/item/itemQty.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/item/itemRecommendQty.vue b/src/mycomponents/item/itemRecommendQty.vue
new file mode 100644
index 0000000..92574af
--- /dev/null
+++ b/src/mycomponents/item/itemRecommendQty.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/item/itemSelect.vue b/src/mycomponents/item/itemSelect.vue
new file mode 100644
index 0000000..6a059ff
--- /dev/null
+++ b/src/mycomponents/item/itemSelect.vue
@@ -0,0 +1,62 @@
+
+
+
+ 物料
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/item/itemStatus.vue b/src/mycomponents/item/itemStatus.vue
new file mode 100644
index 0000000..b7f1c7e
--- /dev/null
+++ b/src/mycomponents/item/itemStatus.vue
@@ -0,0 +1,47 @@
+
+
+ {{statusDesc(status)}}
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/job/jobBottom.vue b/src/mycomponents/job/jobBottom.vue
new file mode 100644
index 0000000..46e9ad6
--- /dev/null
+++ b/src/mycomponents/job/jobBottom.vue
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ {{dataContent.creator}}
+
+
+
+ {{formatDate(dataContent.createTime)}}
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/job/jobCard.vue b/src/mycomponents/job/jobCard.vue
new file mode 100644
index 0000000..0b10b5c
--- /dev/null
+++ b/src/mycomponents/job/jobCard.vue
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/job/jobComMainCard.vue b/src/mycomponents/job/jobComMainCard.vue
new file mode 100644
index 0000000..3025201
--- /dev/null
+++ b/src/mycomponents/job/jobComMainCard.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/job/jobComMainCardAsn.vue b/src/mycomponents/job/jobComMainCardAsn.vue
new file mode 100644
index 0000000..3011c11
--- /dev/null
+++ b/src/mycomponents/job/jobComMainCardAsn.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/job/jobCommonInfo.vue b/src/mycomponents/job/jobCommonInfo.vue
new file mode 100644
index 0000000..28afb77
--- /dev/null
+++ b/src/mycomponents/job/jobCommonInfo.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 关闭
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/job/jobDetailPopup.vue b/src/mycomponents/job/jobDetailPopup.vue
new file mode 100644
index 0000000..fa69104
--- /dev/null
+++ b/src/mycomponents/job/jobDetailPopup.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/job/jobFilter.vue b/src/mycomponents/job/jobFilter.vue
new file mode 100644
index 0000000..a209c2a
--- /dev/null
+++ b/src/mycomponents/job/jobFilter.vue
@@ -0,0 +1,155 @@
+
+
+
+
+
+
+ 只看当天
+
+
+
+
+
+
+
+ 只看待处理
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/job/jobInfoPopup.vue b/src/mycomponents/job/jobInfoPopup.vue
new file mode 100644
index 0000000..92f04d7
--- /dev/null
+++ b/src/mycomponents/job/jobInfoPopup.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/job/jobNumber.vue b/src/mycomponents/job/jobNumber.vue
new file mode 100644
index 0000000..94a3849
--- /dev/null
+++ b/src/mycomponents/job/jobNumber.vue
@@ -0,0 +1,36 @@
+
+
+
+ {{number}}
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/job/jobPersonInfo.vue b/src/mycomponents/job/jobPersonInfo.vue
new file mode 100644
index 0000000..fa28ee1
--- /dev/null
+++ b/src/mycomponents/job/jobPersonInfo.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+ 承接人 :
+ {{dataContent.acceptUserName}}
+
+
+ 承接时间 :
+ {{dateFormat(dataContent.acceptTime)}}
+
+
+ 创建人 :
+ {{dataContent.creator}}
+
+
+ 创建时间 :
+ {{dateFormat(dataContent.createTime)}}
+
+
+ 完成人 :
+ {{dataContent.completeUserName}}
+
+
+ 完成时间 :
+ {{dateFormat(dataContent.completeTime)}}
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/job/jobProperty.vue b/src/mycomponents/job/jobProperty.vue
new file mode 100644
index 0000000..f231f5e
--- /dev/null
+++ b/src/mycomponents/job/jobProperty.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
+ {{item.name}} : {{item.value}}
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/job/jobRequestInfo.vue b/src/mycomponents/job/jobRequestInfo.vue
new file mode 100644
index 0000000..31cb230
--- /dev/null
+++ b/src/mycomponents/job/jobRequestInfo.vue
@@ -0,0 +1,96 @@
+
+
+
+
+
+ 申请单号 :
+ {{dataContent.requestNumber}}
+
+
+ 申请时间 :
+ {{dateFormat(dataContent.requestTime)}}
+
+
+ 要求截至时间 :
+ {{dateFormat(dataContent.requestDueTime)}}
+
+
+ 从仓库代码 :
+ {{dataContent.fromWarehouseCode}}
+
+
+ 到仓库代码 :
+ {{dataContent.toWarehouseCode}}
+
+
+ 出库库存状态范围 :
+ {{getInventoryStatusDesc(getDirectoryItemArray(dataContent.outInventoryStatuses))}}
+
+
+ 入库库存状态范围 :
+ {{getInventoryStatusDesc(getDirectoryItemArray(dataContent.inInventoryStatuses))}}
+
+
+ 从库位类型范围 :
+ {{getLocationTypeNameList(getDirectoryItemArray(dataContent.fromLocationTypes))}}
+
+
+ 到库位类型范围 :
+ {{getLocationTypeNameList(getDirectoryItemArray(dataContent.toLocationTypes))}}
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/job/jobSettingInfo.vue b/src/mycomponents/job/jobSettingInfo.vue
new file mode 100644
index 0000000..db1ab47
--- /dev/null
+++ b/src/mycomponents/job/jobSettingInfo.vue
@@ -0,0 +1,77 @@
+
+
+
+
+
+ 允许修改库位 :
+ {{ converter( dataContent.allowModifyLocation)}}
+
+
+
+ 允许修改数量 :
+ {{converter(dataContent.allowModifyQty)}}
+
+
+ 允许大于推荐数量 :
+ {{converter(dataContent.allowBiggerQty)}}
+
+
+ 允许小于推荐数量 :
+ {{converter(dataContent.allowSmallerQty)}}
+
+
+ 允许修改库存状态 :
+ {{converter(dataContent.allowModifyInventoryStatus)}}
+
+
+ 允许修改箱码 :
+ {{converter(dataContent.allowModifyPackingNumber)}}
+
+
+ 允许修改批次 :
+ {{converter(dataContent.allowModifyBach)}}
+
+
+ 允许部分完成 :
+ {{converter(dataContent.allowPartialComplete)}}
+
+
+ 允许连续扫描 :
+ {{converter(dataContent.allowContinuousScanning)}}
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/job/jobStatus.vue b/src/mycomponents/job/jobStatus.vue
new file mode 100644
index 0000000..26ea46a
--- /dev/null
+++ b/src/mycomponents/job/jobStatus.vue
@@ -0,0 +1,45 @@
+
+
+
+ {{ jobStatusInfo.label}}
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/job/jobTop.vue b/src/mycomponents/job/jobTop.vue
new file mode 100644
index 0000000..7aab393
--- /dev/null
+++ b/src/mycomponents/job/jobTop.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/job/jobTopAsn.vue b/src/mycomponents/job/jobTopAsn.vue
new file mode 100644
index 0000000..ad061ee
--- /dev/null
+++ b/src/mycomponents/job/jobTopAsn.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/job/jobcomDetailCard.vue b/src/mycomponents/job/jobcomDetailCard.vue
new file mode 100644
index 0000000..77fc6fe
--- /dev/null
+++ b/src/mycomponents/job/jobcomDetailCard.vue
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/label/label.vue b/src/mycomponents/label/label.vue
new file mode 100644
index 0000000..438ad69
--- /dev/null
+++ b/src/mycomponents/label/label.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/location/location.vue b/src/mycomponents/location/location.vue
new file mode 100644
index 0000000..b2286bf
--- /dev/null
+++ b/src/mycomponents/location/location.vue
@@ -0,0 +1,55 @@
+
+
+
+
+ 库位
+ {{locationCode}}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/mycomponents/location/locationCompare.vue b/src/mycomponents/location/locationCompare.vue
new file mode 100644
index 0000000..00d3428
--- /dev/null
+++ b/src/mycomponents/location/locationCompare.vue
@@ -0,0 +1,84 @@
+
+
+
+
+ {{title}}
+
+   {{recommendLocationCode}}
+  / {{locationCode}}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/location/locationDetail.vue b/src/mycomponents/location/locationDetail.vue
new file mode 100644
index 0000000..c6fd752
--- /dev/null
+++ b/src/mycomponents/location/locationDetail.vue
@@ -0,0 +1,47 @@
+
+
+
+
+ 仓库
+ {{dataContent.warehouseCode}}
+
+
+ 库区
+ {{dataContent.areaCode }}
+
+
+ 库位组
+ {{ dataContent.locationGroupCode }}
+
+
+ ERP储位
+ {{ dataContent.erpLocationCode }}
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/location/locationDrop.vue b/src/mycomponents/location/locationDrop.vue
new file mode 100644
index 0000000..6862f92
--- /dev/null
+++ b/src/mycomponents/location/locationDrop.vue
@@ -0,0 +1,58 @@
+
+
+
+ 库位
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/mycomponents/location/locationInfo.vue b/src/mycomponents/location/locationInfo.vue
new file mode 100644
index 0000000..6a63f0a
--- /dev/null
+++ b/src/mycomponents/location/locationInfo.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+ {{locationDetail.code}}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/location/locationStatus.vue b/src/mycomponents/location/locationStatus.vue
new file mode 100644
index 0000000..cf26117
--- /dev/null
+++ b/src/mycomponents/location/locationStatus.vue
@@ -0,0 +1,46 @@
+
+
+ {{statusDesc(type)}}
+
+
+
+
+
+
diff --git a/src/mycomponents/location/requiredLocation.vue b/src/mycomponents/location/requiredLocation.vue
new file mode 100644
index 0000000..aac2b2d
--- /dev/null
+++ b/src/mycomponents/location/requiredLocation.vue
@@ -0,0 +1,79 @@
+
+
+
+
+ {{title}}
+
+   请扫描
+   {{locationCode}}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/package/packageBalance.vue b/src/mycomponents/package/packageBalance.vue
new file mode 100644
index 0000000..8fab758
--- /dev/null
+++ b/src/mycomponents/package/packageBalance.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+ 原始
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/package/packageCard.vue b/src/mycomponents/package/packageCard.vue
new file mode 100644
index 0000000..f56df99
--- /dev/null
+++ b/src/mycomponents/package/packageCard.vue
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 复制
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/mycomponents/package/packageDetailPopup.vue b/src/mycomponents/package/packageDetailPopup.vue
new file mode 100644
index 0000000..0c62362
--- /dev/null
+++ b/src/mycomponents/package/packageDetailPopup.vue
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+
+
+ {{item.item_title}}
+ {{item.content}}
+ {{formatDate(item.content)}}
+
+
+
+
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/package/packageHandle.vue b/src/mycomponents/package/packageHandle.vue
new file mode 100644
index 0000000..ecb4274
--- /dev/null
+++ b/src/mycomponents/package/packageHandle.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+ 实际
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/package/packageList.vue b/src/mycomponents/package/packageList.vue
new file mode 100644
index 0000000..1f7d040
--- /dev/null
+++ b/src/mycomponents/package/packageList.vue
@@ -0,0 +1,215 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/mycomponents/package/packageRecordCard.vue b/src/mycomponents/package/packageRecordCard.vue
new file mode 100644
index 0000000..cd166b2
--- /dev/null
+++ b/src/mycomponents/package/packageRecordCard.vue
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 复制
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/mycomponents/package/packageRecordList.vue b/src/mycomponents/package/packageRecordList.vue
new file mode 100644
index 0000000..1ecdac3
--- /dev/null
+++ b/src/mycomponents/package/packageRecordList.vue
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/mycomponents/package/packageTarget.vue b/src/mycomponents/package/packageTarget.vue
new file mode 100644
index 0000000..a1af74a
--- /dev/null
+++ b/src/mycomponents/package/packageTarget.vue
@@ -0,0 +1,57 @@
+
+
+ {{title}}
+
+   请扫描
+   {{packingNumber}}
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/partCode/partCode.vue b/src/mycomponents/partCode/partCode.vue
new file mode 100644
index 0000000..da58578
--- /dev/null
+++ b/src/mycomponents/partCode/partCode.vue
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
+ {{itemCode}}
+
+
+ {{itemName}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/partCode/partCodeSelect.vue b/src/mycomponents/partCode/partCodeSelect.vue
new file mode 100644
index 0000000..6a059ff
--- /dev/null
+++ b/src/mycomponents/partCode/partCodeSelect.vue
@@ -0,0 +1,62 @@
+
+
+
+ 物料
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/popup/selectList.vue b/src/mycomponents/popup/selectList.vue
new file mode 100644
index 0000000..a7e9553
--- /dev/null
+++ b/src/mycomponents/popup/selectList.vue
@@ -0,0 +1,116 @@
+
+
+
+
+
+ 选择物料
+
+
+
+
+
+ ({{index+1}}) 物料: {{item.itemCode}}
+
+
+
+
+
+
+
+ 当前页:{{ pageCurrent }},数据总量:{{ total }}条,每页数据:{{ pageSize }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/production/productionInfo.vue b/src/mycomponents/production/productionInfo.vue
new file mode 100644
index 0000000..e54bbaa
--- /dev/null
+++ b/src/mycomponents/production/productionInfo.vue
@@ -0,0 +1,39 @@
+
+
+ 生产线
+ {{dataContent.productionLineCode}}
+
+
+ 生产日期
+ {{dataContent.produceDate}}
+
+
+
+
+
+
diff --git a/src/mycomponents/purchase/purchaseInfo.vue b/src/mycomponents/purchase/purchaseInfo.vue
new file mode 100644
index 0000000..b831c77
--- /dev/null
+++ b/src/mycomponents/purchase/purchaseInfo.vue
@@ -0,0 +1,37 @@
+
+
+ 供应商
+ {{dataContent.SupplierName}}
+
+
+ 采购订单
+ {{dataContent.PoNumber}}
+
+
+
+
+
+
diff --git a/src/mycomponents/qty/balanceQty.vue b/src/mycomponents/qty/balanceQty.vue
new file mode 100644
index 0000000..11fa2ed
--- /dev/null
+++ b/src/mycomponents/qty/balanceQty.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+ {{Number(dataContent.qty)}}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/qty/balanceQtyEdit.vue b/src/mycomponents/qty/balanceQtyEdit.vue
new file mode 100644
index 0000000..4651d59
--- /dev/null
+++ b/src/mycomponents/qty/balanceQtyEdit.vue
@@ -0,0 +1,215 @@
+
+
+
+
+
+
+
+ {{title}}
+
+
+
+
+
+
+
+ 标包个数 :
+
+
+
+
+
+
+
+
+
+ 标包量 :
+
+ {{Number(dataContent.packQty)}}
+
+
+
+
+
+
+ 数量 :
+
+
+
+
+
+
+
+ 库存数量 :
+
+ {{Number(dataContent.balanceQty)}}
+
+
+
+
+
+ 库存状态 :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/qty/compareQty.vue b/src/mycomponents/qty/compareQty.vue
new file mode 100644
index 0000000..2f84458
--- /dev/null
+++ b/src/mycomponents/qty/compareQty.vue
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+ {{Number(handleQty)}}
+
+
+ {{Number(handleQty)}}
+
+
+ {{Number(handleQty)}}
+
+
+
+
+ {{Number(handleQty)}}
+
+
+
+
+ /
+
+ {{Number(recommendQty)}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/qty/countQtyEdit.vue b/src/mycomponents/qty/countQtyEdit.vue
new file mode 100644
index 0000000..dc42195
--- /dev/null
+++ b/src/mycomponents/qty/countQtyEdit.vue
@@ -0,0 +1,269 @@
+
+
+
+
+
+
+
+ {{title}}
+
+
+
+
+
+
+
+ 标包个数 :
+
+
+
+
+ {{getPackUnitInfo(dataContent.packUnit)}}
+
+
+
+
+
+
+ 标包量 :
+
+ {{Number(dataContent.packQty)}}
+
+
+
+
+
+
+ 数量 :
+
+
+
+
+
+
+
+ 库存数量 :
+
+ {{Number(dataContent.balanceQty)}}
+
+
+
+
+
+ 库存状态 :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/qty/inspectQtyEdit.vue b/src/mycomponents/qty/inspectQtyEdit.vue
new file mode 100644
index 0000000..0ce8e19
--- /dev/null
+++ b/src/mycomponents/qty/inspectQtyEdit.vue
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
+ {{title}}
+
+
+
+
+
+
+
+
+ 数量 :
+
+
+
+
+
+
+
+ 不合格数量 :
+
+
+
+
+
+
+
+
+ 不合格原因 :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/qty/packQty.vue b/src/mycomponents/qty/packQty.vue
new file mode 100644
index 0000000..d889322
--- /dev/null
+++ b/src/mycomponents/qty/packQty.vue
@@ -0,0 +1,36 @@
+
+
+
+ {{Number(dataContent.packQty)}}•{{getPackUnit(dataContent.packUnit)}}
+
+
+
+
+
+
+
diff --git a/src/mycomponents/qty/packUnit.vue b/src/mycomponents/qty/packUnit.vue
new file mode 100644
index 0000000..de9e930
--- /dev/null
+++ b/src/mycomponents/qty/packUnit.vue
@@ -0,0 +1,47 @@
+
+
+
+ {{Number(dataContent.packQty)}}{{getUomInfo(dataContent.uom)}}/{{getPackUnitName(dataContent.packUnit)}}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/mycomponents/qty/qty.vue b/src/mycomponents/qty/qty.vue
new file mode 100644
index 0000000..06a4a5f
--- /dev/null
+++ b/src/mycomponents/qty/qty.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+ {{Number(dataContent.qty)}}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/qty/recommendQty.vue b/src/mycomponents/qty/recommendQty.vue
new file mode 100644
index 0000000..75c952c
--- /dev/null
+++ b/src/mycomponents/qty/recommendQty.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+ {{Number(dataContent.qty)}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/qty/recommendQtyEdit.vue b/src/mycomponents/qty/recommendQtyEdit.vue
new file mode 100644
index 0000000..3830001
--- /dev/null
+++ b/src/mycomponents/qty/recommendQtyEdit.vue
@@ -0,0 +1,236 @@
+
+
+
+
+
+
+
+ {{title}}
+
+
+
+
+
+
+
+ 包装个数 :
+
+
+
+ {{getPackUnitName(dataContent.packUnit)}}
+
+
+
+
+
+ 包装规格 :
+
+
+
+
+
+
+
+
+ 总数量 :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/qty/stdUom.vue b/src/mycomponents/qty/stdUom.vue
new file mode 100644
index 0000000..7a495d0
--- /dev/null
+++ b/src/mycomponents/qty/stdUom.vue
@@ -0,0 +1,40 @@
+
+
+ {{getPackUnit(uom)}}
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/qty/uom.vue b/src/mycomponents/qty/uom.vue
new file mode 100644
index 0000000..d2bcc54
--- /dev/null
+++ b/src/mycomponents/qty/uom.vue
@@ -0,0 +1,40 @@
+
+
+ {{getUomInfo(uom)}}
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/recommend/recommend.vue b/src/mycomponents/recommend/recommend.vue
new file mode 100644
index 0000000..3061f1c
--- /dev/null
+++ b/src/mycomponents/recommend/recommend.vue
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 复制采购
+ |制品
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/mycomponents/recommend/recommendBalance.vue b/src/mycomponents/recommend/recommendBalance.vue
new file mode 100644
index 0000000..df79f68
--- /dev/null
+++ b/src/mycomponents/recommend/recommendBalance.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/recommend/recommendCount.vue b/src/mycomponents/recommend/recommendCount.vue
new file mode 100644
index 0000000..4d2bc57
--- /dev/null
+++ b/src/mycomponents/recommend/recommendCount.vue
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 复制采购
+ |制品
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/record/record.vue b/src/mycomponents/record/record.vue
new file mode 100644
index 0000000..bd7e6b1
--- /dev/null
+++ b/src/mycomponents/record/record.vue
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/record/recordBottom.vue b/src/mycomponents/record/recordBottom.vue
new file mode 100644
index 0000000..120265e
--- /dev/null
+++ b/src/mycomponents/record/recordBottom.vue
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ {{dataContent.creator}}
+
+
+
+ {{formatDate(dataContent.createTime)}}
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/record/recordComDetailCard.vue b/src/mycomponents/record/recordComDetailCard.vue
new file mode 100644
index 0000000..81d1cd0
--- /dev/null
+++ b/src/mycomponents/record/recordComDetailCard.vue
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/record/recordCommonInfo.vue b/src/mycomponents/record/recordCommonInfo.vue
new file mode 100644
index 0000000..efcd0f7
--- /dev/null
+++ b/src/mycomponents/record/recordCommonInfo.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 关闭
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/record/recordDetailCard.vue b/src/mycomponents/record/recordDetailCard.vue
new file mode 100644
index 0000000..ecaceb3
--- /dev/null
+++ b/src/mycomponents/record/recordDetailCard.vue
@@ -0,0 +1,173 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/mycomponents/record/recordDetailCommonInfo.vue b/src/mycomponents/record/recordDetailCommonInfo.vue
new file mode 100644
index 0000000..7655126
--- /dev/null
+++ b/src/mycomponents/record/recordDetailCommonInfo.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 关闭
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/record/recordFilter.vue b/src/mycomponents/record/recordFilter.vue
new file mode 100644
index 0000000..710a59b
--- /dev/null
+++ b/src/mycomponents/record/recordFilter.vue
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+ 只看当天
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/record/recordItemInfo.vue b/src/mycomponents/record/recordItemInfo.vue
new file mode 100644
index 0000000..dc911f5
--- /dev/null
+++ b/src/mycomponents/record/recordItemInfo.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+ 详细信息 :
+
+
+ 项目代码 :
+ {{dataContent.projectCode}}
+
+
+ 单据号 :
+ {{dataContent.number}}
+
+
+ 器具号 :
+ {{dataContent.containerNumber}}
+
+
+ 物品代码 :
+ {{dataContent.itemCode}}
+
+
+ 物品名称 :
+ {{dataContent.itemName}}
+
+
+ 物品描述1 :
+ {{dataContent.itemDesc1}}
+
+
+ 物品描述2 :
+ {{dataContent.itemDesc2}}
+
+
+ 库存状态 :
+ {{dataContent.inventoryStatus}}
+
+
+ 包装号 :
+ {{dataContent.packingNumber}}
+
+
+ 批次 :
+ {{dataContent.batch}}
+
+
+
+ 数量 :
+ {{dataContent.qty}}
+
+
+ 计量单位 :
+ {{dataContent.uom}}
+
+
+ 备注 :
+ {{dataContent.remark}}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/record/recordListCommonInfo.vue b/src/mycomponents/record/recordListCommonInfo.vue
new file mode 100644
index 0000000..5d8cabe
--- /dev/null
+++ b/src/mycomponents/record/recordListCommonInfo.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/record/recordListDetailPoup.vue b/src/mycomponents/record/recordListDetailPoup.vue
new file mode 100644
index 0000000..7bbdf29
--- /dev/null
+++ b/src/mycomponents/record/recordListDetailPoup.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/record/recordMainInfo.vue b/src/mycomponents/record/recordMainInfo.vue
new file mode 100644
index 0000000..8958184
--- /dev/null
+++ b/src/mycomponents/record/recordMainInfo.vue
@@ -0,0 +1,198 @@
+
+
+
+
+
+ 主要信息 :
+
+
+
+ 从仓库代码 :
+ {{dataContent.fromWarehouseCode}}
+
+
+
+ 到仓库代码 :
+ {{dataContent.toWarehouseCode}}
+
+
+
+ 从库位类型范围 :
+ {{getLocationTypeNameList(getDirectoryItemArray(dataContent.fromLocationTypes))}}
+
+
+
+ 到库位类型范围 :
+ {{getLocationTypeNameList(getDirectoryItemArray(dataContent.toLocationTypes))}}
+
+
+
+ 从库区代码范围 :
+ {{dataContent.fromAreaCodes}}
+
+
+
+ 到库区代码范围 :
+ {{dataContent.toAreaCodes}}
+
+
+
+ 单据号 :
+ {{dataContent.number}}
+
+
+
+ 业务类型 :
+ {{getBusinessTypeDesc(dataContent.businessType)}}
+
+
+
+ 备注 :
+ {{dataContent.remark}}
+
+
+
+ 创建时间 :
+ {{dataContent.creationTime}}
+
+
+ 创建者Id :
+ {{dataContent.creatorId}}
+
+
+ 创建者用户名 :
+ {{dataContent.creatorName}}
+
+
+ 扩展属性 :
+ {{dataContent.extraProperties}}
+
+
+ 地点ID :
+ {{dataContent.siteId}}
+
+
+ 申请时间 :
+ {{dateFormat(dataContent.requestTime)}}
+
+
+
+ 截止时间 :
+ {{dateFormat(dataContent.dueTime)}}
+
+
+
+ 部门 :
+ {{dataContent.departmentCode}}
+
+
+ 状态 :
+ {{dataContent.status}}
+
+
+ 自动提交 :
+ {{boolean(dataContent.autoCommit)}}
+
+
+
+ 自动通过 :
+ {{boolean(dataContent.autoAgree)}}
+
+
+ 自动执行 :
+ {{boolean(dataContent.autoExecute)}}
+
+
+ 直接生成记录 :
+ {{dataContent.directCreateRecord}}
+
+
+
+ 最后更新时间 :
+ {{dateFormat(dataContent.lastModificationTime)}}
+
+
+ 最后更新者Id :
+ {{dataContent.lastModifierId}}
+
+
+
+ 最后更新者用户名 :
+ {{dataContent.lastModiferName}}
+
+
+
+ 并发乐观锁 :
+ {{dataContent.concurrencyStamp}}
+
+
+
+ 权限所属人员id :
+ {{dataContent.rule_user_id}}
+
+
+
+ 工作流流水号 :
+ {{dataContent.serialNumber}}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/record/recordNumber.vue b/src/mycomponents/record/recordNumber.vue
new file mode 100644
index 0000000..94a3849
--- /dev/null
+++ b/src/mycomponents/record/recordNumber.vue
@@ -0,0 +1,36 @@
+
+
+
+ {{number}}
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/record/recordPersonInfo.vue b/src/mycomponents/record/recordPersonInfo.vue
new file mode 100644
index 0000000..628a0a8
--- /dev/null
+++ b/src/mycomponents/record/recordPersonInfo.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+ 创建者Id :
+ {{dataContent.creatorId}}
+
+
+ 创建者用户名 :
+ {{dataContent.creatorName}}
+
+
+ 创建时间 :
+ {{dataContent.creationTime}}
+
+
+ 最后更新者Id :
+ {{dataContent.lastModifierId}}
+
+
+ 最后更新者用户名 :
+ {{dataContent.lastModiferName}}
+
+
+ 最后更新时间 :
+ {{dataContent.lastModificationTime}}
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/record/recordRequestInfo.vue b/src/mycomponents/record/recordRequestInfo.vue
new file mode 100644
index 0000000..66d1857
--- /dev/null
+++ b/src/mycomponents/record/recordRequestInfo.vue
@@ -0,0 +1,53 @@
+
+
+
+
+
+ 申请单号 :
+ {{dataContent.requestNumber}}
+
+
+ 申请时间 :
+ {{dataContent.requestTime}}
+
+
+ 要求截至时间 :
+ {{dataContent.requestDueTime}}
+
+
+ 从仓库代码 :
+ {{dataContent.fromWarehouseCode}}
+
+
+ 到仓库代码 :
+ {{dataContent.toWarehouseCode}}
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/record/recordStatus.vue b/src/mycomponents/record/recordStatus.vue
new file mode 100644
index 0000000..f0a516f
--- /dev/null
+++ b/src/mycomponents/record/recordStatus.vue
@@ -0,0 +1,47 @@
+
+
+
+ {{ jobStatusInfo.name}}
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/record/recordTop.vue b/src/mycomponents/record/recordTop.vue
new file mode 100644
index 0000000..6c52a50
--- /dev/null
+++ b/src/mycomponents/record/recordTop.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/request/requestBottom.vue b/src/mycomponents/request/requestBottom.vue
new file mode 100644
index 0000000..120265e
--- /dev/null
+++ b/src/mycomponents/request/requestBottom.vue
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ {{dataContent.creator}}
+
+
+
+ {{formatDate(dataContent.createTime)}}
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/request/requestComMainCard.vue b/src/mycomponents/request/requestComMainCard.vue
new file mode 100644
index 0000000..0f4ca8a
--- /dev/null
+++ b/src/mycomponents/request/requestComMainCard.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/request/requestCommonInfo.vue b/src/mycomponents/request/requestCommonInfo.vue
new file mode 100644
index 0000000..b044adb
--- /dev/null
+++ b/src/mycomponents/request/requestCommonInfo.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 关闭
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/request/requestFilter.vue b/src/mycomponents/request/requestFilter.vue
new file mode 100644
index 0000000..cfdd185
--- /dev/null
+++ b/src/mycomponents/request/requestFilter.vue
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+ 只看处理中
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/request/requestItemInfo.vue b/src/mycomponents/request/requestItemInfo.vue
new file mode 100644
index 0000000..dc911f5
--- /dev/null
+++ b/src/mycomponents/request/requestItemInfo.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+ 详细信息 :
+
+
+ 项目代码 :
+ {{dataContent.projectCode}}
+
+
+ 单据号 :
+ {{dataContent.number}}
+
+
+ 器具号 :
+ {{dataContent.containerNumber}}
+
+
+ 物品代码 :
+ {{dataContent.itemCode}}
+
+
+ 物品名称 :
+ {{dataContent.itemName}}
+
+
+ 物品描述1 :
+ {{dataContent.itemDesc1}}
+
+
+ 物品描述2 :
+ {{dataContent.itemDesc2}}
+
+
+ 库存状态 :
+ {{dataContent.inventoryStatus}}
+
+
+ 包装号 :
+ {{dataContent.packingNumber}}
+
+
+ 批次 :
+ {{dataContent.batch}}
+
+
+
+ 数量 :
+ {{dataContent.qty}}
+
+
+ 计量单位 :
+ {{dataContent.uom}}
+
+
+ 备注 :
+ {{dataContent.remark}}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/request/requestListCommonInfo.vue b/src/mycomponents/request/requestListCommonInfo.vue
new file mode 100644
index 0000000..611942b
--- /dev/null
+++ b/src/mycomponents/request/requestListCommonInfo.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/request/requestMainInfo.vue b/src/mycomponents/request/requestMainInfo.vue
new file mode 100644
index 0000000..1c774cf
--- /dev/null
+++ b/src/mycomponents/request/requestMainInfo.vue
@@ -0,0 +1,168 @@
+
+
+
+
+
+ 主要信息 :
+
+
+
+ 从仓库代码 :
+ {{dataContent.fromWarehouseCode}}
+
+
+
+ 到仓库代码 :
+ {{dataContent.toWarehouseCode}}
+
+
+
+ 从库位类型范围 :
+ {{dataContent.fromLocationTypes}}
+
+
+
+ 到库位类型范围 :
+ {{dataContent.toLocationTypes}}
+
+
+
+ 从库区代码范围 :
+ {{dataContent.fromAreaCodes}}
+
+
+
+ 到库区代码范围 :
+ {{dataContent.toAreaCodes}}
+
+
+
+ 单据号 :
+ {{dataContent.number}}
+
+
+
+
+ 业务类型 :
+ {{dataContent.businessType}}
+
+
+
+ 备注 :
+ {{dataContent.remark}}
+
+
+
+ 创建时间 :
+ {{dataContent.creationTime}}
+
+
+ 创建者Id :
+ {{dataContent.creatorId}}
+
+
+ 创建者用户名 :
+ {{dataContent.creatorName}}
+
+
+ 扩展属性 :
+ {{dataContent.extraProperties}}
+
+
+ 地点ID :
+ {{dataContent.siteId}}
+
+
+ 申请时间 :
+ {{dataContent.requestTime}}
+
+
+
+ 截止时间 :
+ {{dataContent.dueTime}}
+
+
+
+ 部门 :
+ {{dataContent.departmentCode}}
+
+
+ 状态 :
+ {{dataContent.status}}
+
+
+ 自动提交 :
+ {{dataContent.autoCommit}}
+
+
+
+ 自动通过 :
+ {{dataContent.autoAgree}}
+
+
+ 自动执行 :
+ {{dataContent.autoExecute}}
+
+
+ 直接生成记录 :
+ {{dataContent.directCreateRecord}}
+
+
+
+ 最后更新时间 :
+ {{dataContent.lastModificationTime}}
+
+
+ 最后更新者Id :
+ {{dataContent.lastModifierId}}
+
+
+
+ 最后更新者用户名 :
+ {{dataContent.lastModiferName}}
+
+
+
+ 并发乐观锁 :
+ {{dataContent.concurrencyStamp}}
+
+
+
+ 权限所属人员id :
+ {{dataContent.rule_user_id}}
+
+
+
+ 工作流流水号 :
+ {{dataContent.serialNumber}}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/request/requestNumber.vue b/src/mycomponents/request/requestNumber.vue
new file mode 100644
index 0000000..94a3849
--- /dev/null
+++ b/src/mycomponents/request/requestNumber.vue
@@ -0,0 +1,36 @@
+
+
+
+ {{number}}
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/request/requestPersonInfo.vue b/src/mycomponents/request/requestPersonInfo.vue
new file mode 100644
index 0000000..628a0a8
--- /dev/null
+++ b/src/mycomponents/request/requestPersonInfo.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+ 创建者Id :
+ {{dataContent.creatorId}}
+
+
+ 创建者用户名 :
+ {{dataContent.creatorName}}
+
+
+ 创建时间 :
+ {{dataContent.creationTime}}
+
+
+ 最后更新者Id :
+ {{dataContent.lastModifierId}}
+
+
+ 最后更新者用户名 :
+ {{dataContent.lastModiferName}}
+
+
+ 最后更新时间 :
+ {{dataContent.lastModificationTime}}
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/request/requestRequestInfo.vue b/src/mycomponents/request/requestRequestInfo.vue
new file mode 100644
index 0000000..66d1857
--- /dev/null
+++ b/src/mycomponents/request/requestRequestInfo.vue
@@ -0,0 +1,53 @@
+
+
+
+
+
+ 申请单号 :
+ {{dataContent.requestNumber}}
+
+
+ 申请时间 :
+ {{dataContent.requestTime}}
+
+
+ 要求截至时间 :
+ {{dataContent.requestDueTime}}
+
+
+ 从仓库代码 :
+ {{dataContent.fromWarehouseCode}}
+
+
+ 到仓库代码 :
+ {{dataContent.toWarehouseCode}}
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/request/requestStatus.vue b/src/mycomponents/request/requestStatus.vue
new file mode 100644
index 0000000..4d07e6b
--- /dev/null
+++ b/src/mycomponents/request/requestStatus.vue
@@ -0,0 +1,45 @@
+
+
+
+ {{ statusInfo.label}}
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/request/requestTop.vue b/src/mycomponents/request/requestTop.vue
new file mode 100644
index 0000000..5a49dbe
--- /dev/null
+++ b/src/mycomponents/request/requestTop.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/scan/winComScan.vue b/src/mycomponents/scan/winComScan.vue
new file mode 100644
index 0000000..9a408e0
--- /dev/null
+++ b/src/mycomponents/scan/winComScan.vue
@@ -0,0 +1,289 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 历史记录
+
+
+
+
+
+
+
+
+
+
+
+ {{item}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/mycomponents/scan/winComScan222.vue b/src/mycomponents/scan/winComScan222.vue
new file mode 100644
index 0000000..bb526e9
--- /dev/null
+++ b/src/mycomponents/scan/winComScan222.vue
@@ -0,0 +1,281 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/scan/winComScanNormal.vue b/src/mycomponents/scan/winComScanNormal.vue
new file mode 100644
index 0000000..da7f04b
--- /dev/null
+++ b/src/mycomponents/scan/winComScanNormal.vue
@@ -0,0 +1,231 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/mycomponents/scan/winScanAsnNumber.vue b/src/mycomponents/scan/winScanAsnNumber.vue
new file mode 100644
index 0000000..38a7f90
--- /dev/null
+++ b/src/mycomponents/scan/winScanAsnNumber.vue
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/scan/winScanButton.vue b/src/mycomponents/scan/winScanButton.vue
new file mode 100644
index 0000000..fd22865
--- /dev/null
+++ b/src/mycomponents/scan/winScanButton.vue
@@ -0,0 +1,53 @@
+
+
+
+
+ 扫描
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/scan/winScanContainer.vue b/src/mycomponents/scan/winScanContainer.vue
new file mode 100644
index 0000000..3324db4
--- /dev/null
+++ b/src/mycomponents/scan/winScanContainer.vue
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/scan/winScanItem.vue b/src/mycomponents/scan/winScanItem.vue
new file mode 100644
index 0000000..bac4db7
--- /dev/null
+++ b/src/mycomponents/scan/winScanItem.vue
@@ -0,0 +1,173 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/scan/winScanJobNumber.vue b/src/mycomponents/scan/winScanJobNumber.vue
new file mode 100644
index 0000000..96cfe6c
--- /dev/null
+++ b/src/mycomponents/scan/winScanJobNumber.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/scan/winScanLocation.vue b/src/mycomponents/scan/winScanLocation.vue
new file mode 100644
index 0000000..3b4b460
--- /dev/null
+++ b/src/mycomponents/scan/winScanLocation.vue
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/scan/winScanNormal.vue b/src/mycomponents/scan/winScanNormal.vue
new file mode 100644
index 0000000..9792a9d
--- /dev/null
+++ b/src/mycomponents/scan/winScanNormal.vue
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/scan/winScanPack.vue b/src/mycomponents/scan/winScanPack.vue
new file mode 100644
index 0000000..c23e40d
--- /dev/null
+++ b/src/mycomponents/scan/winScanPack.vue
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/scan/winScanPackAndCont.vue b/src/mycomponents/scan/winScanPackAndCont.vue
new file mode 100644
index 0000000..c6b5ad6
--- /dev/null
+++ b/src/mycomponents/scan/winScanPackAndCont.vue
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/scan/winScanPackAndLocation.vue b/src/mycomponents/scan/winScanPackAndLocation.vue
new file mode 100644
index 0000000..adb7be7
--- /dev/null
+++ b/src/mycomponents/scan/winScanPackAndLocation.vue
@@ -0,0 +1,450 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/scan/winScanPackAndLocationNoBalance.vue b/src/mycomponents/scan/winScanPackAndLocationNoBalance.vue
new file mode 100644
index 0000000..9c1b478
--- /dev/null
+++ b/src/mycomponents/scan/winScanPackAndLocationNoBalance.vue
@@ -0,0 +1,454 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/scan/winScanPackAndPosition.vue b/src/mycomponents/scan/winScanPackAndPosition.vue
new file mode 100644
index 0000000..8709d07
--- /dev/null
+++ b/src/mycomponents/scan/winScanPackAndPosition.vue
@@ -0,0 +1,225 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/status/balanceStatus.vue b/src/mycomponents/status/balanceStatus.vue
new file mode 100644
index 0000000..786c4ff
--- /dev/null
+++ b/src/mycomponents/status/balanceStatus.vue
@@ -0,0 +1,71 @@
+
+
+
+
+ {{statusDesc(status) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/status/status.vue b/src/mycomponents/status/status.vue
new file mode 100644
index 0000000..b771d9e
--- /dev/null
+++ b/src/mycomponents/status/status.vue
@@ -0,0 +1,52 @@
+
+
+
+ •
+
+ {{statusDesc(status)}}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/status/statusEdit.vue b/src/mycomponents/status/statusEdit.vue
new file mode 100644
index 0000000..f626d4e
--- /dev/null
+++ b/src/mycomponents/status/statusEdit.vue
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.text}}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/transfer/comTransferReceipt.vue b/src/mycomponents/transfer/comTransferReceipt.vue
new file mode 100644
index 0000000..1c9ba30
--- /dev/null
+++ b/src/mycomponents/transfer/comTransferReceipt.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+ 调入人:{{dataContent.acceptUserName}}
+
+
+
+
+
+ 创建时间:{{dataContent.creationTime===null?'无':formatDate(dataContent.creationTime)}}
+
+
+
+
+
+
+
+
diff --git a/src/mycomponents/wincom/basicCom/winHint.vue b/src/mycomponents/wincom/basicCom/winHint.vue
new file mode 100644
index 0000000..2d77a47
--- /dev/null
+++ b/src/mycomponents/wincom/basicCom/winHint.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+ 物品信息 {{dataContent.itemCode}}
+
+
+ 描述 {{dataContent.itemDesc1}} {{dataContent.itemDesc2}}
+
+
+ 箱码 {{dataContent.recommendPackingCode}}
+
+
+ 批次 {{dataContent.recommendSupplierBatch}}
+
+
+ 库位 {{dataContent.recommendLocationCode}}
+
+
+ 数量{{dataContent.recommendQty}}
+
+
+ 标包数量{{dataContent.packQty}}
+
+
+ 推荐单位{{dataContent.recommendUom}}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/mycomponents/workStation/workStation.vue b/src/mycomponents/workStation/workStation.vue
new file mode 100644
index 0000000..da284da
--- /dev/null
+++ b/src/mycomponents/workStation/workStation.vue
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
diff --git a/src/package.json b/src/package.json
new file mode 100644
index 0000000..6c5d226
--- /dev/null
+++ b/src/package.json
@@ -0,0 +1,18 @@
+{
+ "id": "active-formv1",
+ "displayName": "基于uview1.0表单 动态表单 uniapp最强动态表单 表单校验 快速生成",
+ "version": "1.5.1",
+ "description": "最强动态表单 以js的方式快速生成表单接口 支持表单校验 ui设计师样式优化基于uview1.0",
+ "keywords": [
+ "表单",
+ "动态表单",
+ "json表单",
+ "快速表单"
+ ],
+ "dcloudext": {
+ "category": [
+ "前端组件",
+ "通用组件"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/pages.json b/src/pages.json
new file mode 100644
index 0000000..5a931cb
--- /dev/null
+++ b/src/pages.json
@@ -0,0 +1,123 @@
+{
+
+ "pages": [{
+ "path": "pages/index/index",
+ "style": {
+ "navigationBarTitleText": "WMS仓库管理系统-移动端",
+ "titleNView": {
+ // "autoBackButton": "true",
+ "buttons": [{}]
+ }
+ }
+ },
+ {
+ "path": "pages/setter/index",
+ "style": {
+ "navigationBarTitleText": "设置",
+ "titleNView": {
+ // "autoBackButton": "true",
+ "buttons": [{}]
+ }
+ }
+ },
+ {
+ "path": "pages/login/index",
+ "style": {
+ "navigationBarTitleText": "登录",
+ "titleNView": {
+ // "autoBackButton": "true",
+ "buttons": [{}]
+ }
+ }
+ },
+ {
+ "path": "pages/foam/check",
+ "style": {
+ "navigationBarTitleText": "泡沫点检",
+ "titleNView": {
+ "buttons": [{}]
+ }
+ }
+ },
+ {
+ "path": "pages/foam/input",
+ "style": {
+ "navigationBarTitleText": "原料投入(泡沫)",
+ "titleNView": {
+ "buttons": [{}]
+ }
+ }
+ },
+ {
+ "path": "pages/plastics/check",
+ "style": {
+ "navigationBarTitleText": "注塑点检",
+ "titleNView": {
+ "buttons": [{}]
+ }
+ }
+ },
+ {
+ "path": "pages/plastics/input",
+ "style": {
+ "navigationBarTitleText": "原料揉入(注塑)",
+ "titleNView": {
+ "buttons": [{}]
+ }
+ }
+ },
+ {
+ "path": "pages/inputAndSelect",
+ "style": {
+ "navigationBarTitleText": "原料揉入(注塑)",
+ "titleNView": {
+ "buttons": [{}]
+ }
+ }
+ }
+
+
+
+ ],
+ "globalStyle": {
+ "navigationBarTextStyle": "white",
+ "navigationBarTitleText": "WMS仓库管理系统-移动端",
+ "navigationBarBackgroundColor": "#3C9CFF",
+ "h5": {
+ "maxWidth": 1190,
+ "navigationBarTextStyle": "white",
+ "navigationBarBackgroundColor": "#3C9CFF !important"
+ },
+ //增加返回首页
+ // "titleNView": {
+ // "autoBackButton": "true",
+ // "buttons": [{
+ // "float": "right",
+ // "text": "\ue696",
+ // "fontSrc": "/static/ali_icon/iconfont.ttf",
+ // "fontSize": "58rpx"
+ // }]
+ // },
+ "softinputMode": "adjustPan" //adjustResize
+ },
+ "tabBar": {
+ "color": "#000000",
+ "selectedColor": "#2678f2",
+ "borderStyle": "black",
+ "backgroundColor": "",
+ "list": [{
+
+ "pagePath": "pages/index/index",
+ "iconPath": "./static/bar/home.png",
+ "selectedIconPath": "./static/bar/home_p.png",
+ "text": "首页"
+ },
+ {
+ "pagePath": "pages/setter/index",
+ "iconPath": "./static/bar/setting.png",
+ "selectedIconPath": "./static/bar/setting_p.png",
+ "text": "设置"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/pages/back/check.vue b/src/pages/back/check.vue
new file mode 100644
index 0000000..4d110ed
--- /dev/null
+++ b/src/pages/back/check.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/back/check1.vue b/src/pages/back/check1.vue
new file mode 100644
index 0000000..527ecf1
--- /dev/null
+++ b/src/pages/back/check1.vue
@@ -0,0 +1,164 @@
+
+
+
+ 部位 :基础聚密罐
+
+
+
+ 提交表单
+ 重置表单
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/back/check_foam.vue b/src/pages/back/check_foam.vue
new file mode 100644
index 0000000..51ff5ca
--- /dev/null
+++ b/src/pages/back/check_foam.vue
@@ -0,0 +1,180 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 所选城市为:{{city}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/foam/check.vue b/src/pages/foam/check.vue
new file mode 100644
index 0000000..15c142a
--- /dev/null
+++ b/src/pages/foam/check.vue
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/foam/input.vue b/src/pages/foam/input.vue
new file mode 100644
index 0000000..02409e3
--- /dev/null
+++ b/src/pages/foam/input.vue
@@ -0,0 +1,8 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue
new file mode 100644
index 0000000..cca63cc
--- /dev/null
+++ b/src/pages/index/index.vue
@@ -0,0 +1,442 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 暂无数据
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/inputAndSelect.vue b/src/pages/inputAndSelect.vue
new file mode 100644
index 0000000..cd37539
--- /dev/null
+++ b/src/pages/inputAndSelect.vue
@@ -0,0 +1,154 @@
+
+
+
+
+
+ *
+ {{ index + 1 }}.
+
+
+
+ 内容 : {{ item.content }}
+
+
+
+
+
+
+
+
+
+
+
+ 方法 : {{item.methond}}
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/login/index.vue b/src/pages/login/index.vue
new file mode 100644
index 0000000..e08167c
--- /dev/null
+++ b/src/pages/login/index.vue
@@ -0,0 +1,368 @@
+
+
+
+
+
+ 您好,欢迎使用
+ WMS仓库管理系统
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/plastics/check.vue b/src/pages/plastics/check.vue
new file mode 100644
index 0000000..15c142a
--- /dev/null
+++ b/src/pages/plastics/check.vue
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/plastics/input.vue b/src/pages/plastics/input.vue
new file mode 100644
index 0000000..02409e3
--- /dev/null
+++ b/src/pages/plastics/input.vue
@@ -0,0 +1,8 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/setter/index.vue b/src/pages/setter/index.vue
new file mode 100644
index 0000000..2398ba7
--- /dev/null
+++ b/src/pages/setter/index.vue
@@ -0,0 +1,186 @@
+
+
+
+
+
+
+
+
+ {{userName}}
+ {{userInfo.dept.name}}
+ {{(userInfo.posts || []).map(post => post.name).join(',')}}
+ {{(userInfo.roles || []).map(role => role.name).join(',')}}
+
+
+ {{version}}
+
+ {{version}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/setter/passwordpage.vue b/src/pages/setter/passwordpage.vue
new file mode 100644
index 0000000..72434c6
--- /dev/null
+++ b/src/pages/setter/passwordpage.vue
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/setter/setterDetail.vue b/src/pages/setter/setterDetail.vue
new file mode 100644
index 0000000..708e6d0
--- /dev/null
+++ b/src/pages/setter/setterDetail.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/router/index.js b/src/router/index.js
new file mode 100644
index 0000000..231d5c4
--- /dev/null
+++ b/src/router/index.js
@@ -0,0 +1,117 @@
+//只要是未登录状态,想要跳转到名单内的路径时,直接跳到登录页。
+// 页面白名单,不受拦截
+import versionTool from '@/libs/versionUpdate.js';
+
+const whiteList = [
+ '/pages/login/index'
+]
+let apages = getCurrentPages()
+console.log("getCurrentPages",apages)
+function hasPermission (url) {
+ console.log('url',url);
+
+ var isLogin = uni.getStorageSync("hasLogin")
+ // let islogin = this.$store.state.hasLogin
+ islogin = Boolean(Number(islogin));//返回布尔值
+ // 在白名单中或有登录判断条件可以直接跳转
+ if(whiteList.indexOf(url) !== -1 || islogin) {
+ return true
+ }
+ return true
+}
+
+uni.addInterceptor('navigateTo', {
+
+ // 页面跳转前进行拦截, invoke根据返回值进行判断是否继续执行跳转
+ invoke (e) {
+ if(!hasPermission(e.url)){
+ uni.reLaunch({
+ url: '/pages/login/index'
+ })
+ return false
+ }
+ return true
+ },
+ success (e) {
+ versionTool.isNewVersion()
+ }
+})
+
+uni.addInterceptor('switchTab', {
+ // tabbar页面跳转前进行拦截
+ invoke (e) {
+ if(!hasPermission(e.url)){
+ uni.reLaunch({
+ url: '/pages/login/index'
+ })
+ return false
+ }
+ return true
+ },
+ success (e) {
+ }
+})
+
+// import modules from './modules'
+// import Vue from 'vue'
+// //这里仅示范npm安装方式的引入,其它方式引入请看最上面【安装】部分
+// import Router from 'uni-simple-router'
+
+// Vue.use(Router)
+// //初始化
+// const router = new Router({
+// routes: [...modules]//路由表
+// });
+
+// //全局路由前置守卫
+// router.beforeEach((to, from, next) => {
+// next()
+// })
+// // 全局路由后置守卫
+// router.afterEach((to, from) => {
+// })
+// export default router;
+
+// import Vue from 'vue'
+// import store from '../store/index.js'
+// import pages from '../pages.js'
+
+// import Router, {
+// RouterMount
+// } from 'uni-simple-router'
+
+
+
+// Vue.use(Router)
+
+// const myRouter =
+// pages().pages.map(item => ({
+// path: `/${item.path}`,
+// meta: item.meta || {}
+// }))
+// //初始化
+// const router = new Router({
+// routes: myRouter
+// });
+
+// //全局路由前置守卫
+// router.beforeEach((to, from, next) => {
+
+// const isLogin = sessionStorage.getItem("isLogin")
+// console.log('路由前置守卫',isLogin)
+// // if (!isLogin && to.meta.needLogin) {
+// if (!isLogin ) {
+// next({
+// path: '/pages/login/index',
+// query: {
+// redirect: to.path
+// }
+// })
+// } else {
+// next()
+// }
+
+// })
+// // 全局路由后置守卫
+// router.afterEach((to, from) => {console.log('路由后置守卫')})
+// export default router;
diff --git a/src/router/modules/home.js b/src/router/modules/home.js
new file mode 100644
index 0000000..49586d0
--- /dev/null
+++ b/src/router/modules/home.js
@@ -0,0 +1,29 @@
+// router/modules/home.js
+const home = [
+ {
+ //注意:path必须跟pages.json中的地址对应,最前面别忘了加'/'哦
+ path: '/pages/index/index',
+ aliasPath:'/', //对于h5端你必须在首页加上aliasPath并设置为/
+ name: 'index',
+ meta: {
+ title: 'WMS仓库管理系统',
+ },
+ },
+ // {
+ // path: '/pages/list/index',
+ // aliasPath:'/'
+ // name: 'list',
+ // meta: {
+ // title: '列表',
+ // },
+ // },
+ {
+ path: '/pages/login/index',
+ aliasPath:'/'
+ name: 'login',
+ meta: {
+ title: '登录',
+ },
+ },
+]
+export default home
\ No newline at end of file
diff --git a/src/router/modules/index.js b/src/router/modules/index.js
new file mode 100644
index 0000000..b17abbe
--- /dev/null
+++ b/src/router/modules/index.js
@@ -0,0 +1,11 @@
+// router/modules/index.js
+const files = require.context('.', false, /\.js$/)
+const modules = []
+
+files.keys().forEach(key => {
+ if (key === './index.js') return
+ const item = files(key).default
+ modules.push(...item)
+})
+
+export default modules
\ No newline at end of file
diff --git a/src/router/my_router.js b/src/router/my_router.js
new file mode 100644
index 0000000..2fc2a68
--- /dev/null
+++ b/src/router/my_router.js
@@ -0,0 +1,46 @@
+//只要是未登录状态,想要跳转到名单内的路径时,直接跳到登录页
+// 页面白名单,不受拦截
+const whiteList = [
+ '/pages/login/index',
+ '/pages/config/config'
+]
+
+function hasPermission(url) {
+ var isLogin = uni.getStorageSync("hasLogin")
+ if (isLogin == null) {
+ isLogin = false
+ }
+
+ // 在白名单中或有登录判断条件可以直接跳转
+ if (whiteList.indexOf(url) !== -1 || isLogin) {
+ return true
+ }
+ return false
+}
+uni.addInterceptor('navigateTo', {
+ // 页面跳转前进行拦截, invoke根据返回值进行判断是否继续执行跳转
+ invoke(e) {
+ if (!hasPermission(e.url)) {
+ uni.reLaunch({
+ url: '/pages/login/index'
+ })
+ return false
+ }
+ return true
+ },
+ success(e) {}
+})
+
+uni.addInterceptor('switchTab', {
+ // tabbar页面跳转前进行拦截
+ invoke(e) {
+ if (!hasPermission(e.url)) {
+ uni.reLaunch({
+ url: '/pages/login/index'
+ })
+ return false
+ }
+ return true
+ },
+ success(e) {}
+})
diff --git a/src/router/router.js b/src/router/router.js
new file mode 100644
index 0000000..ddc0dce
--- /dev/null
+++ b/src/router/router.js
@@ -0,0 +1,20 @@
+// router.js
+import {RouterMount,createRouter} from 'uni-simple-router';
+
+const router = createRouter({
+ platform: process.env.VUE_APP_PLATFORM,
+ routes: [...ROUTES]
+});
+//全局路由前置守卫
+router.beforeEach((to, from, next) => {
+ next();
+});
+// 全局路由后置守卫
+router.afterEach((to, from) => {
+ console.log('跳转结束')
+})
+
+export {
+ router,
+ RouterMount
+}
\ No newline at end of file
diff --git a/src/shime-uni.d.ts b/src/shime-uni.d.ts
new file mode 100644
index 0000000..b3d3cc9
--- /dev/null
+++ b/src/shime-uni.d.ts
@@ -0,0 +1,6 @@
+export {};
+
+declare module "vue" {
+ type Hooks = App.AppInstance & Page.PageInstance;
+ interface ComponentCustomOptions extends Hooks {}
+}
\ No newline at end of file
diff --git a/src/static/ali_icon/iconfont.css b/src/static/ali_icon/iconfont.css
new file mode 100644
index 0000000..8034fb9
--- /dev/null
+++ b/src/static/ali_icon/iconfont.css
@@ -0,0 +1,25 @@
+@font-face {
+ font-family: "iconfont"; /* Project id 4087030 */
+ src: url('/static/ali_icon/iconfont.ttf') format('truetype');
+}
+
+.iconfont {
+ font-family: "iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-shezhi:before {
+ content: "\e706";
+}
+
+.icon-icon_home:before {
+ content: "\e696";
+}
+
+.icon-guolv:before {
+ content: "\e6e2";
+}
+
diff --git a/src/static/ali_icon/iconfont.ttf b/src/static/ali_icon/iconfont.ttf
new file mode 100644
index 0000000..984d072
Binary files /dev/null and b/src/static/ali_icon/iconfont.ttf differ
diff --git a/src/static/avatar.png b/src/static/avatar.png
new file mode 100644
index 0000000..cbc3c6f
Binary files /dev/null and b/src/static/avatar.png differ
diff --git a/src/static/bar/home.png b/src/static/bar/home.png
new file mode 100644
index 0000000..747dec3
Binary files /dev/null and b/src/static/bar/home.png differ
diff --git a/src/static/bar/home_p.png b/src/static/bar/home_p.png
new file mode 100644
index 0000000..4576514
Binary files /dev/null and b/src/static/bar/home_p.png differ
diff --git a/src/static/bar/message.png b/src/static/bar/message.png
new file mode 100644
index 0000000..83fe65c
Binary files /dev/null and b/src/static/bar/message.png differ
diff --git a/src/static/bar/message_p.png b/src/static/bar/message_p.png
new file mode 100644
index 0000000..e52621e
Binary files /dev/null and b/src/static/bar/message_p.png differ
diff --git a/src/static/bar/setting.png b/src/static/bar/setting.png
new file mode 100644
index 0000000..6d2c2af
Binary files /dev/null and b/src/static/bar/setting.png differ
diff --git a/src/static/bar/setting_p.png b/src/static/bar/setting_p.png
new file mode 100644
index 0000000..86fef59
Binary files /dev/null and b/src/static/bar/setting_p.png differ
diff --git a/src/static/bar/sy.svg b/src/static/bar/sy.svg
new file mode 100644
index 0000000..09cbb42
--- /dev/null
+++ b/src/static/bar/sy.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/static/bar/sya.svg b/src/static/bar/sya.svg
new file mode 100644
index 0000000..29704b2
--- /dev/null
+++ b/src/static/bar/sya.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/static/bar/sz.svg b/src/static/bar/sz.svg
new file mode 100644
index 0000000..5a7549b
--- /dev/null
+++ b/src/static/bar/sz.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/static/bar/sza.svg b/src/static/bar/sza.svg
new file mode 100644
index 0000000..57dbaaa
--- /dev/null
+++ b/src/static/bar/sza.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/static/bar/xx.png b/src/static/bar/xx.png
new file mode 100644
index 0000000..8f8b45d
Binary files /dev/null and b/src/static/bar/xx.png differ
diff --git a/src/static/bar/xx.svg b/src/static/bar/xx.svg
new file mode 100644
index 0000000..42893c5
--- /dev/null
+++ b/src/static/bar/xx.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/static/bar/xxa.svg b/src/static/bar/xxa.svg
new file mode 100644
index 0000000..fb354b3
--- /dev/null
+++ b/src/static/bar/xxa.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/static/config.js b/src/static/config.js
new file mode 100644
index 0000000..a6ee209
--- /dev/null
+++ b/src/static/config.js
@@ -0,0 +1,9 @@
+let request_url = "http://dev.ccwin-in.com:25300/api/admin-api"
+// let request_url = "http://192.168.0.113:12080/admin-api"
+
+let isDevelopment = true
+
+export default {
+ request_url,
+ isDevelopment
+}
diff --git a/src/static/config.json b/src/static/config.json
new file mode 100644
index 0000000..9563e13
--- /dev/null
+++ b/src/static/config.json
@@ -0,0 +1,143 @@
+{
+ "baseInfo": {
+ "companyCode": {
+ "name": "companyCode",
+ "value": "DongYang",
+ "desc": "公司代码"
+ },
+ "warehouseCode": {
+ "name": "warehouseCode",
+ "value": "T8",
+ "desc": "仓库代码"
+ },
+ "dev": {
+ "name": "dev",
+ "value": "http://dev.ccwin-in.com:23132",
+ "desc": "api请求地址"
+ },
+
+ "request_url": {
+ "name": "request_url",
+ "value": "http://dev.ccwin-in.com:25100/api/admin-api",
+ "dev2": "http://192.168.0.157:12080/admin-api",
+ "chefang": "http://192.168.0.176:12080/admin-api",
+ "chenxinming": "http://192.179.0.230:12080/admin-api",
+ "liuchen": "http://192.168.0.157:12080/admin-api",
+ "xuebing": "http://192.168.0.106:12080/admin-api",
+ "dev": "http://dev.ccwin-in.com:25100/api/admin-api",
+ "local": "http://localhost:12080",
+ "desc": "api请求地址"
+ },
+
+ "tenantId": {
+ "name": "tenantId",
+ "value": "1",
+ "desc": "租户id"
+ },
+ "isDevelopment": {
+ "name": "isDevelopment",
+ "value": true,
+ "desc": "是否是开发模式,true是开发模式,false不是开发模式"
+ }
+
+
+ },
+ "recepit_configList": [
+
+ {
+ "name": "receipt_isEditLocation",
+ "value": true,
+ "desc": "采购收货_实际库位与推荐库位是否一致"
+ },
+ {
+ "name": "receipt_isEditQty",
+ "value": true,
+ "desc": "采购收货_允许编辑数量"
+ },
+ {
+ "name": "receipt_isHandleQtyGreaterRecommendQty",
+ "value": true,
+ "desc": "采购收货_允许实际数量大于推荐数量"
+ },
+ {
+ "name": "receipt_isHandleQtyLessRecommendQty",
+ "value": true,
+ "desc": "采购收货_允许实际数量小于推荐数量"
+ },
+ {
+ "name": "receipt_isContinueScanning",
+ "value": true,
+ "desc": "采购收货_是否连续扫描"
+ },
+ {
+ "name": "receipt_isPartCommit",
+ "value": true,
+ "desc": "采购收货_是否允许部分提交"
+ },
+ {
+ "name": "receipt_isMatchByPartAndBatch",
+ "value": true,
+ "desc": "采购收货_允许模糊匹配(零件+批次)"
+ }
+ ],
+ "feed_configList": [
+
+ {
+ "name": "feed_isEditLocation",
+ "value": true,
+ "desc": "发料_实际库位与推荐库位是否一致"
+ },
+ {
+ "name": "feed_isEditQty",
+ "value": true,
+ "desc": "发料_允许编辑数量"
+ },
+ {
+ "name": "feed_isHandleQtyGreaterRecommendQty",
+ "value": true,
+ "desc": "发料_允许实际数量大于推荐数量"
+ },
+ {
+ "name": "feed_isHandleQtyLessRecommendQty",
+ "value": true,
+ "desc": "发料_允许实际数量小于推荐数量"
+ },
+ {
+ "name": "feed_isContinueScanning",
+ "value": true,
+ "desc": "发料_是否连续扫描"
+ },
+ {
+ "name": "feed_isPartCommit",
+ "value": true,
+ "desc": "发料_是否允许部分提交"
+ },
+ {
+ "name": "feed_isMatchByPartAndBatch",
+ "value": true,
+ "desc": "发料_允许模糊匹配(零件+批次)"
+ },
+ {
+ "name": "feed_isOutIn",
+ "value": true,
+ "desc": "是否按批次先进先出发料"
+ },
+ {
+ "name": "feed_isHandleQtyNoRecommedQty",
+ "value": true,
+ "desc": "实际发料数量是否允许与需求量不同"
+ },
+ {
+ "name": "feed_isScanNoExits",
+ "value": true,
+ "desc": "如果扫描的批次不在列表中,是否允许发料"
+ },
+ {
+ "name": "feed_isScanUpdateCount",
+ "value": true,
+ "desc": "扫描完是否直接修改数量"
+ }
+ ]
+
+
+}
diff --git a/src/static/customicons.ttf b/src/static/customicons.ttf
new file mode 100644
index 0000000..a3c8ab9
Binary files /dev/null and b/src/static/customicons.ttf differ
diff --git a/src/static/font/iconfont.css b/src/static/font/iconfont.css
new file mode 100644
index 0000000..39aed3d
--- /dev/null
+++ b/src/static/font/iconfont.css
@@ -0,0 +1,90 @@
+@font-face {
+ font-family: "iconfont";
+ src: url('/static/font/iconfont.ttf') format('truetype');
+}
+
+.iconfont {
+ font-family: "iconfont" !important;
+ font-size: 16px;
+ display: inline-block;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-user:before {
+ content: "\e7ae";
+}
+
+.icon-password:before {
+ content: "\e8b2";
+}
+
+.icon-code:before {
+ content: "\e699";
+}
+
+.icon-setting:before {
+ content: "\e6cc";
+}
+
+.icon-share:before {
+ content: "\e739";
+}
+
+.icon-edit:before {
+ content: "\e60c";
+}
+
+.icon-version:before {
+ content: "\e63f";
+}
+
+.icon-service:before {
+ content: "\e6ff";
+}
+
+.icon-friendfill:before {
+ content: "\e726";
+}
+
+.icon-community:before {
+ content: "\e741";
+}
+
+.icon-people:before {
+ content: "\e736";
+}
+
+.icon-dianzan:before {
+ content: "\ec7f";
+}
+
+.icon-right:before {
+ content: "\e7eb";
+}
+
+.icon-logout:before {
+ content: "\e61d";
+}
+
+.icon-help:before {
+ content: "\e616";
+}
+
+.icon-github:before {
+ content: "\e628";
+}
+
+.icon-aixin:before {
+ content: "\e601";
+}
+
+.icon-clean:before {
+ content: "\e607";
+}
+
+.icon-refresh:before {
+ content: "\e604";
+}
+
diff --git a/src/static/font/iconfont.ttf b/src/static/font/iconfont.ttf
new file mode 100644
index 0000000..53915ca
Binary files /dev/null and b/src/static/font/iconfont.ttf differ
diff --git a/src/static/icon_personal_name.png b/src/static/icon_personal_name.png
new file mode 100644
index 0000000..88746da
Binary files /dev/null and b/src/static/icon_personal_name.png differ
diff --git a/src/static/icon_personal_password.png b/src/static/icon_personal_password.png
new file mode 100644
index 0000000..5611287
Binary files /dev/null and b/src/static/icon_personal_password.png differ
diff --git a/src/static/icon_personal_setting.png b/src/static/icon_personal_setting.png
new file mode 100644
index 0000000..7508cf6
Binary files /dev/null and b/src/static/icon_personal_setting.png differ
diff --git a/src/static/icons/arrow_down.svg b/src/static/icons/arrow_down.svg
new file mode 100644
index 0000000..e4d8276
--- /dev/null
+++ b/src/static/icons/arrow_down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons/black_count.svg b/src/static/icons/black_count.svg
new file mode 100644
index 0000000..7122e62
--- /dev/null
+++ b/src/static/icons/black_count.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons/checkmark-circle.svg b/src/static/icons/checkmark-circle.svg
new file mode 100644
index 0000000..d16c84e
--- /dev/null
+++ b/src/static/icons/checkmark-circle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons/close-circle.svg b/src/static/icons/close-circle.svg
new file mode 100644
index 0000000..55c1ffe
--- /dev/null
+++ b/src/static/icons/close-circle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons/close-circle2.svg b/src/static/icons/close-circle2.svg
new file mode 100644
index 0000000..48be751
--- /dev/null
+++ b/src/static/icons/close-circle2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons/close.svg b/src/static/icons/close.svg
new file mode 100644
index 0000000..e6a2272
--- /dev/null
+++ b/src/static/icons/close.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons/data-checkbox.png b/src/static/icons/data-checkbox.png
new file mode 100644
index 0000000..748bdcb
Binary files /dev/null and b/src/static/icons/data-checkbox.png differ
diff --git a/src/static/icons/error-circle.svg b/src/static/icons/error-circle.svg
new file mode 100644
index 0000000..effaa05
--- /dev/null
+++ b/src/static/icons/error-circle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons/icon_customer.svg b/src/static/icons/icon_customer.svg
new file mode 100644
index 0000000..1ec2604
--- /dev/null
+++ b/src/static/icons/icon_customer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons/icon_date.svg b/src/static/icons/icon_date.svg
new file mode 100644
index 0000000..fd7b17c
--- /dev/null
+++ b/src/static/icons/icon_date.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons/icon_eye-fill.svg b/src/static/icons/icon_eye-fill.svg
new file mode 100644
index 0000000..6cabb84
--- /dev/null
+++ b/src/static/icons/icon_eye-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons/icon_eye-off-outline.svg b/src/static/icons/icon_eye-off-outline.svg
new file mode 100644
index 0000000..a99c7e5
--- /dev/null
+++ b/src/static/icons/icon_eye-off-outline.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons/icon_filter.svg b/src/static/icons/icon_filter.svg
new file mode 100644
index 0000000..a916a83
--- /dev/null
+++ b/src/static/icons/icon_filter.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons/iconfont.ttf b/src/static/icons/iconfont.ttf
new file mode 100644
index 0000000..d9c6e1a
Binary files /dev/null and b/src/static/icons/iconfont.ttf differ
diff --git a/src/static/icons/icons_camera.svg b/src/static/icons/icons_camera.svg
new file mode 100644
index 0000000..4c05bd8
--- /dev/null
+++ b/src/static/icons/icons_camera.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons/icons_close-circle.svg b/src/static/icons/icons_close-circle.svg
new file mode 100644
index 0000000..01bb878
--- /dev/null
+++ b/src/static/icons/icons_close-circle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons/icons_close.svg b/src/static/icons/icons_close.svg
new file mode 100644
index 0000000..5574d0b
--- /dev/null
+++ b/src/static/icons/icons_close.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons/icons_edit.svg b/src/static/icons/icons_edit.svg
new file mode 100644
index 0000000..e81fde4
--- /dev/null
+++ b/src/static/icons/icons_edit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons/icons_scan_close.svg b/src/static/icons/icons_scan_close.svg
new file mode 100644
index 0000000..15a32b8
--- /dev/null
+++ b/src/static/icons/icons_scan_close.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons/light_count.svg b/src/static/icons/light_count.svg
new file mode 100644
index 0000000..0e4b9ab
--- /dev/null
+++ b/src/static/icons/light_count.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons/plus.svg b/src/static/icons/plus.svg
new file mode 100644
index 0000000..d8c2ef6
--- /dev/null
+++ b/src/static/icons/plus.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons/question-circle.svg b/src/static/icons/question-circle.svg
new file mode 100644
index 0000000..1829a60
--- /dev/null
+++ b/src/static/icons/question-circle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons/search.svg b/src/static/icons/search.svg
new file mode 100644
index 0000000..0de882b
--- /dev/null
+++ b/src/static/icons/search.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons/warning.svg b/src/static/icons/warning.svg
new file mode 100644
index 0000000..a517020
--- /dev/null
+++ b/src/static/icons/warning.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons_ui/default_blank.png b/src/static/icons_ui/default_blank.png
new file mode 100644
index 0000000..a9f0fda
Binary files /dev/null and b/src/static/icons_ui/default_blank.png differ
diff --git a/src/static/icons_ui/default_data.png b/src/static/icons_ui/default_data.png
new file mode 100644
index 0000000..939913a
Binary files /dev/null and b/src/static/icons_ui/default_data.png differ
diff --git a/src/static/icons_ui/default_notpassed.png b/src/static/icons_ui/default_notpassed.png
new file mode 100644
index 0000000..b78385b
Binary files /dev/null and b/src/static/icons_ui/default_notpassed.png differ
diff --git a/src/static/icons_ui/icon_add.svg b/src/static/icons_ui/icon_add.svg
new file mode 100644
index 0000000..5edc037
--- /dev/null
+++ b/src/static/icons_ui/icon_add.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/static/icons_ui/icon_apply_num.svg b/src/static/icons_ui/icon_apply_num.svg
new file mode 100644
index 0000000..9c098c4
--- /dev/null
+++ b/src/static/icons_ui/icon_apply_num.svg
@@ -0,0 +1,13 @@
+
diff --git a/src/static/icons_ui/icon_asn.svg b/src/static/icons_ui/icon_asn.svg
new file mode 100644
index 0000000..e1ab37d
--- /dev/null
+++ b/src/static/icons_ui/icon_asn.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/static/icons_ui/icon_avn.svg b/src/static/icons_ui/icon_avn.svg
new file mode 100644
index 0000000..d2694bc
--- /dev/null
+++ b/src/static/icons_ui/icon_avn.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/static/icons_ui/icon_buy_num.svg b/src/static/icons_ui/icon_buy_num.svg
new file mode 100644
index 0000000..9a6f363
--- /dev/null
+++ b/src/static/icons_ui/icon_buy_num.svg
@@ -0,0 +1,13 @@
+
diff --git a/src/static/icons_ui/icon_camera_black.svg b/src/static/icons_ui/icon_camera_black.svg
new file mode 100644
index 0000000..94c440c
--- /dev/null
+++ b/src/static/icons_ui/icon_camera_black.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/static/icons_ui/icon_camera_white.svg b/src/static/icons_ui/icon_camera_white.svg
new file mode 100644
index 0000000..8bdb5dc
--- /dev/null
+++ b/src/static/icons_ui/icon_camera_white.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/static/icons_ui/icon_close.svg b/src/static/icons_ui/icon_close.svg
new file mode 100644
index 0000000..7c0e9dd
--- /dev/null
+++ b/src/static/icons_ui/icon_close.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons_ui/icon_customer.svg b/src/static/icons_ui/icon_customer.svg
new file mode 100644
index 0000000..ced7ba7
--- /dev/null
+++ b/src/static/icons_ui/icon_customer.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/static/icons_ui/icon_date.svg b/src/static/icons_ui/icon_date.svg
new file mode 100644
index 0000000..de352cd
--- /dev/null
+++ b/src/static/icons_ui/icon_date.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/static/icons_ui/icon_down.svg b/src/static/icons_ui/icon_down.svg
new file mode 100644
index 0000000..95a4c41
--- /dev/null
+++ b/src/static/icons_ui/icon_down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons_ui/icon_erp.svg b/src/static/icons_ui/icon_erp.svg
new file mode 100644
index 0000000..385359d
--- /dev/null
+++ b/src/static/icons_ui/icon_erp.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/static/icons_ui/icon_form.svg b/src/static/icons_ui/icon_form.svg
new file mode 100644
index 0000000..d6fc9f2
--- /dev/null
+++ b/src/static/icons_ui/icon_form.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/static/icons_ui/icon_kw.svg b/src/static/icons_ui/icon_kw.svg
new file mode 100644
index 0000000..54f3ffc
--- /dev/null
+++ b/src/static/icons_ui/icon_kw.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/static/icons_ui/icon_kw_blue.svg b/src/static/icons_ui/icon_kw_blue.svg
new file mode 100644
index 0000000..23f200d
--- /dev/null
+++ b/src/static/icons_ui/icon_kw_blue.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/static/icons_ui/icon_kw_use.svg b/src/static/icons_ui/icon_kw_use.svg
new file mode 100644
index 0000000..f0f037a
--- /dev/null
+++ b/src/static/icons_ui/icon_kw_use.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/static/icons_ui/icon_login_password.svg b/src/static/icons_ui/icon_login_password.svg
new file mode 100644
index 0000000..4ece043
--- /dev/null
+++ b/src/static/icons_ui/icon_login_password.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/static/icons_ui/icon_login_user.svg b/src/static/icons_ui/icon_login_user.svg
new file mode 100644
index 0000000..a628595
--- /dev/null
+++ b/src/static/icons_ui/icon_login_user.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/static/icons_ui/icon_notpass.svg b/src/static/icons_ui/icon_notpass.svg
new file mode 100644
index 0000000..9c4ea07
--- /dev/null
+++ b/src/static/icons_ui/icon_notpass.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/static/icons_ui/icon_num.svg b/src/static/icons_ui/icon_num.svg
new file mode 100644
index 0000000..75ba510
--- /dev/null
+++ b/src/static/icons_ui/icon_num.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/static/icons_ui/icon_passed.svg b/src/static/icons_ui/icon_passed.svg
new file mode 100644
index 0000000..5a06471
--- /dev/null
+++ b/src/static/icons_ui/icon_passed.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/static/icons_ui/icon_pc.svg b/src/static/icons_ui/icon_pc.svg
new file mode 100644
index 0000000..95698a0
--- /dev/null
+++ b/src/static/icons_ui/icon_pc.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/static/icons_ui/icon_ponumber.svg b/src/static/icons_ui/icon_ponumber.svg
new file mode 100644
index 0000000..3f1e82d
--- /dev/null
+++ b/src/static/icons_ui/icon_ponumber.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/static/icons_ui/icon_prod_line.svg b/src/static/icons_ui/icon_prod_line.svg
new file mode 100644
index 0000000..eabccd5
--- /dev/null
+++ b/src/static/icons_ui/icon_prod_line.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/static/icons_ui/icon_qiju_end.svg b/src/static/icons_ui/icon_qiju_end.svg
new file mode 100644
index 0000000..b1780e4
--- /dev/null
+++ b/src/static/icons_ui/icon_qiju_end.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/static/icons_ui/icon_qiju_num.svg b/src/static/icons_ui/icon_qiju_num.svg
new file mode 100644
index 0000000..3879b8e
--- /dev/null
+++ b/src/static/icons_ui/icon_qiju_num.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/static/icons_ui/icon_qiju_start.svg b/src/static/icons_ui/icon_qiju_start.svg
new file mode 100644
index 0000000..d2b3dc4
--- /dev/null
+++ b/src/static/icons_ui/icon_qiju_start.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/static/icons_ui/icon_return_num.svg b/src/static/icons_ui/icon_return_num.svg
new file mode 100644
index 0000000..5677a55
--- /dev/null
+++ b/src/static/icons_ui/icon_return_num.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/static/icons_ui/icon_scan_white.svg b/src/static/icons_ui/icon_scan_white.svg
new file mode 100644
index 0000000..a661468
--- /dev/null
+++ b/src/static/icons_ui/icon_scan_white.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/static/icons_ui/icon_send_request.svg b/src/static/icons_ui/icon_send_request.svg
new file mode 100644
index 0000000..f352b54
--- /dev/null
+++ b/src/static/icons_ui/icon_send_request.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/static/icons_ui/icon_senditem.svg b/src/static/icons_ui/icon_senditem.svg
new file mode 100644
index 0000000..2f8404b
--- /dev/null
+++ b/src/static/icons_ui/icon_senditem.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/static/icons_ui/icon_supplier.svg b/src/static/icons_ui/icon_supplier.svg
new file mode 100644
index 0000000..f0991f8
--- /dev/null
+++ b/src/static/icons_ui/icon_supplier.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/static/icons_ui/icon_take_photo.svg b/src/static/icons_ui/icon_take_photo.svg
new file mode 100644
index 0000000..e6421d3
--- /dev/null
+++ b/src/static/icons_ui/icon_take_photo.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/static/icons_ui/icon_tasknum.svg b/src/static/icons_ui/icon_tasknum.svg
new file mode 100644
index 0000000..247dbf2
--- /dev/null
+++ b/src/static/icons_ui/icon_tasknum.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/static/icons_ui/icon_tenant.svg b/src/static/icons_ui/icon_tenant.svg
new file mode 100644
index 0000000..7707804
--- /dev/null
+++ b/src/static/icons_ui/icon_tenant.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/icons_ui/icon_time.svg b/src/static/icons_ui/icon_time.svg
new file mode 100644
index 0000000..a706317
--- /dev/null
+++ b/src/static/icons_ui/icon_time.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/static/icons_ui/icon_tm.svg b/src/static/icons_ui/icon_tm.svg
new file mode 100644
index 0000000..669bfcb
--- /dev/null
+++ b/src/static/icons_ui/icon_tm.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/static/icons_ui/icon_xm.svg b/src/static/icons_ui/icon_xm.svg
new file mode 100644
index 0000000..80425fc
--- /dev/null
+++ b/src/static/icons_ui/icon_xm.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/static/icons_ui/icon_xm_blue.svg b/src/static/icons_ui/icon_xm_blue.svg
new file mode 100644
index 0000000..468012f
--- /dev/null
+++ b/src/static/icons_ui/icon_xm_blue.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/static/icons_ui/icons_common_recceipt.svg b/src/static/icons_ui/icons_common_recceipt.svg
new file mode 100644
index 0000000..78ee356
--- /dev/null
+++ b/src/static/icons_ui/icons_common_recceipt.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/static/icons_ui/icons_common_sjadd.svg b/src/static/icons_ui/icons_common_sjadd.svg
new file mode 100644
index 0000000..2f67b51
--- /dev/null
+++ b/src/static/icons_ui/icons_common_sjadd.svg
@@ -0,0 +1,9 @@
+
diff --git a/src/static/icons_ui/label_scx.svg b/src/static/icons_ui/label_scx.svg
new file mode 100644
index 0000000..31d0882
--- /dev/null
+++ b/src/static/icons_ui/label_scx.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/static/icons_ui/login_bg.png b/src/static/icons_ui/login_bg.png
new file mode 100644
index 0000000..a062de1
Binary files /dev/null and b/src/static/icons_ui/login_bg.png differ
diff --git a/src/static/icons_ui/popup_bot_bg.png b/src/static/icons_ui/popup_bot_bg.png
new file mode 100644
index 0000000..e024500
Binary files /dev/null and b/src/static/icons_ui/popup_bot_bg.png differ
diff --git a/src/static/images/message.svg b/src/static/images/message.svg
new file mode 100644
index 0000000..28380e5
--- /dev/null
+++ b/src/static/images/message.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/static/images/profile.jpg b/src/static/images/profile.jpg
new file mode 100644
index 0000000..b3a940b
Binary files /dev/null and b/src/static/images/profile.jpg differ
diff --git a/src/static/login.png b/src/static/login.png
new file mode 100644
index 0000000..3cc9c2f
Binary files /dev/null and b/src/static/login.png differ
diff --git a/src/static/logo.png b/src/static/logo.png
new file mode 100644
index 0000000..b5771e2
Binary files /dev/null and b/src/static/logo.png differ
diff --git a/src/static/menus/bind_pallet.svg b/src/static/menus/bind_pallet.svg
new file mode 100644
index 0000000..b2f3cd5
--- /dev/null
+++ b/src/static/menus/bind_pallet.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/count.svg b/src/static/menus/count.svg
new file mode 100644
index 0000000..12ee9bb
--- /dev/null
+++ b/src/static/menus/count.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/customer_return.svg b/src/static/menus/customer_return.svg
new file mode 100644
index 0000000..4c7f32c
--- /dev/null
+++ b/src/static/menus/customer_return.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/deliver.svg b/src/static/menus/deliver.svg
new file mode 100644
index 0000000..5148af0
--- /dev/null
+++ b/src/static/menus/deliver.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/hold_to_ok.svg b/src/static/menus/hold_to_ok.svg
new file mode 100644
index 0000000..bb22391
--- /dev/null
+++ b/src/static/menus/hold_to_ok.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/hold_to_scrap.svg b/src/static/menus/hold_to_scrap.svg
new file mode 100644
index 0000000..6e46345
--- /dev/null
+++ b/src/static/menus/hold_to_scrap.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/inspect.svg b/src/static/menus/inspect.svg
new file mode 100644
index 0000000..a18cd65
--- /dev/null
+++ b/src/static/menus/inspect.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/inventory_move.svg b/src/static/menus/inventory_move.svg
new file mode 100644
index 0000000..e310f68
--- /dev/null
+++ b/src/static/menus/inventory_move.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/issue.svg b/src/static/menus/issue.svg
new file mode 100644
index 0000000..3222d1a
--- /dev/null
+++ b/src/static/menus/issue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/menu_search_lj.svg b/src/static/menus/menu_search_lj.svg
new file mode 100644
index 0000000..fb40fa7
--- /dev/null
+++ b/src/static/menus/menu_search_lj.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/static/menus/merge_package.svg b/src/static/menus/merge_package.svg
new file mode 100644
index 0000000..b2d27ad
--- /dev/null
+++ b/src/static/menus/merge_package.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/ok_to_hold.svg b/src/static/menus/ok_to_hold.svg
new file mode 100644
index 0000000..4f5d182
--- /dev/null
+++ b/src/static/menus/ok_to_hold.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/ok_to_scrap.svg b/src/static/menus/ok_to_scrap.svg
new file mode 100644
index 0000000..1dee036
--- /dev/null
+++ b/src/static/menus/ok_to_scrap.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/over_package.svg b/src/static/menus/over_package.svg
new file mode 100644
index 0000000..7a3c203
--- /dev/null
+++ b/src/static/menus/over_package.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/product_dismantle.svg b/src/static/menus/product_dismantle.svg
new file mode 100644
index 0000000..26efa1f
--- /dev/null
+++ b/src/static/menus/product_dismantle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/product_putaway.svg b/src/static/menus/product_putaway.svg
new file mode 100644
index 0000000..e14ec51
--- /dev/null
+++ b/src/static/menus/product_putaway.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/product_receipt.svg b/src/static/menus/product_receipt.svg
new file mode 100644
index 0000000..bb318a2
--- /dev/null
+++ b/src/static/menus/product_receipt.svg
@@ -0,0 +1,5 @@
+
+
+
\ No newline at end of file
diff --git a/src/static/menus/production_receipt.svg b/src/static/menus/production_receipt.svg
new file mode 100644
index 0000000..bb318a2
--- /dev/null
+++ b/src/static/menus/production_receipt.svg
@@ -0,0 +1,5 @@
+
+
+
\ No newline at end of file
diff --git a/src/static/menus/production_return.svg b/src/static/menus/production_return.svg
new file mode 100644
index 0000000..86ab315
--- /dev/null
+++ b/src/static/menus/production_return.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/purchase_receipt.svg b/src/static/menus/purchase_receipt.svg
new file mode 100644
index 0000000..b2d972f
--- /dev/null
+++ b/src/static/menus/purchase_receipt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/purchase_return.svg b/src/static/menus/purchase_return.svg
new file mode 100644
index 0000000..1dcb2cf
--- /dev/null
+++ b/src/static/menus/purchase_return.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/putaway.svg b/src/static/menus/putaway.svg
new file mode 100644
index 0000000..aeafb4f
--- /dev/null
+++ b/src/static/menus/putaway.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/query_container.svg b/src/static/menus/query_container.svg
new file mode 100644
index 0000000..23278b2
--- /dev/null
+++ b/src/static/menus/query_container.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/query_inspect.svg b/src/static/menus/query_inspect.svg
new file mode 100644
index 0000000..cecb013
--- /dev/null
+++ b/src/static/menus/query_inspect.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/query_issue_request.svg b/src/static/menus/query_issue_request.svg
new file mode 100644
index 0000000..112a70d
--- /dev/null
+++ b/src/static/menus/query_issue_request.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/query_item.svg b/src/static/menus/query_item.svg
new file mode 100644
index 0000000..bdbb713
--- /dev/null
+++ b/src/static/menus/query_item.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/query_location.svg b/src/static/menus/query_location.svg
new file mode 100644
index 0000000..3b1587a
--- /dev/null
+++ b/src/static/menus/query_location.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/query_supplier_deliver.svg b/src/static/menus/query_supplier_deliver.svg
new file mode 100644
index 0000000..b100017
--- /dev/null
+++ b/src/static/menus/query_supplier_deliver.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/repleinsh.svg b/src/static/menus/repleinsh.svg
new file mode 100644
index 0000000..afaf5f9
--- /dev/null
+++ b/src/static/menus/repleinsh.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/return_to_hold.svg b/src/static/menus/return_to_hold.svg
new file mode 100644
index 0000000..9faa33d
--- /dev/null
+++ b/src/static/menus/return_to_hold.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/return_to_store.svg b/src/static/menus/return_to_store.svg
new file mode 100644
index 0000000..71349db
--- /dev/null
+++ b/src/static/menus/return_to_store.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/scrap.svg b/src/static/menus/scrap.svg
new file mode 100644
index 0000000..d17ef49
--- /dev/null
+++ b/src/static/menus/scrap.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/scrap_to_hold.svg b/src/static/menus/scrap_to_hold.svg
new file mode 100644
index 0000000..92777a5
--- /dev/null
+++ b/src/static/menus/scrap_to_hold.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/split_package.svg b/src/static/menus/split_package.svg
new file mode 100644
index 0000000..5a4b0a3
--- /dev/null
+++ b/src/static/menus/split_package.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/transfer_deliver.svg b/src/static/menus/transfer_deliver.svg
new file mode 100644
index 0000000..acd90f7
--- /dev/null
+++ b/src/static/menus/transfer_deliver.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/transfer_receipt.svg b/src/static/menus/transfer_receipt.svg
new file mode 100644
index 0000000..007cc6d
--- /dev/null
+++ b/src/static/menus/transfer_receipt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/unbind_pallet.svg b/src/static/menus/unbind_pallet.svg
new file mode 100644
index 0000000..2849d84
--- /dev/null
+++ b/src/static/menus/unbind_pallet.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/unplanned_issue.svg b/src/static/menus/unplanned_issue.svg
new file mode 100644
index 0000000..1eb8765
--- /dev/null
+++ b/src/static/menus/unplanned_issue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/menus/unplanned_receipt.svg b/src/static/menus/unplanned_receipt.svg
new file mode 100644
index 0000000..29dc3a1
--- /dev/null
+++ b/src/static/menus/unplanned_receipt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/no_more.png b/src/static/no_more.png
new file mode 100644
index 0000000..8bca5fe
Binary files /dev/null and b/src/static/no_more.png differ
diff --git a/src/static/refresher_loading.gif b/src/static/refresher_loading.gif
new file mode 100644
index 0000000..1ee754f
Binary files /dev/null and b/src/static/refresher_loading.gif differ
diff --git a/src/static/scss/colorui.css b/src/static/scss/colorui.css
new file mode 100644
index 0000000..fade3b2
--- /dev/null
+++ b/src/static/scss/colorui.css
@@ -0,0 +1,3912 @@
+/*
+ ColorUi for uniApp v2.1.6 | by 文晓港 2019-05-31 10:44:24
+ 仅供学习交流,如作它用所承受的法律责任一概与作者无关
+
+ *使用ColorUi开发扩展与插件时,请注明基于ColorUi开发
+
+ (QQ交流群:240787041)
+*/
+
+/* ==================
+ 初始化
+ ==================== */
+body {
+ background-color: #f1f1f1;
+ font-size: 28upx;
+ color: #333333;
+ font-family: Helvetica Neue, Helvetica, sans-serif;
+}
+
+view,
+scroll-view,
+swiper,
+button,
+input,
+textarea,
+label,
+navigator,
+image {
+ box-sizing: border-box;
+}
+
+.round {
+ border-radius: 5000upx;
+}
+
+.radius {
+ border-radius: 6upx;
+}
+
+/* ==================
+ 图片
+ ==================== */
+
+image {
+ max-width: 100%;
+ display: inline-block;
+ position: relative;
+ z-index: 0;
+}
+
+image.loading::before {
+ content: "";
+ background-color: #f5f5f5;
+ display: block;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ z-index: -2;
+}
+
+image.loading::after {
+ content: "\e7f1";
+ font-family: "cuIcon";
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 32upx;
+ height: 32upx;
+ line-height: 32upx;
+ right: 0;
+ bottom: 0;
+ z-index: -1;
+ font-size: 32upx;
+ margin: auto;
+ color: #ccc;
+ -webkit-animation: cuIcon-spin 2s infinite linear;
+ animation: cuIcon-spin 2s infinite linear;
+ display: block;
+}
+
+.response {
+ width: 100%;
+}
+
+/* ==================
+ 开关
+ ==================== */
+
+switch,
+checkbox,
+radio {
+ position: relative;
+}
+
+switch::after,
+switch::before {
+ font-family: "cuIcon";
+ content: "\e645";
+ position: absolute;
+ color: #ffffff !important;
+ top: 0%;
+ left: 0upx;
+ font-size: 26upx;
+ line-height: 26px;
+ width: 50%;
+ text-align: center;
+ pointer-events: none;
+ transform: scale(0, 0);
+ transition: all 0.3s ease-in-out 0s;
+ z-index: 9;
+ bottom: 0;
+ height: 26px;
+ margin: auto;
+}
+
+switch::before {
+ content: "\e646";
+ right: 0;
+ transform: scale(1, 1);
+ left: auto;
+}
+
+switch[checked]::after,
+switch.checked::after {
+ transform: scale(1, 1);
+}
+
+switch[checked]::before,
+switch.checked::before {
+ transform: scale(0, 0);
+}
+
+/* #ifndef MP-ALIPAY */
+radio::before,
+checkbox::before {
+ font-family: "cuIcon";
+ content: "\e645";
+ position: absolute;
+ color: #ffffff !important;
+ top: 50%;
+ margin-top: -8px;
+ right: 5px;
+ font-size: 32upx;
+ line-height: 16px;
+ pointer-events: none;
+ transform: scale(1, 1);
+ transition: all 0.3s ease-in-out 0s;
+ z-index: 9;
+}
+
+radio .wx-radio-input,
+checkbox .wx-checkbox-input,
+radio .uni-radio-input,
+checkbox .uni-checkbox-input {
+ margin: 0;
+ width: 24px;
+ height: 24px;
+}
+
+checkbox.round .wx-checkbox-input,
+checkbox.round .uni-checkbox-input {
+ border-radius: 100upx;
+}
+
+/* #endif */
+
+switch[checked]::before {
+ transform: scale(0, 0);
+}
+
+switch .wx-switch-input,
+switch .uni-switch-input {
+ border: none;
+ padding: 0 24px;
+ width: 48px;
+ height: 26px;
+ margin: 0;
+ border-radius: 100upx;
+}
+
+switch .wx-switch-input:not([class*="bg-"]),
+switch .uni-switch-input:not([class*="bg-"]) {
+ background: #8799a3 !important;
+}
+
+switch .wx-switch-input::after,
+switch .uni-switch-input::after {
+ margin: auto;
+ width: 26px;
+ height: 26px;
+ border-radius: 100upx;
+ left: 0upx;
+ top: 0upx;
+ bottom: 0upx;
+ position: absolute;
+ transform: scale(0.9, 0.9);
+ transition: all 0.1s ease-in-out 0s;
+}
+
+switch .wx-switch-input.wx-switch-input-checked::after,
+switch .uni-switch-input.uni-switch-input-checked::after {
+ margin: auto;
+ left: 22px;
+ box-shadow: none;
+ transform: scale(0.9, 0.9);
+}
+
+radio-group {
+ display: inline-block;
+}
+
+
+
+switch.radius .wx-switch-input::after,
+switch.radius .wx-switch-input,
+switch.radius .wx-switch-input::before,
+switch.radius .uni-switch-input::after,
+switch.radius .uni-switch-input,
+switch.radius .uni-switch-input::before {
+ border-radius: 10upx;
+}
+
+switch .wx-switch-input::before,
+radio.radio::before,
+checkbox .wx-checkbox-input::before,
+radio .wx-radio-input::before,
+switch .uni-switch-input::before,
+radio.radio::before,
+checkbox .uni-checkbox-input::before,
+radio .uni-radio-input::before {
+ display: none;
+}
+
+radio.radio[checked]::after,
+radio.radio .uni-radio-input-checked::after {
+ content: "";
+ background-color: transparent;
+ display: block;
+ position: absolute;
+ width: 8px;
+ height: 8px;
+ z-index: 999;
+ top: 0upx;
+ left: 0upx;
+ right: 0;
+ bottom: 0;
+ margin: auto;
+ border-radius: 200upx;
+ /* #ifndef MP */
+ border: 7px solid #ffffff !important;
+ /* #endif */
+
+ /* #ifdef MP */
+ border: 8px solid #ffffff !important;
+ /* #endif */
+}
+
+.switch-sex::after {
+ content: "\e71c";
+}
+
+.switch-sex::before {
+ content: "\e71a";
+}
+
+.switch-sex .wx-switch-input,
+.switch-sex .uni-switch-input {
+ background: #e54d42 !important;
+ border-color: #e54d42 !important;
+}
+
+.switch-sex[checked] .wx-switch-input,
+.switch-sex.checked .uni-switch-input {
+ background: #0081ff !important;
+ border-color: #0081ff !important;
+}
+
+switch.red[checked] .wx-switch-input.wx-switch-input-checked,
+checkbox.red[checked] .wx-checkbox-input,
+radio.red[checked] .wx-radio-input,
+switch.red.checked .uni-switch-input.uni-switch-input-checked,
+checkbox.red.checked .uni-checkbox-input,
+radio.red.checked .uni-radio-input {
+ background-color: #e54d42 !important;
+ border-color: #e54d42 !important;
+ color: #ffffff !important;
+}
+
+switch.orange[checked] .wx-switch-input,
+checkbox.orange[checked] .wx-checkbox-input,
+radio.orange[checked] .wx-radio-input,
+switch.orange.checked .uni-switch-input,
+checkbox.orange.checked .uni-checkbox-input,
+radio.orange.checked .uni-radio-input {
+ background-color: #f37b1d !important;
+ border-color: #f37b1d !important;
+ color: #ffffff !important;
+}
+
+switch.yellow[checked] .wx-switch-input,
+checkbox.yellow[checked] .wx-checkbox-input,
+radio.yellow[checked] .wx-radio-input,
+switch.yellow.checked .uni-switch-input,
+checkbox.yellow.checked .uni-checkbox-input,
+radio.yellow.checked .uni-radio-input {
+ background-color: #fbbd08 !important;
+ border-color: #fbbd08 !important;
+ color: #333333 !important;
+}
+
+switch.olive[checked] .wx-switch-input,
+checkbox.olive[checked] .wx-checkbox-input,
+radio.olive[checked] .wx-radio-input,
+switch.olive.checked .uni-switch-input,
+checkbox.olive.checked .uni-checkbox-input,
+radio.olive.checked .uni-radio-input {
+ background-color: #8dc63f !important;
+ border-color: #8dc63f !important;
+ color: #ffffff !important;
+}
+
+switch.green[checked] .wx-switch-input,
+switch[checked] .wx-switch-input,
+checkbox.green[checked] .wx-checkbox-input,
+checkbox[checked] .wx-checkbox-input,
+radio.green[checked] .wx-radio-input,
+radio[checked] .wx-radio-input,
+switch.green.checked .uni-switch-input,
+switch.checked .uni-switch-input,
+checkbox.green.checked .uni-checkbox-input,
+checkbox.checked .uni-checkbox-input,
+radio.green.checked .uni-radio-input,
+radio.checked .uni-radio-input {
+ background-color: #39b54a !important;
+ border-color: #39b54a !important;
+ color: #ffffff !important;
+ border-color: #39B54A !important;
+}
+
+switch.cyan[checked] .wx-switch-input,
+checkbox.cyan[checked] .wx-checkbox-input,
+radio.cyan[checked] .wx-radio-input,
+switch.cyan.checked .uni-switch-input,
+checkbox.cyan.checked .uni-checkbox-input,
+radio.cyan.checked .uni-radio-input {
+ background-color: #1cbbb4 !important;
+ border-color: #1cbbb4 !important;
+ color: #ffffff !important;
+}
+
+switch.blue[checked] .wx-switch-input,
+checkbox.blue[checked] .wx-checkbox-input,
+radio.blue[checked] .wx-radio-input,
+switch.blue.checked .uni-switch-input,
+checkbox.blue.checked .uni-checkbox-input,
+radio.blue.checked .uni-radio-input {
+ background-color: #0081ff !important;
+ border-color: #0081ff !important;
+ color: #ffffff !important;
+}
+
+switch.purple[checked] .wx-switch-input,
+checkbox.purple[checked] .wx-checkbox-input,
+radio.purple[checked] .wx-radio-input,
+switch.purple.checked .uni-switch-input,
+checkbox.purple.checked .uni-checkbox-input,
+radio.purple.checked .uni-radio-input {
+ background-color: #6739b6 !important;
+ border-color: #6739b6 !important;
+ color: #ffffff !important;
+}
+
+switch.mauve[checked] .wx-switch-input,
+checkbox.mauve[checked] .wx-checkbox-input,
+radio.mauve[checked] .wx-radio-input,
+switch.mauve.checked .uni-switch-input,
+checkbox.mauve.checked .uni-checkbox-input,
+radio.mauve.checked .uni-radio-input {
+ background-color: #9c26b0 !important;
+ border-color: #9c26b0 !important;
+ color: #ffffff !important;
+}
+
+switch.pink[checked] .wx-switch-input,
+checkbox.pink[checked] .wx-checkbox-input,
+radio.pink[checked] .wx-radio-input,
+switch.pink.checked .uni-switch-input,
+checkbox.pink.checked .uni-checkbox-input,
+radio.pink.checked .uni-radio-input {
+ background-color: #e03997 !important;
+ border-color: #e03997 !important;
+ color: #ffffff !important;
+}
+
+switch.brown[checked] .wx-switch-input,
+checkbox.brown[checked] .wx-checkbox-input,
+radio.brown[checked] .wx-radio-input,
+switch.brown.checked .uni-switch-input,
+checkbox.brown.checked .uni-checkbox-input,
+radio.brown.checked .uni-radio-input {
+ background-color: #a5673f !important;
+ border-color: #a5673f !important;
+ color: #ffffff !important;
+}
+
+switch.grey[checked] .wx-switch-input,
+checkbox.grey[checked] .wx-checkbox-input,
+radio.grey[checked] .wx-radio-input,
+switch.grey.checked .uni-switch-input,
+checkbox.grey.checked .uni-checkbox-input,
+radio.grey.checked .uni-radio-input {
+ background-color: #8799a3 !important;
+ border-color: #8799a3 !important;
+ color: #ffffff !important;
+}
+
+switch.gray[checked] .wx-switch-input,
+checkbox.gray[checked] .wx-checkbox-input,
+radio.gray[checked] .wx-radio-input,
+switch.gray.checked .uni-switch-input,
+checkbox.gray.checked .uni-checkbox-input,
+radio.gray.checked .uni-radio-input {
+ background-color: #f0f0f0 !important;
+ border-color: #f0f0f0 !important;
+ color: #333333 !important;
+}
+
+switch.black[checked] .wx-switch-input,
+checkbox.black[checked] .wx-checkbox-input,
+radio.black[checked] .wx-radio-input,
+switch.black.checked .uni-switch-input,
+checkbox.black.checked .uni-checkbox-input,
+radio.black.checked .uni-radio-input {
+ background-color: #333333 !important;
+ border-color: #333333 !important;
+ color: #ffffff !important;
+}
+
+switch.white[checked] .wx-switch-input,
+checkbox.white[checked] .wx-checkbox-input,
+radio.white[checked] .wx-radio-input,
+switch.white.checked .uni-switch-input,
+checkbox.white.checked .uni-checkbox-input,
+radio.white.checked .uni-radio-input {
+ background-color: #ffffff !important;
+ border-color: #ffffff !important;
+ color: #333333 !important;
+}
+
+/* ==================
+ 边框
+ ==================== */
+
+/* -- 实线 -- */
+
+.solid,
+.solid-top,
+.solid-right,
+.solid-bottom,
+.solid-left,
+.solids,
+.solids-top,
+.solids-right,
+.solids-bottom,
+.solids-left,
+.dashed,
+.dashed-top,
+.dashed-right,
+.dashed-bottom,
+.dashed-left {
+ position: relative;
+}
+
+.solid::after,
+.solid-top::after,
+.solid-right::after,
+.solid-bottom::after,
+.solid-left::after,
+.solids::after,
+.solids-top::after,
+.solids-right::after,
+.solids-bottom::after,
+.solids-left::after,
+.dashed::after,
+.dashed-top::after,
+.dashed-right::after,
+.dashed-bottom::after,
+.dashed-left::after {
+ content: " ";
+ width: 200%;
+ height: 200%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ border-radius: inherit;
+ transform: scale(0.5);
+ transform-origin: 0 0;
+ pointer-events: none;
+ box-sizing: border-box;
+}
+
+.solid::after {
+ border: 1upx solid rgba(0, 0, 0, 0.1);
+}
+
+.solid-top::after {
+ border-top: 1upx solid rgba(0, 0, 0, 0.1);
+}
+
+.solid-right::after {
+ border-right: 1upx solid rgba(0, 0, 0, 0.1);
+}
+
+.solid-bottom::after {
+ border-bottom: 1upx solid rgba(0, 0, 0, 0.1);
+}
+
+.solid-left::after {
+ border-left: 1upx solid rgba(0, 0, 0, 0.1);
+}
+
+.solids::after {
+ border: 8upx solid #eee;
+}
+
+.solids-top::after {
+ border-top: 8upx solid #eee;
+}
+
+.solids-right::after {
+ border-right: 8upx solid #eee;
+}
+
+.solids-bottom::after {
+ border-bottom: 8upx solid #eee;
+}
+
+.solids-left::after {
+ border-left: 8upx solid #eee;
+}
+
+/* -- 虚线 -- */
+
+.dashed::after {
+ border: 1upx dashed #ddd;
+}
+
+.dashed-top::after {
+ border-top: 1upx dashed #ddd;
+}
+
+.dashed-right::after {
+ border-right: 1upx dashed #ddd;
+}
+
+.dashed-bottom::after {
+ border-bottom: 1upx dashed #ddd;
+}
+
+.dashed-left::after {
+ border-left: 1upx dashed #ddd;
+}
+
+/* -- 阴影 -- */
+
+.shadow[class*='white'] {
+ --ShadowSize: 0 1upx 6upx;
+}
+
+.shadow-lg {
+ --ShadowSize: 0upx 40upx 100upx 0upx;
+}
+
+.shadow-warp {
+ position: relative;
+ box-shadow: 0 0 10upx rgba(0, 0, 0, 0.1);
+}
+
+.shadow-warp:before,
+.shadow-warp:after {
+ position: absolute;
+ content: "";
+ top: 20upx;
+ bottom: 30upx;
+ left: 20upx;
+ width: 50%;
+ box-shadow: 0 30upx 20upx rgba(0, 0, 0, 0.2);
+ transform: rotate(-3deg);
+ z-index: -1;
+}
+
+.shadow-warp:after {
+ right: 20upx;
+ left: auto;
+ transform: rotate(3deg);
+}
+
+.shadow-blur {
+ position: relative;
+}
+
+.shadow-blur::before {
+ content: "";
+ display: block;
+ background: inherit;
+ filter: blur(10upx);
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ top: 10upx;
+ left: 10upx;
+ z-index: -1;
+ opacity: 0.4;
+ transform-origin: 0 0;
+ border-radius: inherit;
+ transform: scale(1, 1);
+}
+
+/* ==================
+ 按钮
+ ==================== */
+
+.cu-btn {
+ position: relative;
+ border: 0upx;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ box-sizing: border-box;
+ padding: 0 30upx;
+ font-size: 28upx;
+ height: 64upx;
+ line-height: 1;
+ text-align: center;
+ text-decoration: none;
+ overflow: visible;
+ margin-left: initial;
+ transform: translate(0upx, 0upx);
+ margin-right: initial;
+}
+
+.cu-btn::after {
+ display: none;
+}
+
+.cu-btn:not([class*="bg-"]) {
+ background-color: #f0f0f0;
+}
+
+.cu-btn[class*="line"] {
+ background-color: transparent;
+}
+
+.cu-btn[class*="line"]::after {
+ content: " ";
+ display: block;
+ width: 200%;
+ height: 200%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ border: 1upx solid currentColor;
+ transform: scale(0.5);
+ transform-origin: 0 0;
+ box-sizing: border-box;
+ border-radius: 12upx;
+ z-index: 1;
+ pointer-events: none;
+}
+
+.cu-btn.round[class*="line"]::after {
+ border-radius: 1000upx;
+}
+
+.cu-btn[class*="lines"]::after {
+ border: 6upx solid currentColor;
+}
+
+.cu-btn[class*="bg-"]::after {
+ display: none;
+}
+
+.cu-btn.sm {
+ padding: 0 20upx;
+ font-size: 20upx;
+ height: 48upx;
+}
+
+.cu-btn.lg {
+ padding: 0 40upx;
+ font-size: 32upx;
+ height: 80upx;
+}
+
+.cu-btn.cuIcon.sm {
+ width: 48upx;
+ height: 48upx;
+}
+
+.cu-btn.cuIcon {
+ width: 64upx;
+ height: 64upx;
+ border-radius: 500upx;
+ padding: 0;
+}
+
+button.cuIcon.lg {
+ width: 80upx;
+ height: 80upx;
+}
+
+.cu-btn.shadow-blur::before {
+ top: 4upx;
+ left: 4upx;
+ filter: blur(6upx);
+ opacity: 0.6;
+}
+
+.cu-btn.button-hover {
+ transform: translate(1upx, 1upx);
+}
+
+.block {
+ display: block;
+}
+
+.cu-btn.block {
+ display: flex;
+}
+
+.cu-btn[disabled] {
+ opacity: 0.6;
+ color: #ffffff;
+}
+
+/* ==================
+ 徽章
+ ==================== */
+
+.cu-tag {
+ font-size: 24upx;
+ vertical-align: middle;
+ position: relative;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ box-sizing: border-box;
+ padding: 0upx 16upx;
+ height: 48upx;
+ font-family: Helvetica Neue, Helvetica, sans-serif;
+ white-space: nowrap;
+}
+
+.cu-tag:not([class*="bg"]):not([class*="line"]) {
+ background-color: #f1f1f1;
+}
+
+.cu-tag[class*="line-"]::after {
+ content: " ";
+ width: 200%;
+ height: 200%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ border: 1upx solid currentColor;
+ transform: scale(0.5);
+ transform-origin: 0 0;
+ box-sizing: border-box;
+ border-radius: inherit;
+ z-index: 1;
+ pointer-events: none;
+}
+
+.cu-tag.radius[class*="line"]::after {
+ border-radius: 12upx;
+}
+
+.cu-tag.round[class*="line"]::after {
+ border-radius: 1000upx;
+}
+
+.cu-tag[class*="line-"]::after {
+ border-radius: 0;
+}
+
+.cu-tag+.cu-tag {
+ margin-left: 10upx;
+}
+
+.cu-tag.sm {
+ font-size: 20upx;
+ padding: 0upx 12upx;
+ height: 32upx;
+}
+
+.cu-capsule {
+ display: inline-flex;
+ vertical-align: middle;
+}
+
+.cu-capsule+.cu-capsule {
+ margin-left: 10upx;
+}
+
+.cu-capsule .cu-tag {
+ margin: 0;
+}
+
+.cu-capsule .cu-tag[class*="line-"]:last-child::after {
+ border-left: 0upx solid transparent;
+}
+
+.cu-capsule .cu-tag[class*="line-"]:first-child::after {
+ border-right: 0upx solid transparent;
+}
+
+.cu-capsule.radius .cu-tag:first-child {
+ border-top-left-radius: 6upx;
+ border-bottom-left-radius: 6upx;
+}
+
+.cu-capsule.radius .cu-tag:last-child::after,
+.cu-capsule.radius .cu-tag[class*="line-"] {
+ border-top-right-radius: 12upx;
+ border-bottom-right-radius: 12upx;
+}
+
+.cu-capsule.round .cu-tag:first-child {
+ border-top-left-radius: 200upx;
+ border-bottom-left-radius: 200upx;
+ text-indent: 4upx;
+}
+
+.cu-capsule.round .cu-tag:last-child::after,
+.cu-capsule.round .cu-tag:last-child {
+ border-top-right-radius: 200upx;
+ border-bottom-right-radius: 200upx;
+ text-indent: -4upx;
+}
+
+.cu-tag.badge {
+ border-radius: 200upx;
+ position: absolute;
+ top: -10upx;
+ right: -10upx;
+ font-size: 20upx;
+ padding: 0upx 10upx;
+ height: 28upx;
+ color: #ffffff;
+}
+
+.cu-tag.badge:not([class*="bg-"]) {
+ background-color: #dd514c;
+}
+
+.cu-tag:empty:not([class*="cuIcon-"]) {
+ padding: 0upx;
+ width: 16upx;
+ height: 16upx;
+ top: -4upx;
+ right: -4upx;
+}
+
+.cu-tag[class*="cuIcon-"] {
+ width: 32upx;
+ height: 32upx;
+ top: -4upx;
+ right: -4upx;
+}
+
+/* ==================
+ 头像
+ ==================== */
+
+.cu-avatar {
+ font-variant: small-caps;
+ margin: 0;
+ padding: 0;
+ display: inline-flex;
+ text-align: center;
+ justify-content: center;
+ align-items: center;
+ background-color: #ccc;
+ color: #ffffff;
+ white-space: nowrap;
+ position: relative;
+ width: 64upx;
+ height: 64upx;
+ background-size: cover;
+ background-position: center;
+ vertical-align: middle;
+ font-size: 1.5em;
+}
+
+.cu-avatar.sm {
+ width: 48upx;
+ height: 48upx;
+ font-size: 1em;
+}
+
+.cu-avatar.lg {
+ width: 96upx;
+ height: 96upx;
+ font-size: 2em;
+}
+
+.cu-avatar.xl {
+ width: 128upx;
+ height: 128upx;
+ font-size: 2.5em;
+}
+
+.cu-avatar .avatar-text {
+ font-size: 0.4em;
+}
+
+.cu-avatar-group {
+ direction: rtl;
+ unicode-bidi: bidi-override;
+ padding: 0 10upx 0 40upx;
+ display: inline-block;
+}
+
+.cu-avatar-group .cu-avatar {
+ margin-left: -30upx;
+ border: 4upx solid #f1f1f1;
+ vertical-align: middle;
+}
+
+.cu-avatar-group .cu-avatar.sm {
+ margin-left: -20upx;
+ border: 1upx solid #f1f1f1;
+}
+
+/* ==================
+ 进度条
+ ==================== */
+
+.cu-progress {
+ overflow: hidden;
+ height: 28upx;
+ background-color: #ebeef5;
+ display: inline-flex;
+ align-items: center;
+ width: 100%;
+}
+
+.cu-progress+view,
+.cu-progress+text {
+ line-height: 1;
+}
+
+.cu-progress.xs {
+ height: 10upx;
+}
+
+.cu-progress.sm {
+ height: 20upx;
+}
+
+.cu-progress view {
+ width: 0;
+ height: 100%;
+ align-items: center;
+ display: flex;
+ justify-items: flex-end;
+ justify-content: space-around;
+ font-size: 20upx;
+ color: #ffffff;
+ transition: width 0.6s ease;
+}
+
+.cu-progress text {
+ align-items: center;
+ display: flex;
+ font-size: 20upx;
+ color: #333333;
+ text-indent: 10upx;
+}
+
+.cu-progress.text-progress {
+ padding-right: 60upx;
+}
+
+.cu-progress.striped view {
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-size: 72upx 72upx;
+}
+
+.cu-progress.active view {
+ animation: progress-stripes 2s linear infinite;
+}
+
+@keyframes progress-stripes {
+ from {
+ background-position: 72upx 0;
+ }
+
+ to {
+ background-position: 0 0;
+ }
+}
+
+/* ==================
+ 加载
+ ==================== */
+
+.cu-load {
+ display: block;
+ line-height: 3em;
+ text-align: center;
+}
+
+.cu-load::before {
+ font-family: "cuIcon";
+ display: inline-block;
+ margin-right: 6upx;
+}
+
+.cu-load.loading::before {
+ content: "\e67a";
+ animation: cuIcon-spin 2s infinite linear;
+}
+
+.cu-load.loading::after {
+ content: "加载中...";
+}
+
+.cu-load.over::before {
+ content: "\e64a";
+}
+
+.cu-load.over::after {
+ content: "没有更多了";
+}
+
+.cu-load.erro::before {
+ content: "\e658";
+}
+
+.cu-load.erro::after {
+ content: "加载失败";
+}
+
+.cu-load.load-cuIcon::before {
+ font-size: 32upx;
+}
+
+.cu-load.load-cuIcon::after {
+ display: none;
+}
+
+.cu-load.load-cuIcon.over {
+ display: none;
+}
+
+.cu-load.load-modal {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 140upx;
+ left: 0;
+ margin: auto;
+ width: 260upx;
+ height: 260upx;
+ background-color: #ffffff;
+ border-radius: 10upx;
+ box-shadow: 0 0 0upx 2000upx rgba(0, 0, 0, 0.5);
+ display: flex;
+ align-items: center;
+ flex-direction: column;
+ justify-content: center;
+ font-size: 28upx;
+ z-index: 9999;
+ line-height: 2.4em;
+}
+
+.cu-load.load-modal [class*="cuIcon-"] {
+ font-size: 60upx;
+}
+
+.cu-load.load-modal image {
+ width: 70upx;
+ height: 70upx;
+}
+
+.cu-load.load-modal::after {
+ content: "";
+ position: absolute;
+ background-color: #ffffff;
+ border-radius: 50%;
+ width: 200upx;
+ height: 200upx;
+ font-size: 10px;
+ border-top: 6upx solid rgba(0, 0, 0, 0.05);
+ border-right: 6upx solid rgba(0, 0, 0, 0.05);
+ border-bottom: 6upx solid rgba(0, 0, 0, 0.05);
+ border-left: 6upx solid #f37b1d;
+ animation: cuIcon-spin 1s infinite linear;
+ z-index: -1;
+}
+
+.load-progress {
+ pointer-events: none;
+ top: 0;
+ position: fixed;
+ width: 100%;
+ left: 0;
+ z-index: 2000;
+}
+
+.load-progress.hide {
+ display: none;
+}
+
+.load-progress .load-progress-bar {
+ position: relative;
+ width: 100%;
+ height: 4upx;
+ overflow: hidden;
+ transition: all 200ms ease 0s;
+}
+
+.load-progress .load-progress-spinner {
+ position: absolute;
+ top: 10upx;
+ right: 10upx;
+ z-index: 2000;
+ display: block;
+}
+
+.load-progress .load-progress-spinner::after {
+ content: "";
+ display: block;
+ width: 24upx;
+ height: 24upx;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ border: solid 4upx transparent;
+ border-top-color: inherit;
+ border-left-color: inherit;
+ border-radius: 50%;
+ -webkit-animation: load-progress-spinner 0.4s linear infinite;
+ animation: load-progress-spinner 0.4s linear infinite;
+}
+
+@-webkit-keyframes load-progress-spinner {
+ 0% {
+ -webkit-transform: rotate(0);
+ transform: rotate(0);
+ }
+
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+@keyframes load-progress-spinner {
+ 0% {
+ -webkit-transform: rotate(0);
+ transform: rotate(0);
+ }
+
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+/* ==================
+ 列表
+ ==================== */
+.grayscale {
+ filter: grayscale(1);
+}
+
+.cu-list+.cu-list {
+ margin-top: 30upx
+}
+
+.cu-list>.cu-item {
+ transition: all .6s ease-in-out 0s;
+ transform: translateX(0upx)
+}
+
+.cu-list>.cu-item.move-cur {
+ transform: translateX(-260upx)
+}
+
+.cu-list>.cu-item .move {
+ position: absolute;
+ right: 0;
+ display: flex;
+ width: 260upx;
+ height: 100%;
+ transform: translateX(100%)
+}
+
+.cu-list>.cu-item .move view {
+ display: flex;
+ flex: 1;
+ justify-content: center;
+ align-items: center
+}
+
+.cu-list.menu-avatar {
+ overflow: hidden;
+}
+
+.cu-list.menu-avatar>.cu-item {
+ position: relative;
+ display: flex;
+ padding-right: 10upx;
+ height: 140upx;
+ background-color: #ffffff;
+ justify-content: flex-end;
+ align-items: center
+}
+
+.cu-list.menu-avatar>.cu-item>.cu-avatar {
+ position: absolute;
+ left: 30upx
+}
+
+.cu-list.menu-avatar>.cu-item .flex .text-cut {
+ max-width: 510upx
+}
+
+.cu-list.menu-avatar>.cu-item .content {
+ position: absolute;
+ left: 146upx;
+ width: calc(100% - 96upx - 60upx - 120upx - 20upx);
+ line-height: 1.6em;
+}
+
+.cu-list.menu-avatar>.cu-item .content.flex-sub {
+ width: calc(100% - 96upx - 60upx - 20upx);
+}
+
+.cu-list.menu-avatar>.cu-item .content>view:first-child {
+ font-size: 30upx;
+ display: flex;
+ align-items: center
+}
+
+.cu-list.menu-avatar>.cu-item .content .cu-tag.sm {
+ display: inline-block;
+ margin-left: 10upx;
+ height: 28upx;
+ font-size: 16upx;
+ line-height: 32upx
+}
+
+.cu-list.menu-avatar>.cu-item .action {
+ width: 100upx;
+ text-align: center
+}
+
+.cu-list.menu-avatar>.cu-item .action view+view {
+ margin-top: 10upx
+}
+
+.cu-list.menu-avatar.comment>.cu-item .content {
+ position: relative;
+ left: 0;
+ width: auto;
+ flex: 1;
+}
+
+.cu-list.menu-avatar.comment>.cu-item {
+ padding: 30upx 30upx 30upx 120upx;
+ height: auto
+}
+
+.cu-list.menu-avatar.comment .cu-avatar {
+ align-self: flex-start
+}
+
+.cu-list.menu>.cu-item {
+ position: relative;
+ display: flex;
+ padding: 0 30upx;
+ min-height: 100upx;
+ background-color: #ffffff;
+ justify-content: space-between;
+ align-items: center
+}
+
+.cu-list.menu>.cu-item:last-child:after {
+ border: none
+}
+
+.cu-list.menu-avatar>.cu-item:after,
+.cu-list.menu>.cu-item:after {
+ position: absolute;
+ top: 0;
+ left: 0;
+ box-sizing: border-box;
+ width: 200%;
+ height: 200%;
+ border-bottom: 1upx solid #ddd;
+ border-radius: inherit;
+ content: " ";
+ transform: scale(.5);
+ transform-origin: 0 0;
+ pointer-events: none
+}
+
+.cu-list.menu>.cu-item.grayscale {
+ background-color: #f5f5f5
+}
+
+.cu-list.menu>.cu-item.cur {
+ background-color: #fcf7e9
+}
+
+.cu-list.menu>.cu-item.arrow {
+ padding-right: 90upx
+}
+
+.cu-list.menu>.cu-item.arrow:before {
+ position: absolute;
+ top: 0;
+ right: 30upx;
+ bottom: 0;
+ display: block;
+ margin: auto;
+ width: 30upx;
+ height: 30upx;
+ color: #8799a3;
+ content: "\e6a3";
+ text-align: center;
+ font-size: 34upx;
+ font-family: cuIcon;
+ line-height: 30upx
+}
+
+.cu-list.menu>.cu-item button.content {
+ padding: 0;
+ background-color: transparent;
+ justify-content: flex-start
+}
+
+.cu-list.menu>.cu-item button.content:after {
+ display: none
+}
+
+.cu-list.menu>.cu-item .cu-avatar-group .cu-avatar {
+ border-color: #ffffff
+}
+
+.cu-list.menu>.cu-item .content>view:first-child {
+ display: flex;
+ align-items: center
+}
+
+.cu-list.menu>.cu-item .content>text[class*=cuIcon] {
+ display: inline-block;
+ margin-right: 10upx;
+ width: 1.6em;
+ text-align: center
+}
+
+.cu-list.menu>.cu-item .content>image {
+ display: inline-block;
+ margin-right: 10upx;
+ width: 1.6em;
+ height: 1.6em;
+ vertical-align: middle
+}
+
+.cu-list.menu>.cu-item .content {
+ font-size: 30upx;
+ line-height: 1.6em;
+ flex: 1
+}
+
+.cu-list.menu>.cu-item .content .cu-tag.sm {
+ display: inline-block;
+ margin-left: 10upx;
+ height: 28upx;
+ font-size: 16upx;
+ line-height: 32upx
+}
+
+.cu-list.menu>.cu-item .action .cu-tag:empty {
+ right: 10upx
+}
+
+.cu-list.menu {
+ display: block;
+ overflow: hidden
+}
+
+.cu-list.menu.sm-border>.cu-item:after {
+ left: 30upx;
+ width: calc(200% - 120upx)
+}
+
+.cu-list.grid>.cu-item {
+ position: relative;
+ display: flex;
+ padding: 20upx 0 30upx;
+ transition-duration: 0s;
+ flex-direction: column
+}
+
+.cu-list.grid>.cu-item:after {
+ position: absolute;
+ top: 0;
+ left: 0;
+ box-sizing: border-box;
+ width: 200%;
+ height: 200%;
+ border-right: 1px solid rgba(0, 0, 0, .1);
+ border-bottom: 1px solid rgba(0, 0, 0, .1);
+ border-radius: inherit;
+ content: " ";
+ transform: scale(.5);
+ transform-origin: 0 0;
+ pointer-events: none
+}
+
+.cu-list.grid>.cu-item text {
+ display: block;
+ margin-top: 10upx;
+ color: #888;
+ font-size: 26upx;
+ line-height: 40upx
+}
+
+.cu-list.grid>.cu-item [class*=cuIcon] {
+ position: relative;
+ display: block;
+ margin-top: 20upx;
+ width: 100%;
+ font-size: 48upx
+}
+
+.cu-list.grid>.cu-item .cu-tag {
+ right: auto;
+ left: 50%;
+ margin-left: 20upx
+}
+
+.cu-list.grid {
+ background-color: #ffffff;
+ text-align: center
+}
+
+.cu-list.grid.no-border>.cu-item {
+ padding-top: 10upx;
+ padding-bottom: 20upx
+}
+
+.cu-list.grid.no-border>.cu-item:after {
+ border: none
+}
+
+.cu-list.grid.no-border {
+ padding: 20upx 10upx
+}
+
+.cu-list.grid.col-3>.cu-item:nth-child(3n):after,
+.cu-list.grid.col-4>.cu-item:nth-child(4n):after,
+.cu-list.grid.col-5>.cu-item:nth-child(5n):after {
+ border-right-width: 0
+}
+
+.cu-list.card-menu {
+ overflow: hidden;
+ margin-right: 30upx;
+ margin-left: 30upx;
+ border-radius: 20upx
+}
+
+
+/* ==================
+ 操作条
+ ==================== */
+
+.cu-bar {
+ display: flex;
+ position: relative;
+ align-items: center;
+ min-height: 100upx;
+ justify-content: space-between;
+}
+
+.cu-bar .action {
+ display: flex;
+ align-items: center;
+ height: 100%;
+ justify-content: center;
+ max-width: 100%;
+}
+
+.cu-bar .action.border-title {
+ position: relative;
+ top: -10upx;
+}
+
+.cu-bar .action.border-title text[class*="bg-"]:last-child {
+ position: absolute;
+ bottom: -0.5rem;
+ min-width: 2rem;
+ height: 6upx;
+ left: 0;
+}
+
+.cu-bar .action.sub-title {
+ position: relative;
+ top: -0.2rem;
+}
+
+.cu-bar .action.sub-title text {
+ position: relative;
+ z-index: 1;
+}
+
+.cu-bar .action.sub-title text[class*="bg-"]:last-child {
+ position: absolute;
+ display: inline-block;
+ bottom: -0.2rem;
+ border-radius: 6upx;
+ width: 100%;
+ height: 0.6rem;
+ left: 0.6rem;
+ opacity: 0.3;
+ z-index: 0;
+}
+
+.cu-bar .action.sub-title text[class*="text-"]:last-child {
+ position: absolute;
+ display: inline-block;
+ bottom: -0.7rem;
+ left: 0.5rem;
+ opacity: 0.2;
+ z-index: 0;
+ text-align: right;
+ font-weight: 900;
+ font-size: 36upx;
+}
+
+.cu-bar.justify-center .action.border-title text:last-child,
+.cu-bar.justify-center .action.sub-title text:last-child {
+ left: 0;
+ right: 0;
+ margin: auto;
+ text-align: center;
+}
+
+.cu-bar .action:first-child {
+ margin-left: 30upx;
+ font-size: 30upx;
+}
+
+.cu-bar .action text.text-cut {
+ text-align: left;
+ width: 100%;
+}
+
+.cu-bar .cu-avatar:first-child {
+ margin-left: 20upx;
+}
+
+.cu-bar .action:first-child>text[class*="cuIcon-"] {
+ margin-left: -0.3em;
+ margin-right: 0.3em;
+}
+
+.cu-bar .action:last-child {
+ margin-right: 30upx;
+}
+
+.cu-bar .action>text[class*="cuIcon-"],
+.cu-bar .action>view[class*="cuIcon-"] {
+ font-size: 36upx;
+}
+
+.cu-bar .action>text[class*="cuIcon-"]+text[class*="cuIcon-"] {
+ margin-left: 0.5em;
+}
+
+.cu-bar .content {
+ position: absolute;
+ text-align: center;
+ width: calc(100% - 340upx);
+ left: 0;
+ right: 0;
+ bottom: 0;
+ top: 0;
+ margin: auto;
+ height: 60upx;
+ font-size: 32upx;
+ line-height: 60upx;
+ cursor: none;
+ pointer-events: none;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+}
+
+.cu-bar.ios .content {
+ bottom: 7px;
+ height: 30px;
+ font-size: 32upx;
+ line-height: 30px;
+}
+
+.cu-bar.btn-group {
+ justify-content: space-around;
+}
+
+.cu-bar.btn-group button {
+ padding: 20upx 32upx;
+}
+
+.cu-bar.btn-group button {
+ flex: 1;
+ margin: 0 20upx;
+ max-width: 50%;
+}
+
+.cu-bar .search-form {
+ background-color: #f5f5f5;
+ line-height: 64upx;
+ height: 64upx;
+ font-size: 24upx;
+ color: #333333;
+ flex: 1;
+ display: flex;
+ align-items: center;
+ margin: 0 30upx;
+}
+
+.cu-bar .search-form+.action {
+ margin-right: 30upx;
+}
+
+.cu-bar .search-form input {
+ flex: 1;
+ padding-right: 30upx;
+ height: 64upx;
+ line-height: 64upx;
+ font-size: 26upx;
+ background-color: transparent;
+}
+
+.cu-bar .search-form [class*="cuIcon-"] {
+ margin: 0 0.5em 0 0.8em;
+}
+
+.cu-bar .search-form [class*="cuIcon-"]::before {
+ top: 0upx;
+}
+
+.cu-bar.fixed,
+.nav.fixed {
+ position: fixed;
+ width: 100%;
+ top: 0;
+ z-index: 1024;
+ box-shadow: 0 1upx 6upx rgba(0, 0, 0, 0.1);
+}
+
+.cu-bar.foot {
+ position: fixed;
+ width: 100%;
+ bottom: 0;
+ z-index: 1024;
+ box-shadow: 0 -1upx 6upx rgba(0, 0, 0, 0.1);
+}
+
+.cu-bar.tabbar {
+ padding: 0;
+ height: calc(100upx + env(safe-area-inset-bottom) / 2);
+ padding-bottom: calc(env(safe-area-inset-bottom) / 2);
+}
+
+.cu-tabbar-height {
+ min-height: 100upx;
+ height: calc(100upx + env(safe-area-inset-bottom) / 2);
+}
+
+.cu-bar.tabbar.shadow {
+ box-shadow: 0 -1upx 6upx rgba(0, 0, 0, 0.1);
+}
+
+.cu-bar.tabbar .action {
+ font-size: 22upx;
+ position: relative;
+ flex: 1;
+ text-align: center;
+ padding: 0;
+ display: block;
+ height: auto;
+ line-height: 1;
+ margin: 0;
+ background-color: inherit;
+ overflow: initial;
+}
+
+.cu-bar.tabbar.shop .action {
+ width: 140upx;
+ flex: initial;
+}
+
+.cu-bar.tabbar .action.add-action {
+ position: relative;
+ z-index: 2;
+ padding-top: 50upx;
+}
+
+.cu-bar.tabbar .action.add-action [class*="cuIcon-"] {
+ position: absolute;
+ width: 70upx;
+ z-index: 2;
+ height: 70upx;
+ border-radius: 50%;
+ line-height: 70upx;
+ font-size: 50upx;
+ top: -35upx;
+ left: 0;
+ right: 0;
+ margin: auto;
+ padding: 0;
+}
+
+.cu-bar.tabbar .action.add-action::after {
+ content: "";
+ position: absolute;
+ width: 100upx;
+ height: 100upx;
+ top: -50upx;
+ left: 0;
+ right: 0;
+ margin: auto;
+ box-shadow: 0 -3upx 8upx rgba(0, 0, 0, 0.08);
+ border-radius: 50upx;
+ background-color: inherit;
+ z-index: 0;
+}
+
+.cu-bar.tabbar .action.add-action::before {
+ content: "";
+ position: absolute;
+ width: 100upx;
+ height: 30upx;
+ bottom: 30upx;
+ left: 0;
+ right: 0;
+ margin: auto;
+ background-color: inherit;
+ z-index: 1;
+}
+
+.cu-bar.tabbar .btn-group {
+ flex: 1;
+ display: flex;
+ justify-content: space-around;
+ align-items: center;
+ padding: 0 10upx;
+}
+
+.cu-bar.tabbar button.action::after {
+ border: 0;
+}
+
+.cu-bar.tabbar .action [class*="cuIcon-"] {
+ width: 100upx;
+ position: relative;
+ display: block;
+ height: auto;
+ margin: 0 auto 10upx;
+ text-align: center;
+ font-size: 40upx;
+}
+
+.cu-bar.tabbar .action .cuIcon-cu-image {
+ margin: 0 auto;
+}
+
+.cu-bar.tabbar .action .cuIcon-cu-image image {
+ width: 50upx;
+ height: 50upx;
+ display: inline-block;
+}
+
+.cu-bar.tabbar .submit {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ text-align: center;
+ position: relative;
+ flex: 2;
+ align-self: stretch;
+}
+
+.cu-bar.tabbar .submit:last-child {
+ flex: 2.6;
+}
+
+.cu-bar.tabbar .submit+.submit {
+ flex: 2;
+}
+
+.cu-bar.tabbar.border .action::before {
+ content: " ";
+ width: 200%;
+ height: 200%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ transform: scale(0.5);
+ transform-origin: 0 0;
+ border-right: 1upx solid rgba(0, 0, 0, 0.1);
+ z-index: 3;
+}
+
+.cu-bar.tabbar.border .action:last-child:before {
+ display: none;
+}
+
+.cu-bar.input {
+ padding-right: 20upx;
+ background-color: #ffffff;
+}
+
+.cu-bar.input input {
+ overflow: initial;
+ line-height: 64upx;
+ height: 64upx;
+ min-height: 64upx;
+ flex: 1;
+ font-size: 30upx;
+ margin: 0 20upx;
+}
+
+.cu-bar.input .action {
+ margin-left: 20upx;
+}
+
+.cu-bar.input .action [class*="cuIcon-"] {
+ font-size: 48upx;
+}
+
+.cu-bar.input input+.action {
+ margin-right: 20upx;
+ margin-left: 0upx;
+}
+
+.cu-bar.input .action:first-child [class*="cuIcon-"] {
+ margin-left: 0upx;
+}
+
+.cu-custom {
+ display: block;
+ position: relative;
+}
+
+.cu-custom .cu-bar .content {
+ width: calc(100% - 440upx);
+}
+
+/* #ifdef MP-ALIPAY */
+.cu-custom .cu-bar .action .cuIcon-back {
+ opacity: 0;
+}
+
+/* #endif */
+
+.cu-custom .cu-bar .content image {
+ height: 60upx;
+ width: 240upx;
+}
+
+.cu-custom .cu-bar {
+ min-height: 0px;
+ /* #ifdef MP-WEIXIN */
+ padding-right: 220upx;
+ /* #endif */
+ /* #ifdef MP-ALIPAY */
+ padding-right: 150upx;
+ /* #endif */
+ box-shadow: 0upx 0upx 0upx;
+ z-index: 9999;
+}
+
+.cu-custom .cu-bar .border-custom {
+ position: relative;
+ background: rgba(0, 0, 0, 0.15);
+ border-radius: 1000upx;
+ height: 30px;
+}
+
+.cu-custom .cu-bar .border-custom::after {
+ content: " ";
+ width: 200%;
+ height: 200%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ border-radius: inherit;
+ transform: scale(0.5);
+ transform-origin: 0 0;
+ pointer-events: none;
+ box-sizing: border-box;
+ border: 1upx solid #ffffff;
+ opacity: 0.5;
+}
+
+.cu-custom .cu-bar .border-custom::before {
+ content: " ";
+ width: 1upx;
+ height: 110%;
+ position: absolute;
+ top: 22.5%;
+ left: 0;
+ right: 0;
+ margin: auto;
+ transform: scale(0.5);
+ transform-origin: 0 0;
+ pointer-events: none;
+ box-sizing: border-box;
+ opacity: 0.6;
+ background-color: #ffffff;
+}
+
+.cu-custom .cu-bar .border-custom text {
+ display: block;
+ flex: 1;
+ margin: auto !important;
+ text-align: center;
+ font-size: 34upx;
+}
+
+/* ==================
+ 导航栏
+ ==================== */
+
+.nav {
+ white-space: nowrap;
+}
+
+::-webkit-scrollbar {
+ display: none;
+}
+
+.nav .cu-item {
+ height: 90upx;
+ display: inline-block;
+ line-height: 90upx;
+ margin: 0 10upx;
+ padding: 0 20upx;
+}
+
+.nav .cu-item.cur {
+ border-bottom: 4upx solid;
+}
+
+/* ==================
+ 时间轴
+ ==================== */
+
+.cu-timeline {
+ display: block;
+ background-color: #ffffff;
+}
+
+.cu-timeline .cu-time {
+ width: 120upx;
+ text-align: center;
+ padding: 20upx 0;
+ font-size: 26upx;
+ color: #888;
+ display: block;
+}
+
+.cu-timeline>.cu-item {
+ padding: 30upx 30upx 30upx 120upx;
+ position: relative;
+ display: block;
+ z-index: 0;
+}
+
+.cu-timeline>.cu-item:not([class*="text-"]) {
+ color: #ccc;
+}
+
+.cu-timeline>.cu-item::after {
+ content: "";
+ display: block;
+ position: absolute;
+ width: 1upx;
+ background-color: #ddd;
+ left: 60upx;
+ height: 100%;
+ top: 0;
+ z-index: 8;
+}
+
+.cu-timeline>.cu-item::before {
+ font-family: "cuIcon";
+ display: block;
+ position: absolute;
+ top: 36upx;
+ z-index: 9;
+ background-color: #ffffff;
+ width: 50upx;
+ height: 50upx;
+ text-align: center;
+ border: none;
+ line-height: 50upx;
+ left: 36upx;
+}
+
+.cu-timeline>.cu-item:not([class*="cuIcon-"])::before {
+ content: "\e763";
+}
+
+.cu-timeline>.cu-item[class*="cuIcon-"]::before {
+ background-color: #ffffff;
+ width: 50upx;
+ height: 50upx;
+ text-align: center;
+ border: none;
+ line-height: 50upx;
+ left: 36upx;
+}
+
+.cu-timeline>.cu-item>.content {
+ padding: 30upx;
+ border-radius: 6upx;
+ display: block;
+ line-height: 1.6;
+}
+
+.cu-timeline>.cu-item>.content:not([class*="bg-"]) {
+ background-color: #f1f1f1;
+ color: #333333;
+}
+
+.cu-timeline>.cu-item>.content+.content {
+ margin-top: 20upx;
+}
+
+/* ==================
+ 聊天
+ ==================== */
+
+.cu-chat {
+ display: flex;
+ flex-direction: column;
+}
+
+.cu-chat .cu-item {
+ display: flex;
+ padding: 30upx 30upx 70upx;
+ position: relative;
+}
+
+.cu-chat .cu-item>.cu-avatar {
+ width: 80upx;
+ height: 80upx;
+}
+
+.cu-chat .cu-item>.main {
+ max-width: calc(100% - 260upx);
+ margin: 0 40upx;
+ display: flex;
+ align-items: center;
+}
+
+.cu-chat .cu-item>image {
+ height: 320upx;
+}
+
+.cu-chat .cu-item>.main .content {
+ padding: 20upx;
+ border-radius: 6upx;
+ display: inline-flex;
+ max-width: 100%;
+ align-items: center;
+ font-size: 30upx;
+ position: relative;
+ min-height: 80upx;
+ line-height: 40upx;
+ text-align: left;
+}
+
+.cu-chat .cu-item>.main .content:not([class*="bg-"]) {
+ background-color: #ffffff;
+ color: #333333;
+}
+
+.cu-chat .cu-item .date {
+ position: absolute;
+ font-size: 24upx;
+ color: #8799a3;
+ width: calc(100% - 320upx);
+ bottom: 20upx;
+ left: 160upx;
+}
+
+.cu-chat .cu-item .action {
+ padding: 0 30upx;
+ display: flex;
+ align-items: center;
+}
+
+.cu-chat .cu-item>.main .content::after {
+ content: "";
+ top: 27upx;
+ transform: rotate(45deg);
+ position: absolute;
+ z-index: 100;
+ display: inline-block;
+ overflow: hidden;
+ width: 24upx;
+ height: 24upx;
+ left: -12upx;
+ right: initial;
+ background-color: inherit;
+}
+
+.cu-chat .cu-item.self>.main .content::after {
+ left: auto;
+ right: -12upx;
+}
+
+.cu-chat .cu-item>.main .content::before {
+ content: "";
+ top: 30upx;
+ transform: rotate(45deg);
+ position: absolute;
+ z-index: -1;
+ display: inline-block;
+ overflow: hidden;
+ width: 24upx;
+ height: 24upx;
+ left: -12upx;
+ right: initial;
+ background-color: inherit;
+ filter: blur(5upx);
+ opacity: 0.3;
+}
+
+.cu-chat .cu-item>.main .content:not([class*="bg-"])::before {
+ background-color: #333333;
+ opacity: 0.1;
+}
+
+.cu-chat .cu-item.self>.main .content::before {
+ left: auto;
+ right: -12upx;
+}
+
+.cu-chat .cu-item.self {
+ justify-content: flex-end;
+ text-align: right;
+}
+
+.cu-chat .cu-info {
+ display: inline-block;
+ margin: 20upx auto;
+ font-size: 24upx;
+ padding: 8upx 12upx;
+ background-color: rgba(0, 0, 0, 0.2);
+ border-radius: 6upx;
+ color: #ffffff;
+ max-width: 400upx;
+ line-height: 1.4;
+}
+
+/* ==================
+ 卡片
+ ==================== */
+
+.cu-card {
+ display: block;
+ overflow: hidden;
+}
+
+.cu-card>.cu-item {
+ display: block;
+ background-color: #ffffff;
+ overflow: hidden;
+ border-radius: 10upx;
+ margin: 30upx;
+}
+
+.cu-card>.cu-item.shadow-blur {
+ overflow: initial;
+}
+
+.cu-card.no-card>.cu-item {
+ margin: 0upx;
+ border-radius: 0upx;
+}
+
+.cu-card .grid.grid-square {
+ margin-bottom: -20upx;
+}
+
+.cu-card.case .image {
+ position: relative;
+}
+
+.cu-card.case .image image {
+ width: 100%;
+}
+
+.cu-card.case .image .cu-tag {
+ position: absolute;
+ right: 0;
+ top: 0;
+}
+
+.cu-card.case .image .cu-bar {
+ position: absolute;
+ bottom: 0;
+ width: 100%;
+ background-color: transparent;
+ padding: 0upx 30upx;
+}
+
+.cu-card.case.no-card .image {
+ margin: 30upx 30upx 0;
+ overflow: hidden;
+ border-radius: 10upx;
+}
+
+.cu-card.dynamic {
+ display: block;
+}
+
+.cu-card.dynamic>.cu-item {
+ display: block;
+ background-color: #ffffff;
+ overflow: hidden;
+}
+
+.cu-card.dynamic>.cu-item>.text-content {
+ padding: 0 30upx 0;
+ max-height: 6.4em;
+ overflow: hidden;
+ font-size: 30upx;
+ margin-bottom: 20upx;
+}
+
+.cu-card.dynamic>.cu-item .square-img {
+ width: 100%;
+ height: 200upx;
+ border-radius: 6upx;
+}
+
+.cu-card.dynamic>.cu-item .only-img {
+ width: 100%;
+ height: 320upx;
+ border-radius: 6upx;
+}
+
+/* card.dynamic>.cu-item .comment {
+ padding: 20upx;
+ background-color: #f1f1f1;
+ margin: 0 30upx 30upx;
+ border-radius: 6upx;
+} */
+
+.cu-card.article {
+ display: block;
+}
+
+.cu-card.article>.cu-item {
+ padding-bottom: 30upx;
+}
+
+.cu-card.article>.cu-item .title {
+ font-size: 30upx;
+ font-weight: 900;
+ color: #333333;
+ line-height: 100upx;
+ padding: 0 30upx;
+}
+
+.cu-card.article>.cu-item .content {
+ display: flex;
+ padding: 0 30upx;
+}
+
+.cu-card.article>.cu-item .content>image {
+ width: 240upx;
+ height: 6.4em;
+ margin-right: 20upx;
+ border-radius: 6upx;
+}
+
+.cu-card.article>.cu-item .content .desc {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+}
+
+.cu-card.article>.cu-item .content .text-content {
+ font-size: 28upx;
+ color: #888;
+ height: 4.8em;
+ overflow: hidden;
+}
+
+/* ==================
+ 表单
+ ==================== */
+
+.cu-form-group {
+ background-color: #ffffff;
+ padding: 1upx 30upx;
+ display: flex;
+ align-items: center;
+ min-height: 100upx;
+ justify-content: space-between;
+}
+
+.cu-form-group+.cu-form-group {
+ border-top: 1upx solid #eee;
+}
+
+.cu-form-group .title {
+ text-align: justify;
+ padding-right: 30upx;
+ font-size: 30upx;
+ position: relative;
+ height: 60upx;
+ line-height: 60upx;
+}
+
+.cu-form-group input {
+ flex: 1;
+ font-size: 30upx;
+ color: #555;
+ padding-right: 20upx;
+}
+
+.cu-form-group>text[class*="cuIcon-"] {
+ font-size: 36upx;
+ padding: 0;
+ box-sizing: border-box;
+}
+
+.cu-form-group textarea {
+ margin: 32upx 0 30upx;
+ height: 4.6em;
+ width: 100%;
+ line-height: 1.2em;
+ flex: 1;
+ font-size: 28upx;
+ padding: 0;
+}
+
+.cu-form-group.align-start .title {
+ height: 1em;
+ margin-top: 32upx;
+ line-height: 1em;
+}
+
+.cu-form-group picker {
+ flex: 1;
+ padding-right: 40upx;
+ overflow: hidden;
+ position: relative;
+}
+
+.cu-form-group picker .picker {
+ line-height: 100upx;
+ font-size: 28upx;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+ width: 100%;
+ text-align: right;
+}
+
+.cu-form-group picker::after {
+ font-family: cuIcon;
+ display: block;
+ content: "\e6a3";
+ position: absolute;
+ font-size: 34upx;
+ color: #8799a3;
+ line-height: 100upx;
+ width: 60upx;
+ text-align: center;
+ top: 0;
+ bottom: 0;
+ right: -20upx;
+ margin: auto;
+}
+
+.cu-form-group textarea[disabled],
+.cu-form-group textarea[disabled] .placeholder {
+ color: transparent;
+}
+
+/* ==================
+ 模态窗口
+ ==================== */
+
+.cu-modal {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1110;
+ opacity: 0;
+ outline: 0;
+ text-align: center;
+ -ms-transform: scale(1.185);
+ transform: scale(1.185);
+ backface-visibility: hidden;
+ perspective: 2000upx;
+ background: rgba(0, 0, 0, 0.6);
+ transition: all 0.3s ease-in-out 0s;
+ pointer-events: none;
+}
+
+.cu-modal::before {
+ content: "\200B";
+ display: inline-block;
+ height: 100%;
+ vertical-align: middle;
+}
+
+.cu-modal.show {
+ opacity: 1;
+ transition-duration: 0.3s;
+ -ms-transform: scale(1);
+ transform: scale(1);
+ overflow-x: hidden;
+ overflow-y: auto;
+ pointer-events: auto;
+}
+
+.cu-dialog {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+ margin-left: auto;
+ margin-right: auto;
+ width: 680upx;
+ max-width: 100%;
+ background-color: #f8f8f8;
+ border-radius: 10upx;
+ overflow: hidden;
+}
+
+.cu-modal.bottom-modal::before {
+ vertical-align: bottom;
+}
+
+.cu-modal.bottom-modal .cu-dialog {
+ width: 100%;
+ border-radius: 0;
+}
+
+.cu-modal.bottom-modal {
+ margin-bottom: -1000upx;
+}
+
+.cu-modal.bottom-modal.show {
+ margin-bottom: 0;
+}
+
+.cu-modal.drawer-modal {
+ transform: scale(1);
+ display: flex;
+}
+
+.cu-modal.drawer-modal .cu-dialog {
+ height: 100%;
+ min-width: 200upx;
+ border-radius: 0;
+ margin: initial;
+ transition-duration: 0.3s;
+}
+
+.cu-modal.drawer-modal.justify-start .cu-dialog {
+ transform: translateX(-100%);
+}
+
+.cu-modal.drawer-modal.justify-end .cu-dialog {
+ transform: translateX(100%);
+}
+
+.cu-modal.drawer-modal.show .cu-dialog {
+ transform: translateX(0%);
+}
+.cu-modal .cu-dialog>.cu-bar:first-child .action{
+ min-width: 100rpx;
+ margin-right: 0;
+ min-height: 100rpx;
+}
+/* ==================
+ 轮播
+ ==================== */
+swiper .a-swiper-dot {
+ display: inline-block;
+ width: 16upx;
+ height: 16upx;
+ background: rgba(0, 0, 0, .3);
+ border-radius: 50%;
+ vertical-align: middle;
+}
+
+swiper[class*="-dot"] .wx-swiper-dots,
+swiper[class*="-dot"] .a-swiper-dots,
+swiper[class*="-dot"] .uni-swiper-dots {
+ display: flex;
+ align-items: center;
+ width: 100%;
+ justify-content: center;
+}
+
+swiper.square-dot .wx-swiper-dot,
+swiper.square-dot .a-swiper-dot,
+swiper.square-dot .uni-swiper-dot {
+ background-color: #ffffff;
+ opacity: 0.4;
+ width: 10upx;
+ height: 10upx;
+ border-radius: 20upx;
+ margin: 0 8upx !important;
+}
+
+swiper.square-dot .wx-swiper-dot.wx-swiper-dot-active,
+swiper.square-dot .a-swiper-dot.a-swiper-dot-active,
+swiper.square-dot .uni-swiper-dot.uni-swiper-dot-active {
+ opacity: 1;
+ width: 30upx;
+}
+
+swiper.round-dot .wx-swiper-dot,
+swiper.round-dot .a-swiper-dot,
+swiper.round-dot .uni-swiper-dot {
+ width: 10upx;
+ height: 10upx;
+ position: relative;
+ margin: 4upx 8upx !important;
+}
+
+swiper.round-dot .wx-swiper-dot.wx-swiper-dot-active::after,
+swiper.round-dot .a-swiper-dot.a-swiper-dot-active::after,
+swiper.round-dot .uni-swiper-dot.uni-swiper-dot-active::after {
+ content: "";
+ position: absolute;
+ width: 10upx;
+ height: 10upx;
+ top: 0upx;
+ left: 0upx;
+ right: 0;
+ bottom: 0;
+ margin: auto;
+ background-color: #ffffff;
+ border-radius: 20upx;
+}
+
+swiper.round-dot .wx-swiper-dot.wx-swiper-dot-active,
+swiper.round-dot .a-swiper-dot.a-swiper-dot-active,
+swiper.round-dot .uni-swiper-dot.uni-swiper-dot-active {
+ width: 18upx;
+ height: 18upx;
+}
+
+.screen-swiper {
+ min-height: 375upx;
+}
+
+.screen-swiper image,
+.screen-swiper video,
+.swiper-item image,
+.swiper-item video {
+ width: 100%;
+ display: block;
+ height: 100%;
+ margin: 0;
+ pointer-events: none;
+}
+
+.card-swiper {
+ height: 420upx !important;
+}
+
+.card-swiper swiper-item {
+ width: 610upx !important;
+ left: 70upx;
+ box-sizing: border-box;
+ padding: 40upx 0upx 70upx;
+ overflow: initial;
+}
+
+.card-swiper swiper-item .swiper-item {
+ width: 100%;
+ display: block;
+ height: 100%;
+ border-radius: 10upx;
+ transform: scale(0.9);
+ transition: all 0.2s ease-in 0s;
+ overflow: hidden;
+}
+
+.card-swiper swiper-item.cur .swiper-item {
+ transform: none;
+ transition: all 0.2s ease-in 0s;
+}
+
+
+.tower-swiper {
+ height: 420upx;
+ position: relative;
+ max-width: 750upx;
+ overflow: hidden;
+}
+
+.tower-swiper .tower-item {
+ position: absolute;
+ width: 300upx;
+ height: 380upx;
+ top: 0;
+ bottom: 0;
+ left: 50%;
+ margin: auto;
+ transition: all 0.2s ease-in 0s;
+ opacity: 1;
+}
+
+.tower-swiper .tower-item.none {
+ opacity: 0;
+}
+
+.tower-swiper .tower-item .swiper-item {
+ width: 100%;
+ height: 100%;
+ border-radius: 6upx;
+ overflow: hidden;
+}
+
+/* ==================
+ 步骤条
+ ==================== */
+
+.cu-steps {
+ display: flex;
+}
+
+scroll-view.cu-steps {
+ display: block;
+ white-space: nowrap;
+}
+
+scroll-view.cu-steps .cu-item {
+ display: inline-block;
+}
+
+.cu-steps .cu-item {
+ flex: 1;
+ text-align: center;
+ position: relative;
+ min-width: 100upx;
+}
+
+.cu-steps .cu-item:not([class*="text-"]) {
+ color: #8799a3;
+}
+
+.cu-steps .cu-item [class*="cuIcon-"],
+.cu-steps .cu-item .num {
+ display: block;
+ font-size: 40upx;
+ line-height: 80upx;
+}
+
+.cu-steps .cu-item::before,
+.cu-steps .cu-item::after,
+.cu-steps.steps-arrow .cu-item::before,
+.cu-steps.steps-arrow .cu-item::after {
+ content: "";
+ display: block;
+ position: absolute;
+ height: 0px;
+ width: calc(100% - 80upx);
+ border-bottom: 1px solid #ccc;
+ left: calc(0px - (100% - 80upx) / 2);
+ top: 40upx;
+ z-index: 0;
+}
+
+.cu-steps.steps-arrow .cu-item::before,
+.cu-steps.steps-arrow .cu-item::after {
+ content: "\e6a3";
+ font-family: 'cuIcon';
+ height: 30upx;
+ border-bottom-width: 0px;
+ line-height: 30upx;
+ top: 0;
+ bottom: 0;
+ margin: auto;
+ color: #ccc;
+}
+
+.cu-steps.steps-bottom .cu-item::before,
+.cu-steps.steps-bottom .cu-item::after {
+ bottom: 40upx;
+ top: initial;
+}
+
+.cu-steps .cu-item::after {
+ border-bottom: 1px solid currentColor;
+ width: 0px;
+ transition: all 0.3s ease-in-out 0s;
+}
+
+.cu-steps .cu-item[class*="text-"]::after {
+ width: calc(100% - 80upx);
+ color: currentColor;
+}
+
+.cu-steps .cu-item:first-child::before,
+.cu-steps .cu-item:first-child::after {
+ display: none;
+}
+
+.cu-steps .cu-item .num {
+ width: 40upx;
+ height: 40upx;
+ border-radius: 50%;
+ line-height: 40upx;
+ margin: 20upx auto;
+ font-size: 24upx;
+ border: 1px solid currentColor;
+ position: relative;
+ overflow: hidden;
+}
+
+.cu-steps .cu-item[class*="text-"] .num {
+ background-color: currentColor;
+}
+
+.cu-steps .cu-item .num::before,
+.cu-steps .cu-item .num::after {
+ content: attr(data-index);
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ margin: auto;
+ transition: all 0.3s ease-in-out 0s;
+ transform: translateY(0upx);
+}
+
+.cu-steps .cu-item[class*="text-"] .num::before {
+ transform: translateY(-40upx);
+ color: #ffffff;
+}
+
+.cu-steps .cu-item .num::after {
+ transform: translateY(40upx);
+ color: #ffffff;
+ transition: all 0.3s ease-in-out 0s;
+}
+
+.cu-steps .cu-item[class*="text-"] .num::after {
+ content: "\e645";
+ font-family: 'cuIcon';
+ color: #ffffff;
+ transform: translateY(0upx);
+}
+
+.cu-steps .cu-item[class*="text-"] .num.err::after {
+ content: "\e646";
+}
+
+/* ==================
+ 布局
+ ==================== */
+
+/* -- flex弹性布局 -- */
+
+.flex {
+ display: flex;
+}
+
+.basis-xs {
+ flex-basis: 20%;
+}
+
+.basis-sm {
+ flex-basis: 40%;
+}
+
+.basis-df {
+ flex-basis: 50%;
+}
+
+.basis-lg {
+ flex-basis: 60%;
+}
+
+.basis-xl {
+ flex-basis: 80%;
+}
+
+.flex-sub {
+ flex: 1;
+}
+
+.flex-twice {
+ flex: 2;
+}
+
+.flex-treble {
+ flex: 3;
+}
+
+.flex-direction {
+ flex-direction: column;
+}
+
+.flex-wrap {
+ flex-wrap: wrap;
+}
+
+.align-start {
+ align-items: flex-start;
+}
+
+.align-end {
+ align-items: flex-end;
+}
+
+.align-center {
+ align-items: center;
+}
+
+.align-stretch {
+ align-items: stretch;
+}
+
+.self-start {
+ align-self: flex-start;
+}
+
+.self-center {
+ align-self: flex-center;
+}
+
+.self-end {
+ align-self: flex-end;
+}
+
+.self-stretch {
+ align-self: stretch;
+}
+
+.align-stretch {
+ align-items: stretch;
+}
+
+.justify-start {
+ justify-content: flex-start;
+}
+
+.justify-end {
+ justify-content: flex-end;
+}
+
+.justify-center {
+ justify-content: center;
+}
+
+.justify-between {
+ justify-content: space-between;
+}
+
+.justify-around {
+ justify-content: space-around;
+}
+
+/* grid布局 */
+
+.grid {
+ display: flex;
+ flex-wrap: wrap;
+}
+
+.grid.grid-square {
+ overflow: hidden;
+}
+
+.grid.grid-square .cu-tag {
+ position: absolute;
+ right: 0;
+ top: 0;
+ border-bottom-left-radius: 6upx;
+ padding: 6upx 12upx;
+ height: auto;
+ background-color: rgba(0, 0, 0, 0.5);
+}
+
+.grid.grid-square>view>text[class*="cuIcon-"] {
+ font-size: 52upx;
+ position: absolute;
+ color: #8799a3;
+ margin: auto;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+}
+
+.grid.grid-square>view {
+ margin-right: 20upx;
+ margin-bottom: 20upx;
+ border-radius: 6upx;
+ position: relative;
+ overflow: hidden;
+}
+.grid.grid-square>view.bg-img image {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+}
+.grid.col-1.grid-square>view {
+ padding-bottom: 100%;
+ height: 0;
+ margin-right: 0;
+}
+
+.grid.col-2.grid-square>view {
+ padding-bottom: calc((100% - 20upx)/2);
+ height: 0;
+ width: calc((100% - 20upx)/2);
+}
+
+.grid.col-3.grid-square>view {
+ padding-bottom: calc((100% - 40upx)/3);
+ height: 0;
+ width: calc((100% - 40upx)/3);
+}
+
+.grid.col-4.grid-square>view {
+ padding-bottom: calc((100% - 60upx)/4);
+ height: 0;
+ width: calc((100% - 60upx)/4);
+}
+
+.grid.col-5.grid-square>view {
+ padding-bottom: calc((100% - 80upx)/5);
+ height: 0;
+ width: calc((100% - 80upx)/5);
+}
+
+.grid.col-2.grid-square>view:nth-child(2n),
+.grid.col-3.grid-square>view:nth-child(3n),
+.grid.col-4.grid-square>view:nth-child(4n),
+.grid.col-5.grid-square>view:nth-child(5n) {
+ margin-right: 0;
+}
+
+.grid.col-1>view {
+ width: 100%;
+}
+
+.grid.col-2>view {
+ width: 50%;
+}
+
+.grid.col-3>view {
+ width: 33.33%;
+}
+
+.grid.col-4>view {
+ width: 25%;
+}
+
+.grid.col-5>view {
+ width: 20%;
+}
+
+/* -- 内外边距 -- */
+
+.margin-0 {
+ margin: 0;
+}
+
+.margin-xs {
+ margin: 10upx;
+}
+
+.margin-sm {
+ margin: 20upx;
+}
+
+.margin {
+ margin: 30upx;
+}
+
+.margin-lg {
+ margin: 40upx;
+}
+
+.margin-xl {
+ margin: 50upx;
+}
+
+.margin-top-xs {
+ margin-top: 10upx;
+}
+
+.margin-top-sm {
+ margin-top: 20upx;
+}
+
+.margin-top {
+ margin-top: 30upx;
+}
+
+.margin-top-lg {
+ margin-top: 40upx;
+}
+
+.margin-top-xl {
+ margin-top: 50upx;
+}
+
+.margin-right-xs {
+ margin-right: 10upx;
+}
+
+.margin-right-sm {
+ margin-right: 20upx;
+}
+
+.margin-right {
+ margin-right: 30upx;
+}
+
+.margin-right-lg {
+ margin-right: 40upx;
+}
+
+.margin-right-xl {
+ margin-right: 50upx;
+}
+
+.margin-bottom-xs {
+ margin-bottom: 10upx;
+}
+
+.margin-bottom-sm {
+ margin-bottom: 20upx;
+}
+
+.margin-bottom {
+ margin-bottom: 30upx;
+}
+
+.margin-bottom-lg {
+ margin-bottom: 40upx;
+}
+
+.margin-bottom-xl {
+ margin-bottom: 50upx;
+}
+
+.margin-left-xs {
+ margin-left: 10upx;
+}
+
+.margin-left-sm {
+ margin-left: 20upx;
+}
+
+.margin-left {
+ margin-left: 30upx;
+}
+
+.margin-left-lg {
+ margin-left: 40upx;
+}
+
+.margin-left-xl {
+ margin-left: 50upx;
+}
+
+.margin-lr-xs {
+ margin-left: 10upx;
+ margin-right: 10upx;
+}
+
+.margin-lr-sm {
+ margin-left: 20upx;
+ margin-right: 20upx;
+}
+
+.margin-lr {
+ margin-left: 30upx;
+ margin-right: 30upx;
+}
+
+.margin-lr-lg {
+ margin-left: 40upx;
+ margin-right: 40upx;
+}
+
+.margin-lr-xl {
+ margin-left: 50upx;
+ margin-right: 50upx;
+}
+
+.margin-tb-xs {
+ margin-top: 10upx;
+ margin-bottom: 10upx;
+}
+
+.margin-tb-sm {
+ margin-top: 20upx;
+ margin-bottom: 20upx;
+}
+
+.margin-tb {
+ margin-top: 30upx;
+ margin-bottom: 30upx;
+}
+
+.margin-tb-lg {
+ margin-top: 40upx;
+ margin-bottom: 40upx;
+}
+
+.margin-tb-xl {
+ margin-top: 50upx;
+ margin-bottom: 50upx;
+}
+
+.padding-0 {
+ padding: 0;
+}
+
+.padding-xs {
+ padding: 10upx;
+}
+
+.padding-sm {
+ padding: 20upx;
+}
+
+.padding {
+ padding: 30upx;
+}
+
+.padding-lg {
+ padding: 40upx;
+}
+
+.padding-xl {
+ padding: 50upx;
+}
+
+.padding-top-xs {
+ padding-top: 10upx;
+}
+
+.padding-top-sm {
+ padding-top: 20upx;
+}
+
+.padding-top {
+ padding-top: 30upx;
+}
+
+.padding-top-lg {
+ padding-top: 40upx;
+}
+
+.padding-top-xl {
+ padding-top: 50upx;
+}
+
+.padding-right-xs {
+ padding-right: 10upx;
+}
+
+.padding-right-sm {
+ padding-right: 20upx;
+}
+
+.padding-right {
+ padding-right: 30upx;
+}
+
+.padding-right-lg {
+ padding-right: 40upx;
+}
+
+.padding-right-xl {
+ padding-right: 50upx;
+}
+
+.padding-bottom-xs {
+ padding-bottom: 10upx;
+}
+
+.padding-bottom-sm {
+ padding-bottom: 20upx;
+}
+
+.padding-bottom {
+ padding-bottom: 30upx;
+}
+
+.padding-bottom-lg {
+ padding-bottom: 40upx;
+}
+
+.padding-bottom-xl {
+ padding-bottom: 50upx;
+}
+
+.padding-left-xs {
+ padding-left: 10upx;
+}
+
+.padding-left-sm {
+ padding-left: 20upx;
+}
+
+.padding-left {
+ padding-left: 30upx;
+}
+
+.padding-left-lg {
+ padding-left: 40upx;
+}
+
+.padding-left-xl {
+ padding-left: 50upx;
+}
+
+.padding-lr-xs {
+ padding-left: 10upx;
+ padding-right: 10upx;
+}
+
+.padding-lr-sm {
+ padding-left: 20upx;
+ padding-right: 20upx;
+}
+
+.padding-lr {
+ padding-left: 30upx;
+ padding-right: 30upx;
+}
+
+.padding-lr-lg {
+ padding-left: 40upx;
+ padding-right: 40upx;
+}
+
+.padding-lr-xl {
+ padding-left: 50upx;
+ padding-right: 50upx;
+}
+
+.padding-tb-xs {
+ padding-top: 10upx;
+ padding-bottom: 10upx;
+}
+
+.padding-tb-sm {
+ padding-top: 20upx;
+ padding-bottom: 20upx;
+}
+
+.padding-tb {
+ padding-top: 30upx;
+ padding-bottom: 30upx;
+}
+
+.padding-tb-lg {
+ padding-top: 40upx;
+ padding-bottom: 40upx;
+}
+
+.padding-tb-xl {
+ padding-top: 50upx;
+ padding-bottom: 50upx;
+}
+
+/* -- 浮动 -- */
+
+.cf::after,
+.cf::before {
+ content: " ";
+ display: table;
+}
+
+.cf::after {
+ clear: both;
+}
+
+.fl {
+ float: left;
+}
+
+.fr {
+ float: right;
+}
+
+/* ==================
+ 背景
+ ==================== */
+
+.line-red::after,
+.lines-red::after {
+ border-color: #e54d42;
+}
+
+.line-orange::after,
+.lines-orange::after {
+ border-color: #f37b1d;
+}
+
+.line-yellow::after,
+.lines-yellow::after {
+ border-color: #fbbd08;
+}
+
+.line-olive::after,
+.lines-olive::after {
+ border-color: #8dc63f;
+}
+
+.line-green::after,
+.lines-green::after {
+ border-color: #39b54a;
+}
+
+.line-cyan::after,
+.lines-cyan::after {
+ border-color: #1cbbb4;
+}
+
+.line-blue::after,
+.lines-blue::after {
+ border-color: #0081ff;
+}
+
+.line-purple::after,
+.lines-purple::after {
+ border-color: #6739b6;
+}
+
+.line-mauve::after,
+.lines-mauve::after {
+ border-color: #9c26b0;
+}
+
+.line-pink::after,
+.lines-pink::after {
+ border-color: #e03997;
+}
+
+.line-brown::after,
+.lines-brown::after {
+ border-color: #a5673f;
+}
+
+.line-grey::after,
+.lines-grey::after {
+ border-color: #8799a3;
+}
+
+.line-gray::after,
+.lines-gray::after {
+ border-color: #aaaaaa;
+}
+
+.line-black::after,
+.lines-black::after {
+ border-color: #333333;
+}
+
+.line-white::after,
+.lines-white::after {
+ border-color: #ffffff;
+}
+
+.bg-red {
+ background-color: #e54d42;
+ color: #ffffff;
+}
+
+.bg-orange {
+ background-color: #f37b1d;
+ color: #ffffff;
+}
+
+.bg-yellow {
+ background-color: #fbbd08;
+ color: #333333;
+}
+
+.bg-olive {
+ background-color: #8dc63f;
+ color: #ffffff;
+}
+
+.bg-green {
+ background-color: #39b54a;
+ color: #ffffff;
+}
+
+.bg-cyan {
+ background-color: #1cbbb4;
+ color: #ffffff;
+}
+
+.bg-blue {
+ background-color: #0081ff;
+ color: #ffffff;
+}
+
+.bg-purple {
+ background-color: #6739b6;
+ color: #ffffff;
+}
+
+.bg-mauve {
+ background-color: #9c26b0;
+ color: #ffffff;
+}
+
+.bg-pink {
+ background-color: #e03997;
+ color: #ffffff;
+}
+
+.bg-brown {
+ background-color: #a5673f;
+ color: #ffffff;
+}
+
+.bg-grey {
+ background-color: #8799a3;
+ color: #ffffff;
+}
+
+.bg-gray {
+ background-color: #f0f0f0;
+ color: #333333;
+}
+
+.bg-black {
+ background-color: #333333;
+ color: #ffffff;
+}
+
+.bg-white {
+ background-color: #ffffff;
+ color: #666666;
+}
+
+.bg-shadeTop {
+ background-image: linear-gradient(rgba(0, 0, 0, 1), rgba(0, 0, 0, 0.01));
+ color: #ffffff;
+}
+
+.bg-shadeBottom {
+ background-image: linear-gradient(rgba(0, 0, 0, 0.01), rgba(0, 0, 0, 1));
+ color: #ffffff;
+}
+
+.bg-red.light {
+ color: #e54d42;
+ background-color: #fadbd9;
+}
+
+.bg-orange.light {
+ color: #f37b1d;
+ background-color: #fde6d2;
+}
+
+.bg-yellow.light {
+ color: #fbbd08;
+ background-color: #fef2ced2;
+}
+
+.bg-olive.light {
+ color: #8dc63f;
+ background-color: #e8f4d9;
+}
+
+.bg-green.light {
+ color: #39b54a;
+ background-color: #d7f0dbff;
+}
+
+.bg-cyan.light {
+ color: #1cbbb4;
+ background-color: #d2f1f0;
+}
+
+.bg-blue.light {
+ color: #0081ff;
+ background-color: #cce6ff;
+}
+
+.bg-purple.light {
+ color: #6739b6;
+ background-color: #e1d7f0;
+}
+
+.bg-mauve.light {
+ color: #9c26b0;
+ background-color: #ebd4ef;
+}
+
+.bg-pink.light {
+ color: #e03997;
+ background-color: #f9d7ea;
+}
+
+.bg-brown.light {
+ color: #a5673f;
+ background-color: #ede1d9;
+}
+
+.bg-grey.light {
+ color: #8799a3;
+ background-color: #e7ebed;
+}
+
+.bg-gradual-red {
+ background-image: linear-gradient(45deg, #f43f3b, #ec008c);
+ color: #ffffff;
+}
+
+.bg-gradual-orange {
+ background-image: linear-gradient(45deg, #ff9700, #ed1c24);
+ color: #ffffff;
+}
+
+.bg-gradual-green {
+ background-image: linear-gradient(45deg, #39b54a, #8dc63f);
+ color: #ffffff;
+}
+
+.bg-gradual-purple {
+ background-image: linear-gradient(45deg, #9000ff, #5e00ff);
+ color: #ffffff;
+}
+
+.bg-gradual-pink {
+ background-image: linear-gradient(45deg, #ec008c, #6739b6);
+ color: #ffffff;
+}
+
+.bg-gradual-blue {
+ background-image: linear-gradient(45deg, #0081ff, #1cbbb4);
+ color: #ffffff;
+}
+
+.shadow[class*="-red"] {
+ box-shadow: 6upx 6upx 8upx rgba(204, 69, 59, 0.2);
+}
+
+.shadow[class*="-orange"] {
+ box-shadow: 6upx 6upx 8upx rgba(217, 109, 26, 0.2);
+}
+
+.shadow[class*="-yellow"] {
+ box-shadow: 6upx 6upx 8upx rgba(224, 170, 7, 0.2);
+}
+
+.shadow[class*="-olive"] {
+ box-shadow: 6upx 6upx 8upx rgba(124, 173, 55, 0.2);
+}
+
+.shadow[class*="-green"] {
+ box-shadow: 6upx 6upx 8upx rgba(48, 156, 63, 0.2);
+}
+
+.shadow[class*="-cyan"] {
+ box-shadow: 6upx 6upx 8upx rgba(28, 187, 180, 0.2);
+}
+
+.shadow[class*="-blue"] {
+ box-shadow: 6upx 6upx 8upx rgba(0, 102, 204, 0.2);
+}
+
+.shadow[class*="-purple"] {
+ box-shadow: 6upx 6upx 8upx rgba(88, 48, 156, 0.2);
+}
+
+.shadow[class*="-mauve"] {
+ box-shadow: 6upx 6upx 8upx rgba(133, 33, 150, 0.2);
+}
+
+.shadow[class*="-pink"] {
+ box-shadow: 6upx 6upx 8upx rgba(199, 50, 134, 0.2);
+}
+
+.shadow[class*="-brown"] {
+ box-shadow: 6upx 6upx 8upx rgba(140, 88, 53, 0.2);
+}
+
+.shadow[class*="-grey"] {
+ box-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2);
+}
+
+.shadow[class*="-gray"] {
+ box-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2);
+}
+
+.shadow[class*="-black"] {
+ box-shadow: 6upx 6upx 8upx rgba(26, 26, 26, 0.2);
+}
+
+.shadow[class*="-white"] {
+ box-shadow: 6upx 6upx 8upx rgba(26, 26, 26, 0.2);
+}
+
+.text-shadow[class*="-red"] {
+ text-shadow: 6upx 6upx 8upx rgba(204, 69, 59, 0.2);
+}
+
+.text-shadow[class*="-orange"] {
+ text-shadow: 6upx 6upx 8upx rgba(217, 109, 26, 0.2);
+}
+
+.text-shadow[class*="-yellow"] {
+ text-shadow: 6upx 6upx 8upx rgba(224, 170, 7, 0.2);
+}
+
+.text-shadow[class*="-olive"] {
+ text-shadow: 6upx 6upx 8upx rgba(124, 173, 55, 0.2);
+}
+
+.text-shadow[class*="-green"] {
+ text-shadow: 6upx 6upx 8upx rgba(48, 156, 63, 0.2);
+}
+
+.text-shadow[class*="-cyan"] {
+ text-shadow: 6upx 6upx 8upx rgba(28, 187, 180, 0.2);
+}
+
+.text-shadow[class*="-blue"] {
+ text-shadow: 6upx 6upx 8upx rgba(0, 102, 204, 0.2);
+}
+
+.text-shadow[class*="-purple"] {
+ text-shadow: 6upx 6upx 8upx rgba(88, 48, 156, 0.2);
+}
+
+.text-shadow[class*="-mauve"] {
+ text-shadow: 6upx 6upx 8upx rgba(133, 33, 150, 0.2);
+}
+
+.text-shadow[class*="-pink"] {
+ text-shadow: 6upx 6upx 8upx rgba(199, 50, 134, 0.2);
+}
+
+.text-shadow[class*="-brown"] {
+ text-shadow: 6upx 6upx 8upx rgba(140, 88, 53, 0.2);
+}
+
+.text-shadow[class*="-grey"] {
+ text-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2);
+}
+
+.text-shadow[class*="-gray"] {
+ text-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2);
+}
+
+.text-shadow[class*="-black"] {
+ text-shadow: 6upx 6upx 8upx rgba(26, 26, 26, 0.2);
+}
+
+.bg-img {
+ background-size: cover;
+ background-position: center;
+ background-repeat: no-repeat;
+}
+
+.bg-mask {
+ background-color: #333333;
+ position: relative;
+}
+
+.bg-mask::after {
+ content: "";
+ border-radius: inherit;
+ width: 100%;
+ height: 100%;
+ display: block;
+ background-color: rgba(0, 0, 0, 0.4);
+ position: absolute;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ top: 0;
+}
+
+.bg-mask view,
+.bg-mask cover-view {
+ z-index: 5;
+ position: relative;
+}
+
+.bg-video {
+ position: relative;
+}
+
+.bg-video video {
+ display: block;
+ height: 100%;
+ width: 100%;
+ -o-object-fit: cover;
+ object-fit: cover;
+ position: absolute;
+ top: 0;
+ z-index: 0;
+ pointer-events: none;
+}
+
+/* ==================
+ 文本
+ ==================== */
+
+.text-xs {
+ font-size: 20upx;
+}
+
+.text-sm {
+ font-size: 24upx;
+}
+
+.text-df {
+ font-size: 28upx;
+}
+
+.text-lg {
+ font-size: 32upx;
+}
+
+.text-xl {
+ font-size: 36upx;
+}
+
+.text-xxl {
+ font-size: 44upx;
+}
+
+.text-sl {
+ font-size: 80upx;
+}
+
+.text-xsl {
+ font-size: 120upx;
+}
+
+.text-Abc {
+ text-transform: Capitalize;
+}
+
+.text-ABC {
+ text-transform: Uppercase;
+}
+
+.text-abc {
+ text-transform: Lowercase;
+}
+
+.text-price::before {
+ content: "¥";
+ font-size: 80%;
+ margin-right: 4upx;
+}
+
+.text-cut {
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+}
+
+.text-bold {
+ font-weight: bold;
+}
+
+.text-center {
+ text-align: center;
+}
+
+.text-content {
+ line-height: 1.6;
+}
+
+.text-left {
+ text-align: left;
+}
+
+.text-right {
+ text-align: right;
+}
+
+.text-red,
+.line-red,
+.lines-red {
+ color: #e54d42;
+}
+
+.text-orange,
+.line-orange,
+.lines-orange {
+ color: #f37b1d;
+}
+
+.text-yellow,
+.line-yellow,
+.lines-yellow {
+ color: #fbbd08;
+}
+
+.text-olive,
+.line-olive,
+.lines-olive {
+ color: #8dc63f;
+}
+
+.text-green,
+.line-green,
+.lines-green {
+ color: #39b54a;
+}
+
+.text-cyan,
+.line-cyan,
+.lines-cyan {
+ color: #1cbbb4;
+}
+
+.text-blue,
+.line-blue,
+.lines-blue {
+ color: #0081ff;
+}
+
+.text-purple,
+.line-purple,
+.lines-purple {
+ color: #6739b6;
+}
+
+.text-mauve,
+.line-mauve,
+.lines-mauve {
+ color: #9c26b0;
+}
+
+.text-pink,
+.line-pink,
+.lines-pink {
+ color: #e03997;
+}
+
+.text-brown,
+.line-brown,
+.lines-brown {
+ color: #a5673f;
+}
+
+.text-grey,
+.line-grey,
+.lines-grey {
+ color: #8799a3;
+}
+
+.text-gray,
+.line-gray,
+.lines-gray {
+ color: #aaaaaa;
+}
+
+.text-black,
+.line-black,
+.lines-black {
+ color: #333333;
+}
+
+.text-white,
+.line-white,
+.lines-white {
+ color: #ffffff;
+}
diff --git a/src/static/scss/global.scss b/src/static/scss/global.scss
new file mode 100644
index 0000000..ac636bd
--- /dev/null
+++ b/src/static/scss/global.scss
@@ -0,0 +1,90 @@
+.text-center {
+ text-align: center;
+}
+
+.font-13 {
+ font-size: 13px;
+}
+
+.font-12 {
+ font-size: 12px;
+}
+
+.font-11 {
+ font-size: 11px;
+}
+
+.text-grey1 {
+ color: #888;
+}
+.text-grey2 {
+ color: #aaa;
+}
+
+.list-cell-arrow::before {
+ content: ' ';
+ height: 10px;
+ width: 10px;
+ border-width: 2px 2px 0 0;
+ border-color: #c0c0c0;
+ border-style: solid;
+ -webkit-transform: matrix(0.5, 0.5, -0.5, 0.5, 0, 0);
+ transform: matrix(0.5, 0.5, -0.5, 0.5, 0, 0);
+ position: absolute;
+ top: 50%;
+ margin-top: -6px;
+ right: 30rpx;
+ }
+
+ .list-cell {
+ position: relative;
+ width: 100%;
+ box-sizing: border-box;
+ background-color: #fff;
+ color: #333;
+ padding: 26rpx 30rpx;
+ }
+
+ .list-cell:first-child {
+ border-radius: 8rpx 8rpx 0 0;
+ }
+
+ .list-cell:last-child {
+ border-radius: 0 0 8rpx 8rpx;
+ }
+
+ .list-cell::after {
+ content: '';
+ position: absolute;
+ border-bottom: 1px solid #eaeef1;
+ -webkit-transform: scaleY(0.5) translateZ(0);
+ transform: scaleY(0.5) translateZ(0);
+ transform-origin: 0 100%;
+ bottom: 0;
+ right: 0;
+ left: 0;
+ pointer-events: none;
+ }
+
+
+ .menu-list {
+ margin: 15px 15px;
+
+ .menu-item-box {
+ width: 100%;
+ display: flex;
+ align-items: center;
+
+ .menu-icon {
+ color: #007AFF;
+ font-size: 16px;
+ margin-right: 5px;
+ }
+
+ .text-right {
+ margin-left: auto;
+ margin-right: 34rpx;
+ color: #999;
+ }
+ }
+ }
diff --git a/src/static/scss/index.scss b/src/static/scss/index.scss
new file mode 100644
index 0000000..0ae6983
--- /dev/null
+++ b/src/static/scss/index.scss
@@ -0,0 +1,4 @@
+// global
+@import "./global.scss";
+// color-ui
+@import "@/static/scss/colorui.css";
\ No newline at end of file
diff --git a/src/static/search.svg b/src/static/search.svg
new file mode 100644
index 0000000..8238711
--- /dev/null
+++ b/src/static/search.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/static/uni.ttf b/src/static/uni.ttf
new file mode 100644
index 0000000..60a1968
Binary files /dev/null and b/src/static/uni.ttf differ
diff --git a/src/static/version.json b/src/static/version.json
new file mode 100644
index 0000000..05c4a4c
--- /dev/null
+++ b/src/static/version.json
@@ -0,0 +1,3 @@
+{
+ "version": "02.24.2"
+}
\ No newline at end of file
diff --git a/src/static/video/error.wav b/src/static/video/error.wav
new file mode 100644
index 0000000..b89de3e
Binary files /dev/null and b/src/static/video/error.wav differ
diff --git a/src/store/getters.js b/src/store/getters.js
new file mode 100644
index 0000000..e5dbfae
--- /dev/null
+++ b/src/store/getters.js
@@ -0,0 +1,10 @@
+const getters = {
+ id:id=>state.user.id,
+ token: state => state.user.token,
+ avatar: state => state.user.avatar,
+ name: state => state.user.name,
+ roles: state => state.user.roles,
+ permissions: state => state.user.permissions,
+ hasLogin:state=>state.user.hasLogin
+}
+export default getters
diff --git a/src/store/index.js b/src/store/index.js
new file mode 100644
index 0000000..ec5bd8f
--- /dev/null
+++ b/src/store/index.js
@@ -0,0 +1,10 @@
+import user from '@/store/modules/user'
+import getters from './getters'
+import { createStore } from "vuex";
+const store = createStore({
+ modules: {
+ user
+ },
+ getters
+});
+export default store;
\ No newline at end of file
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
new file mode 100644
index 0000000..dab7585
--- /dev/null
+++ b/src/store/modules/user.js
@@ -0,0 +1,130 @@
+import storage from '@/common/utils/storage.js'
+import {
+ login,
+ logout,
+ getPermissionInfo,
+ getTenantInfo
+} from '@/api/request2'
+// import picUrl from "../../static/images/profile.jpg";
+
+
+const user = {
+ state: {
+ id: storage.getStorage(storage.constant.id), // 用户编号
+ name: storage.getStorage(storage.constant.name),
+ avatar: storage.getStorage(storage.constant.avatar),
+ roles: storage.getStorage(storage.constant.roles),
+ permissions: storage.getStorage(storage.constant.permissions)
+ },
+
+ mutations: {
+ SET_ID: (state, id) => {
+ state.id = id
+ storage.setStorage(storage.constant.id, id)
+ },
+ SET_NAME: (state, name) => {
+ state.name = name
+ storage.setStorage(storage.constant.name, name)
+ },
+ SET_AVATAR: (state, avatar) => {
+ state.avatar = avatar
+ storage.setStorage(storage.constant.avatar, avatar)
+ },
+ SET_ROLES: (state, roles) => {
+ state.roles = roles
+ storage.setStorage(storage.constant.roles, roles)
+ },
+ SET_PERMISSIONS: (state, permissions) => {
+ state.permissions = permissions
+ storage.setStorage(storage.constant.permissions, permissions)
+ },
+
+ },
+
+ actions: {
+ // 登录
+ Login({
+ commit
+ }, userInfo) {
+ const username = userInfo.username
+ const password = userInfo.password
+ const code = userInfo.code
+ const uuid = userInfo.uuid
+
+ return new Promise((resolve, reject) => {
+ login(username, password, code, uuid).then(res => {
+ if(res.data){
+ res = res.data;
+ // 设置 token
+ storage.setStorage(storage.constant.token,res.accessToken)
+ resolve(res)
+ }else {
+ uni.showToast({
+ title:res.msg
+ })
+ }
+
+ }).catch(error => {
+ reject(error)
+ uni.showToast({
+ title:error
+ })
+ })
+ })
+ },
+
+ // 获取用户信息
+ getPermissionInfo({
+ commit,
+ state
+ }) {
+ return new Promise((resolve, reject) => {
+ getPermissionInfo().then(res => {
+ res = res.data; // 读取 data 数据
+ const user = res.user
+ const avatar=""
+ // const avatar = (user == null || user.avatar == "" || user.avatar == null||user.avatar == undefined) ?
+ // picUrl: user.avatar
+ const nickname = (user == null || user.nickname === "" || user.nickname ==
+ null) ? "" : user.nickname
+ if (res.roles && res.roles.length > 0) {
+ commit('SET_ROLES', res.roles)
+ commit('SET_PERMISSIONS', res.permissions)
+ } else {
+ commit('SET_ROLES', ['ROLE_DEFAULT'])
+ }
+ commit('SET_NAME', nickname)
+ commit('SET_AVATAR', avatar)
+ commit('SET_ID',user.id)
+ resolve(res)
+ }).catch(error => {
+ reject(error)
+ // uni.showToast({
+ // title:"用户信息获取失败"
+ // })
+ })
+ })
+ },
+
+ // 退出系统
+ LogOut({
+ commit,
+ state
+ }) {
+ return new Promise((resolve, reject) => {
+ logout(state.token).then(() => {
+ commit('SET_ROLES', [])
+ commit('SET_PERMISSIONS', [])
+ commit('SET_ID',[])
+ storage.removeStorage(storage.constant.token)
+ storage.clearStorage()
+ resolve()
+ }).catch(error => {
+ reject(error)
+ })
+ })
+ }
+ }
+}
+
+export default user
diff --git a/src/uni.scss b/src/uni.scss
new file mode 100644
index 0000000..0530dee
--- /dev/null
+++ b/src/uni.scss
@@ -0,0 +1,78 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+
+/* 颜色变量 */
+
+/* 行为相关颜色 */
+$uni-color-primary: #007aff;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+/* 文字基本颜色 */
+$uni-text-color: #333; // 基本色
+$uni-text-color-inverse: #fff; // 反色
+$uni-text-color-grey: #999; // 辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable: #c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color: #fff;
+$uni-bg-color-grey: #f8f8f8;
+$uni-bg-color-hover: #f1f1f1; // 点击状态颜色
+$uni-bg-color-mask: rgba(0, 0, 0, 0.4); // 遮罩颜色
+
+/* 边框颜色 */
+$uni-border-color: #c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm: 12px;
+$uni-font-size-base: 14px;
+$uni-font-size-lg: 16;
+
+/* 图片尺寸 */
+$uni-img-size-sm: 20px;
+$uni-img-size-base: 26px;
+$uni-img-size-lg: 40px;
+
+/* Border Radius */
+$uni-border-radius-sm: 2px;
+$uni-border-radius-base: 3px;
+$uni-border-radius-lg: 6px;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 5px;
+$uni-spacing-row-base: 10px;
+$uni-spacing-row-lg: 15px;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 4px;
+$uni-spacing-col-base: 8px;
+$uni-spacing-col-lg: 12px;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2c405a; // 文章标题颜色
+$uni-font-size-title: 20px;
+$uni-color-subtitle: #555; // 二级标题颜色
+$uni-font-size-subtitle: 18px;
+$uni-color-paragraph: #3f536e; // 文章段落颜色
+$uni-font-size-paragraph: 15px;
+@import "@/uni_modules/vk-uview-ui/theme.scss";
+@import '@/uni_modules/uni-scss/index.scss';
\ No newline at end of file
diff --git a/src/uni_modules/uni-badge/changelog.md b/src/uni_modules/uni-badge/changelog.md
new file mode 100644
index 0000000..544ecc1
--- /dev/null
+++ b/src/uni_modules/uni-badge/changelog.md
@@ -0,0 +1,29 @@
+## 1.2.0(2021-11-19)
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-badge](https://uniapp.dcloud.io/component/uniui/uni-badge)
+## 1.1.7(2021-11-08)
+- 优化 升级ui
+- 修改 size 属性默认值调整为 small
+- 修改 type 属性,默认值调整为 error,info 替换 default
+## 1.1.6(2021-09-22)
+- 修复 在字节小程序上样式不生效的 bug
+## 1.1.5(2021-07-30)
+- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
+## 1.1.4(2021-07-29)
+- 修复 去掉 nvue 不支持css 的 align-self 属性,nvue 下不暂支持 absolute 属性
+## 1.1.3(2021-06-24)
+- 优化 示例项目
+## 1.1.1(2021-05-12)
+- 新增 组件示例地址
+## 1.1.0(2021-05-12)
+- 新增 uni-badge 的 absolute 属性,支持定位
+- 新增 uni-badge 的 offset 属性,支持定位偏移
+- 新增 uni-badge 的 is-dot 属性,支持仅显示有一个小点
+- 新增 uni-badge 的 max-num 属性,支持自定义封顶的数字值,超过 99 显示99+
+- 优化 uni-badge 属性 custom-style, 支持以对象形式自定义样式
+## 1.0.7(2021-05-07)
+- 修复 uni-badge 在 App 端,数字小于10时不是圆形的bug
+- 修复 uni-badge 在父元素不是 flex 布局时,宽度缩小的bug
+- 新增 uni-badge 属性 custom-style, 支持自定义样式
+## 1.0.6(2021-02-04)
+- 调整为uni_modules目录规范
diff --git a/src/uni_modules/uni-badge/components/uni-badge/uni-badge.vue b/src/uni_modules/uni-badge/components/uni-badge/uni-badge.vue
new file mode 100644
index 0000000..1981b4e
--- /dev/null
+++ b/src/uni_modules/uni-badge/components/uni-badge/uni-badge.vue
@@ -0,0 +1,268 @@
+
+
+
+ {{displayValue}}
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-badge/package.json b/src/uni_modules/uni-badge/package.json
new file mode 100644
index 0000000..7ba6d2f
--- /dev/null
+++ b/src/uni_modules/uni-badge/package.json
@@ -0,0 +1,88 @@
+{
+ "id": "uni-badge",
+ "displayName": "uni-badge 数字角标",
+ "version": "1.2.0",
+ "description": "数字角标(徽章)组件,在元素周围展示消息提醒,一般用于列表、九宫格、按钮等地方。",
+ "keywords": [
+ "",
+ "badge",
+ "uni-ui",
+ "uniui",
+ "数字角标",
+ "徽章"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": ""
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+ "dcloudext": {
+ "category": [
+ "前端组件",
+ "通用组件"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ },
+ "uni_modules": {
+ "dependencies": [],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "y"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y"
+ },
+ "快应用": {
+ "华为": "y",
+ "联盟": "y"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/uni_modules/uni-badge/readme.md b/src/uni_modules/uni-badge/readme.md
new file mode 100644
index 0000000..bdf175d
--- /dev/null
+++ b/src/uni_modules/uni-badge/readme.md
@@ -0,0 +1,10 @@
+## Badge 数字角标
+> **组件名:uni-badge**
+> 代码块: `uBadge`
+
+数字角标一般和其它控件(列表、9宫格等)配合使用,用于进行数量提示,默认为实心灰色背景,
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-badge)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
+
+
diff --git a/src/uni_modules/uni-breadcrumb/changelog.md b/src/uni_modules/uni-breadcrumb/changelog.md
new file mode 100644
index 0000000..016e6ce
--- /dev/null
+++ b/src/uni_modules/uni-breadcrumb/changelog.md
@@ -0,0 +1,6 @@
+## 0.1.2(2022-06-08)
+- 修复 微信小程序 separator 不显示问题
+## 0.1.1(2022-06-02)
+- 新增 支持 uni.scss 修改颜色
+## 0.1.0(2022-04-21)
+- 初始化
diff --git a/src/uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue b/src/uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue
new file mode 100644
index 0000000..b9edbd6
--- /dev/null
+++ b/src/uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+ {{ separator }}
+
+
+
+
diff --git a/src/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue b/src/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue
new file mode 100644
index 0000000..94493a2
--- /dev/null
+++ b/src/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-breadcrumb/package.json b/src/uni_modules/uni-breadcrumb/package.json
new file mode 100644
index 0000000..e5f33e8
--- /dev/null
+++ b/src/uni_modules/uni-breadcrumb/package.json
@@ -0,0 +1,85 @@
+{
+ "id": "uni-breadcrumb",
+ "displayName": "uni-breadcrumb 面包屑",
+ "version": "0.1.2",
+ "description": "Breadcrumb 面包屑",
+ "keywords": [
+ "uni-breadcrumb",
+ "breadcrumb",
+ "uni-ui",
+ "面包屑导航",
+ "面包屑"
+],
+ "repository": "",
+ "engines": {
+ "HBuilderX": "^3.1.0"
+ },
+ "dcloudext": {
+ "category": [
+ "前端组件",
+ "通用组件"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": ""
+ },
+ "uni_modules": {
+ "dependencies": [],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ },
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "n"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "u",
+ "百度": "u",
+ "字节跳动": "u",
+ "QQ": "u",
+ "京东": "u"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ }
+ }
+ }
+ }
+}
diff --git a/src/uni_modules/uni-breadcrumb/readme.md b/src/uni_modules/uni-breadcrumb/readme.md
new file mode 100644
index 0000000..6976b8d
--- /dev/null
+++ b/src/uni_modules/uni-breadcrumb/readme.md
@@ -0,0 +1,66 @@
+
+## breadcrumb 面包屑导航
+> **组件名:uni-breadcrumb**
+> 代码块: `ubreadcrumb`
+
+显示当前页面的路径,快速返回之前的任意页面。
+
+### 安装方式
+
+本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。
+
+如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55)
+
+### 基本用法
+
+在 ``template`` 中使用组件
+
+```html
+
+ {{route.name}}
+
+```
+
+```js
+export default {
+ name: "uni-stat-breadcrumb",
+ data() {
+ return {
+ routes: [{
+ to: '/A',
+ name: 'A页面'
+ }, {
+ to: '/B',
+ name: 'B页面'
+ }, {
+ to: '/C',
+ name: 'C页面'
+ }]
+ };
+ }
+ }
+```
+
+
+## API
+
+### Breadcrumb Props
+
+|属性名 |类型 |默认值 |说明 |
+|:-: |:-: |:-: |:-: |
+|separator |String |斜杠'/' |分隔符 |
+|separatorClass |String | |图标分隔符 class |
+
+### Breadcrumb Item Props
+
+|属性名 |类型 |默认值 |说明 |
+|:-: |:-: |:-: |:-: |
+|to |String | |路由跳转页面路径 |
+|replace|Boolean | |在使用 to 进行路由跳转时,启用 replace 将不会向 history 添加新记录(仅 h5 支持) |
+
+
+
+
+## 组件示例
+
+点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/breadcrumb/breadcrumb](https://hellouniapp.dcloud.net.cn/pages/extUI/breadcrumb/breadcrumb)
\ No newline at end of file
diff --git a/src/uni_modules/uni-calendar/changelog.md b/src/uni_modules/uni-calendar/changelog.md
new file mode 100644
index 0000000..6df4493
--- /dev/null
+++ b/src/uni_modules/uni-calendar/changelog.md
@@ -0,0 +1,16 @@
+## 1.4.5(2022-02-25)
+- 修复 条件编译 nvue 不支持的 css 样式
+## 1.4.4(2022-02-25)
+- 修复 条件编译 nvue 不支持的 css 样式
+## 1.4.3(2021-09-22)
+- 修复 startDate、 endDate 属性失效的 bug
+## 1.4.2(2021-08-24)
+- 新增 支持国际化
+## 1.4.1(2021-08-05)
+- 修复 弹出层被 tabbar 遮盖 bug
+## 1.4.0(2021-07-30)
+- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
+## 1.3.16(2021-05-12)
+- 新增 组件示例地址
+## 1.3.15(2021-02-04)
+- 调整为uni_modules目录规范
diff --git a/src/uni_modules/uni-calendar/components/uni-calendar/calendar.js b/src/uni_modules/uni-calendar/components/uni-calendar/calendar.js
new file mode 100644
index 0000000..b8d7d6f
--- /dev/null
+++ b/src/uni_modules/uni-calendar/components/uni-calendar/calendar.js
@@ -0,0 +1,546 @@
+/**
+* @1900-2100区间内的公历、农历互转
+* @charset UTF-8
+* @github https://github.com/jjonline/calendar.js
+* @Author Jea杨(JJonline@JJonline.Cn)
+* @Time 2014-7-21
+* @Time 2016-8-13 Fixed 2033hex、Attribution Annals
+* @Time 2016-9-25 Fixed lunar LeapMonth Param Bug
+* @Time 2017-7-24 Fixed use getTerm Func Param Error.use solar year,NOT lunar year
+* @Version 1.0.3
+* @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0]
+* @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0]
+*/
+/* eslint-disable */
+var calendar = {
+
+ /**
+ * 农历1900-2100的润大小信息表
+ * @Array Of Property
+ * @return Hex
+ */
+ lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, // 1900-1909
+ 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, // 1910-1919
+ 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, // 1920-1929
+ 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, // 1930-1939
+ 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, // 1940-1949
+ 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, // 1950-1959
+ 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, // 1960-1969
+ 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, // 1970-1979
+ 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, // 1980-1989
+ 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0, // 1990-1999
+ 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, // 2000-2009
+ 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, // 2010-2019
+ 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, // 2020-2029
+ 0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, // 2030-2039
+ 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, // 2040-2049
+ /** Add By JJonline@JJonline.Cn**/
+ 0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, // 2050-2059
+ 0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, // 2060-2069
+ 0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, // 2070-2079
+ 0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, // 2080-2089
+ 0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, // 2090-2099
+ 0x0d520], // 2100
+
+ /**
+ * 公历每个月份的天数普通表
+ * @Array Of Property
+ * @return Number
+ */
+ solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
+
+ /**
+ * 天干地支之天干速查表
+ * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]
+ * @return Cn string
+ */
+ Gan: ['\u7532', '\u4e59', '\u4e19', '\u4e01', '\u620a', '\u5df1', '\u5e9a', '\u8f9b', '\u58ec', '\u7678'],
+
+ /**
+ * 天干地支之地支速查表
+ * @Array Of Property
+ * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]
+ * @return Cn string
+ */
+ Zhi: ['\u5b50', '\u4e11', '\u5bc5', '\u536f', '\u8fb0', '\u5df3', '\u5348', '\u672a', '\u7533', '\u9149', '\u620c', '\u4ea5'],
+
+ /**
+ * 天干地支之地支速查表<=>生肖
+ * @Array Of Property
+ * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]
+ * @return Cn string
+ */
+ Animals: ['\u9f20', '\u725b', '\u864e', '\u5154', '\u9f99', '\u86c7', '\u9a6c', '\u7f8a', '\u7334', '\u9e21', '\u72d7', '\u732a'],
+
+ /**
+ * 24节气速查表
+ * @Array Of Property
+ * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]
+ * @return Cn string
+ */
+ solarTerm: ['\u5c0f\u5bd2', '\u5927\u5bd2', '\u7acb\u6625', '\u96e8\u6c34', '\u60ca\u86f0', '\u6625\u5206', '\u6e05\u660e', '\u8c37\u96e8', '\u7acb\u590f', '\u5c0f\u6ee1', '\u8292\u79cd', '\u590f\u81f3', '\u5c0f\u6691', '\u5927\u6691', '\u7acb\u79cb', '\u5904\u6691', '\u767d\u9732', '\u79cb\u5206', '\u5bd2\u9732', '\u971c\u964d', '\u7acb\u51ac', '\u5c0f\u96ea', '\u5927\u96ea', '\u51ac\u81f3'],
+
+ /**
+ * 1900-2100各年的24节气日期速查表
+ * @Array Of Property
+ * @return 0x string For splice
+ */
+ sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f',
+ '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f',
+ 'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f',
+ '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa',
+ '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2',
+ '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f',
+ '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722',
+ '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f',
+ '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722',
+ '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f',
+ '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
+ '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
+ '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722',
+ '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+ '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722',
+ '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+ '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722',
+ '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
+ '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
+ '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
+ '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
+ '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+ '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+ '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
+ '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+ '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+ '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721',
+ '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2',
+ '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
+ '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+ '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd',
+ '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+ '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+ '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+ '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd',
+ '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+ '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+ '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721',
+ '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5',
+ '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722',
+ '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+ '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
+ '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35',
+ '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+ '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721',
+ '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd',
+ '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35',
+ '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+ '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721',
+ '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5',
+ '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35',
+ '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+ '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
+ '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35',
+ '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'],
+
+ /**
+ * 数字转中文速查表
+ * @Array Of Property
+ * @trans ['日','一','二','三','四','五','六','七','八','九','十']
+ * @return Cn string
+ */
+ nStr1: ['\u65e5', '\u4e00', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341'],
+
+ /**
+ * 日期转农历称呼速查表
+ * @Array Of Property
+ * @trans ['初','十','廿','卅']
+ * @return Cn string
+ */
+ nStr2: ['\u521d', '\u5341', '\u5eff', '\u5345'],
+
+ /**
+ * 月份转农历称呼速查表
+ * @Array Of Property
+ * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊']
+ * @return Cn string
+ */
+ nStr3: ['\u6b63', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341', '\u51ac', '\u814a'],
+
+ /**
+ * 返回农历y年一整年的总天数
+ * @param lunar Year
+ * @return Number
+ * @eg:var count = calendar.lYearDays(1987) ;//count=387
+ */
+ lYearDays: function (y) {
+ var i; var sum = 348
+ for (i = 0x8000; i > 0x8; i >>= 1) { sum += (this.lunarInfo[y - 1900] & i) ? 1 : 0 }
+ return (sum + this.leapDays(y))
+ },
+
+ /**
+ * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0
+ * @param lunar Year
+ * @return Number (0-12)
+ * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6
+ */
+ leapMonth: function (y) { // 闰字编码 \u95f0
+ return (this.lunarInfo[y - 1900] & 0xf)
+ },
+
+ /**
+ * 返回农历y年闰月的天数 若该年没有闰月则返回0
+ * @param lunar Year
+ * @return Number (0、29、30)
+ * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29
+ */
+ leapDays: function (y) {
+ if (this.leapMonth(y)) {
+ return ((this.lunarInfo[y - 1900] & 0x10000) ? 30 : 29)
+ }
+ return (0)
+ },
+
+ /**
+ * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法
+ * @param lunar Year
+ * @return Number (-1、29、30)
+ * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29
+ */
+ monthDays: function (y, m) {
+ if (m > 12 || m < 1) { return -1 }// 月份参数从1至12,参数错误返回-1
+ return ((this.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29)
+ },
+
+ /**
+ * 返回公历(!)y年m月的天数
+ * @param solar Year
+ * @return Number (-1、28、29、30、31)
+ * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30
+ */
+ solarDays: function (y, m) {
+ if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1
+ var ms = m - 1
+ if (ms == 1) { // 2月份的闰平规律测算后确认返回28或29
+ return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28)
+ } else {
+ return (this.solarMonth[ms])
+ }
+ },
+
+ /**
+ * 农历年份转换为干支纪年
+ * @param lYear 农历年的年份数
+ * @return Cn string
+ */
+ toGanZhiYear: function (lYear) {
+ var ganKey = (lYear - 3) % 10
+ var zhiKey = (lYear - 3) % 12
+ if (ganKey == 0) ganKey = 10// 如果余数为0则为最后一个天干
+ if (zhiKey == 0) zhiKey = 12// 如果余数为0则为最后一个地支
+ return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1]
+ },
+
+ /**
+ * 公历月、日判断所属星座
+ * @param cMonth [description]
+ * @param cDay [description]
+ * @return Cn string
+ */
+ toAstro: function (cMonth, cDay) {
+ var s = '\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf'
+ var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22]
+ return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + '\u5ea7'// 座
+ },
+
+ /**
+ * 传入offset偏移量返回干支
+ * @param offset 相对甲子的偏移量
+ * @return Cn string
+ */
+ toGanZhi: function (offset) {
+ return this.Gan[offset % 10] + this.Zhi[offset % 12]
+ },
+
+ /**
+ * 传入公历(!)y年获得该年第n个节气的公历日期
+ * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起
+ * @return day Number
+ * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春
+ */
+ getTerm: function (y, n) {
+ if (y < 1900 || y > 2100) { return -1 }
+ if (n < 1 || n > 24) { return -1 }
+ var _table = this.sTermInfo[y - 1900]
+ var _info = [
+ parseInt('0x' + _table.substr(0, 5)).toString(),
+ parseInt('0x' + _table.substr(5, 5)).toString(),
+ parseInt('0x' + _table.substr(10, 5)).toString(),
+ parseInt('0x' + _table.substr(15, 5)).toString(),
+ parseInt('0x' + _table.substr(20, 5)).toString(),
+ parseInt('0x' + _table.substr(25, 5)).toString()
+ ]
+ var _calday = [
+ _info[0].substr(0, 1),
+ _info[0].substr(1, 2),
+ _info[0].substr(3, 1),
+ _info[0].substr(4, 2),
+
+ _info[1].substr(0, 1),
+ _info[1].substr(1, 2),
+ _info[1].substr(3, 1),
+ _info[1].substr(4, 2),
+
+ _info[2].substr(0, 1),
+ _info[2].substr(1, 2),
+ _info[2].substr(3, 1),
+ _info[2].substr(4, 2),
+
+ _info[3].substr(0, 1),
+ _info[3].substr(1, 2),
+ _info[3].substr(3, 1),
+ _info[3].substr(4, 2),
+
+ _info[4].substr(0, 1),
+ _info[4].substr(1, 2),
+ _info[4].substr(3, 1),
+ _info[4].substr(4, 2),
+
+ _info[5].substr(0, 1),
+ _info[5].substr(1, 2),
+ _info[5].substr(3, 1),
+ _info[5].substr(4, 2)
+ ]
+ return parseInt(_calday[n - 1])
+ },
+
+ /**
+ * 传入农历数字月份返回汉语通俗表示法
+ * @param lunar month
+ * @return Cn string
+ * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月'
+ */
+ toChinaMonth: function (m) { // 月 => \u6708
+ if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1
+ var s = this.nStr3[m - 1]
+ s += '\u6708'// 加上月字
+ return s
+ },
+
+ /**
+ * 传入农历日期数字返回汉字表示法
+ * @param lunar day
+ * @return Cn string
+ * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一'
+ */
+ toChinaDay: function (d) { // 日 => \u65e5
+ var s
+ switch (d) {
+ case 10:
+ s = '\u521d\u5341'; break
+ case 20:
+ s = '\u4e8c\u5341'; break
+ break
+ case 30:
+ s = '\u4e09\u5341'; break
+ break
+ default :
+ s = this.nStr2[Math.floor(d / 10)]
+ s += this.nStr1[d % 10]
+ }
+ return (s)
+ },
+
+ /**
+ * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春”
+ * @param y year
+ * @return Cn string
+ * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔'
+ */
+ getAnimal: function (y) {
+ return this.Animals[(y - 4) % 12]
+ },
+
+ /**
+ * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON
+ * @param y solar year
+ * @param m solar month
+ * @param d solar day
+ * @return JSON object
+ * @eg:console.log(calendar.solar2lunar(1987,11,01));
+ */
+ solar2lunar: function (y, m, d) { // 参数区间1900.1.31~2100.12.31
+ // 年份限定、上限
+ if (y < 1900 || y > 2100) {
+ return -1// undefined转换为数字变为NaN
+ }
+ // 公历传参最下限
+ if (y == 1900 && m == 1 && d < 31) {
+ return -1
+ }
+ // 未传参 获得当天
+ if (!y) {
+ var objDate = new Date()
+ } else {
+ var objDate = new Date(y, parseInt(m) - 1, d)
+ }
+ var i; var leap = 0; var temp = 0
+ // 修正ymd参数
+ var y = objDate.getFullYear()
+ var m = objDate.getMonth() + 1
+ var d = objDate.getDate()
+ var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000
+ for (i = 1900; i < 2101 && offset > 0; i++) {
+ temp = this.lYearDays(i)
+ offset -= temp
+ }
+ if (offset < 0) {
+ offset += temp; i--
+ }
+
+ // 是否今天
+ var isTodayObj = new Date()
+ var isToday = false
+ if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) {
+ isToday = true
+ }
+ // 星期几
+ var nWeek = objDate.getDay()
+ var cWeek = this.nStr1[nWeek]
+ // 数字表示周几顺应天朝周一开始的惯例
+ if (nWeek == 0) {
+ nWeek = 7
+ }
+ // 农历年
+ var year = i
+ var leap = this.leapMonth(i) // 闰哪个月
+ var isLeap = false
+
+ // 效验闰月
+ for (i = 1; i < 13 && offset > 0; i++) {
+ // 闰月
+ if (leap > 0 && i == (leap + 1) && isLeap == false) {
+ --i
+ isLeap = true; temp = this.leapDays(year) // 计算农历闰月天数
+ } else {
+ temp = this.monthDays(year, i)// 计算农历普通月天数
+ }
+ // 解除闰月
+ if (isLeap == true && i == (leap + 1)) { isLeap = false }
+ offset -= temp
+ }
+ // 闰月导致数组下标重叠取反
+ if (offset == 0 && leap > 0 && i == leap + 1) {
+ if (isLeap) {
+ isLeap = false
+ } else {
+ isLeap = true; --i
+ }
+ }
+ if (offset < 0) {
+ offset += temp; --i
+ }
+ // 农历月
+ var month = i
+ // 农历日
+ var day = offset + 1
+ // 天干地支处理
+ var sm = m - 1
+ var gzY = this.toGanZhiYear(year)
+
+ // 当月的两个节气
+ // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year`
+ var firstNode = this.getTerm(y, (m * 2 - 1))// 返回当月「节」为几日开始
+ var secondNode = this.getTerm(y, (m * 2))// 返回当月「节」为几日开始
+
+ // 依据12节气修正干支月
+ var gzM = this.toGanZhi((y - 1900) * 12 + m + 11)
+ if (d >= firstNode) {
+ gzM = this.toGanZhi((y - 1900) * 12 + m + 12)
+ }
+
+ // 传入的日期的节气与否
+ var isTerm = false
+ var Term = null
+ if (firstNode == d) {
+ isTerm = true
+ Term = this.solarTerm[m * 2 - 2]
+ }
+ if (secondNode == d) {
+ isTerm = true
+ Term = this.solarTerm[m * 2 - 1]
+ }
+ // 日柱 当月一日与 1900/1/1 相差天数
+ var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10
+ var gzD = this.toGanZhi(dayCyclical + d - 1)
+ // 该日期所属的星座
+ var astro = this.toAstro(m, d)
+
+ return { 'lYear': year, 'lMonth': month, 'lDay': day, 'Animal': this.getAnimal(year), 'IMonthCn': (isLeap ? '\u95f0' : '') + this.toChinaMonth(month), 'IDayCn': this.toChinaDay(day), 'cYear': y, 'cMonth': m, 'cDay': d, 'gzYear': gzY, 'gzMonth': gzM, 'gzDay': gzD, 'isToday': isToday, 'isLeap': isLeap, 'nWeek': nWeek, 'ncWeek': '\u661f\u671f' + cWeek, 'isTerm': isTerm, 'Term': Term, 'astro': astro }
+ },
+
+ /**
+ * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON
+ * @param y lunar year
+ * @param m lunar month
+ * @param d lunar day
+ * @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可]
+ * @return JSON object
+ * @eg:console.log(calendar.lunar2solar(1987,9,10));
+ */
+ lunar2solar: function (y, m, d, isLeapMonth) { // 参数区间1900.1.31~2100.12.1
+ var isLeapMonth = !!isLeapMonth
+ var leapOffset = 0
+ var leapMonth = this.leapMonth(y)
+ var leapDay = this.leapDays(y)
+ if (isLeapMonth && (leapMonth != m)) { return -1 }// 传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同
+ if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) { return -1 }// 超出了最大极限值
+ var day = this.monthDays(y, m)
+ var _day = day
+ // bugFix 2016-9-25
+ // if month is leap, _day use leapDays method
+ if (isLeapMonth) {
+ _day = this.leapDays(y, m)
+ }
+ if (y < 1900 || y > 2100 || d > _day) { return -1 }// 参数合法性效验
+
+ // 计算农历的时间差
+ var offset = 0
+ for (var i = 1900; i < y; i++) {
+ offset += this.lYearDays(i)
+ }
+ var leap = 0; var isAdd = false
+ for (var i = 1; i < m; i++) {
+ leap = this.leapMonth(y)
+ if (!isAdd) { // 处理闰月
+ if (leap <= i && leap > 0) {
+ offset += this.leapDays(y); isAdd = true
+ }
+ }
+ offset += this.monthDays(y, i)
+ }
+ // 转换闰月农历 需补充该年闰月的前一个月的时差
+ if (isLeapMonth) { offset += day }
+ // 1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点)
+ var stmap = Date.UTC(1900, 1, 30, 0, 0, 0)
+ var calObj = new Date((offset + d - 31) * 86400000 + stmap)
+ var cY = calObj.getUTCFullYear()
+ var cM = calObj.getUTCMonth() + 1
+ var cD = calObj.getUTCDate()
+
+ return this.solar2lunar(cY, cM, cD)
+ }
+}
+
+export default calendar
diff --git a/src/uni_modules/uni-calendar/components/uni-calendar/i18n/en.json b/src/uni_modules/uni-calendar/components/uni-calendar/i18n/en.json
new file mode 100644
index 0000000..fcbd13c
--- /dev/null
+++ b/src/uni_modules/uni-calendar/components/uni-calendar/i18n/en.json
@@ -0,0 +1,12 @@
+{
+ "uni-calender.ok": "ok",
+ "uni-calender.cancel": "cancel",
+ "uni-calender.today": "today",
+ "uni-calender.MON": "MON",
+ "uni-calender.TUE": "TUE",
+ "uni-calender.WED": "WED",
+ "uni-calender.THU": "THU",
+ "uni-calender.FRI": "FRI",
+ "uni-calender.SAT": "SAT",
+ "uni-calender.SUN": "SUN"
+}
diff --git a/src/uni_modules/uni-calendar/components/uni-calendar/i18n/index.js b/src/uni_modules/uni-calendar/components/uni-calendar/i18n/index.js
new file mode 100644
index 0000000..de7509c
--- /dev/null
+++ b/src/uni_modules/uni-calendar/components/uni-calendar/i18n/index.js
@@ -0,0 +1,8 @@
+import en from './en.json'
+import zhHans from './zh-Hans.json'
+import zhHant from './zh-Hant.json'
+export default {
+ en,
+ 'zh-Hans': zhHans,
+ 'zh-Hant': zhHant
+}
diff --git a/src/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json b/src/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json
new file mode 100644
index 0000000..1ca43de
--- /dev/null
+++ b/src/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json
@@ -0,0 +1,12 @@
+{
+ "uni-calender.ok": "确定",
+ "uni-calender.cancel": "取消",
+ "uni-calender.today": "今日",
+ "uni-calender.SUN": "日",
+ "uni-calender.MON": "一",
+ "uni-calender.TUE": "二",
+ "uni-calender.WED": "三",
+ "uni-calender.THU": "四",
+ "uni-calender.FRI": "五",
+ "uni-calender.SAT": "六"
+}
diff --git a/src/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json b/src/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json
new file mode 100644
index 0000000..e0fe33b
--- /dev/null
+++ b/src/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json
@@ -0,0 +1,12 @@
+{
+ "uni-calender.ok": "確定",
+ "uni-calender.cancel": "取消",
+ "uni-calender.today": "今日",
+ "uni-calender.SUN": "日",
+ "uni-calender.MON": "一",
+ "uni-calender.TUE": "二",
+ "uni-calender.WED": "三",
+ "uni-calender.THU": "四",
+ "uni-calender.FRI": "五",
+ "uni-calender.SAT": "六"
+}
diff --git a/src/uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue b/src/uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue
new file mode 100644
index 0000000..0353011
--- /dev/null
+++ b/src/uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue
@@ -0,0 +1,181 @@
+
+
+
+
+ {{weeks.date}}
+ {{todayText}}
+ {{weeks.isDay ? todayText : (weeks.lunar.IDayCn === '初一'?weeks.lunar.IMonthCn:weeks.lunar.IDayCn)}}
+ {{weeks.extraInfo.info}}
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue b/src/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue
new file mode 100644
index 0000000..a2c33d0
--- /dev/null
+++ b/src/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue
@@ -0,0 +1,554 @@
+
+
+
+
+
+
+
+
+ {{nowDate.month}}
+
+
+
+ {{SUNText}}
+
+
+ {{monText}}
+
+
+ {{TUEText}}
+
+
+ {{WEDText}}
+
+
+ {{THUText}}
+
+
+ {{FRIText}}
+
+
+ {{SATText}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-calendar/components/uni-calendar/util.js b/src/uni_modules/uni-calendar/components/uni-calendar/util.js
new file mode 100644
index 0000000..bae9273
--- /dev/null
+++ b/src/uni_modules/uni-calendar/components/uni-calendar/util.js
@@ -0,0 +1,354 @@
+import CALENDAR from './calendar.js'
+
+class Calendar {
+ constructor({
+ date,
+ selected,
+ startDate,
+ endDate,
+ range
+ } = {}) {
+ // 当前日期
+ this.date = this.getDate(new Date()) // 当前初入日期
+ // 打点信息
+ this.selected = selected || [];
+ // 范围开始
+ this.startDate = startDate
+ // 范围结束
+ this.endDate = endDate
+ this.range = range
+ // 多选状态
+ this.cleanMultipleStatus()
+ // 每周日期
+ this.weeks = {}
+ // this._getWeek(this.date.fullDate)
+ }
+ /**
+ * 设置日期
+ * @param {Object} date
+ */
+ setDate(date) {
+ this.selectDate = this.getDate(date)
+ this._getWeek(this.selectDate.fullDate)
+ }
+
+ /**
+ * 清理多选状态
+ */
+ cleanMultipleStatus() {
+ this.multipleStatus = {
+ before: '',
+ after: '',
+ data: []
+ }
+ }
+
+ /**
+ * 重置开始日期
+ */
+ resetSatrtDate(startDate) {
+ // 范围开始
+ this.startDate = startDate
+
+ }
+
+ /**
+ * 重置结束日期
+ */
+ resetEndDate(endDate) {
+ // 范围结束
+ this.endDate = endDate
+ }
+
+ /**
+ * 获取任意时间
+ */
+ getDate(date, AddDayCount = 0, str = 'day') {
+ if (!date) {
+ date = new Date()
+ }
+ if (typeof date !== 'object') {
+ date = date.replace(/-/g, '/')
+ }
+ const dd = new Date(date)
+ switch (str) {
+ case 'day':
+ dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期
+ break
+ case 'month':
+ if (dd.getDate() === 31) {
+ dd.setDate(dd.getDate() + AddDayCount)
+ } else {
+ dd.setMonth(dd.getMonth() + AddDayCount) // 获取AddDayCount天后的日期
+ }
+ break
+ case 'year':
+ dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期
+ break
+ }
+ const y = dd.getFullYear()
+ const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0
+ const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0
+ return {
+ fullDate: y + '-' + m + '-' + d,
+ year: y,
+ month: m,
+ date: d,
+ day: dd.getDay()
+ }
+ }
+
+
+ /**
+ * 获取上月剩余天数
+ */
+ _getLastMonthDays(firstDay, full) {
+ let dateArr = []
+ for (let i = firstDay; i > 0; i--) {
+ const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate()
+ dateArr.push({
+ date: beforeDate,
+ month: full.month - 1,
+ lunar: this.getlunar(full.year, full.month - 1, beforeDate),
+ disable: true
+ })
+ }
+ return dateArr
+ }
+ /**
+ * 获取本月天数
+ */
+ _currentMonthDys(dateData, full) {
+ let dateArr = []
+ let fullDate = this.date.fullDate
+ for (let i = 1; i <= dateData; i++) {
+ let isinfo = false
+ let nowDate = full.year + '-' + (full.month < 10 ?
+ full.month : full.month) + '-' + (i < 10 ?
+ '0' + i : i)
+ // 是否今天
+ let isDay = fullDate === nowDate
+ // 获取打点信息
+ let info = this.selected && this.selected.find((item) => {
+ if (this.dateEqual(nowDate, item.date)) {
+ return item
+ }
+ })
+
+ // 日期禁用
+ let disableBefore = true
+ let disableAfter = true
+ if (this.startDate) {
+ // let dateCompBefore = this.dateCompare(this.startDate, fullDate)
+ // disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate)
+ disableBefore = this.dateCompare(this.startDate, nowDate)
+ }
+
+ if (this.endDate) {
+ // let dateCompAfter = this.dateCompare(fullDate, this.endDate)
+ // disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate)
+ disableAfter = this.dateCompare(nowDate, this.endDate)
+ }
+ let multiples = this.multipleStatus.data
+ let checked = false
+ let multiplesStatus = -1
+ if (this.range) {
+ if (multiples) {
+ multiplesStatus = multiples.findIndex((item) => {
+ return this.dateEqual(item, nowDate)
+ })
+ }
+ if (multiplesStatus !== -1) {
+ checked = true
+ }
+ }
+ let data = {
+ fullDate: nowDate,
+ year: full.year,
+ date: i,
+ multiple: this.range ? checked : false,
+ beforeMultiple: this.dateEqual(this.multipleStatus.before, nowDate),
+ afterMultiple: this.dateEqual(this.multipleStatus.after, nowDate),
+ month: full.month,
+ lunar: this.getlunar(full.year, full.month, i),
+ disable: !(disableBefore && disableAfter),
+ isDay
+ }
+ if (info) {
+ data.extraInfo = info
+ }
+
+ dateArr.push(data)
+ }
+ return dateArr
+ }
+ /**
+ * 获取下月天数
+ */
+ _getNextMonthDays(surplus, full) {
+ let dateArr = []
+ for (let i = 1; i < surplus + 1; i++) {
+ dateArr.push({
+ date: i,
+ month: Number(full.month) + 1,
+ lunar: this.getlunar(full.year, Number(full.month) + 1, i),
+ disable: true
+ })
+ }
+ return dateArr
+ }
+
+ /**
+ * 获取当前日期详情
+ * @param {Object} date
+ */
+ getInfo(date) {
+ if (!date) {
+ date = new Date()
+ }
+ const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate)
+ return dateInfo
+ }
+
+ /**
+ * 比较时间大小
+ */
+ dateCompare(startDate, endDate) {
+ // 计算截止时间
+ startDate = new Date(startDate.replace('-', '/').replace('-', '/'))
+ // 计算详细项的截止时间
+ endDate = new Date(endDate.replace('-', '/').replace('-', '/'))
+ if (startDate <= endDate) {
+ return true
+ } else {
+ return false
+ }
+ }
+
+ /**
+ * 比较时间是否相等
+ */
+ dateEqual(before, after) {
+ // 计算截止时间
+ before = new Date(before.replace('-', '/').replace('-', '/'))
+ // 计算详细项的截止时间
+ after = new Date(after.replace('-', '/').replace('-', '/'))
+ if (before.getTime() - after.getTime() === 0) {
+ return true
+ } else {
+ return false
+ }
+ }
+
+
+ /**
+ * 获取日期范围内所有日期
+ * @param {Object} begin
+ * @param {Object} end
+ */
+ geDateAll(begin, end) {
+ var arr = []
+ var ab = begin.split('-')
+ var ae = end.split('-')
+ var db = new Date()
+ db.setFullYear(ab[0], ab[1] - 1, ab[2])
+ var de = new Date()
+ de.setFullYear(ae[0], ae[1] - 1, ae[2])
+ var unixDb = db.getTime() - 24 * 60 * 60 * 1000
+ var unixDe = de.getTime() - 24 * 60 * 60 * 1000
+ for (var k = unixDb; k <= unixDe;) {
+ k = k + 24 * 60 * 60 * 1000
+ arr.push(this.getDate(new Date(parseInt(k))).fullDate)
+ }
+ return arr
+ }
+ /**
+ * 计算阴历日期显示
+ */
+ getlunar(year, month, date) {
+ return CALENDAR.solar2lunar(year, month, date)
+ }
+ /**
+ * 设置打点
+ */
+ setSelectInfo(data, value) {
+ this.selected = value
+ this._getWeek(data)
+ }
+
+ /**
+ * 获取多选状态
+ */
+ setMultiple(fullDate) {
+ let {
+ before,
+ after
+ } = this.multipleStatus
+
+ if (!this.range) return
+ if (before && after) {
+ this.multipleStatus.before = ''
+ this.multipleStatus.after = ''
+ this.multipleStatus.data = []
+ } else {
+ if (!before) {
+ this.multipleStatus.before = fullDate
+ } else {
+ this.multipleStatus.after = fullDate
+ if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
+ this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after);
+ } else {
+ this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before);
+ }
+ }
+ }
+ this._getWeek(fullDate)
+ }
+
+ /**
+ * 获取每周数据
+ * @param {Object} dateData
+ */
+ _getWeek(dateData) {
+ const {
+ fullDate,
+ year,
+ month,
+ date,
+ day
+ } = this.getDate(dateData)
+ let firstDay = new Date(year, month - 1, 1).getDay()
+ let currentDay = new Date(year, month, 0).getDate()
+ let dates = {
+ lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天
+ currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数
+ nextMonthDays: [], // 下个月开始几天
+ weeks: []
+ }
+ let canlender = []
+ const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length)
+ dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData))
+ canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays)
+ let weeks = {}
+ // 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天
+ for (let i = 0; i < canlender.length; i++) {
+ if (i % 7 === 0) {
+ weeks[parseInt(i / 7)] = new Array(7)
+ }
+ weeks[parseInt(i / 7)][i % 7] = canlender[i]
+ }
+ this.canlender = canlender
+ this.weeks = weeks
+ }
+
+ //静态方法
+ // static init(date) {
+ // if (!this.instance) {
+ // this.instance = new Calendar(date);
+ // }
+ // return this.instance;
+ // }
+}
+
+
+export default Calendar
diff --git a/src/uni_modules/uni-calendar/package.json b/src/uni_modules/uni-calendar/package.json
new file mode 100644
index 0000000..40455c8
--- /dev/null
+++ b/src/uni_modules/uni-calendar/package.json
@@ -0,0 +1,88 @@
+{
+ "id": "uni-calendar",
+ "displayName": "uni-calendar 日历",
+ "version": "1.4.5",
+ "description": "日历组件",
+ "keywords": [
+ "uni-ui",
+ "uniui",
+ "日历",
+ "",
+ "打卡",
+ "日历选择"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": ""
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+ "dcloudext": {
+ "category": [
+ "前端组件",
+ "通用组件"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ },
+ "uni_modules": {
+ "dependencies": [],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "y"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/uni_modules/uni-calendar/readme.md b/src/uni_modules/uni-calendar/readme.md
new file mode 100644
index 0000000..4f3ca0e
--- /dev/null
+++ b/src/uni_modules/uni-calendar/readme.md
@@ -0,0 +1,103 @@
+
+
+## Calendar 日历
+> **组件名:uni-calendar**
+> 代码块: `uCalendar`
+
+
+日历组件
+
+> **注意事项**
+> 为了避免错误使用,给大家带来不好的开发体验,请在使用组件前仔细阅读下面的注意事项,可以帮你避免一些错误。
+> - 本组件农历转换使用的js是 [@1900-2100区间内的公历、农历互转](https://github.com/jjonline/calendar.js)
+> - 仅支持自定义组件模式
+> - `date`属性传入的应该是一个 String ,如: 2019-06-27 ,而不是 new Date()
+> - 通过 `insert` 属性来确定当前的事件是 @change 还是 @confirm 。理应合并为一个事件,但是为了区分模式,现使用两个事件,这里需要注意
+> - 弹窗模式下无法阻止后面的元素滚动,如有需要阻止,请在弹窗弹出后,手动设置滚动元素为不可滚动
+
+
+### 安装方式
+
+本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。
+
+如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55)
+
+### 基本用法
+
+在 ``template`` 中使用组件
+
+```html
+
+
+
+```
+
+### 通过方法打开日历
+
+需要设置 `insert` 为 `false`
+
+```html
+
+
+
+
+```
+
+```javascript
+
+export default {
+ data() {
+ return {};
+ },
+ methods: {
+ open(){
+ this.$refs.calendar.open();
+ },
+ confirm(e) {
+ console.log(e);
+ }
+ }
+};
+
+```
+
+
+## API
+
+### Calendar Props
+
+| 属性名 | 类型 | 默认值| 说明 |
+| | |
+| date | String |- | 自定义当前时间,默认为今天 |
+| lunar | Boolean | false | 显示农历 |
+| startDate | String |- | 日期选择范围-开始日期 |
+| endDate | String |- | 日期选择范围-结束日期 |
+| range | Boolean | false | 范围选择 |
+| insert | Boolean | false | 插入模式,可选值,ture:插入模式;false:弹窗模式;默认为插入模式 |
+|clearDate |Boolean |true |弹窗模式是否清空上次选择内容 |
+| selected | Array |- | 打点,期待格式[{date: '2019-06-27', info: '签到', data: { custom: '自定义信息', name: '自定义消息头',xxx:xxx... }}] |
+|showMonth | Boolean | true | 是否显示月份为背景 |
+
+### Calendar Events
+
+| 事件名 | 说明 |返回值|
+| | | |
+| open | 弹出日历组件,`insert :false` 时生效|- |
+
+
+
+
+
+## 组件示例
+
+点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/calendar/calendar](https://hellouniapp.dcloud.net.cn/pages/extUI/calendar/calendar)
\ No newline at end of file
diff --git a/src/uni_modules/uni-card/changelog.md b/src/uni_modules/uni-card/changelog.md
new file mode 100644
index 0000000..c3cd8c4
--- /dev/null
+++ b/src/uni_modules/uni-card/changelog.md
@@ -0,0 +1,26 @@
+## 1.3.1(2021-12-20)
+- 修复 在vue页面下略缩图显示不正常的bug
+## 1.3.0(2021-11-19)
+- 重构插槽的用法 ,header 替换为 title
+- 新增 actions 插槽
+- 新增 cover 封面图属性和插槽
+- 新增 padding 内容默认内边距离
+- 新增 margin 卡片默认外边距离
+- 新增 spacing 卡片默认内边距
+- 新增 shadow 卡片阴影属性
+- 取消 mode 属性,可使用组合插槽代替
+- 取消 note 属性 ,使用actions插槽代替
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-card](https://uniapp.dcloud.io/component/uniui/uni-card)
+## 1.2.1(2021-07-30)
+- 优化 vue3下事件警告的问题
+## 1.2.0(2021-07-13)
+- 组件兼容 vue3,如何创建vue3项目详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
+## 1.1.8(2021-07-01)
+- 优化 图文卡片无图片加载时,提供占位图标
+- 新增 header 插槽,自定义卡片头部( 图文卡片 mode="style" 时,不支持)
+- 修复 thumbnail 不存在仍然占位的 bug
+## 1.1.7(2021-05-12)
+- 新增 组件示例地址
+## 1.1.6(2021-02-04)
+- 调整为uni_modules目录规范
diff --git a/src/uni_modules/uni-card/components/uni-card/uni-card.vue b/src/uni_modules/uni-card/components/uni-card/uni-card.vue
new file mode 100644
index 0000000..38cf594
--- /dev/null
+++ b/src/uni_modules/uni-card/components/uni-card/uni-card.vue
@@ -0,0 +1,270 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-card/package.json b/src/uni_modules/uni-card/package.json
new file mode 100644
index 0000000..f16224d
--- /dev/null
+++ b/src/uni_modules/uni-card/package.json
@@ -0,0 +1,90 @@
+{
+ "id": "uni-card",
+ "displayName": "uni-card 卡片",
+ "version": "1.3.1",
+ "description": "Card 组件,提供常见的卡片样式。",
+ "keywords": [
+ "uni-ui",
+ "uniui",
+ "card",
+ "",
+ "卡片"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": ""
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+ "dcloudext": {
+ "category": [
+ "前端组件",
+ "通用组件"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ },
+ "uni_modules": {
+ "dependencies": [
+ "uni-icons",
+ "uni-scss"
+ ],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "y"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
diff --git a/src/uni_modules/uni-card/readme.md b/src/uni_modules/uni-card/readme.md
new file mode 100644
index 0000000..7434e71
--- /dev/null
+++ b/src/uni_modules/uni-card/readme.md
@@ -0,0 +1,12 @@
+
+
+## Card 卡片
+> **组件名:uni-card**
+> 代码块: `uCard`
+
+卡片视图组件。
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-card)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
+
+
diff --git a/src/uni_modules/uni-collapse/changelog.md b/src/uni_modules/uni-collapse/changelog.md
new file mode 100644
index 0000000..292e4c7
--- /dev/null
+++ b/src/uni_modules/uni-collapse/changelog.md
@@ -0,0 +1,36 @@
+## 1.4.3(2022-01-25)
+- 修复 初始化的时候 ,open 属性失效的bug
+## 1.4.2(2022-01-21)
+- 修复 微信小程序resize后组件收起的bug
+## 1.4.1(2021-11-22)
+- 修复 vue3中个别scss变量无法找到的问题
+## 1.4.0(2021-11-19)
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-collapse](https://uniapp.dcloud.io/component/uniui/uni-collapse)
+## 1.3.3(2021-08-17)
+- 优化 show-arrow 属性默认为true
+## 1.3.2(2021-08-17)
+- 新增 show-arrow 属性,控制是否显示右侧箭头
+## 1.3.1(2021-07-30)
+- 优化 vue3下小程序事件警告的问题
+## 1.3.0(2021-07-30)
+- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
+## 1.2.2(2021-07-21)
+- 修复 由1.2.0版本引起的 change 事件返回 undefined 的Bug
+## 1.2.1(2021-07-21)
+- 优化 组件示例
+## 1.2.0(2021-07-21)
+- 新增 组件折叠动画
+- 新增 value\v-model 属性 ,动态修改面板折叠状态
+- 新增 title 插槽 ,可定义面板标题
+- 新增 border 属性 ,显示隐藏面板内容分隔线
+- 新增 title-border 属性 ,显示隐藏面板标题分隔线
+- 修复 resize 方法失效的Bug
+- 修复 change 事件返回参数不正确的Bug
+- 优化 H5、App 平台自动更具内容更新高度,无需调用 reszie() 方法
+## 1.1.7(2021-05-12)
+- 新增 组件示例地址
+## 1.1.6(2021-02-05)
+- 优化 组件引用关系,通过uni_modules引用组件
+## 1.1.5(2021-02-05)
+- 调整为uni_modules目录规范
\ No newline at end of file
diff --git a/src/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue b/src/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue
new file mode 100644
index 0000000..50a72a5
--- /dev/null
+++ b/src/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue
@@ -0,0 +1,404 @@
+
+
+
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue b/src/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue
new file mode 100644
index 0000000..384c39a
--- /dev/null
+++ b/src/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-collapse/package.json b/src/uni_modules/uni-collapse/package.json
new file mode 100644
index 0000000..65349cf
--- /dev/null
+++ b/src/uni_modules/uni-collapse/package.json
@@ -0,0 +1,89 @@
+{
+ "id": "uni-collapse",
+ "displayName": "uni-collapse 折叠面板",
+ "version": "1.4.3",
+ "description": "Collapse 组件,可以折叠 / 展开的内容区域。",
+ "keywords": [
+ "uni-ui",
+ "折叠",
+ "折叠面板",
+ "手风琴"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": ""
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+ "dcloudext": {
+ "category": [
+ "前端组件",
+ "通用组件"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ },
+ "uni_modules": {
+ "dependencies": [
+ "uni-scss",
+ "uni-icons"
+ ],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "y"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
diff --git a/src/uni_modules/uni-collapse/readme.md b/src/uni_modules/uni-collapse/readme.md
new file mode 100644
index 0000000..bc758eb
--- /dev/null
+++ b/src/uni_modules/uni-collapse/readme.md
@@ -0,0 +1,12 @@
+
+
+## Collapse 折叠面板
+> **组件名:uni-collapse**
+> 代码块: `uCollapse`
+> 关联组件:`uni-collapse-item`、`uni-icons`。
+
+
+折叠面板用来折叠/显示过长的内容或者是列表。通常是在多内容分类项使用,折叠不重要的内容,显示重要内容。点击可以展开折叠部分。
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-collapse)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
\ No newline at end of file
diff --git a/src/uni_modules/uni-combox/changelog.md b/src/uni_modules/uni-combox/changelog.md
new file mode 100644
index 0000000..23c2748
--- /dev/null
+++ b/src/uni_modules/uni-combox/changelog.md
@@ -0,0 +1,15 @@
+## 1.0.1(2021-11-23)
+- 优化 label、label-width 属性
+## 1.0.0(2021-11-19)
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-combox](https://uniapp.dcloud.io/component/uniui/uni-combox)
+## 0.1.0(2021-07-30)
+- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
+## 0.0.6(2021-05-12)
+- 新增 组件示例地址
+## 0.0.5(2021-04-21)
+- 优化 添加依赖 uni-icons, 导入后自动下载依赖
+## 0.0.4(2021-02-05)
+- 优化 组件引用关系,通过uni_modules引用组件
+## 0.0.3(2021-02-04)
+- 调整为uni_modules目录规范
diff --git a/src/uni_modules/uni-combox/components/uni-combox/uni-combox.vue b/src/uni_modules/uni-combox/components/uni-combox/uni-combox.vue
new file mode 100644
index 0000000..981c422
--- /dev/null
+++ b/src/uni_modules/uni-combox/components/uni-combox/uni-combox.vue
@@ -0,0 +1,297 @@
+
+
+
+ {{label}}
+
+
+
+
+
+
+
+
+
+
+ {{emptyTips}}
+
+
+ {{item}}
+
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-combox/package.json b/src/uni_modules/uni-combox/package.json
new file mode 100644
index 0000000..4a05c3f
--- /dev/null
+++ b/src/uni_modules/uni-combox/package.json
@@ -0,0 +1,90 @@
+{
+ "id": "uni-combox",
+ "displayName": "uni-combox 组合框",
+ "version": "1.0.1",
+ "description": "可以选择也可以输入的表单项 ",
+ "keywords": [
+ "uni-ui",
+ "uniui",
+ "combox",
+ "组合框",
+ "select"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": ""
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+ "dcloudext": {
+ "category": [
+ "前端组件",
+ "通用组件"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ },
+ "uni_modules": {
+ "dependencies": [
+ "uni-scss",
+ "uni-icons"
+ ],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "n"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/uni_modules/uni-combox/readme.md b/src/uni_modules/uni-combox/readme.md
new file mode 100644
index 0000000..ffa2cc8
--- /dev/null
+++ b/src/uni_modules/uni-combox/readme.md
@@ -0,0 +1,11 @@
+
+
+## Combox 组合框
+> **组件名:uni-combox**
+> 代码块: `uCombox`
+
+
+组合框组件。
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-combox)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
\ No newline at end of file
diff --git a/src/uni_modules/uni-countdown/changelog.md b/src/uni_modules/uni-countdown/changelog.md
new file mode 100644
index 0000000..f25beef
--- /dev/null
+++ b/src/uni_modules/uni-countdown/changelog.md
@@ -0,0 +1,24 @@
+## 1.2.2(2022-01-19)
+- 修复 在微信小程序中样式不生效的bug
+## 1.2.1(2022-01-18)
+- 新增 update 方法 ,在动态更新时间后,刷新组件
+## 1.2.0(2021-11-19)
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-countdown](https://uniapp.dcloud.io/component/uniui/uni-countdown)
+## 1.1.3(2021-10-18)
+- 重构
+- 新增 font-size 支持自定义字体大小
+## 1.1.2(2021-08-24)
+- 新增 支持国际化
+## 1.1.1(2021-07-30)
+- 优化 vue3下小程序事件警告的问题
+## 1.1.0(2021-07-30)
+- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
+## 1.0.5(2021-06-18)
+- 修复 uni-countdown 重复赋值跳两秒的 bug
+## 1.0.4(2021-05-12)
+- 新增 组件示例地址
+## 1.0.3(2021-05-08)
+- 修复 uni-countdown 不能控制倒计时的 bug
+## 1.0.2(2021-02-04)
+- 调整为uni_modules目录规范
diff --git a/src/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json b/src/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json
new file mode 100644
index 0000000..06309cb
--- /dev/null
+++ b/src/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json
@@ -0,0 +1,6 @@
+{
+ "uni-countdown.day": "day",
+ "uni-countdown.h": "h",
+ "uni-countdown.m": "m",
+ "uni-countdown.s": "s"
+}
diff --git a/src/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js b/src/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js
new file mode 100644
index 0000000..de7509c
--- /dev/null
+++ b/src/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js
@@ -0,0 +1,8 @@
+import en from './en.json'
+import zhHans from './zh-Hans.json'
+import zhHant from './zh-Hant.json'
+export default {
+ en,
+ 'zh-Hans': zhHans,
+ 'zh-Hant': zhHant
+}
diff --git a/src/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json b/src/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json
new file mode 100644
index 0000000..358cdd1
--- /dev/null
+++ b/src/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json
@@ -0,0 +1,6 @@
+{
+ "uni-countdown.day": "天",
+ "uni-countdown.h": "时",
+ "uni-countdown.m": "分",
+ "uni-countdown.s": "秒"
+}
diff --git a/src/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json b/src/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json
new file mode 100644
index 0000000..e5a63de
--- /dev/null
+++ b/src/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json
@@ -0,0 +1,6 @@
+{
+ "uni-countdown.day": "天",
+ "uni-countdown.h": "時",
+ "uni-countdown.m": "分",
+ "uni-countdown.s": "秒"
+}
diff --git a/src/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue b/src/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue
new file mode 100644
index 0000000..1f8ef4e
--- /dev/null
+++ b/src/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue
@@ -0,0 +1,271 @@
+
+
+ {{ d }}
+ {{dayText}}
+ {{ h }}
+ {{ showColon ? ':' : hourText }}
+ {{ i }}
+ {{ showColon ? ':' : minuteText }}
+ {{ s }}
+ {{secondText}}
+
+
+
+
diff --git a/src/uni_modules/uni-countdown/package.json b/src/uni_modules/uni-countdown/package.json
new file mode 100644
index 0000000..70e99ee
--- /dev/null
+++ b/src/uni_modules/uni-countdown/package.json
@@ -0,0 +1,86 @@
+{
+ "id": "uni-countdown",
+ "displayName": "uni-countdown 倒计时",
+ "version": "1.2.2",
+ "description": "CountDown 倒计时组件",
+ "keywords": [
+ "uni-ui",
+ "uniui",
+ "countdown",
+ "倒计时"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": ""
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+ "dcloudext": {
+ "category": [
+ "前端组件",
+ "通用组件"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ },
+ "uni_modules": {
+ "dependencies": ["uni-scss"],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "y"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/uni_modules/uni-countdown/readme.md b/src/uni_modules/uni-countdown/readme.md
new file mode 100644
index 0000000..4bcb1aa
--- /dev/null
+++ b/src/uni_modules/uni-countdown/readme.md
@@ -0,0 +1,10 @@
+
+
+## CountDown 倒计时
+> **组件名:uni-countdown**
+> 代码块: `uCountDown`
+
+倒计时组件。
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-countdown)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
\ No newline at end of file
diff --git a/src/uni_modules/uni-data-checkbox/changelog.md b/src/uni_modules/uni-data-checkbox/changelog.md
new file mode 100644
index 0000000..dbc517a
--- /dev/null
+++ b/src/uni_modules/uni-data-checkbox/changelog.md
@@ -0,0 +1,43 @@
+## 1.0.2(2022-06-30)
+- 优化 在 uni-forms 中的依赖注入方式
+## 1.0.1(2022-02-07)
+- 修复 multiple 为 true 时,v-model 的值为 null 报错的 bug
+## 1.0.0(2021-11-19)
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-data-checkbox](https://uniapp.dcloud.io/component/uniui/uni-data-checkbox)
+## 0.2.5(2021-08-23)
+- 修复 在uni-forms中 modelValue 中不存在当前字段,当前字段必填写也不参与校验的问题
+## 0.2.4(2021-08-17)
+- 修复 单选 list 模式下 ,icon 为 left 时,选中图标不显示的问题
+## 0.2.3(2021-08-11)
+- 修复 在 uni-forms 中重置表单,错误信息无法清除的问题
+## 0.2.2(2021-07-30)
+- 优化 在uni-forms组件,与label不对齐的问题
+## 0.2.1(2021-07-27)
+- 修复 单选默认值为0不能选中的Bug
+## 0.2.0(2021-07-13)
+- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
+## 0.1.11(2021-07-06)
+- 优化 删除无用日志
+## 0.1.10(2021-07-05)
+- 修复 由 0.1.9 引起的非 nvue 端图标不显示的问题
+## 0.1.9(2021-07-05)
+- 修复 nvue 黑框样式问题
+## 0.1.8(2021-06-28)
+- 修复 selectedTextColor 属性不生效的Bug
+## 0.1.7(2021-06-02)
+- 新增 map 属性,可以方便映射text/value属性
+## 0.1.6(2021-05-26)
+- 修复 不关联服务空间的情况下组件报错的Bug
+## 0.1.5(2021-05-12)
+- 新增 组件示例地址
+## 0.1.4(2021-04-09)
+- 修复 nvue 下无法选中的问题
+## 0.1.3(2021-03-22)
+- 新增 disabled属性
+## 0.1.2(2021-02-24)
+- 优化 默认颜色显示
+## 0.1.1(2021-02-24)
+- 新增 支持nvue
+## 0.1.0(2021-02-18)
+- “暂无数据”显示居中
diff --git a/src/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue b/src/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue
new file mode 100644
index 0000000..2e51712
--- /dev/null
+++ b/src/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue
@@ -0,0 +1,817 @@
+
+
+
+
+
+ {{mixinDatacomErrorMessage}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-data-checkbox/package.json b/src/uni_modules/uni-data-checkbox/package.json
new file mode 100644
index 0000000..51470a9
--- /dev/null
+++ b/src/uni_modules/uni-data-checkbox/package.json
@@ -0,0 +1,87 @@
+{
+ "id": "uni-data-checkbox",
+ "displayName": "uni-data-checkbox 数据选择器",
+ "version": "1.0.2",
+ "description": "通过数据驱动的单选框和复选框",
+ "keywords": [
+ "uni-ui",
+ "checkbox",
+ "单选",
+ "多选",
+ "单选多选"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": "^3.1.1"
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+ "dcloudext": {
+ "category": [
+ "前端组件",
+ "通用组件"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ },
+ "uni_modules": {
+ "dependencies": ["uni-load-more","uni-scss"],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "y"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
diff --git a/src/uni_modules/uni-data-checkbox/readme.md b/src/uni_modules/uni-data-checkbox/readme.md
new file mode 100644
index 0000000..6eb253d
--- /dev/null
+++ b/src/uni_modules/uni-data-checkbox/readme.md
@@ -0,0 +1,18 @@
+
+
+## DataCheckbox 数据驱动的单选复选框
+> **组件名:uni-data-checkbox**
+> 代码块: `uDataCheckbox`
+
+
+本组件是基于uni-app基础组件checkbox的封装。本组件要解决问题包括:
+
+1. 数据绑定型组件:给本组件绑定一个data,会自动渲染一组候选内容。再以往,开发者需要编写不少代码实现类似功能
+2. 自动的表单校验:组件绑定了data,且符合[uni-forms](https://ext.dcloud.net.cn/plugin?id=2773)组件的表单校验规范,搭配使用会自动实现表单校验
+3. 本组件合并了单选多选
+4. 本组件有若干风格选择,如普通的单选多选框、并列button风格、tag风格。开发者可以快速选择需要的风格。但作为一个封装组件,样式代码虽然不用自己写了,却会牺牲一定的样式自定义性
+
+在uniCloud开发中,`DB Schema`中配置了enum枚举等类型后,在web控制台的[自动生成表单](https://uniapp.dcloud.io/uniCloud/schema?id=autocode)功能中,会自动生成``uni-data-checkbox``组件并绑定好data
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-checkbox)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
\ No newline at end of file
diff --git a/src/uni_modules/uni-data-picker/changelog.md b/src/uni_modules/uni-data-picker/changelog.md
new file mode 100644
index 0000000..083e521
--- /dev/null
+++ b/src/uni_modules/uni-data-picker/changelog.md
@@ -0,0 +1,64 @@
+## 1.0.7(2022-07-06)
+- 优化 pc端图标位置不正确的问题
+## 1.0.6(2022-07-05)
+- 优化 显示样式
+## 1.0.5(2022-07-04)
+- 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug
+## 1.0.4(2022-04-19)
+- 修复 字节小程序 本地数据无法选择下一级的Bug
+## 1.0.3(2022-02-25)
+- 修复 nvue 不支持的 v-show 的 bug
+## 1.0.2(2022-02-25)
+- 修复 条件编译 nvue 不支持的 css 样式
+## 1.0.1(2021-11-23)
+- 修复 由上个版本引发的map、v-model等属性不生效的bug
+## 1.0.0(2021-11-19)
+- 优化 组件 UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-data-picker](https://uniapp.dcloud.io/component/uniui/uni-data-picker)
+## 0.4.9(2021-10-28)
+- 修复 VUE2 v-model 概率无效的 bug
+## 0.4.8(2021-10-27)
+- 修复 v-model 概率无效的 bug
+## 0.4.7(2021-10-25)
+- 新增 属性 spaceInfo 服务空间配置 HBuilderX 3.2.11+
+- 修复 树型 uniCloud 数据类型为 int 时报错的 bug
+## 0.4.6(2021-10-19)
+- 修复 非 VUE3 v-model 为 0 时无法选中的 bug
+## 0.4.5(2021-09-26)
+- 新增 清除已选项的功能(通过 clearIcon 属性配置是否显示按钮),同时提供 clear 方法以供调用,二者等效
+- 修复 readonly 为 true 时报错的 bug
+## 0.4.4(2021-09-26)
+- 修复 上一版本造成的 map 属性失效的 bug
+- 新增 ellipsis 属性,支持配置 tab 选项长度过长时是否自动省略
+## 0.4.3(2021-09-24)
+- 修复 某些情况下级联未触发的 bug
+## 0.4.2(2021-09-23)
+- 新增 提供 show 和 hide 方法,开发者可以通过 ref 调用
+- 新增 选项内容过长自动添加省略号
+## 0.4.1(2021-09-15)
+- 新增 map 属性 字段映射,将 text/value 映射到数据中的其他字段
+## 0.4.0(2021-07-13)
+- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
+## 0.3.5(2021-06-04)
+- 修复 无法加载云端数据的问题
+## 0.3.4(2021-05-28)
+- 修复 v-model 无效问题
+- 修复 loaddata 为空数据组时加载时间过长问题
+- 修复 上个版本引出的本地数据无法选择带有 children 的 2 级节点
+## 0.3.3(2021-05-12)
+- 新增 组件示例地址
+## 0.3.2(2021-04-22)
+- 修复 非树形数据有 where 属性查询报错的问题
+## 0.3.1(2021-04-15)
+- 修复 本地数据概率无法回显时问题
+## 0.3.0(2021-04-07)
+- 新增 支持云端非树形表结构数据
+- 修复 根节点 parent_field 字段等于 null 时选择界面错乱问题
+## 0.2.0(2021-03-15)
+- 修复 nodeclick、popupopened、popupclosed 事件无法触发的问题
+## 0.1.9(2021-03-09)
+- 修复 微信小程序某些情况下无法选择的问题
+## 0.1.8(2021-02-05)
+- 优化 部分样式在 nvue 上的兼容表现
+## 0.1.7(2021-02-05)
+- 调整为 uni_modules 目录规范
diff --git a/src/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js b/src/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js
new file mode 100644
index 0000000..6ef26a2
--- /dev/null
+++ b/src/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js
@@ -0,0 +1,45 @@
+// #ifdef H5
+export default {
+ name: 'Keypress',
+ props: {
+ disable: {
+ type: Boolean,
+ default: false
+ }
+ },
+ mounted () {
+ const keyNames = {
+ esc: ['Esc', 'Escape'],
+ tab: 'Tab',
+ enter: 'Enter',
+ space: [' ', 'Spacebar'],
+ up: ['Up', 'ArrowUp'],
+ left: ['Left', 'ArrowLeft'],
+ right: ['Right', 'ArrowRight'],
+ down: ['Down', 'ArrowDown'],
+ delete: ['Backspace', 'Delete', 'Del']
+ }
+ const listener = ($event) => {
+ if (this.disable) {
+ return
+ }
+ const keyName = Object.keys(keyNames).find(key => {
+ const keyName = $event.key
+ const value = keyNames[key]
+ return value === keyName || (Array.isArray(value) && value.includes(keyName))
+ })
+ if (keyName) {
+ // 避免和其他按键事件冲突
+ setTimeout(() => {
+ this.$emit(keyName, {})
+ }, 0)
+ }
+ }
+ document.addEventListener('keyup', listener)
+ this.$once('hook:beforeDestroy', () => {
+ document.removeEventListener('keyup', listener)
+ })
+ },
+ render: () => {}
+}
+// #endif
diff --git a/src/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue b/src/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue
new file mode 100644
index 0000000..410888d
--- /dev/null
+++ b/src/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue
@@ -0,0 +1,554 @@
+
+
+
+
+
+ {{errorMessage}}
+
+
+
+
+
+
+ {{item.text}}{{split}}
+
+
+
+ {{placeholder}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{popupTitle}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js b/src/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js
new file mode 100644
index 0000000..c12fd54
--- /dev/null
+++ b/src/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js
@@ -0,0 +1,563 @@
+export default {
+ props: {
+ localdata: {
+ type: [Array, Object],
+ default () {
+ return []
+ }
+ },
+ spaceInfo: {
+ type: Object,
+ default () {
+ return {}
+ }
+ },
+ collection: {
+ type: String,
+ default: ''
+ },
+ action: {
+ type: String,
+ default: ''
+ },
+ field: {
+ type: String,
+ default: ''
+ },
+ orderby: {
+ type: String,
+ default: ''
+ },
+ where: {
+ type: [String, Object],
+ default: ''
+ },
+ pageData: {
+ type: String,
+ default: 'add'
+ },
+ pageCurrent: {
+ type: Number,
+ default: 1
+ },
+ pageSize: {
+ type: Number,
+ default: 20
+ },
+ getcount: {
+ type: [Boolean, String],
+ default: false
+ },
+ getone: {
+ type: [Boolean, String],
+ default: false
+ },
+ gettree: {
+ type: [Boolean, String],
+ default: false
+ },
+ manual: {
+ type: Boolean,
+ default: false
+ },
+ value: {
+ type: [Array, String, Number],
+ default () {
+ return []
+ }
+ },
+ modelValue: {
+ type: [Array, String, Number],
+ default () {
+ return []
+ }
+ },
+ preload: {
+ type: Boolean,
+ default: false
+ },
+ stepSearh: {
+ type: Boolean,
+ default: true
+ },
+ selfField: {
+ type: String,
+ default: ''
+ },
+ parentField: {
+ type: String,
+ default: ''
+ },
+ multiple: {
+ type: Boolean,
+ default: false
+ },
+ map: {
+ type: Object,
+ default() {
+ return {
+ text: "text",
+ value: "value"
+ }
+ }
+ }
+ },
+ data() {
+ return {
+ loading: false,
+ errorMessage: '',
+ loadMore: {
+ contentdown: '',
+ contentrefresh: '',
+ contentnomore: ''
+ },
+ dataList: [],
+ selected: [],
+ selectedIndex: 0,
+ page: {
+ current: this.pageCurrent,
+ size: this.pageSize,
+ count: 0
+ }
+ }
+ },
+ computed: {
+ isLocaldata() {
+ return !this.collection.length
+ },
+ postField() {
+ let fields = [this.field];
+ if (this.parentField) {
+ fields.push(`${this.parentField} as parent_value`);
+ }
+ return fields.join(',');
+ },
+ dataValue() {
+ let isModelValue = Array.isArray(this.modelValue) ? (this.modelValue.length > 0) : (this.modelValue !== null || this.modelValue !== undefined)
+ return isModelValue ? this.modelValue : this.value
+ },
+ hasValue() {
+ if (typeof this.dataValue === 'number') {
+ return true
+ }
+ return (this.dataValue != null) && (this.dataValue.length > 0)
+ }
+ },
+ created() {
+ this.$watch(() => {
+ var al = [];
+ ['pageCurrent',
+ 'pageSize',
+ 'spaceInfo',
+ 'value',
+ 'modelValue',
+ 'localdata',
+ 'collection',
+ 'action',
+ 'field',
+ 'orderby',
+ 'where',
+ 'getont',
+ 'getcount',
+ 'gettree'
+ ].forEach(key => {
+ al.push(this[key])
+ });
+ return al
+ }, (newValue, oldValue) => {
+ let needReset = false
+ for (let i = 2; i < newValue.length; i++) {
+ if (newValue[i] != oldValue[i]) {
+ needReset = true
+ break
+ }
+ }
+ if (newValue[0] != oldValue[0]) {
+ this.page.current = this.pageCurrent
+ }
+ this.page.size = this.pageSize
+
+ this.onPropsChange()
+ })
+ this._treeData = []
+ },
+ methods: {
+ onPropsChange() {
+ this._treeData = []
+ },
+ getCommand(options = {}) {
+ /* eslint-disable no-undef */
+ let db = uniCloud.database(this.spaceInfo)
+
+ const action = options.action || this.action
+ if (action) {
+ db = db.action(action)
+ }
+
+ const collection = options.collection || this.collection
+ db = db.collection(collection)
+
+ const where = options.where || this.where
+ if (!(!where || !Object.keys(where).length)) {
+ db = db.where(where)
+ }
+
+ const field = options.field || this.field
+ if (field) {
+ db = db.field(field)
+ }
+
+ const orderby = options.orderby || this.orderby
+ if (orderby) {
+ db = db.orderBy(orderby)
+ }
+
+ const current = options.pageCurrent !== undefined ? options.pageCurrent : this.page.current
+ const size = options.pageSize !== undefined ? options.pageSize : this.page.size
+ const getCount = options.getcount !== undefined ? options.getcount : this.getcount
+ const getTree = options.gettree !== undefined ? options.gettree : this.gettree
+
+ const getOptions = {
+ getCount,
+ getTree
+ }
+ if (options.getTreePath) {
+ getOptions.getTreePath = options.getTreePath
+ }
+
+ db = db.skip(size * (current - 1)).limit(size).get(getOptions)
+
+ return db
+ },
+ getNodeData(callback) {
+ if (this.loading) {
+ return
+ }
+ this.loading = true
+ this.getCommand({
+ field: this.postField,
+ where: this._pathWhere()
+ }).then((res) => {
+ this.loading = false
+ this.selected = res.result.data
+ callback && callback()
+ }).catch((err) => {
+ this.loading = false
+ this.errorMessage = err
+ })
+ },
+ getTreePath(callback) {
+ if (this.loading) {
+ return
+ }
+ this.loading = true
+
+ this.getCommand({
+ field: this.postField,
+ getTreePath: {
+ startWith: `${this.selfField}=='${this.dataValue}'`
+ }
+ }).then((res) => {
+ this.loading = false
+ let treePath = []
+ this._extractTreePath(res.result.data, treePath)
+ this.selected = treePath
+ callback && callback()
+ }).catch((err) => {
+ this.loading = false
+ this.errorMessage = err
+ })
+ },
+ loadData() {
+ if (this.isLocaldata) {
+ this._processLocalData()
+ return
+ }
+
+ if (this.dataValue != null) {
+ this._loadNodeData((data) => {
+ this._treeData = data
+ this._updateBindData()
+ this._updateSelected()
+ })
+ return
+ }
+
+ if (this.stepSearh) {
+ this._loadNodeData((data) => {
+ this._treeData = data
+ this._updateBindData()
+ })
+ } else {
+ this._loadAllData((data) => {
+ this._treeData = []
+ this._extractTree(data, this._treeData, null)
+ this._updateBindData()
+ })
+ }
+ },
+ _loadAllData(callback) {
+ if (this.loading) {
+ return
+ }
+ this.loading = true
+
+ this.getCommand({
+ field: this.postField,
+ gettree: true,
+ startwith: `${this.selfField}=='${this.dataValue}'`
+ }).then((res) => {
+ this.loading = false
+ callback(res.result.data)
+ this.onDataChange()
+ }).catch((err) => {
+ this.loading = false
+ this.errorMessage = err
+ })
+ },
+ _loadNodeData(callback, pw) {
+ if (this.loading) {
+ return
+ }
+ this.loading = true
+
+ this.getCommand({
+ field: this.postField,
+ where: pw || this._postWhere(),
+ pageSize: 500
+ }).then((res) => {
+ this.loading = false
+ callback(res.result.data)
+ this.onDataChange()
+ }).catch((err) => {
+ this.loading = false
+ this.errorMessage = err
+ })
+ },
+ _pathWhere() {
+ let result = []
+ let where_field = this._getParentNameByField();
+ if (where_field) {
+ result.push(`${where_field} == '${this.dataValue}'`)
+ }
+
+ if (this.where) {
+ return `(${this.where}) && (${result.join(' || ')})`
+ }
+
+ return result.join(' || ')
+ },
+ _postWhere() {
+ let result = []
+ let selected = this.selected
+ let parentField = this.parentField
+ if (parentField) {
+ result.push(`${parentField} == null || ${parentField} == ""`)
+ }
+ if (selected.length) {
+ for (var i = 0; i < selected.length - 1; i++) {
+ result.push(`${parentField} == '${selected[i].value}'`)
+ }
+ }
+
+ let where = []
+ if (this.where) {
+ where.push(`(${this.where})`)
+ }
+ if (result.length) {
+ where.push(`(${result.join(' || ')})`)
+ }
+
+ return where.join(' && ')
+ },
+ _nodeWhere() {
+ let result = []
+ let selected = this.selected
+ if (selected.length) {
+ result.push(`${this.parentField} == '${selected[selected.length - 1].value}'`)
+ }
+
+ if (this.where) {
+ return `(${this.where}) && (${result.join(' || ')})`
+ }
+
+ return result.join(' || ')
+ },
+ _getParentNameByField() {
+ const fields = this.field.split(',');
+ let where_field = null;
+ for (let i = 0; i < fields.length; i++) {
+ const items = fields[i].split('as');
+ if (items.length < 2) {
+ continue;
+ }
+ if (items[1].trim() === 'value') {
+ where_field = items[0].trim();
+ break;
+ }
+ }
+ return where_field
+ },
+ _isTreeView() {
+ return (this.parentField && this.selfField)
+ },
+ _updateSelected() {
+ var dl = this.dataList
+ var sl = this.selected
+ let textField = this.map.text
+ let valueField = this.map.value
+ for (var i = 0; i < sl.length; i++) {
+ var value = sl[i].value
+ var dl2 = dl[i]
+ for (var j = 0; j < dl2.length; j++) {
+ var item2 = dl2[j]
+ if (item2[valueField] === value) {
+ sl[i].text = item2[textField]
+ break
+ }
+ }
+ }
+ },
+ _updateBindData(node) {
+ const {
+ dataList,
+ hasNodes
+ } = this._filterData(this._treeData, this.selected)
+
+ let isleaf = this._stepSearh === false && !hasNodes
+
+ if (node) {
+ node.isleaf = isleaf
+ }
+
+ this.dataList = dataList
+ this.selectedIndex = dataList.length - 1
+
+ if (!isleaf && this.selected.length < dataList.length) {
+ this.selected.push({
+ value: null,
+ text: "请选择"
+ })
+ }
+
+ return {
+ isleaf,
+ hasNodes
+ }
+ },
+ _filterData(data, paths) {
+ let dataList = []
+ let hasNodes = true
+
+ dataList.push(data.filter((item) => {
+ return (item.parent_value === null || item.parent_value === undefined || item.parent_value === '')
+ }))
+ for (let i = 0; i < paths.length; i++) {
+ var value = paths[i].value
+ var nodes = data.filter((item) => {
+ return item.parent_value === value
+ })
+
+ if (nodes.length) {
+ dataList.push(nodes)
+ } else {
+ hasNodes = false
+ }
+ }
+
+ return {
+ dataList,
+ hasNodes
+ }
+ },
+ _extractTree(nodes, result, parent_value) {
+ let list = result || []
+ let valueField = this.map.value
+ for (let i = 0; i < nodes.length; i++) {
+ let node = nodes[i]
+
+ let child = {}
+ for (let key in node) {
+ if (key !== 'children') {
+ child[key] = node[key]
+ }
+ }
+ if (parent_value !== null && parent_value !== undefined && parent_value !== '') {
+ child.parent_value = parent_value
+ }
+ result.push(child)
+
+ let children = node.children
+ if (children) {
+ this._extractTree(children, result, node[valueField])
+ }
+ }
+ },
+ _extractTreePath(nodes, result) {
+ let list = result || []
+ for (let i = 0; i < nodes.length; i++) {
+ let node = nodes[i]
+
+ let child = {}
+ for (let key in node) {
+ if (key !== 'children') {
+ child[key] = node[key]
+ }
+ }
+ result.push(child)
+
+ let children = node.children
+ if (children) {
+ this._extractTreePath(children, result)
+ }
+ }
+ },
+ _findNodePath(key, nodes, path = []) {
+ let textField = this.map.text
+ let valueField = this.map.value
+ for (let i = 0; i < nodes.length; i++) {
+ let node = nodes[i]
+ let children = node.children
+ let text = node[textField]
+ let value = node[valueField]
+
+ path.push({
+ value,
+ text
+ })
+
+ if (value === key) {
+ return path
+ }
+
+ if (children) {
+ const p = this._findNodePath(key, children, path)
+ if (p.length) {
+ return p
+ }
+ }
+
+ path.pop()
+ }
+ return []
+ },
+ _processLocalData() {
+ this._treeData = []
+ this._extractTree(this.localdata, this._treeData)
+
+ var inputValue = this.dataValue
+ if (inputValue === undefined) {
+ return
+ }
+
+ if (Array.isArray(inputValue)) {
+ inputValue = inputValue[inputValue.length - 1]
+ if (typeof inputValue === 'object' && inputValue[this.map.value]) {
+ inputValue = inputValue[this.map.value]
+ }
+ }
+
+ this.selected = this._findNodePath(inputValue, this.localdata)
+ }
+ }
+}
diff --git a/src/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue b/src/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue
new file mode 100644
index 0000000..065aac2
--- /dev/null
+++ b/src/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue
@@ -0,0 +1,333 @@
+
+
+
+
+
+
+ {{item.text}}
+
+
+
+
+
+
+
+
+ {{item[map.text]}}
+
+
+
+
+
+
+
+
+
+ {{errorMessage}}
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-data-picker/package.json b/src/uni_modules/uni-data-picker/package.json
new file mode 100644
index 0000000..9900380
--- /dev/null
+++ b/src/uni_modules/uni-data-picker/package.json
@@ -0,0 +1,93 @@
+{
+ "id": "uni-data-picker",
+ "displayName": "uni-data-picker 数据驱动的picker选择器",
+ "version": "1.0.7",
+ "description": "单列、多列级联选择器,常用于省市区城市选择、公司部门选择、多级分类等场景",
+ "keywords": [
+ "uni-ui",
+ "uniui",
+ "picker",
+ "级联",
+ "省市区",
+ ""
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": ""
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+ "dcloudext": {
+ "category": [
+ "前端组件",
+ "通用组件"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ },
+ "uni_modules": {
+ "dependencies": [
+ "uni-load-more",
+ "uni-icons",
+ "uni-scss"
+ ],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "y"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y",
+ "京东": "u"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/uni_modules/uni-data-picker/readme.md b/src/uni_modules/uni-data-picker/readme.md
new file mode 100644
index 0000000..6cda224
--- /dev/null
+++ b/src/uni_modules/uni-data-picker/readme.md
@@ -0,0 +1,22 @@
+## DataPicker 级联选择
+> **组件名:uni-data-picker**
+> 代码块: `uDataPicker`
+> 关联组件:`uni-data-pickerview`、`uni-load-more`。
+
+
+`` 是一个选择类[datacom组件](https://uniapp.dcloud.net.cn/component/datacom)。
+
+支持单列、和多列级联选择。列数没有限制,如果屏幕显示不全,顶部tab区域会左右滚动。
+
+候选数据支持一次性加载完毕,也支持懒加载,比如示例图中,选择了“北京”后,动态加载北京的区县数据。
+
+`` 组件尤其适用于地址选择、分类选择等选择类。
+
+`` 支持本地数据、云端静态数据(json),uniCloud云数据库数据。
+
+`` 可以通过JQL直连uniCloud云数据库,配套[DB Schema](https://uniapp.dcloud.net.cn/uniCloud/schema),可在schema2code中自动生成前端页面,还支持服务器端校验。
+
+在uniCloud数据表中新建表“uni-id-address”和“opendb-city-china”,这2个表的schema自带foreignKey关联。在“uni-id-address”表的表结构页面使用schema2code生成前端页面,会自动生成地址管理的维护页面,自动从“opendb-city-china”表包含的中国所有省市区信息里选择地址。
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-picker)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
\ No newline at end of file
diff --git a/src/uni_modules/uni-data-select/changelog.md b/src/uni_modules/uni-data-select/changelog.md
new file mode 100644
index 0000000..d5beaa3
--- /dev/null
+++ b/src/uni_modules/uni-data-select/changelog.md
@@ -0,0 +1,16 @@
+## 0.1.6(2022-07-06)
+- 修复 pc端宽度异常的bug
+## 0.1.5
+- 修复 pc端宽度异常的bug
+## 0.1.4(2022-07-05)
+- 优化 显示样式
+## 0.1.3(2022-06-02)
+- 修复 localdata 赋值不生效的 bug
+- 新增 支持 uni.scss 修改颜色
+- 新增 支持选项禁用(数据选项设置 disabled: true 即禁用)
+## 0.1.2(2022-05-08)
+- 修复 当 value 为 0 时选择不生效的 bug
+## 0.1.1(2022-05-07)
+- 新增 记住上次的选项(仅 collection 存在时有效)
+## 0.1.0(2022-04-22)
+- 初始化
diff --git a/src/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue b/src/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue
new file mode 100644
index 0000000..16995bd
--- /dev/null
+++ b/src/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue
@@ -0,0 +1,426 @@
+
+
+ {{label + ':'}}
+
+
+
+ {{current}}
+ {{typePlaceholder}}
+
+
+
+
+
+
+
+
+ {{emptyTips}}
+
+
+ {{formatItemName(item)}}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-data-select/package.json b/src/uni_modules/uni-data-select/package.json
new file mode 100644
index 0000000..1ebd8dd
--- /dev/null
+++ b/src/uni_modules/uni-data-select/package.json
@@ -0,0 +1,88 @@
+{
+ "id": "uni-data-select",
+ "displayName": "uni-data-select 下拉框选择器",
+ "version": "0.1.6",
+ "description": "通过数据驱动的下拉框选择器",
+ "keywords": [
+ "uni-ui",
+ "select",
+ "uni-data-select",
+ "下拉框",
+ "下拉选"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": "^3.1.1"
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+ "dcloudext": {
+ "category": [
+ "前端组件",
+ "通用组件"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ },
+ "uni_modules": {
+ "dependencies": ["uni-load-more"],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "u",
+ "app-nvue": "n"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "u",
+ "百度": "u",
+ "字节跳动": "u",
+ "QQ": "u",
+ "京东": "u"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
diff --git a/src/uni_modules/uni-data-select/readme.md b/src/uni_modules/uni-data-select/readme.md
new file mode 100644
index 0000000..eb58de3
--- /dev/null
+++ b/src/uni_modules/uni-data-select/readme.md
@@ -0,0 +1,8 @@
+## DataSelect 下拉框选择器
+> **组件名:uni-data-select**
+> 代码块: `uDataSelect`
+
+当选项过多时,使用下拉菜单展示并选择内容
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-select)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
diff --git a/src/uni_modules/uni-dateformat/changelog.md b/src/uni_modules/uni-dateformat/changelog.md
new file mode 100644
index 0000000..d551d7b
--- /dev/null
+++ b/src/uni_modules/uni-dateformat/changelog.md
@@ -0,0 +1,10 @@
+## 1.0.0(2021-11-19)
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-dateformat](https://uniapp.dcloud.io/component/uniui/uni-dateformat)
+## 0.0.5(2021-07-08)
+- 调整 默认时间不再是当前时间,而是显示'-'字符
+## 0.0.4(2021-05-12)
+- 新增 组件示例地址
+## 0.0.3(2021-02-04)
+- 调整为uni_modules目录规范
+- 修复 iOS 平台日期格式化出错的问题
diff --git a/src/uni_modules/uni-dateformat/components/uni-dateformat/date-format.js b/src/uni_modules/uni-dateformat/components/uni-dateformat/date-format.js
new file mode 100644
index 0000000..e00d559
--- /dev/null
+++ b/src/uni_modules/uni-dateformat/components/uni-dateformat/date-format.js
@@ -0,0 +1,200 @@
+// yyyy-MM-dd hh:mm:ss.SSS 所有支持的类型
+function pad(str, length = 2) {
+ str += ''
+ while (str.length < length) {
+ str = '0' + str
+ }
+ return str.slice(-length)
+}
+
+const parser = {
+ yyyy: (dateObj) => {
+ return pad(dateObj.year, 4)
+ },
+ yy: (dateObj) => {
+ return pad(dateObj.year)
+ },
+ MM: (dateObj) => {
+ return pad(dateObj.month)
+ },
+ M: (dateObj) => {
+ return dateObj.month
+ },
+ dd: (dateObj) => {
+ return pad(dateObj.day)
+ },
+ d: (dateObj) => {
+ return dateObj.day
+ },
+ hh: (dateObj) => {
+ return pad(dateObj.hour)
+ },
+ h: (dateObj) => {
+ return dateObj.hour
+ },
+ mm: (dateObj) => {
+ return pad(dateObj.minute)
+ },
+ m: (dateObj) => {
+ return dateObj.minute
+ },
+ ss: (dateObj) => {
+ return pad(dateObj.second)
+ },
+ s: (dateObj) => {
+ return dateObj.second
+ },
+ SSS: (dateObj) => {
+ return pad(dateObj.millisecond, 3)
+ },
+ S: (dateObj) => {
+ return dateObj.millisecond
+ },
+}
+
+// 这都n年了iOS依然不认识2020-12-12,需要转换为2020/12/12
+function getDate(time) {
+ if (time instanceof Date) {
+ return time
+ }
+ switch (typeof time) {
+ case 'string':
+ {
+ // 2020-12-12T12:12:12.000Z、2020-12-12T12:12:12.000
+ if (time.indexOf('T') > -1) {
+ return new Date(time)
+ }
+ return new Date(time.replace(/-/g, '/'))
+ }
+ default:
+ return new Date(time)
+ }
+}
+
+export function formatDate(date, format = 'yyyy/MM/dd hh:mm:ss') {
+ if (!date && date !== 0) {
+ return ''
+ }
+ date = getDate(date)
+ const dateObj = {
+ year: date.getFullYear(),
+ month: date.getMonth() + 1,
+ day: date.getDate(),
+ hour: date.getHours(),
+ minute: date.getMinutes(),
+ second: date.getSeconds(),
+ millisecond: date.getMilliseconds()
+ }
+ const tokenRegExp = /yyyy|yy|MM|M|dd|d|hh|h|mm|m|ss|s|SSS|SS|S/
+ let flag = true
+ let result = format
+ while (flag) {
+ flag = false
+ result = result.replace(tokenRegExp, function(matched) {
+ flag = true
+ return parser[matched](dateObj)
+ })
+ }
+ return result
+}
+
+export function friendlyDate(time, {
+ locale = 'zh',
+ threshold = [60000, 3600000],
+ format = 'yyyy/MM/dd hh:mm:ss'
+}) {
+ if (time === '-') {
+ return time
+ }
+ if (!time && time !== 0) {
+ return ''
+ }
+ const localeText = {
+ zh: {
+ year: '年',
+ month: '月',
+ day: '天',
+ hour: '小时',
+ minute: '分钟',
+ second: '秒',
+ ago: '前',
+ later: '后',
+ justNow: '刚刚',
+ soon: '马上',
+ template: '{num}{unit}{suffix}'
+ },
+ en: {
+ year: 'year',
+ month: 'month',
+ day: 'day',
+ hour: 'hour',
+ minute: 'minute',
+ second: 'second',
+ ago: 'ago',
+ later: 'later',
+ justNow: 'just now',
+ soon: 'soon',
+ template: '{num} {unit} {suffix}'
+ }
+ }
+ const text = localeText[locale] || localeText.zh
+ let date = getDate(time)
+ let ms = date.getTime() - Date.now()
+ let absMs = Math.abs(ms)
+ if (absMs < threshold[0]) {
+ return ms < 0 ? text.justNow : text.soon
+ }
+ if (absMs >= threshold[1]) {
+ return formatDate(date, format)
+ }
+ let num
+ let unit
+ let suffix = text.later
+ if (ms < 0) {
+ suffix = text.ago
+ ms = -ms
+ }
+ const seconds = Math.floor((ms) / 1000)
+ const minutes = Math.floor(seconds / 60)
+ const hours = Math.floor(minutes / 60)
+ const days = Math.floor(hours / 24)
+ const months = Math.floor(days / 30)
+ const years = Math.floor(months / 12)
+ switch (true) {
+ case years > 0:
+ num = years
+ unit = text.year
+ break
+ case months > 0:
+ num = months
+ unit = text.month
+ break
+ case days > 0:
+ num = days
+ unit = text.day
+ break
+ case hours > 0:
+ num = hours
+ unit = text.hour
+ break
+ case minutes > 0:
+ num = minutes
+ unit = text.minute
+ break
+ default:
+ num = seconds
+ unit = text.second
+ break
+ }
+
+ if (locale === 'en') {
+ if (num === 1) {
+ num = 'a'
+ } else {
+ unit += 's'
+ }
+ }
+
+ return text.template.replace(/{\s*num\s*}/g, num + '').replace(/{\s*unit\s*}/g, unit).replace(/{\s*suffix\s*}/g,
+ suffix)
+}
diff --git a/src/uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue b/src/uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue
new file mode 100644
index 0000000..c5ed030
--- /dev/null
+++ b/src/uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue
@@ -0,0 +1,88 @@
+
+ {{dateShow}}
+
+
+
+
+
diff --git a/src/uni_modules/uni-dateformat/package.json b/src/uni_modules/uni-dateformat/package.json
new file mode 100644
index 0000000..786a670
--- /dev/null
+++ b/src/uni_modules/uni-dateformat/package.json
@@ -0,0 +1,88 @@
+{
+ "id": "uni-dateformat",
+ "displayName": "uni-dateformat 日期格式化",
+ "version": "1.0.0",
+ "description": "日期格式化组件,可以将日期格式化为1分钟前、刚刚等形式",
+ "keywords": [
+ "uni-ui",
+ "uniui",
+ "日期格式化",
+ "时间格式化",
+ "格式化时间",
+ ""
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": ""
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+ "dcloudext": {
+ "category": [
+ "前端组件",
+ "通用组件"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ },
+ "uni_modules": {
+ "dependencies": ["uni-scss"],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "y"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y"
+ },
+ "快应用": {
+ "华为": "y",
+ "联盟": "y"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/uni_modules/uni-dateformat/readme.md b/src/uni_modules/uni-dateformat/readme.md
new file mode 100644
index 0000000..37ddb6e
--- /dev/null
+++ b/src/uni_modules/uni-dateformat/readme.md
@@ -0,0 +1,11 @@
+
+
+### DateFormat 日期格式化
+> **组件名:uni-dateformat**
+> 代码块: `uDateformat`
+
+
+日期格式化组件。
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-dateformat)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
\ No newline at end of file
diff --git a/src/uni_modules/uni-datetime-picker/changelog.md b/src/uni_modules/uni-datetime-picker/changelog.md
new file mode 100644
index 0000000..5c9735a
--- /dev/null
+++ b/src/uni_modules/uni-datetime-picker/changelog.md
@@ -0,0 +1,93 @@
+## 2.2.6(2022-06-30)
+- 优化 组件样式,调整了组件图标大小、高度、颜色等,与uni-ui风格保持一致
+## 2.2.5(2022-06-24)
+- 修复 日历顶部年月及底部确认未国际化 bug
+## 2.2.4(2022-03-31)
+- 修复 Vue3 下动态赋值,单选类型未响应的 bug
+## 2.2.3(2022-03-28)
+- 修复 Vue3 下动态赋值未响应的 bug
+## 2.2.2(2021-12-10)
+- 修复 clear-icon 属性在小程序平台不生效的 bug
+## 2.2.1(2021-12-10)
+- 修复 日期范围选在小程序平台,必须多点击一次才能取消选中状态的 bug
+## 2.2.0(2021-11-19)
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-datetime-picker](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker)
+## 2.1.5(2021-11-09)
+- 新增 提供组件设计资源,组件样式调整
+## 2.1.4(2021-09-10)
+- 修复 hide-second 在移动端的 bug
+- 修复 单选赋默认值时,赋值日期未高亮的 bug
+- 修复 赋默认值时,移动端未正确显示时间的 bug
+## 2.1.3(2021-09-09)
+- 新增 hide-second 属性,支持只使用时分,隐藏秒
+## 2.1.2(2021-09-03)
+- 优化 取消选中时(范围选)直接开始下一次选择, 避免多点一次
+- 优化 移动端支持清除按钮,同时支持通过 ref 调用组件的 clear 方法
+- 优化 调整字号大小,美化日历界面
+- 修复 因国际化导致的 placeholder 失效的 bug
+## 2.1.1(2021-08-24)
+- 新增 支持国际化
+- 优化 范围选择器在 pc 端过宽的问题
+## 2.1.0(2021-08-09)
+- 新增 适配 vue3
+## 2.0.19(2021-08-09)
+- 新增 支持作为 uni-forms 子组件相关功能
+- 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的 bug
+## 2.0.18(2021-08-05)
+- 修复 type 属性动态赋值无效的 bug
+- 修复 ‘确认’按钮被 tabbar 遮盖 bug
+- 修复 组件未赋值时范围选左、右日历相同的 bug
+## 2.0.17(2021-08-04)
+- 修复 范围选未正确显示当前值的 bug
+- 修复 h5 平台(移动端)报错 'cale' of undefined 的 bug
+## 2.0.16(2021-07-21)
+- 新增 return-type 属性支持返回 date 日期对象
+## 2.0.15(2021-07-14)
+- 修复 单选日期类型,初始赋值后不在当前日历的 bug
+- 新增 clearIcon 属性,显示框的清空按钮可配置显示隐藏(仅 pc 有效)
+- 优化 移动端移除显示框的清空按钮,无实际用途
+## 2.0.14(2021-07-14)
+- 修复 组件赋值为空,界面未更新的 bug
+- 修复 start 和 end 不能动态赋值的 bug
+- 修复 范围选类型,用户选择后再次选择右侧日历(结束日期)显示不正确的 bug
+## 2.0.13(2021-07-08)
+- 修复 范围选择不能动态赋值的 bug
+## 2.0.12(2021-07-08)
+- 修复 范围选择的初始时间在一个月内时,造成无法选择的bug
+## 2.0.11(2021-07-08)
+- 优化 弹出层在超出视窗边缘定位不准确的问题
+## 2.0.10(2021-07-08)
+- 修复 范围起始点样式的背景色与今日样式的字体前景色融合,导致日期字体看不清的 bug
+- 优化 弹出层在超出视窗边缘被遮盖的问题
+## 2.0.9(2021-07-07)
+- 新增 maskClick 事件
+- 修复 特殊情况日历 rpx 布局错误的 bug,rpx -> px
+- 修复 范围选择时清空返回值不合理的bug,['', ''] -> []
+## 2.0.8(2021-07-07)
+- 新增 日期时间显示框支持插槽
+## 2.0.7(2021-07-01)
+- 优化 添加 uni-icons 依赖
+## 2.0.6(2021-05-22)
+- 修复 图标在小程序上不显示的 bug
+- 优化 重命名引用组件,避免潜在组件命名冲突
+## 2.0.5(2021-05-20)
+- 优化 代码目录扁平化
+## 2.0.4(2021-05-12)
+- 新增 组件示例地址
+## 2.0.3(2021-05-10)
+- 修复 ios 下不识别 '-' 日期格式的 bug
+- 优化 pc 下弹出层添加边框和阴影
+## 2.0.2(2021-05-08)
+- 修复 在 admin 中获取弹出层定位错误的bug
+## 2.0.1(2021-05-08)
+- 修复 type 属性向下兼容,默认值从 date 变更为 datetime
+## 2.0.0(2021-04-30)
+- 支持日历形式的日期+时间的范围选择
+ > 注意:此版本不向后兼容,不再支持单独时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)
+## 1.0.6(2021-03-18)
+- 新增 hide-second 属性,时间支持仅选择时、分
+- 修复 选择跟显示的日期不一样的 bug
+- 修复 chang事件触发2次的 bug
+- 修复 分、秒 end 范围错误的 bug
+- 优化 更好的 nvue 适配
diff --git a/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue
new file mode 100644
index 0000000..3d2dbea
--- /dev/null
+++ b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue
@@ -0,0 +1,185 @@
+
+
+
+
+ {{weeks.date}}
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.js b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.js
new file mode 100644
index 0000000..b8d7d6f
--- /dev/null
+++ b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.js
@@ -0,0 +1,546 @@
+/**
+* @1900-2100区间内的公历、农历互转
+* @charset UTF-8
+* @github https://github.com/jjonline/calendar.js
+* @Author Jea杨(JJonline@JJonline.Cn)
+* @Time 2014-7-21
+* @Time 2016-8-13 Fixed 2033hex、Attribution Annals
+* @Time 2016-9-25 Fixed lunar LeapMonth Param Bug
+* @Time 2017-7-24 Fixed use getTerm Func Param Error.use solar year,NOT lunar year
+* @Version 1.0.3
+* @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0]
+* @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0]
+*/
+/* eslint-disable */
+var calendar = {
+
+ /**
+ * 农历1900-2100的润大小信息表
+ * @Array Of Property
+ * @return Hex
+ */
+ lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, // 1900-1909
+ 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, // 1910-1919
+ 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, // 1920-1929
+ 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, // 1930-1939
+ 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, // 1940-1949
+ 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, // 1950-1959
+ 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, // 1960-1969
+ 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, // 1970-1979
+ 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, // 1980-1989
+ 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0, // 1990-1999
+ 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, // 2000-2009
+ 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, // 2010-2019
+ 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, // 2020-2029
+ 0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, // 2030-2039
+ 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, // 2040-2049
+ /** Add By JJonline@JJonline.Cn**/
+ 0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, // 2050-2059
+ 0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, // 2060-2069
+ 0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, // 2070-2079
+ 0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, // 2080-2089
+ 0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, // 2090-2099
+ 0x0d520], // 2100
+
+ /**
+ * 公历每个月份的天数普通表
+ * @Array Of Property
+ * @return Number
+ */
+ solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
+
+ /**
+ * 天干地支之天干速查表
+ * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]
+ * @return Cn string
+ */
+ Gan: ['\u7532', '\u4e59', '\u4e19', '\u4e01', '\u620a', '\u5df1', '\u5e9a', '\u8f9b', '\u58ec', '\u7678'],
+
+ /**
+ * 天干地支之地支速查表
+ * @Array Of Property
+ * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]
+ * @return Cn string
+ */
+ Zhi: ['\u5b50', '\u4e11', '\u5bc5', '\u536f', '\u8fb0', '\u5df3', '\u5348', '\u672a', '\u7533', '\u9149', '\u620c', '\u4ea5'],
+
+ /**
+ * 天干地支之地支速查表<=>生肖
+ * @Array Of Property
+ * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]
+ * @return Cn string
+ */
+ Animals: ['\u9f20', '\u725b', '\u864e', '\u5154', '\u9f99', '\u86c7', '\u9a6c', '\u7f8a', '\u7334', '\u9e21', '\u72d7', '\u732a'],
+
+ /**
+ * 24节气速查表
+ * @Array Of Property
+ * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]
+ * @return Cn string
+ */
+ solarTerm: ['\u5c0f\u5bd2', '\u5927\u5bd2', '\u7acb\u6625', '\u96e8\u6c34', '\u60ca\u86f0', '\u6625\u5206', '\u6e05\u660e', '\u8c37\u96e8', '\u7acb\u590f', '\u5c0f\u6ee1', '\u8292\u79cd', '\u590f\u81f3', '\u5c0f\u6691', '\u5927\u6691', '\u7acb\u79cb', '\u5904\u6691', '\u767d\u9732', '\u79cb\u5206', '\u5bd2\u9732', '\u971c\u964d', '\u7acb\u51ac', '\u5c0f\u96ea', '\u5927\u96ea', '\u51ac\u81f3'],
+
+ /**
+ * 1900-2100各年的24节气日期速查表
+ * @Array Of Property
+ * @return 0x string For splice
+ */
+ sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f',
+ '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f',
+ 'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f',
+ '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa',
+ '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2',
+ '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f',
+ '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722',
+ '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f',
+ '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722',
+ '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f',
+ '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
+ '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
+ '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722',
+ '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+ '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722',
+ '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+ '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722',
+ '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
+ '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
+ '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
+ '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
+ '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+ '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+ '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
+ '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+ '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+ '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721',
+ '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2',
+ '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
+ '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+ '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd',
+ '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+ '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+ '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+ '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd',
+ '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+ '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+ '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721',
+ '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5',
+ '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722',
+ '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+ '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
+ '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35',
+ '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+ '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721',
+ '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd',
+ '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35',
+ '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+ '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721',
+ '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5',
+ '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35',
+ '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+ '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
+ '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35',
+ '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'],
+
+ /**
+ * 数字转中文速查表
+ * @Array Of Property
+ * @trans ['日','一','二','三','四','五','六','七','八','九','十']
+ * @return Cn string
+ */
+ nStr1: ['\u65e5', '\u4e00', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341'],
+
+ /**
+ * 日期转农历称呼速查表
+ * @Array Of Property
+ * @trans ['初','十','廿','卅']
+ * @return Cn string
+ */
+ nStr2: ['\u521d', '\u5341', '\u5eff', '\u5345'],
+
+ /**
+ * 月份转农历称呼速查表
+ * @Array Of Property
+ * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊']
+ * @return Cn string
+ */
+ nStr3: ['\u6b63', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341', '\u51ac', '\u814a'],
+
+ /**
+ * 返回农历y年一整年的总天数
+ * @param lunar Year
+ * @return Number
+ * @eg:var count = calendar.lYearDays(1987) ;//count=387
+ */
+ lYearDays: function (y) {
+ var i; var sum = 348
+ for (i = 0x8000; i > 0x8; i >>= 1) { sum += (this.lunarInfo[y - 1900] & i) ? 1 : 0 }
+ return (sum + this.leapDays(y))
+ },
+
+ /**
+ * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0
+ * @param lunar Year
+ * @return Number (0-12)
+ * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6
+ */
+ leapMonth: function (y) { // 闰字编码 \u95f0
+ return (this.lunarInfo[y - 1900] & 0xf)
+ },
+
+ /**
+ * 返回农历y年闰月的天数 若该年没有闰月则返回0
+ * @param lunar Year
+ * @return Number (0、29、30)
+ * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29
+ */
+ leapDays: function (y) {
+ if (this.leapMonth(y)) {
+ return ((this.lunarInfo[y - 1900] & 0x10000) ? 30 : 29)
+ }
+ return (0)
+ },
+
+ /**
+ * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法
+ * @param lunar Year
+ * @return Number (-1、29、30)
+ * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29
+ */
+ monthDays: function (y, m) {
+ if (m > 12 || m < 1) { return -1 }// 月份参数从1至12,参数错误返回-1
+ return ((this.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29)
+ },
+
+ /**
+ * 返回公历(!)y年m月的天数
+ * @param solar Year
+ * @return Number (-1、28、29、30、31)
+ * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30
+ */
+ solarDays: function (y, m) {
+ if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1
+ var ms = m - 1
+ if (ms == 1) { // 2月份的闰平规律测算后确认返回28或29
+ return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28)
+ } else {
+ return (this.solarMonth[ms])
+ }
+ },
+
+ /**
+ * 农历年份转换为干支纪年
+ * @param lYear 农历年的年份数
+ * @return Cn string
+ */
+ toGanZhiYear: function (lYear) {
+ var ganKey = (lYear - 3) % 10
+ var zhiKey = (lYear - 3) % 12
+ if (ganKey == 0) ganKey = 10// 如果余数为0则为最后一个天干
+ if (zhiKey == 0) zhiKey = 12// 如果余数为0则为最后一个地支
+ return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1]
+ },
+
+ /**
+ * 公历月、日判断所属星座
+ * @param cMonth [description]
+ * @param cDay [description]
+ * @return Cn string
+ */
+ toAstro: function (cMonth, cDay) {
+ var s = '\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf'
+ var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22]
+ return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + '\u5ea7'// 座
+ },
+
+ /**
+ * 传入offset偏移量返回干支
+ * @param offset 相对甲子的偏移量
+ * @return Cn string
+ */
+ toGanZhi: function (offset) {
+ return this.Gan[offset % 10] + this.Zhi[offset % 12]
+ },
+
+ /**
+ * 传入公历(!)y年获得该年第n个节气的公历日期
+ * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起
+ * @return day Number
+ * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春
+ */
+ getTerm: function (y, n) {
+ if (y < 1900 || y > 2100) { return -1 }
+ if (n < 1 || n > 24) { return -1 }
+ var _table = this.sTermInfo[y - 1900]
+ var _info = [
+ parseInt('0x' + _table.substr(0, 5)).toString(),
+ parseInt('0x' + _table.substr(5, 5)).toString(),
+ parseInt('0x' + _table.substr(10, 5)).toString(),
+ parseInt('0x' + _table.substr(15, 5)).toString(),
+ parseInt('0x' + _table.substr(20, 5)).toString(),
+ parseInt('0x' + _table.substr(25, 5)).toString()
+ ]
+ var _calday = [
+ _info[0].substr(0, 1),
+ _info[0].substr(1, 2),
+ _info[0].substr(3, 1),
+ _info[0].substr(4, 2),
+
+ _info[1].substr(0, 1),
+ _info[1].substr(1, 2),
+ _info[1].substr(3, 1),
+ _info[1].substr(4, 2),
+
+ _info[2].substr(0, 1),
+ _info[2].substr(1, 2),
+ _info[2].substr(3, 1),
+ _info[2].substr(4, 2),
+
+ _info[3].substr(0, 1),
+ _info[3].substr(1, 2),
+ _info[3].substr(3, 1),
+ _info[3].substr(4, 2),
+
+ _info[4].substr(0, 1),
+ _info[4].substr(1, 2),
+ _info[4].substr(3, 1),
+ _info[4].substr(4, 2),
+
+ _info[5].substr(0, 1),
+ _info[5].substr(1, 2),
+ _info[5].substr(3, 1),
+ _info[5].substr(4, 2)
+ ]
+ return parseInt(_calday[n - 1])
+ },
+
+ /**
+ * 传入农历数字月份返回汉语通俗表示法
+ * @param lunar month
+ * @return Cn string
+ * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月'
+ */
+ toChinaMonth: function (m) { // 月 => \u6708
+ if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1
+ var s = this.nStr3[m - 1]
+ s += '\u6708'// 加上月字
+ return s
+ },
+
+ /**
+ * 传入农历日期数字返回汉字表示法
+ * @param lunar day
+ * @return Cn string
+ * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一'
+ */
+ toChinaDay: function (d) { // 日 => \u65e5
+ var s
+ switch (d) {
+ case 10:
+ s = '\u521d\u5341'; break
+ case 20:
+ s = '\u4e8c\u5341'; break
+ break
+ case 30:
+ s = '\u4e09\u5341'; break
+ break
+ default :
+ s = this.nStr2[Math.floor(d / 10)]
+ s += this.nStr1[d % 10]
+ }
+ return (s)
+ },
+
+ /**
+ * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春”
+ * @param y year
+ * @return Cn string
+ * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔'
+ */
+ getAnimal: function (y) {
+ return this.Animals[(y - 4) % 12]
+ },
+
+ /**
+ * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON
+ * @param y solar year
+ * @param m solar month
+ * @param d solar day
+ * @return JSON object
+ * @eg:console.log(calendar.solar2lunar(1987,11,01));
+ */
+ solar2lunar: function (y, m, d) { // 参数区间1900.1.31~2100.12.31
+ // 年份限定、上限
+ if (y < 1900 || y > 2100) {
+ return -1// undefined转换为数字变为NaN
+ }
+ // 公历传参最下限
+ if (y == 1900 && m == 1 && d < 31) {
+ return -1
+ }
+ // 未传参 获得当天
+ if (!y) {
+ var objDate = new Date()
+ } else {
+ var objDate = new Date(y, parseInt(m) - 1, d)
+ }
+ var i; var leap = 0; var temp = 0
+ // 修正ymd参数
+ var y = objDate.getFullYear()
+ var m = objDate.getMonth() + 1
+ var d = objDate.getDate()
+ var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000
+ for (i = 1900; i < 2101 && offset > 0; i++) {
+ temp = this.lYearDays(i)
+ offset -= temp
+ }
+ if (offset < 0) {
+ offset += temp; i--
+ }
+
+ // 是否今天
+ var isTodayObj = new Date()
+ var isToday = false
+ if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) {
+ isToday = true
+ }
+ // 星期几
+ var nWeek = objDate.getDay()
+ var cWeek = this.nStr1[nWeek]
+ // 数字表示周几顺应天朝周一开始的惯例
+ if (nWeek == 0) {
+ nWeek = 7
+ }
+ // 农历年
+ var year = i
+ var leap = this.leapMonth(i) // 闰哪个月
+ var isLeap = false
+
+ // 效验闰月
+ for (i = 1; i < 13 && offset > 0; i++) {
+ // 闰月
+ if (leap > 0 && i == (leap + 1) && isLeap == false) {
+ --i
+ isLeap = true; temp = this.leapDays(year) // 计算农历闰月天数
+ } else {
+ temp = this.monthDays(year, i)// 计算农历普通月天数
+ }
+ // 解除闰月
+ if (isLeap == true && i == (leap + 1)) { isLeap = false }
+ offset -= temp
+ }
+ // 闰月导致数组下标重叠取反
+ if (offset == 0 && leap > 0 && i == leap + 1) {
+ if (isLeap) {
+ isLeap = false
+ } else {
+ isLeap = true; --i
+ }
+ }
+ if (offset < 0) {
+ offset += temp; --i
+ }
+ // 农历月
+ var month = i
+ // 农历日
+ var day = offset + 1
+ // 天干地支处理
+ var sm = m - 1
+ var gzY = this.toGanZhiYear(year)
+
+ // 当月的两个节气
+ // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year`
+ var firstNode = this.getTerm(y, (m * 2 - 1))// 返回当月「节」为几日开始
+ var secondNode = this.getTerm(y, (m * 2))// 返回当月「节」为几日开始
+
+ // 依据12节气修正干支月
+ var gzM = this.toGanZhi((y - 1900) * 12 + m + 11)
+ if (d >= firstNode) {
+ gzM = this.toGanZhi((y - 1900) * 12 + m + 12)
+ }
+
+ // 传入的日期的节气与否
+ var isTerm = false
+ var Term = null
+ if (firstNode == d) {
+ isTerm = true
+ Term = this.solarTerm[m * 2 - 2]
+ }
+ if (secondNode == d) {
+ isTerm = true
+ Term = this.solarTerm[m * 2 - 1]
+ }
+ // 日柱 当月一日与 1900/1/1 相差天数
+ var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10
+ var gzD = this.toGanZhi(dayCyclical + d - 1)
+ // 该日期所属的星座
+ var astro = this.toAstro(m, d)
+
+ return { 'lYear': year, 'lMonth': month, 'lDay': day, 'Animal': this.getAnimal(year), 'IMonthCn': (isLeap ? '\u95f0' : '') + this.toChinaMonth(month), 'IDayCn': this.toChinaDay(day), 'cYear': y, 'cMonth': m, 'cDay': d, 'gzYear': gzY, 'gzMonth': gzM, 'gzDay': gzD, 'isToday': isToday, 'isLeap': isLeap, 'nWeek': nWeek, 'ncWeek': '\u661f\u671f' + cWeek, 'isTerm': isTerm, 'Term': Term, 'astro': astro }
+ },
+
+ /**
+ * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON
+ * @param y lunar year
+ * @param m lunar month
+ * @param d lunar day
+ * @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可]
+ * @return JSON object
+ * @eg:console.log(calendar.lunar2solar(1987,9,10));
+ */
+ lunar2solar: function (y, m, d, isLeapMonth) { // 参数区间1900.1.31~2100.12.1
+ var isLeapMonth = !!isLeapMonth
+ var leapOffset = 0
+ var leapMonth = this.leapMonth(y)
+ var leapDay = this.leapDays(y)
+ if (isLeapMonth && (leapMonth != m)) { return -1 }// 传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同
+ if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) { return -1 }// 超出了最大极限值
+ var day = this.monthDays(y, m)
+ var _day = day
+ // bugFix 2016-9-25
+ // if month is leap, _day use leapDays method
+ if (isLeapMonth) {
+ _day = this.leapDays(y, m)
+ }
+ if (y < 1900 || y > 2100 || d > _day) { return -1 }// 参数合法性效验
+
+ // 计算农历的时间差
+ var offset = 0
+ for (var i = 1900; i < y; i++) {
+ offset += this.lYearDays(i)
+ }
+ var leap = 0; var isAdd = false
+ for (var i = 1; i < m; i++) {
+ leap = this.leapMonth(y)
+ if (!isAdd) { // 处理闰月
+ if (leap <= i && leap > 0) {
+ offset += this.leapDays(y); isAdd = true
+ }
+ }
+ offset += this.monthDays(y, i)
+ }
+ // 转换闰月农历 需补充该年闰月的前一个月的时差
+ if (isLeapMonth) { offset += day }
+ // 1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点)
+ var stmap = Date.UTC(1900, 1, 30, 0, 0, 0)
+ var calObj = new Date((offset + d - 31) * 86400000 + stmap)
+ var cY = calObj.getUTCFullYear()
+ var cM = calObj.getUTCMonth() + 1
+ var cD = calObj.getUTCDate()
+
+ return this.solar2lunar(cY, cM, cD)
+ }
+}
+
+export default calendar
diff --git a/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue
new file mode 100644
index 0000000..8f7f181
--- /dev/null
+++ b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue
@@ -0,0 +1,907 @@
+
+
+
+
+
+
+
+ {{nowDate.month}}
+
+
+
+ {{SUNText}}
+
+
+ {{MONText}}
+
+
+ {{TUEText}}
+
+
+ {{WEDText}}
+
+
+ {{THUText}}
+
+
+ {{FRIText}}
+
+
+ {{SATText}}
+
+
+
+
+
+
+
+
+
+
+ {{tempSingleDate ? tempSingleDate : selectDateText}}
+
+
+
+
+
+
+ {{tempRange.before ? tempRange.before : startDateText}}
+
+
+
+
+
+
+ {{tempRange.after ? tempRange.after : endDateText}}
+
+
+
+
+
+
+ {{confirmText}}
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json
new file mode 100644
index 0000000..9acf1ab
--- /dev/null
+++ b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json
@@ -0,0 +1,22 @@
+{
+ "uni-datetime-picker.selectDate": "select date",
+ "uni-datetime-picker.selectTime": "select time",
+ "uni-datetime-picker.selectDateTime": "select datetime",
+ "uni-datetime-picker.startDate": "start date",
+ "uni-datetime-picker.endDate": "end date",
+ "uni-datetime-picker.startTime": "start time",
+ "uni-datetime-picker.endTime": "end time",
+ "uni-datetime-picker.ok": "ok",
+ "uni-datetime-picker.clear": "clear",
+ "uni-datetime-picker.cancel": "cancel",
+ "uni-datetime-picker.year": "-",
+ "uni-datetime-picker.month": "",
+ "uni-calender.MON": "MON",
+ "uni-calender.TUE": "TUE",
+ "uni-calender.WED": "WED",
+ "uni-calender.THU": "THU",
+ "uni-calender.FRI": "FRI",
+ "uni-calender.SAT": "SAT",
+ "uni-calender.SUN": "SUN",
+ "uni-calender.confirm": "confirm"
+}
diff --git a/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js
new file mode 100644
index 0000000..de7509c
--- /dev/null
+++ b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js
@@ -0,0 +1,8 @@
+import en from './en.json'
+import zhHans from './zh-Hans.json'
+import zhHant from './zh-Hant.json'
+export default {
+ en,
+ 'zh-Hans': zhHans,
+ 'zh-Hant': zhHant
+}
diff --git a/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json
new file mode 100644
index 0000000..d2df5e7
--- /dev/null
+++ b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json
@@ -0,0 +1,22 @@
+{
+ "uni-datetime-picker.selectDate": "选择日期",
+ "uni-datetime-picker.selectTime": "选择时间",
+ "uni-datetime-picker.selectDateTime": "选择日期时间",
+ "uni-datetime-picker.startDate": "开始日期",
+ "uni-datetime-picker.endDate": "结束日期",
+ "uni-datetime-picker.startTime": "开始时间",
+ "uni-datetime-picker.endTime": "结束时间",
+ "uni-datetime-picker.ok": "确定",
+ "uni-datetime-picker.clear": "清除",
+ "uni-datetime-picker.cancel": "取消",
+ "uni-datetime-picker.year": "年",
+ "uni-datetime-picker.month": "月",
+ "uni-calender.SUN": "日",
+ "uni-calender.MON": "一",
+ "uni-calender.TUE": "二",
+ "uni-calender.WED": "三",
+ "uni-calender.THU": "四",
+ "uni-calender.FRI": "五",
+ "uni-calender.SAT": "六",
+ "uni-calender.confirm": "确认"
+}
\ No newline at end of file
diff --git a/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json
new file mode 100644
index 0000000..d23fa3c
--- /dev/null
+++ b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json
@@ -0,0 +1,22 @@
+{
+ "uni-datetime-picker.selectDate": "選擇日期",
+ "uni-datetime-picker.selectTime": "選擇時間",
+ "uni-datetime-picker.selectDateTime": "選擇日期時間",
+ "uni-datetime-picker.startDate": "開始日期",
+ "uni-datetime-picker.endDate": "結束日期",
+ "uni-datetime-picker.startTime": "開始时间",
+ "uni-datetime-picker.endTime": "結束时间",
+ "uni-datetime-picker.ok": "確定",
+ "uni-datetime-picker.clear": "清除",
+ "uni-datetime-picker.cancel": "取消",
+ "uni-datetime-picker.year": "年",
+ "uni-datetime-picker.month": "月",
+ "uni-calender.SUN": "日",
+ "uni-calender.MON": "一",
+ "uni-calender.TUE": "二",
+ "uni-calender.WED": "三",
+ "uni-calender.THU": "四",
+ "uni-calender.FRI": "五",
+ "uni-calender.SAT": "六",
+ "uni-calender.confirm": "確認"
+}
\ No newline at end of file
diff --git a/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/keypress.js b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/keypress.js
new file mode 100644
index 0000000..9601aba
--- /dev/null
+++ b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/keypress.js
@@ -0,0 +1,45 @@
+// #ifdef H5
+export default {
+ name: 'Keypress',
+ props: {
+ disable: {
+ type: Boolean,
+ default: false
+ }
+ },
+ mounted () {
+ const keyNames = {
+ esc: ['Esc', 'Escape'],
+ tab: 'Tab',
+ enter: 'Enter',
+ space: [' ', 'Spacebar'],
+ up: ['Up', 'ArrowUp'],
+ left: ['Left', 'ArrowLeft'],
+ right: ['Right', 'ArrowRight'],
+ down: ['Down', 'ArrowDown'],
+ delete: ['Backspace', 'Delete', 'Del']
+ }
+ const listener = ($event) => {
+ if (this.disable) {
+ return
+ }
+ const keyName = Object.keys(keyNames).find(key => {
+ const keyName = $event.key
+ const value = keyNames[key]
+ return value === keyName || (Array.isArray(value) && value.includes(keyName))
+ })
+ if (keyName) {
+ // 避免和其他按键事件冲突
+ setTimeout(() => {
+ this.$emit(keyName, {})
+ }, 0)
+ }
+ }
+ document.addEventListener('keyup', listener)
+ this.$once('hook:beforeDestroy', () => {
+ document.removeEventListener('keyup', listener)
+ })
+ },
+ render: () => {}
+}
+// #endif
\ No newline at end of file
diff --git a/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue
new file mode 100644
index 0000000..699aa63
--- /dev/null
+++ b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue
@@ -0,0 +1,927 @@
+
+
+
+
+
+ {{time}}
+
+ {{selectTimeText}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue
new file mode 100644
index 0000000..9bdf8bc
--- /dev/null
+++ b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue
@@ -0,0 +1,1012 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{rangeSeparator}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js
new file mode 100644
index 0000000..efa5773
--- /dev/null
+++ b/src/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js
@@ -0,0 +1,410 @@
+class Calendar {
+ constructor({
+ date,
+ selected,
+ startDate,
+ endDate,
+ range,
+ // multipleStatus
+ } = {}) {
+ // 当前日期
+ this.date = this.getDate(new Date()) // 当前初入日期
+ // 打点信息
+ this.selected = selected || [];
+ // 范围开始
+ this.startDate = startDate
+ // 范围结束
+ this.endDate = endDate
+ this.range = range
+ // 多选状态
+ this.cleanMultipleStatus()
+ // 每周日期
+ this.weeks = {}
+ // this._getWeek(this.date.fullDate)
+ // this.multipleStatus = multipleStatus
+ this.lastHover = false
+ }
+ /**
+ * 设置日期
+ * @param {Object} date
+ */
+ setDate(date) {
+ this.selectDate = this.getDate(date)
+ this._getWeek(this.selectDate.fullDate)
+ }
+
+ /**
+ * 清理多选状态
+ */
+ cleanMultipleStatus() {
+ this.multipleStatus = {
+ before: '',
+ after: '',
+ data: []
+ }
+ }
+
+ /**
+ * 重置开始日期
+ */
+ resetSatrtDate(startDate) {
+ // 范围开始
+ this.startDate = startDate
+
+ }
+
+ /**
+ * 重置结束日期
+ */
+ resetEndDate(endDate) {
+ // 范围结束
+ this.endDate = endDate
+ }
+
+ /**
+ * 获取任意时间
+ */
+ getDate(date, AddDayCount = 0, str = 'day') {
+ if (!date) {
+ date = new Date()
+ }
+ if (typeof date !== 'object') {
+ date = date.replace(/-/g, '/')
+ }
+ const dd = new Date(date)
+ switch (str) {
+ case 'day':
+ dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期
+ break
+ case 'month':
+ if (dd.getDate() === 31) {
+ dd.setDate(dd.getDate() + AddDayCount)
+ } else {
+ dd.setMonth(dd.getMonth() + AddDayCount) // 获取AddDayCount天后的日期
+ }
+ break
+ case 'year':
+ dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期
+ break
+ }
+ const y = dd.getFullYear()
+ const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0
+ const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0
+ return {
+ fullDate: y + '-' + m + '-' + d,
+ year: y,
+ month: m,
+ date: d,
+ day: dd.getDay()
+ }
+ }
+
+
+ /**
+ * 获取上月剩余天数
+ */
+ _getLastMonthDays(firstDay, full) {
+ let dateArr = []
+ for (let i = firstDay; i > 0; i--) {
+ const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate()
+ dateArr.push({
+ date: beforeDate,
+ month: full.month - 1,
+ disable: true
+ })
+ }
+ return dateArr
+ }
+ /**
+ * 获取本月天数
+ */
+ _currentMonthDys(dateData, full) {
+ let dateArr = []
+ let fullDate = this.date.fullDate
+ for (let i = 1; i <= dateData; i++) {
+ let isinfo = false
+ let nowDate = full.year + '-' + (full.month < 10 ?
+ full.month : full.month) + '-' + (i < 10 ?
+ '0' + i : i)
+ // 是否今天
+ let isDay = fullDate === nowDate
+ // 获取打点信息
+ let info = this.selected && this.selected.find((item) => {
+ if (this.dateEqual(nowDate, item.date)) {
+ return item
+ }
+ })
+
+ // 日期禁用
+ let disableBefore = true
+ let disableAfter = true
+ if (this.startDate) {
+ // let dateCompBefore = this.dateCompare(this.startDate, fullDate)
+ // disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate)
+ disableBefore = this.dateCompare(this.startDate, nowDate)
+ }
+
+ if (this.endDate) {
+ // let dateCompAfter = this.dateCompare(fullDate, this.endDate)
+ // disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate)
+ disableAfter = this.dateCompare(nowDate, this.endDate)
+ }
+ let multiples = this.multipleStatus.data
+ let checked = false
+ let multiplesStatus = -1
+ if (this.range) {
+ if (multiples) {
+ multiplesStatus = multiples.findIndex((item) => {
+ return this.dateEqual(item, nowDate)
+ })
+ }
+ if (multiplesStatus !== -1) {
+ checked = true
+ }
+ }
+ let data = {
+ fullDate: nowDate,
+ year: full.year,
+ date: i,
+ multiple: this.range ? checked : false,
+ beforeMultiple: this.isLogicBefore(nowDate, this.multipleStatus.before, this.multipleStatus.after),
+ afterMultiple: this.isLogicAfter(nowDate, this.multipleStatus.before, this.multipleStatus.after),
+ month: full.month,
+ disable: !(disableBefore && disableAfter),
+ isDay,
+ userChecked: false
+ }
+ if (info) {
+ data.extraInfo = info
+ }
+
+ dateArr.push(data)
+ }
+ return dateArr
+ }
+ /**
+ * 获取下月天数
+ */
+ _getNextMonthDays(surplus, full) {
+ let dateArr = []
+ for (let i = 1; i < surplus + 1; i++) {
+ dateArr.push({
+ date: i,
+ month: Number(full.month) + 1,
+ disable: true
+ })
+ }
+ return dateArr
+ }
+
+ /**
+ * 获取当前日期详情
+ * @param {Object} date
+ */
+ getInfo(date) {
+ if (!date) {
+ date = new Date()
+ }
+ const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate)
+ return dateInfo
+ }
+
+ /**
+ * 比较时间大小
+ */
+ dateCompare(startDate, endDate) {
+ // 计算截止时间
+ startDate = new Date(startDate.replace('-', '/').replace('-', '/'))
+ // 计算详细项的截止时间
+ endDate = new Date(endDate.replace('-', '/').replace('-', '/'))
+ if (startDate <= endDate) {
+ return true
+ } else {
+ return false
+ }
+ }
+
+ /**
+ * 比较时间是否相等
+ */
+ dateEqual(before, after) {
+ // 计算截止时间
+ before = new Date(before.replace('-', '/').replace('-', '/'))
+ // 计算详细项的截止时间
+ after = new Date(after.replace('-', '/').replace('-', '/'))
+ if (before.getTime() - after.getTime() === 0) {
+ return true
+ } else {
+ return false
+ }
+ }
+
+ /**
+ * 比较真实起始日期
+ */
+
+ isLogicBefore(currentDay, before, after) {
+ let logicBefore = before
+ if (before && after) {
+ logicBefore = this.dateCompare(before, after) ? before : after
+ }
+ return this.dateEqual(logicBefore, currentDay)
+ }
+
+ isLogicAfter(currentDay, before, after) {
+ let logicAfter = after
+ if (before && after) {
+ logicAfter = this.dateCompare(before, after) ? after : before
+ }
+ return this.dateEqual(logicAfter, currentDay)
+ }
+
+ /**
+ * 获取日期范围内所有日期
+ * @param {Object} begin
+ * @param {Object} end
+ */
+ geDateAll(begin, end) {
+ var arr = []
+ var ab = begin.split('-')
+ var ae = end.split('-')
+ var db = new Date()
+ db.setFullYear(ab[0], ab[1] - 1, ab[2])
+ var de = new Date()
+ de.setFullYear(ae[0], ae[1] - 1, ae[2])
+ var unixDb = db.getTime() - 24 * 60 * 60 * 1000
+ var unixDe = de.getTime() - 24 * 60 * 60 * 1000
+ for (var k = unixDb; k <= unixDe;) {
+ k = k + 24 * 60 * 60 * 1000
+ arr.push(this.getDate(new Date(parseInt(k))).fullDate)
+ }
+ return arr
+ }
+
+ /**
+ * 获取多选状态
+ */
+ setMultiple(fullDate) {
+ let {
+ before,
+ after
+ } = this.multipleStatus
+ if (!this.range) return
+ if (before && after) {
+ if (!this.lastHover) {
+ this.lastHover = true
+ return
+ }
+ this.multipleStatus.before = fullDate
+ this.multipleStatus.after = ''
+ this.multipleStatus.data = []
+ this.multipleStatus.fulldate = ''
+ this.lastHover = false
+ } else {
+ if (!before) {
+ this.multipleStatus.before = fullDate
+ this.lastHover = false
+ } else {
+ this.multipleStatus.after = fullDate
+ if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
+ this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus
+ .after);
+ } else {
+ this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus
+ .before);
+ }
+ this.lastHover = true
+ }
+ }
+ this._getWeek(fullDate)
+ }
+
+ /**
+ * 鼠标 hover 更新多选状态
+ */
+ setHoverMultiple(fullDate) {
+ let {
+ before,
+ after
+ } = this.multipleStatus
+
+ if (!this.range) return
+ if (this.lastHover) return
+
+ if (!before) {
+ this.multipleStatus.before = fullDate
+ } else {
+ this.multipleStatus.after = fullDate
+ if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
+ this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after);
+ } else {
+ this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before);
+ }
+ }
+ this._getWeek(fullDate)
+ }
+
+ /**
+ * 更新默认值多选状态
+ */
+ setDefaultMultiple(before, after) {
+ this.multipleStatus.before = before
+ this.multipleStatus.after = after
+ if (before && after) {
+ if (this.dateCompare(before, after)) {
+ this.multipleStatus.data = this.geDateAll(before, after);
+ this._getWeek(after)
+ } else {
+ this.multipleStatus.data = this.geDateAll(after, before);
+ this._getWeek(before)
+ }
+ }
+ }
+
+ /**
+ * 获取每周数据
+ * @param {Object} dateData
+ */
+ _getWeek(dateData) {
+ const {
+ fullDate,
+ year,
+ month,
+ date,
+ day
+ } = this.getDate(dateData)
+ let firstDay = new Date(year, month - 1, 1).getDay()
+ let currentDay = new Date(year, month, 0).getDate()
+ let dates = {
+ lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天
+ currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数
+ nextMonthDays: [], // 下个月开始几天
+ weeks: []
+ }
+ let canlender = []
+ const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length)
+ dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData))
+ canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays)
+ let weeks = {}
+ // 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天
+ for (let i = 0; i < canlender.length; i++) {
+ if (i % 7 === 0) {
+ weeks[parseInt(i / 7)] = new Array(7)
+ }
+ weeks[parseInt(i / 7)][i % 7] = canlender[i]
+ }
+ this.canlender = canlender
+ this.weeks = weeks
+ }
+
+ //静态方法
+ // static init(date) {
+ // if (!this.instance) {
+ // this.instance = new Calendar(date);
+ // }
+ // return this.instance;
+ // }
+}
+
+
+export default Calendar
diff --git a/src/uni_modules/uni-datetime-picker/package.json b/src/uni_modules/uni-datetime-picker/package.json
new file mode 100644
index 0000000..60fa1d0
--- /dev/null
+++ b/src/uni_modules/uni-datetime-picker/package.json
@@ -0,0 +1,90 @@
+{
+ "id": "uni-datetime-picker",
+ "displayName": "uni-datetime-picker 日期选择器",
+ "version": "2.2.6",
+ "description": "uni-datetime-picker 日期时间选择器,支持日历,支持范围选择",
+ "keywords": [
+ "uni-datetime-picker",
+ "uni-ui",
+ "uniui",
+ "日期时间选择器",
+ "日期时间"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": ""
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+ "dcloudext": {
+ "category": [
+ "前端组件",
+ "通用组件"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ },
+ "uni_modules": {
+ "dependencies": [
+ "uni-scss",
+ "uni-icons"
+ ],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "n"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
diff --git a/src/uni_modules/uni-datetime-picker/readme.md b/src/uni_modules/uni-datetime-picker/readme.md
new file mode 100644
index 0000000..162fbef
--- /dev/null
+++ b/src/uni_modules/uni-datetime-picker/readme.md
@@ -0,0 +1,21 @@
+
+
+> `重要通知:组件升级更新 2.0.0 后,支持日期+时间范围选择,组件 ui 将使用日历选择日期,ui 变化较大,同时支持 PC 和 移动端。此版本不向后兼容,不再支持单独的时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)。若仍需使用旧版本,可在插件市场下载*非uni_modules版本*,旧版本将不再维护`
+
+## DatetimePicker 时间选择器
+
+> **组件名:uni-datetime-picker**
+> 代码块: `uDatetimePicker`
+
+
+该组件的优势是,支持**时间戳**输入和输出(起始时间、终止时间也支持时间戳),可**同时选择**日期和时间。
+
+若只是需要单独选择日期和时间,不需要时间戳输入和输出,可使用原生的 picker 组件。
+
+**_点击 picker 默认值规则:_**
+
+- 若设置初始值 value, 会显示在 picker 显示框中
+- 若无初始值 value,则初始值 value 为当前本地时间 Date.now(), 但不会显示在 picker 显示框中
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
\ No newline at end of file
diff --git a/src/uni_modules/uni-drawer/changelog.md b/src/uni_modules/uni-drawer/changelog.md
new file mode 100644
index 0000000..6d2488c
--- /dev/null
+++ b/src/uni_modules/uni-drawer/changelog.md
@@ -0,0 +1,13 @@
+## 1.2.1(2021-11-22)
+- 修复 vue3中个别scss变量无法找到的问题
+## 1.2.0(2021-11-19)
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-drawer](https://uniapp.dcloud.io/component/uniui/uni-drawer)
+## 1.1.1(2021-07-30)
+- 优化 vue3下事件警告的问题
+## 1.1.0(2021-07-13)
+- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
+## 1.0.7(2021-05-12)
+- 新增 组件示例地址
+## 1.0.6(2021-02-04)
+- 调整为uni_modules目录规范
diff --git a/src/uni_modules/uni-drawer/components/uni-drawer/keypress.js b/src/uni_modules/uni-drawer/components/uni-drawer/keypress.js
new file mode 100644
index 0000000..62dda46
--- /dev/null
+++ b/src/uni_modules/uni-drawer/components/uni-drawer/keypress.js
@@ -0,0 +1,45 @@
+// #ifdef H5
+export default {
+ name: 'Keypress',
+ props: {
+ disable: {
+ type: Boolean,
+ default: false
+ }
+ },
+ mounted () {
+ const keyNames = {
+ esc: ['Esc', 'Escape'],
+ tab: 'Tab',
+ enter: 'Enter',
+ space: [' ', 'Spacebar'],
+ up: ['Up', 'ArrowUp'],
+ left: ['Left', 'ArrowLeft'],
+ right: ['Right', 'ArrowRight'],
+ down: ['Down', 'ArrowDown'],
+ delete: ['Backspace', 'Delete', 'Del']
+ }
+ const listener = ($event) => {
+ if (this.disable) {
+ return
+ }
+ const keyName = Object.keys(keyNames).find(key => {
+ const keyName = $event.key
+ const value = keyNames[key]
+ return value === keyName || (Array.isArray(value) && value.includes(keyName))
+ })
+ if (keyName) {
+ // 避免和其他按键事件冲突
+ setTimeout(() => {
+ this.$emit(keyName, {})
+ }, 0)
+ }
+ }
+ document.addEventListener('keyup', listener)
+ // this.$once('hook:beforeDestroy', () => {
+ // document.removeEventListener('keyup', listener)
+ // })
+ },
+ render: () => {}
+}
+// #endif
diff --git a/src/uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue b/src/uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue
new file mode 100644
index 0000000..2471521
--- /dev/null
+++ b/src/uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-drawer/package.json b/src/uni_modules/uni-drawer/package.json
new file mode 100644
index 0000000..dd056e4
--- /dev/null
+++ b/src/uni_modules/uni-drawer/package.json
@@ -0,0 +1,87 @@
+{
+ "id": "uni-drawer",
+ "displayName": "uni-drawer 抽屉",
+ "version": "1.2.1",
+ "description": "抽屉式导航,用于展示侧滑菜单,侧滑导航。",
+ "keywords": [
+ "uni-ui",
+ "uniui",
+ "drawer",
+ "抽屉",
+ "侧滑导航"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": ""
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+ "dcloudext": {
+ "category": [
+ "前端组件",
+ "通用组件"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ },
+ "uni_modules": {
+ "dependencies": ["uni-scss"],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "y"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/uni_modules/uni-drawer/readme.md b/src/uni_modules/uni-drawer/readme.md
new file mode 100644
index 0000000..dcf6e6b
--- /dev/null
+++ b/src/uni_modules/uni-drawer/readme.md
@@ -0,0 +1,10 @@
+
+
+## Drawer 抽屉
+> **组件名:uni-drawer**
+> 代码块: `uDrawer`
+
+抽屉侧滑菜单。
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-drawer)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
\ No newline at end of file
diff --git a/src/uni_modules/uni-easyinput/changelog.md b/src/uni_modules/uni-easyinput/changelog.md
new file mode 100644
index 0000000..1e8c6f9
--- /dev/null
+++ b/src/uni_modules/uni-easyinput/changelog.md
@@ -0,0 +1,47 @@
+## 1.1.0(2022-06-30)
+- 新增 在 uni-forms 1.4.0 中使用可以在 blur 时校验内容
+- 新增 clear 事件,点击右侧叉号图标触发
+- 新增 change 事件 ,仅在输入框失去焦点或用户按下回车时触发
+- 优化 组件样式,组件获取焦点时高亮显示,图标颜色调整等
+-
+## 1.0.5(2022-06-07)
+- 优化 clearable 显示策略
+## 1.0.4(2022-06-07)
+- 优化 clearable 显示策略
+## 1.0.3(2022-05-20)
+- 修复 关闭图标某些情况下无法取消的bug
+## 1.0.2(2022-04-12)
+- 修复 默认值不生效的bug
+## 1.0.1(2022-04-02)
+- 修复 value不能为0的bug
+## 1.0.0(2021-11-19)
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-easyinput](https://uniapp.dcloud.io/component/uniui/uni-easyinput)
+## 0.1.4(2021-08-20)
+- 修复 在 uni-forms 的动态表单中默认值校验不通过的 bug
+## 0.1.3(2021-08-11)
+- 修复 在 uni-forms 中重置表单,错误信息无法清除的问题
+## 0.1.2(2021-07-30)
+- 优化 vue3下事件警告的问题
+## 0.1.1
+- 优化 errorMessage 属性支持 Boolean 类型
+## 0.1.0(2021-07-13)
+- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
+## 0.0.16(2021-06-29)
+- 修复 confirmType 属性(仅 type="text" 生效)导致多行文本框无法换行的 bug
+## 0.0.15(2021-06-21)
+- 修复 passwordIcon 属性拼写错误的 bug
+## 0.0.14(2021-06-18)
+- 新增 passwordIcon 属性,当type=password时是否显示小眼睛图标
+- 修复 confirmType 属性不生效的问题
+## 0.0.13(2021-06-04)
+- 修复 disabled 状态可清出内容的 bug
+## 0.0.12(2021-05-12)
+- 新增 组件示例地址
+## 0.0.11(2021-05-07)
+- 修复 input-border 属性不生效的问题
+## 0.0.10(2021-04-30)
+- 修复 ios 遮挡文字、显示一半的问题
+## 0.0.9(2021-02-05)
+- 调整为uni_modules目录规范
+- 优化 兼容 nvue 页面
diff --git a/src/uni_modules/uni-easyinput/components/uni-easyinput/common.js b/src/uni_modules/uni-easyinput/components/uni-easyinput/common.js
new file mode 100644
index 0000000..df9abe1
--- /dev/null
+++ b/src/uni_modules/uni-easyinput/components/uni-easyinput/common.js
@@ -0,0 +1,56 @@
+/**
+ * @desc 函数防抖
+ * @param func 目标函数
+ * @param wait 延迟执行毫秒数
+ * @param immediate true - 立即执行, false - 延迟执行
+ */
+export const debounce = function(func, wait = 1000, immediate = true) {
+ let timer;
+ console.log(1);
+ return function() {
+ console.log(123);
+ let context = this,
+ args = arguments;
+ if (timer) clearTimeout(timer);
+ if (immediate) {
+ let callNow = !timer;
+ timer = setTimeout(() => {
+ timer = null;
+ }, wait);
+ if (callNow) func.apply(context, args);
+ } else {
+ timer = setTimeout(() => {
+ func.apply(context, args);
+ }, wait)
+ }
+ }
+}
+/**
+ * @desc 函数节流
+ * @param func 函数
+ * @param wait 延迟执行毫秒数
+ * @param type 1 使用表时间戳,在时间段开始的时候触发 2 使用表定时器,在时间段结束的时候触发
+ */
+export const throttle = (func, wait = 1000, type = 1) => {
+ let previous = 0;
+ let timeout;
+ return function() {
+ let context = this;
+ let args = arguments;
+ if (type === 1) {
+ let now = Date.now();
+
+ if (now - previous > wait) {
+ func.apply(context, args);
+ previous = now;
+ }
+ } else if (type === 2) {
+ if (!timeout) {
+ timeout = setTimeout(() => {
+ timeout = null;
+ func.apply(context, args)
+ }, wait)
+ }
+ }
+ }
+}
diff --git a/src/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue b/src/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue
new file mode 100644
index 0000000..5818d7f
--- /dev/null
+++ b/src/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue
@@ -0,0 +1,593 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-easyinput/package.json b/src/uni_modules/uni-easyinput/package.json
new file mode 100644
index 0000000..3cc793e
--- /dev/null
+++ b/src/uni_modules/uni-easyinput/package.json
@@ -0,0 +1,90 @@
+{
+ "id": "uni-easyinput",
+ "displayName": "uni-easyinput 增强输入框",
+ "version": "1.1.0",
+ "description": "Easyinput 组件是对原生input组件的增强",
+ "keywords": [
+ "uni-ui",
+ "uniui",
+ "input",
+ "uni-easyinput",
+ "输入框"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": ""
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+ "dcloudext": {
+ "category": [
+ "前端组件",
+ "通用组件"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ },
+ "uni_modules": {
+ "dependencies": [
+ "uni-scss",
+ "uni-icons"
+ ],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "y"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/uni_modules/uni-easyinput/readme.md b/src/uni_modules/uni-easyinput/readme.md
new file mode 100644
index 0000000..f1faf8f
--- /dev/null
+++ b/src/uni_modules/uni-easyinput/readme.md
@@ -0,0 +1,11 @@
+
+
+### Easyinput 增强输入框
+> **组件名:uni-easyinput**
+> 代码块: `uEasyinput`
+
+
+easyinput 组件是对原生input组件的增强 ,是专门为配合表单组件[uni-forms](https://ext.dcloud.net.cn/plugin?id=2773)而设计的,easyinput 内置了边框,图标等,同时包含 input 所有功能
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-easyinput)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
\ No newline at end of file
diff --git a/src/uni_modules/uni-fab/changelog.md b/src/uni_modules/uni-fab/changelog.md
new file mode 100644
index 0000000..24e26b1
--- /dev/null
+++ b/src/uni_modules/uni-fab/changelog.md
@@ -0,0 +1,17 @@
+## 1.2.2(2021-12-29)
+- 更新 组件依赖
+## 1.2.1(2021-11-19)
+- 修复 阴影颜色不正确的bug
+## 1.2.0(2021-11-19)
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-fab](https://uniapp.dcloud.io/component/uniui/uni-fab)
+## 1.1.1(2021-11-09)
+- 新增 提供组件设计资源,组件样式调整
+## 1.1.0(2021-07-30)
+- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
+## 1.0.7(2021-05-12)
+- 新增 组件示例地址
+## 1.0.6(2021-02-05)
+- 调整为uni_modules目录规范
+- 优化 按钮背景色调整
+- 优化 兼容pc端
diff --git a/src/uni_modules/uni-fab/components/uni-fab/uni-fab.vue b/src/uni_modules/uni-fab/components/uni-fab/uni-fab.vue
new file mode 100644
index 0000000..bef97f1
--- /dev/null
+++ b/src/uni_modules/uni-fab/components/uni-fab/uni-fab.vue
@@ -0,0 +1,475 @@
+
+
+
+
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-fab/components/uni-fab/uni-fab.vue.bak b/src/uni_modules/uni-fab/components/uni-fab/uni-fab.vue.bak
new file mode 100644
index 0000000..5adc72a
--- /dev/null
+++ b/src/uni_modules/uni-fab/components/uni-fab/uni-fab.vue.bak
@@ -0,0 +1,379 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-fab/package.json b/src/uni_modules/uni-fab/package.json
new file mode 100644
index 0000000..0f27daa
--- /dev/null
+++ b/src/uni_modules/uni-fab/package.json
@@ -0,0 +1,87 @@
+{
+ "id": "uni-fab",
+ "displayName": "uni-fab 悬浮按钮",
+ "version": "1.2.2",
+ "description": "悬浮按钮 fab button ,点击可展开一个图标按钮菜单。",
+ "keywords": [
+ "uni-ui",
+ "uniui",
+ "按钮",
+ "悬浮按钮",
+ "fab"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": ""
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+ "dcloudext": {
+ "category": [
+ "前端组件",
+ "通用组件"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ },
+ "uni_modules": {
+ "dependencies": ["uni-scss","uni-icons"],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "y"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
diff --git a/src/uni_modules/uni-fab/readme.md b/src/uni_modules/uni-fab/readme.md
new file mode 100644
index 0000000..9a444e8
--- /dev/null
+++ b/src/uni_modules/uni-fab/readme.md
@@ -0,0 +1,9 @@
+## Fab 悬浮按钮
+> **组件名:uni-fab**
+> 代码块: `uFab`
+
+
+点击可展开一个图形按钮菜单
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fab)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
\ No newline at end of file
diff --git a/src/uni_modules/uni-fav/changelog.md b/src/uni_modules/uni-fav/changelog.md
new file mode 100644
index 0000000..d8a08d4
--- /dev/null
+++ b/src/uni_modules/uni-fav/changelog.md
@@ -0,0 +1,19 @@
+## 1.2.1(2022-05-30)
+- 新增 stat 属性 ,是否开启uni统计功能
+## 1.2.0(2021-11-19)
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-fav](https://uniapp.dcloud.io/component/uniui/uni-fav)
+## 1.1.1(2021-08-24)
+- 新增 支持国际化
+## 1.1.0(2021-07-13)
+- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
+## 1.0.6(2021-05-12)
+- 新增 组件示例地址
+## 1.0.5(2021-04-21)
+- 优化 添加依赖 uni-icons, 导入后自动下载依赖
+## 1.0.4(2021-02-05)
+- 优化 组件引用关系,通过uni_modules引用组件
+## 1.0.3(2021-02-05)
+- 优化 组件引用关系,通过uni_modules引用组件
+## 1.0.2(2021-02-05)
+- 调整为uni_modules目录规范
diff --git a/src/uni_modules/uni-fav/components/uni-fav/i18n/en.json b/src/uni_modules/uni-fav/components/uni-fav/i18n/en.json
new file mode 100644
index 0000000..9a0759e
--- /dev/null
+++ b/src/uni_modules/uni-fav/components/uni-fav/i18n/en.json
@@ -0,0 +1,4 @@
+{
+ "uni-fav.collect": "collect",
+ "uni-fav.collected": "collected"
+}
diff --git a/src/uni_modules/uni-fav/components/uni-fav/i18n/index.js b/src/uni_modules/uni-fav/components/uni-fav/i18n/index.js
new file mode 100644
index 0000000..de7509c
--- /dev/null
+++ b/src/uni_modules/uni-fav/components/uni-fav/i18n/index.js
@@ -0,0 +1,8 @@
+import en from './en.json'
+import zhHans from './zh-Hans.json'
+import zhHant from './zh-Hant.json'
+export default {
+ en,
+ 'zh-Hans': zhHans,
+ 'zh-Hant': zhHant
+}
diff --git a/src/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json b/src/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json
new file mode 100644
index 0000000..67c89bf
--- /dev/null
+++ b/src/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json
@@ -0,0 +1,4 @@
+{
+ "uni-fav.collect": "收藏",
+ "uni-fav.collected": "已收藏"
+}
diff --git a/src/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json b/src/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json
new file mode 100644
index 0000000..67c89bf
--- /dev/null
+++ b/src/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json
@@ -0,0 +1,4 @@
+{
+ "uni-fav.collect": "收藏",
+ "uni-fav.collected": "已收藏"
+}
diff --git a/src/uni_modules/uni-fav/components/uni-fav/uni-fav.vue b/src/uni_modules/uni-fav/components/uni-fav/uni-fav.vue
new file mode 100644
index 0000000..d2c58df
--- /dev/null
+++ b/src/uni_modules/uni-fav/components/uni-fav/uni-fav.vue
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+
+
+
+
+ {{ checked ? contentFav : contentDefault }}
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-fav/package.json b/src/uni_modules/uni-fav/package.json
new file mode 100644
index 0000000..cc14697
--- /dev/null
+++ b/src/uni_modules/uni-fav/package.json
@@ -0,0 +1,89 @@
+{
+ "id": "uni-fav",
+ "displayName": "uni-fav 收藏按钮",
+ "version": "1.2.1",
+ "description": " Fav 收藏组件,可自定义颜色、大小。",
+ "keywords": [
+ "fav",
+ "uni-ui",
+ "uniui",
+ "收藏"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": ""
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+ "dcloudext": {
+ "category": [
+ "前端组件",
+ "通用组件"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ },
+ "uni_modules": {
+ "dependencies": [
+ "uni-scss",
+ "uni-icons"
+ ],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "y"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
diff --git a/src/uni_modules/uni-fav/readme.md b/src/uni_modules/uni-fav/readme.md
new file mode 100644
index 0000000..4de125d
--- /dev/null
+++ b/src/uni_modules/uni-fav/readme.md
@@ -0,0 +1,10 @@
+
+
+## Fav 收藏按钮
+> **组件名:uni-fav**
+> 代码块: `uFav`
+
+用于收藏功能,可点击切换选中、不选中的状态。
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fav)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
\ No newline at end of file
diff --git a/src/uni_modules/uni-file-picker/changelog.md b/src/uni_modules/uni-file-picker/changelog.md
new file mode 100644
index 0000000..5c81026
--- /dev/null
+++ b/src/uni_modules/uni-file-picker/changelog.md
@@ -0,0 +1,63 @@
+## 1.0.2(2022-07-04)
+- 修复 在uni-forms下样式不生效的bug
+## 1.0.1(2021-11-23)
+- 修复 参数为对象的情况下,url在某些情况显示错误的bug
+## 1.0.0(2021-11-19)
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-file-picker](https://uniapp.dcloud.io/component/uniui/uni-file-picker)
+## 0.2.16(2021-11-08)
+- 修复 传入空对象 ,显示错误的Bug
+## 0.2.15(2021-08-30)
+- 修复 return-type="object" 时且存在v-model时,无法删除文件的Bug
+## 0.2.14(2021-08-23)
+- 新增 参数中返回 fileID 字段
+## 0.2.13(2021-08-23)
+- 修复 腾讯云传入fileID 不能回显的bug
+- 修复 选择图片后,不能放大的问题
+## 0.2.12(2021-08-17)
+- 修复 由于 0.2.11 版本引起的不能回显图片的Bug
+## 0.2.11(2021-08-16)
+- 新增 clearFiles(index) 方法,可以手动删除指定文件
+- 修复 v-model 值设为 null 报错的Bug
+## 0.2.10(2021-08-13)
+- 修复 return-type="object" 时,无法删除文件的Bug
+## 0.2.9(2021-08-03)
+- 修复 auto-upload 属性失效的Bug
+## 0.2.8(2021-07-31)
+- 修复 fileExtname属性不指定值报错的Bug
+## 0.2.7(2021-07-31)
+- 修复 在某种场景下图片不回显的Bug
+## 0.2.6(2021-07-30)
+- 修复 return-type为object下,返回值不正确的Bug
+## 0.2.5(2021-07-30)
+- 修复(重要) H5 平台下如果和uni-forms组件一同使用导致页面卡死的问题
+## 0.2.3(2021-07-28)
+- 优化 调整示例代码
+## 0.2.2(2021-07-27)
+- 修复 vue3 下赋值错误的Bug
+- 优化 h5平台下上传文件导致页面卡死的问题
+## 0.2.0(2021-07-13)
+- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
+## 0.1.1(2021-07-02)
+- 修复 sourceType 缺少默认值导致 ios 无法选择文件
+## 0.1.0(2021-06-30)
+- 优化 解耦与uniCloud的强绑定关系 ,如不绑定服务空间,默认autoUpload为false且不可更改
+## 0.0.11(2021-06-30)
+- 修复 由 0.0.10 版本引发的 returnType 属性失效的问题
+## 0.0.10(2021-06-29)
+- 优化 文件上传后进度条消失时机
+## 0.0.9(2021-06-29)
+- 修复 在uni-forms 中,删除文件 ,获取的值不对的Bug
+## 0.0.8(2021-06-15)
+- 修复 删除文件时无法触发 v-model 的Bug
+## 0.0.7(2021-05-12)
+- 新增 组件示例地址
+## 0.0.6(2021-04-09)
+- 修复 选择的文件非 file-extname 字段指定的扩展名报错的Bug
+## 0.0.5(2021-04-09)
+- 优化 更新组件示例
+## 0.0.4(2021-04-09)
+- 优化 file-extname 字段支持字符串写法,多个扩展名需要用逗号分隔
+## 0.0.3(2021-02-05)
+- 调整为uni_modules目录规范
+- 修复 微信小程序不指定 fileExtname 属性选择失败的Bug
diff --git a/src/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js b/src/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js
new file mode 100644
index 0000000..24a07f5
--- /dev/null
+++ b/src/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js
@@ -0,0 +1,224 @@
+'use strict';
+
+const ERR_MSG_OK = 'chooseAndUploadFile:ok';
+const ERR_MSG_FAIL = 'chooseAndUploadFile:fail';
+
+function chooseImage(opts) {
+ const {
+ count,
+ sizeType = ['original', 'compressed'],
+ sourceType = ['album', 'camera'],
+ extension
+ } = opts
+ return new Promise((resolve, reject) => {
+ uni.chooseImage({
+ count,
+ sizeType,
+ sourceType,
+ extension,
+ success(res) {
+ resolve(normalizeChooseAndUploadFileRes(res, 'image'));
+ },
+ fail(res) {
+ reject({
+ errMsg: res.errMsg.replace('chooseImage:fail', ERR_MSG_FAIL),
+ });
+ },
+ });
+ });
+}
+
+function chooseVideo(opts) {
+ const {
+ camera,
+ compressed,
+ maxDuration,
+ sourceType = ['album', 'camera'],
+ extension
+ } = opts;
+ return new Promise((resolve, reject) => {
+ uni.chooseVideo({
+ camera,
+ compressed,
+ maxDuration,
+ sourceType,
+ extension,
+ success(res) {
+ const {
+ tempFilePath,
+ duration,
+ size,
+ height,
+ width
+ } = res;
+ resolve(normalizeChooseAndUploadFileRes({
+ errMsg: 'chooseVideo:ok',
+ tempFilePaths: [tempFilePath],
+ tempFiles: [
+ {
+ name: (res.tempFile && res.tempFile.name) || '',
+ path: tempFilePath,
+ size,
+ type: (res.tempFile && res.tempFile.type) || '',
+ width,
+ height,
+ duration,
+ fileType: 'video',
+ cloudPath: '',
+ }, ],
+ }, 'video'));
+ },
+ fail(res) {
+ reject({
+ errMsg: res.errMsg.replace('chooseVideo:fail', ERR_MSG_FAIL),
+ });
+ },
+ });
+ });
+}
+
+function chooseAll(opts) {
+ const {
+ count,
+ extension
+ } = opts;
+ return new Promise((resolve, reject) => {
+ let chooseFile = uni.chooseFile;
+ if (typeof wx !== 'undefined' &&
+ typeof wx.chooseMessageFile === 'function') {
+ chooseFile = wx.chooseMessageFile;
+ }
+ if (typeof chooseFile !== 'function') {
+ return reject({
+ errMsg: ERR_MSG_FAIL + ' 请指定 type 类型,该平台仅支持选择 image 或 video。',
+ });
+ }
+ chooseFile({
+ type: 'all',
+ count,
+ extension,
+ success(res) {
+ resolve(normalizeChooseAndUploadFileRes(res));
+ },
+ fail(res) {
+ reject({
+ errMsg: res.errMsg.replace('chooseFile:fail', ERR_MSG_FAIL),
+ });
+ },
+ });
+ });
+}
+
+function normalizeChooseAndUploadFileRes(res, fileType) {
+ res.tempFiles.forEach((item, index) => {
+ if (!item.name) {
+ item.name = item.path.substring(item.path.lastIndexOf('/') + 1);
+ }
+ if (fileType) {
+ item.fileType = fileType;
+ }
+ item.cloudPath =
+ Date.now() + '_' + index + item.name.substring(item.name.lastIndexOf('.'));
+ });
+ if (!res.tempFilePaths) {
+ res.tempFilePaths = res.tempFiles.map((file) => file.path);
+ }
+ return res;
+}
+
+function uploadCloudFiles(files, max = 5, onUploadProgress) {
+ files = JSON.parse(JSON.stringify(files))
+ const len = files.length
+ let count = 0
+ let self = this
+ return new Promise(resolve => {
+ while (count < max) {
+ next()
+ }
+
+ function next() {
+ let cur = count++
+ if (cur >= len) {
+ !files.find(item => !item.url && !item.errMsg) && resolve(files)
+ return
+ }
+ const fileItem = files[cur]
+ const index = self.files.findIndex(v => v.uuid === fileItem.uuid)
+ fileItem.url = ''
+ delete fileItem.errMsg
+
+ uniCloud
+ .uploadFile({
+ filePath: fileItem.path,
+ cloudPath: fileItem.cloudPath,
+ fileType: fileItem.fileType,
+ onUploadProgress: res => {
+ res.index = index
+ onUploadProgress && onUploadProgress(res)
+ }
+ })
+ .then(res => {
+ fileItem.url = res.fileID
+ fileItem.index = index
+ if (cur < len) {
+ next()
+ }
+ })
+ .catch(res => {
+ fileItem.errMsg = res.errMsg || res.message
+ fileItem.index = index
+ if (cur < len) {
+ next()
+ }
+ })
+ }
+ })
+}
+
+
+
+
+
+function uploadFiles(choosePromise, {
+ onChooseFile,
+ onUploadProgress
+}) {
+ return choosePromise
+ .then((res) => {
+ if (onChooseFile) {
+ const customChooseRes = onChooseFile(res);
+ if (typeof customChooseRes !== 'undefined') {
+ return Promise.resolve(customChooseRes).then((chooseRes) => typeof chooseRes === 'undefined' ?
+ res : chooseRes);
+ }
+ }
+ return res;
+ })
+ .then((res) => {
+ if (res === false) {
+ return {
+ errMsg: ERR_MSG_OK,
+ tempFilePaths: [],
+ tempFiles: [],
+ };
+ }
+ return res
+ })
+}
+
+function chooseAndUploadFile(opts = {
+ type: 'all'
+}) {
+ if (opts.type === 'image') {
+ return uploadFiles(chooseImage(opts), opts);
+ }
+ else if (opts.type === 'video') {
+ return uploadFiles(chooseVideo(opts), opts);
+ }
+ return uploadFiles(chooseAll(opts), opts);
+}
+
+export {
+ chooseAndUploadFile,
+ uploadCloudFiles
+};
diff --git a/src/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue b/src/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue
new file mode 100644
index 0000000..0928a41
--- /dev/null
+++ b/src/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue
@@ -0,0 +1,656 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue b/src/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue
new file mode 100644
index 0000000..625d92e
--- /dev/null
+++ b/src/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue
@@ -0,0 +1,325 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.name}}
+
+
+
+
+
+
+
+
+
+ 点击重试
+
+
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue b/src/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue
new file mode 100644
index 0000000..2a29bc2
--- /dev/null
+++ b/src/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue
@@ -0,0 +1,292 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 点击重试
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-file-picker/components/uni-file-picker/utils.js b/src/uni_modules/uni-file-picker/components/uni-file-picker/utils.js
new file mode 100644
index 0000000..60aaa3e
--- /dev/null
+++ b/src/uni_modules/uni-file-picker/components/uni-file-picker/utils.js
@@ -0,0 +1,109 @@
+/**
+ * 获取文件名和后缀
+ * @param {String} name
+ */
+export const get_file_ext = (name) => {
+ const last_len = name.lastIndexOf('.')
+ const len = name.length
+ return {
+ name: name.substring(0, last_len),
+ ext: name.substring(last_len + 1, len)
+ }
+}
+
+/**
+ * 获取扩展名
+ * @param {Array} fileExtname
+ */
+export const get_extname = (fileExtname) => {
+ if (!Array.isArray(fileExtname)) {
+ let extname = fileExtname.replace(/(\[|\])/g, '')
+ return extname.split(',')
+ } else {
+ return fileExtname
+ }
+ return []
+}
+
+/**
+ * 获取文件和检测是否可选
+ */
+export const get_files_and_is_max = (res, _extname) => {
+ let filePaths = []
+ let files = []
+ if(!_extname || _extname.length === 0){
+ return {
+ filePaths,
+ files
+ }
+ }
+ res.tempFiles.forEach(v => {
+ let fileFullName = get_file_ext(v.name)
+ const extname = fileFullName.ext.toLowerCase()
+ if (_extname.indexOf(extname) !== -1) {
+ files.push(v)
+ filePaths.push(v.path)
+ }
+ })
+ if (files.length !== res.tempFiles.length) {
+ uni.showToast({
+ title: `当前选择了${res.tempFiles.length}个文件 ,${res.tempFiles.length - files.length} 个文件格式不正确`,
+ icon: 'none',
+ duration: 5000
+ })
+ }
+
+ return {
+ filePaths,
+ files
+ }
+}
+
+
+/**
+ * 获取图片信息
+ * @param {Object} filepath
+ */
+export const get_file_info = (filepath) => {
+ return new Promise((resolve, reject) => {
+ uni.getImageInfo({
+ src: filepath,
+ success(res) {
+ resolve(res)
+ },
+ fail(err) {
+ reject(err)
+ }
+ })
+ })
+}
+/**
+ * 获取封装数据
+ */
+export const get_file_data = async (files, type = 'image') => {
+ // 最终需要上传数据库的数据
+ let fileFullName = get_file_ext(files.name)
+ const extname = fileFullName.ext.toLowerCase()
+ let filedata = {
+ name: files.name,
+ uuid: files.uuid,
+ extname: extname || '',
+ cloudPath: files.cloudPath,
+ fileType: files.fileType,
+ url: files.path || files.path,
+ size: files.size, //单位是字节
+ image: {},
+ path: files.path,
+ video: {}
+ }
+ if (type === 'image') {
+ const imageinfo = await get_file_info(files.path)
+ delete filedata.video
+ filedata.image.width = imageinfo.width
+ filedata.image.height = imageinfo.height
+ filedata.image.location = imageinfo.path
+ } else {
+ delete filedata.image
+ }
+ return filedata
+}
diff --git a/src/uni_modules/uni-file-picker/package.json b/src/uni_modules/uni-file-picker/package.json
new file mode 100644
index 0000000..08bd66e
--- /dev/null
+++ b/src/uni_modules/uni-file-picker/package.json
@@ -0,0 +1,86 @@
+{
+ "id": "uni-file-picker",
+ "displayName": "uni-file-picker 文件选择上传",
+ "version": "1.0.2",
+ "description": "文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间",
+ "keywords": [
+ "uni-ui",
+ "uniui",
+ "图片上传",
+ "文件上传"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": ""
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+ "dcloudext": {
+ "category": [
+ "前端组件",
+ "通用组件"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ },
+ "uni_modules": {
+ "dependencies": ["uni-scss"],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "n"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
diff --git a/src/uni_modules/uni-file-picker/readme.md b/src/uni_modules/uni-file-picker/readme.md
new file mode 100644
index 0000000..c8399a5
--- /dev/null
+++ b/src/uni_modules/uni-file-picker/readme.md
@@ -0,0 +1,11 @@
+
+## FilePicker 文件选择上传
+
+> **组件名:uni-file-picker**
+> 代码块: `uFilePicker`
+
+
+文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-file-picker)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
\ No newline at end of file
diff --git a/src/uni_modules/uni-forms/changelog.md b/src/uni_modules/uni-forms/changelog.md
new file mode 100644
index 0000000..5a4bb79
--- /dev/null
+++ b/src/uni_modules/uni-forms/changelog.md
@@ -0,0 +1,86 @@
+## 1.4.6(2022-07-13)
+- 修复 model 需要校验的值没有声明对应字段时,导致第一次不触发校验的bug
+## 1.4.5(2022-07-05)
+- 新增 更多表单示例
+- 优化 子表单组件过期提示的问题
+- 优化 子表单组件uni-datetime-picker、uni-data-select、uni-data-picker的显示样式
+## 1.4.4(2022-07-04)
+- 更新 删除组件日志
+## 1.4.3(2022-07-04)
+- 修复 由 1.4.0 引发的 label 插槽不生效的bug
+## 1.4.2(2022-07-04)
+- 修复 子组件找不到 setValue 报错的bug
+## 1.4.1(2022-07-04)
+- 修复 uni-data-picker 在 uni-forms-item 中报错的bug
+- 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug
+## 1.4.0(2022-06-30)
+- 【重要】组件逻辑重构,部分用法用旧版本不兼容,请注意兼容问题
+- 【重要】组件使用 Provide/Inject 方式注入依赖,提供了自定义表单组件调用 uni-forms 校验表单的能力
+- 新增 model 属性,等同于原 value/modelValue 属性,旧属性即将废弃
+- 新增 validateTrigger 属性的 blur 值,仅 uni-easyinput 生效
+- 新增 onFieldChange 方法,可以对子表单进行校验,可替代binddata方法
+- 新增 子表单的 setRules 方法,配合自定义校验函数使用
+- 新增 uni-forms-item 的 setRules 方法,配置动态表单使用可动态更新校验规则
+- 优化 动态表单校验方式,废弃拼接name的方式
+## 1.3.3(2022-06-22)
+- 修复 表单校验顺序无序问题
+## 1.3.2(2021-12-09)
+-
+## 1.3.1(2021-11-19)
+- 修复 label 插槽不生效的bug
+## 1.3.0(2021-11-19)
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-forms](https://uniapp.dcloud.io/component/uniui/uni-forms)
+## 1.2.7(2021-08-13)
+- 修复 没有添加校验规则的字段依然报错的Bug
+## 1.2.6(2021-08-11)
+- 修复 重置表单错误信息无法清除的问题
+## 1.2.5(2021-08-11)
+- 优化 组件文档
+## 1.2.4(2021-08-11)
+- 修复 表单验证只生效一次的问题
+## 1.2.3(2021-07-30)
+- 优化 vue3下事件警告的问题
+## 1.2.2(2021-07-26)
+- 修复 vue2 下条件编译导致destroyed生命周期失效的Bug
+- 修复 1.2.1 引起的示例在小程序平台报错的Bug
+## 1.2.1(2021-07-22)
+- 修复 动态校验表单,默认值为空的情况下校验失效的Bug
+- 修复 不指定name属性时,运行报错的Bug
+- 优化 label默认宽度从65调整至70,使required为true且四字时不换行
+- 优化 组件示例,新增动态校验示例代码
+- 优化 组件文档,使用方式更清晰
+## 1.2.0(2021-07-13)
+- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
+## 1.1.2(2021-06-25)
+- 修复 pattern 属性在微信小程序平台无效的问题
+## 1.1.1(2021-06-22)
+- 修复 validate-trigger属性为submit且err-show-type属性为toast时不能弹出的Bug
+## 1.1.0(2021-06-22)
+- 修复 只写setRules方法而导致校验不生效的Bug
+- 修复 由上个办法引发的错误提示文字错位的Bug
+## 1.0.48(2021-06-21)
+- 修复 不设置 label 属性 ,无法设置label插槽的问题
+## 1.0.47(2021-06-21)
+- 修复 不设置label属性,label-width属性不生效的bug
+- 修复 setRules 方法与rules属性冲突的问题
+## 1.0.46(2021-06-04)
+- 修复 动态删减数据导致报错的问题
+## 1.0.45(2021-06-04)
+- 新增 modelValue 属性 ,value 即将废弃
+## 1.0.44(2021-06-02)
+- 新增 uni-forms-item 可以设置单独的 rules
+- 新增 validate 事件增加 keepitem 参数,可以选择那些字段不过滤
+- 优化 submit 事件重命名为 validate
+## 1.0.43(2021-05-12)
+- 新增 组件示例地址
+## 1.0.42(2021-04-30)
+- 修复 自定义检验器失效的问题
+## 1.0.41(2021-03-05)
+- 更新 校验器
+- 修复 表单规则设置类型为 number 的情况下,值为0校验失败的Bug
+## 1.0.40(2021-03-04)
+- 修复 动态显示uni-forms-item的情况下,submit 方法获取值错误的Bug
+## 1.0.39(2021-02-05)
+- 调整为uni_modules目录规范
+- 修复 校验器传入 int 等类型 ,返回String类型的Bug
diff --git a/src/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue b/src/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue
new file mode 100644
index 0000000..250ed87
--- /dev/null
+++ b/src/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue
@@ -0,0 +1,627 @@
+
+
+
+
+ *
+ {{label}}
+
+
+
+
+
+
+ {{msg}}
+
+
+
+
+
+
+
+
+
+ {{msg}}
+
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-forms/components/uni-forms/uni-forms.vue b/src/uni_modules/uni-forms/components/uni-forms/uni-forms.vue
new file mode 100644
index 0000000..ed2f6d9
--- /dev/null
+++ b/src/uni_modules/uni-forms/components/uni-forms/uni-forms.vue
@@ -0,0 +1,397 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/uni-forms/components/uni-forms/utils.js b/src/uni_modules/uni-forms/components/uni-forms/utils.js
new file mode 100644
index 0000000..6da2421
--- /dev/null
+++ b/src/uni_modules/uni-forms/components/uni-forms/utils.js
@@ -0,0 +1,293 @@
+/**
+ * 简单处理对象拷贝
+ * @param {Obejct} 被拷贝对象
+ * @@return {Object} 拷贝对象
+ */
+export const deepCopy = (val) => {
+ return JSON.parse(JSON.stringify(val))
+}
+/**
+ * 过滤数字类型
+ * @param {String} format 数字类型
+ * @@return {Boolean} 返回是否为数字类型
+ */
+export const typeFilter = (format) => {
+ return format === 'int' || format === 'double' || format === 'number' || format === 'timestamp';
+}
+
+/**
+ * 把 value 转换成指定的类型,用于处理初始值,原因是初始值需要入库不能为 undefined
+ * @param {String} key 字段名
+ * @param {any} value 字段值
+ * @param {Object} rules 表单校验规则
+ */
+export const getValue = (key, value, rules) => {
+ const isRuleNumType = rules.find(val => val.format && typeFilter(val.format));
+ const isRuleBoolType = rules.find(val => (val.format && val.format === 'boolean') || val.format === 'bool');
+ // 输入类型为 number
+ if (!!isRuleNumType) {
+ if (!value && value !== 0) {
+ value = null
+ } else {
+ value = isNumber(Number(value)) ? Number(value) : value
+ }
+ }
+
+ // 输入类型为 boolean
+ if (!!isRuleBoolType) {
+ value = isBoolean(value) ? value : false
+ }
+
+ return value;
+}
+
+/**
+ * 获取表单数据
+ * @param {String|Array} name 真实名称,需要使用 realName 获取
+ * @param {Object} data 原始数据
+ * @param {any} value 需要设置的值
+ */
+export const setDataValue = (field, formdata, value) => {
+ formdata[field] = value
+ return value || ''
+}
+
+/**
+ * 获取表单数据
+ * @param {String|Array} field 真实名称,需要使用 realName 获取
+ * @param {Object} data 原始数据
+ */
+export const getDataValue = (field, data) => {
+ return objGet(data, field)
+}
+
+/**
+ * 获取表单类型
+ * @param {String|Array} field 真实名称,需要使用 realName 获取
+ */
+export const getDataValueType = (field, data) => {
+ const value = getDataValue(field, data)
+ return {
+ type: type(value),
+ value
+ }
+}
+
+/**
+ * 获取表单可用的真实name
+ * @param {String|Array} name 表单name
+ * @@return {String} 表单可用的真实name
+ */
+export const realName = (name, data = {}) => {
+ const base_name = _basePath(name)
+ if (typeof base_name === 'object' && Array.isArray(base_name) && base_name.length > 1) {
+ const realname = base_name.reduce((a, b) => a += `#${b}`, '_formdata_')
+ return realname
+ }
+ return base_name[0] || name
+}
+
+/**
+ * 判断是否表单可用的真实name
+ * @param {String|Array} name 表单name
+ * @@return {String} 表单可用的真实name
+ */
+export const isRealName = (name) => {
+ const reg = /^_formdata_#*/
+ return reg.test(name)
+}
+
+/**
+ * 获取表单数据的原始格式
+ * @@return {Object|Array} object 需要解析的数据
+ */
+export const rawData = (object = {}, name) => {
+ let newData = JSON.parse(JSON.stringify(object))
+ let formData = {}
+ for(let i in newData){
+ let path = name2arr(i)
+ objSet(formData,path,newData[i])
+ }
+ return formData
+}
+
+/**
+ * 真实name还原为 array
+ * @param {*} name
+ */
+export const name2arr = (name) => {
+ let field = name.replace('_formdata_#', '')
+ field = field.split('#').map(v => (isNumber(v) ? Number(v) : v))
+ return field
+}
+
+/**
+ * 对象中设置值
+ * @param {Object|Array} object 源数据
+ * @param {String| Array} path 'a.b.c' 或 ['a',0,'b','c']
+ * @param {String} value 需要设置的值
+ */
+export const objSet = (object, path, value) => {
+ if (typeof object !== 'object') return object;
+ _basePath(path).reduce((o, k, i, _) => {
+ if (i === _.length - 1) {
+ // 若遍历结束直接赋值
+ o[k] = value
+ return null
+ } else if (k in o) {
+ // 若存在对应路径,则返回找到的对象,进行下一次遍历
+ return o[k]
+ } else {
+ // 若不存在对应路径,则创建对应对象,若下一路径是数字,新对象赋值为空数组,否则赋值为空对象
+ o[k] = /^[0-9]{1,}$/.test(_[i + 1]) ? [] : {}
+ return o[k]
+ }
+ }, object)
+ // 返回object
+ return object;
+}
+
+// 处理 path, path有三种形式:'a[0].b.c'、'a.0.b.c' 和 ['a','0','b','c'],需要统一处理成数组,便于后续使用
+function _basePath(path) {
+ // 若是数组,则直接返回
+ if (Array.isArray(path)) return path
+ // 若有 '[',']',则替换成将 '[' 替换成 '.',去掉 ']'
+ return path.replace(/\[/g, '.').replace(/\]/g, '').split('.')
+}
+
+/**
+ * 从对象中获取值
+ * @param {Object|Array} object 源数据
+ * @param {String| Array} path 'a.b.c' 或 ['a',0,'b','c']
+ * @param {String} defaultVal 如果无法从调用链中获取值的默认值
+ */
+export const objGet = (object, path, defaultVal = 'undefined') => {
+ // 先将path处理成统一格式
+ let newPath = _basePath(path)
+ // 递归处理,返回最后结果
+ let val = newPath.reduce((o, k) => {
+ return (o || {})[k]
+ }, object);
+ return !val || val !== undefined ? val : defaultVal
+}
+
+
+/**
+ * 是否为 number 类型
+ * @param {any} num 需要判断的值
+ * @return {Boolean} 是否为 number
+ */
+export const isNumber = (num) => {
+ return !isNaN(Number(num))
+}
+
+/**
+ * 是否为 boolean 类型
+ * @param {any} bool 需要判断的值
+ * @return {Boolean} 是否为 boolean
+ */
+export const isBoolean = (bool) => {
+ return (typeof bool === 'boolean')
+}
+/**
+ * 是否有必填字段
+ * @param {Object} rules 规则
+ * @return {Boolean} 是否有必填字段
+ */
+export const isRequiredField = (rules) => {
+ let isNoField = false;
+ for (let i = 0; i < rules.length; i++) {
+ const ruleData = rules[i];
+ if (ruleData.required) {
+ isNoField = true;
+ break;
+ }
+ }
+ return isNoField;
+}
+
+
+/**
+ * 获取数据类型
+ * @param {Any} obj 需要获取数据类型的值
+ */
+export const type = (obj) => {
+ var class2type = {};
+
+ // 生成class2type映射
+ "Boolean Number String Function Array Date RegExp Object Error".split(" ").map(function(item, index) {
+ class2type["[object " + item + "]"] = item.toLowerCase();
+ })
+ if (obj == null) {
+ return obj + "";
+ }
+ return typeof obj === "object" || typeof obj === "function" ?
+ class2type[Object.prototype.toString.call(obj)] || "object" :
+ typeof obj;
+}
+
+/**
+ * 判断两个值是否相等
+ * @param {any} a 值
+ * @param {any} b 值
+ * @return {Boolean} 是否相等
+ */
+export const isEqual = (a, b) => {
+ //如果a和b本来就全等
+ if (a === b) {
+ //判断是否为0和-0
+ return a !== 0 || 1 / a === 1 / b;
+ }
+ //判断是否为null和undefined
+ if (a == null || b == null) {
+ return a === b;
+ }
+ //接下来判断a和b的数据类型
+ var classNameA = toString.call(a),
+ classNameB = toString.call(b);
+ //如果数据类型不相等,则返回false
+ if (classNameA !== classNameB) {
+ return false;
+ }
+ //如果数据类型相等,再根据不同数据类型分别判断
+ switch (classNameA) {
+ case '[object RegExp]':
+ case '[object String]':
+ //进行字符串转换比较
+ return '' + a === '' + b;
+ case '[object Number]':
+ //进行数字转换比较,判断是否为NaN
+ if (+a !== +a) {
+ return +b !== +b;
+ }
+ //判断是否为0或-0
+ return +a === 0 ? 1 / +a === 1 / b : +a === +b;
+ case '[object Date]':
+ case '[object Boolean]':
+ return +a === +b;
+ }
+ //如果是对象类型
+ if (classNameA == '[object Object]') {
+ //获取a和b的属性长度
+ var propsA = Object.getOwnPropertyNames(a),
+ propsB = Object.getOwnPropertyNames(b);
+ if (propsA.length != propsB.length) {
+ return false;
+ }
+ for (var i = 0; i < propsA.length; i++) {
+ var propName = propsA[i];
+ //如果对应属性对应值不相等,则返回false
+ if (a[propName] !== b[propName]) {
+ return false;
+ }
+ }
+ return true;
+ }
+ //如果是数组类型
+ if (classNameA == '[object Array]') {
+ if (a.toString() == b.toString()) {
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/src/uni_modules/uni-forms/components/uni-forms/validate.js b/src/uni_modules/uni-forms/components/uni-forms/validate.js
new file mode 100644
index 0000000..69a70db
--- /dev/null
+++ b/src/uni_modules/uni-forms/components/uni-forms/validate.js
@@ -0,0 +1,486 @@
+var pattern = {
+ email: /^\S+?@\S+?\.\S+?$/,
+ idcard: /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
+ url: new RegExp(
+ "^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$",
+ 'i')
+};
+
+const FORMAT_MAPPING = {
+ "int": 'integer',
+ "bool": 'boolean',
+ "double": 'number',
+ "long": 'number',
+ "password": 'string'
+ // "fileurls": 'array'
+}
+
+function formatMessage(args, resources = '') {
+ var defaultMessage = ['label']
+ defaultMessage.forEach((item) => {
+ if (args[item] === undefined) {
+ args[item] = ''
+ }
+ })
+
+ let str = resources
+ for (let key in args) {
+ let reg = new RegExp('{' + key + '}')
+ str = str.replace(reg, args[key])
+ }
+ return str
+}
+
+function isEmptyValue(value, type) {
+ if (value === undefined || value === null) {
+ return true;
+ }
+
+ if (typeof value === 'string' && !value) {
+ return true;
+ }
+
+ if (Array.isArray(value) && !value.length) {
+ return true;
+ }
+
+ if (type === 'object' && !Object.keys(value).length) {
+ return true;
+ }
+
+ return false;
+}
+
+const types = {
+ integer(value) {
+ return types.number(value) && parseInt(value, 10) === value;
+ },
+ string(value) {
+ return typeof value === 'string';
+ },
+ number(value) {
+ if (isNaN(value)) {
+ return false;
+ }
+ return typeof value === 'number';
+ },
+ "boolean": function(value) {
+ return typeof value === 'boolean';
+ },
+ "float": function(value) {
+ return types.number(value) && !types.integer(value);
+ },
+ array(value) {
+ return Array.isArray(value);
+ },
+ object(value) {
+ return typeof value === 'object' && !types.array(value);
+ },
+ date(value) {
+ return value instanceof Date;
+ },
+ timestamp(value) {
+ if (!this.integer(value) || Math.abs(value).toString().length > 16) {
+ return false
+ }
+ return true;
+ },
+ file(value) {
+ return typeof value.url === 'string';
+ },
+ email(value) {
+ return typeof value === 'string' && !!value.match(pattern.email) && value.length < 255;
+ },
+ url(value) {
+ return typeof value === 'string' && !!value.match(pattern.url);
+ },
+ pattern(reg, value) {
+ try {
+ return new RegExp(reg).test(value);
+ } catch (e) {
+ return false;
+ }
+ },
+ method(value) {
+ return typeof value === 'function';
+ },
+ idcard(value) {
+ return typeof value === 'string' && !!value.match(pattern.idcard);
+ },
+ 'url-https'(value) {
+ return this.url(value) && value.startsWith('https://');
+ },
+ 'url-scheme'(value) {
+ return value.startsWith('://');
+ },
+ 'url-web'(value) {
+ return false;
+ }
+}
+
+class RuleValidator {
+
+ constructor(message) {
+ this._message = message
+ }
+
+ async validateRule(fieldKey, fieldValue, value, data, allData) {
+ var result = null
+
+ let rules = fieldValue.rules
+
+ let hasRequired = rules.findIndex((item) => {
+ return item.required
+ })
+ if (hasRequired < 0) {
+ if (value === null || value === undefined) {
+ return result
+ }
+ if (typeof value === 'string' && !value.length) {
+ return result
+ }
+ }
+
+ var message = this._message
+
+ if (rules === undefined) {
+ return message['default']
+ }
+
+ for (var i = 0; i < rules.length; i++) {
+ let rule = rules[i]
+ let vt = this._getValidateType(rule)
+
+ Object.assign(rule, {
+ label: fieldValue.label || `["${fieldKey}"]`
+ })
+
+ if (RuleValidatorHelper[vt]) {
+ result = RuleValidatorHelper[vt](rule, value, message)
+ if (result != null) {
+ break
+ }
+ }
+
+ if (rule.validateExpr) {
+ let now = Date.now()
+ let resultExpr = rule.validateExpr(value, allData, now)
+ if (resultExpr === false) {
+ result = this._getMessage(rule, rule.errorMessage || this._message['default'])
+ break
+ }
+ }
+
+ if (rule.validateFunction) {
+ result = await this.validateFunction(rule, value, data, allData, vt)
+ if (result !== null) {
+ break
+ }
+ }
+ }
+
+ if (result !== null) {
+ result = message.TAG + result
+ }
+
+ return result
+ }
+
+ async validateFunction(rule, value, data, allData, vt) {
+ let result = null
+ try {
+ let callbackMessage = null
+ const res = await rule.validateFunction(rule, value, allData || data, (message) => {
+ callbackMessage = message
+ })
+ if (callbackMessage || (typeof res === 'string' && res) || res === false) {
+ result = this._getMessage(rule, callbackMessage || res, vt)
+ }
+ } catch (e) {
+ result = this._getMessage(rule, e.message, vt)
+ }
+ return result
+ }
+
+ _getMessage(rule, message, vt) {
+ return formatMessage(rule, message || rule.errorMessage || this._message[vt] || message['default'])
+ }
+
+ _getValidateType(rule) {
+ var result = ''
+ if (rule.required) {
+ result = 'required'
+ } else if (rule.format) {
+ result = 'format'
+ } else if (rule.arrayType) {
+ result = 'arrayTypeFormat'
+ } else if (rule.range) {
+ result = 'range'
+ } else if (rule.maximum !== undefined || rule.minimum !== undefined) {
+ result = 'rangeNumber'
+ } else if (rule.maxLength !== undefined || rule.minLength !== undefined) {
+ result = 'rangeLength'
+ } else if (rule.pattern) {
+ result = 'pattern'
+ } else if (rule.validateFunction) {
+ result = 'validateFunction'
+ }
+ return result
+ }
+}
+
+const RuleValidatorHelper = {
+ required(rule, value, message) {
+ if (rule.required && isEmptyValue(value, rule.format || typeof value)) {
+ return formatMessage(rule, rule.errorMessage || message.required);
+ }
+
+ return null
+ },
+
+ range(rule, value, message) {
+ const {
+ range,
+ errorMessage
+ } = rule;
+
+ let list = new Array(range.length);
+ for (let i = 0; i < range.length; i++) {
+ const item = range[i];
+ if (types.object(item) && item.value !== undefined) {
+ list[i] = item.value;
+ } else {
+ list[i] = item;
+ }
+ }
+
+ let result = false
+ if (Array.isArray(value)) {
+ result = (new Set(value.concat(list)).size === list.length);
+ } else {
+ if (list.indexOf(value) > -1) {
+ result = true;
+ }
+ }
+
+ if (!result) {
+ return formatMessage(rule, errorMessage || message['enum']);
+ }
+
+ return null
+ },
+
+ rangeNumber(rule, value, message) {
+ if (!types.number(value)) {
+ return formatMessage(rule, rule.errorMessage || message.pattern.mismatch);
+ }
+
+ let {
+ minimum,
+ maximum,
+ exclusiveMinimum,
+ exclusiveMaximum
+ } = rule;
+ let min = exclusiveMinimum ? value <= minimum : value < minimum;
+ let max = exclusiveMaximum ? value >= maximum : value > maximum;
+
+ if (minimum !== undefined && min) {
+ return formatMessage(rule, rule.errorMessage || message['number'][exclusiveMinimum ?
+ 'exclusiveMinimum' : 'minimum'
+ ])
+ } else if (maximum !== undefined && max) {
+ return formatMessage(rule, rule.errorMessage || message['number'][exclusiveMaximum ?
+ 'exclusiveMaximum' : 'maximum'
+ ])
+ } else if (minimum !== undefined && maximum !== undefined && (min || max)) {
+ return formatMessage(rule, rule.errorMessage || message['number'].range)
+ }
+
+ return null
+ },
+
+ rangeLength(rule, value, message) {
+ if (!types.string(value) && !types.array(value)) {
+ return formatMessage(rule, rule.errorMessage || message.pattern.mismatch);
+ }
+
+ let min = rule.minLength;
+ let max = rule.maxLength;
+ let val = value.length;
+
+ if (min !== undefined && val < min) {
+ return formatMessage(rule, rule.errorMessage || message['length'].minLength)
+ } else if (max !== undefined && val > max) {
+ return formatMessage(rule, rule.errorMessage || message['length'].maxLength)
+ } else if (min !== undefined && max !== undefined && (val < min || val > max)) {
+ return formatMessage(rule, rule.errorMessage || message['length'].range)
+ }
+
+ return null
+ },
+
+ pattern(rule, value, message) {
+ if (!types['pattern'](rule.pattern, value)) {
+ return formatMessage(rule, rule.errorMessage || message.pattern.mismatch);
+ }
+
+ return null
+ },
+
+ format(rule, value, message) {
+ var customTypes = Object.keys(types);
+ var format = FORMAT_MAPPING[rule.format] ? FORMAT_MAPPING[rule.format] : (rule.format || rule.arrayType);
+
+ if (customTypes.indexOf(format) > -1) {
+ if (!types[format](value)) {
+ return formatMessage(rule, rule.errorMessage || message.typeError);
+ }
+ }
+
+ return null
+ },
+
+ arrayTypeFormat(rule, value, message) {
+ if (!Array.isArray(value)) {
+ return formatMessage(rule, rule.errorMessage || message.typeError);
+ }
+
+ for (let i = 0; i < value.length; i++) {
+ const element = value[i];
+ let formatResult = this.format(rule, element, message)
+ if (formatResult !== null) {
+ return formatResult
+ }
+ }
+
+ return null
+ }
+}
+
+class SchemaValidator extends RuleValidator {
+
+ constructor(schema, options) {
+ super(SchemaValidator.message);
+
+ this._schema = schema
+ this._options = options || null
+ }
+
+ updateSchema(schema) {
+ this._schema = schema
+ }
+
+ async validate(data, allData) {
+ let result = this._checkFieldInSchema(data)
+ if (!result) {
+ result = await this.invokeValidate(data, false, allData)
+ }
+ return result.length ? result[0] : null
+ }
+
+ async validateAll(data, allData) {
+ let result = this._checkFieldInSchema(data)
+ if (!result) {
+ result = await this.invokeValidate(data, true, allData)
+ }
+ return result
+ }
+
+ async validateUpdate(data, allData) {
+ let result = this._checkFieldInSchema(data)
+ if (!result) {
+ result = await this.invokeValidateUpdate(data, false, allData)
+ }
+ return result.length ? result[0] : null
+ }
+
+ async invokeValidate(data, all, allData) {
+ let result = []
+ let schema = this._schema
+ for (let key in schema) {
+ let value = schema[key]
+ let errorMessage = await this.validateRule(key, value, data[key], data, allData)
+ if (errorMessage != null) {
+ result.push({
+ key,
+ errorMessage
+ })
+ if (!all) break
+ }
+ }
+ return result
+ }
+
+ async invokeValidateUpdate(data, all, allData) {
+ let result = []
+ for (let key in data) {
+ let errorMessage = await this.validateRule(key, this._schema[key], data[key], data, allData)
+ if (errorMessage != null) {
+ result.push({
+ key,
+ errorMessage
+ })
+ if (!all) break
+ }
+ }
+ return result
+ }
+
+ _checkFieldInSchema(data) {
+ var keys = Object.keys(data)
+ var keys2 = Object.keys(this._schema)
+ if (new Set(keys.concat(keys2)).size === keys2.length) {
+ return ''
+ }
+
+ var noExistFields = keys.filter((key) => {
+ return keys2.indexOf(key) < 0;
+ })
+ var errorMessage = formatMessage({
+ field: JSON.stringify(noExistFields)
+ }, SchemaValidator.message.TAG + SchemaValidator.message['defaultInvalid'])
+ return [{
+ key: 'invalid',
+ errorMessage
+ }]
+ }
+}
+
+function message() {
+ return {
+ TAG: "",
+ default: '验证错误',
+ defaultInvalid: '提交的字段{field}在数据库中并不存在',
+ validateFunction: '验证无效',
+ required: '{label}必填',
+ 'enum': '{label}超出范围',
+ timestamp: '{label}格式无效',
+ whitespace: '{label}不能为空',
+ typeError: '{label}类型无效',
+ date: {
+ format: '{label}日期{value}格式无效',
+ parse: '{label}日期无法解析,{value}无效',
+ invalid: '{label}日期{value}无效'
+ },
+ length: {
+ minLength: '{label}长度不能少于{minLength}',
+ maxLength: '{label}长度不能超过{maxLength}',
+ range: '{label}必须介于{minLength}和{maxLength}之间'
+ },
+ number: {
+ minimum: '{label}不能小于{minimum}',
+ maximum: '{label}不能大于{maximum}',
+ exclusiveMinimum: '{label}不能小于等于{minimum}',
+ exclusiveMaximum: '{label}不能大于等于{maximum}',
+ range: '{label}必须介于{minimum}and{maximum}之间'
+ },
+ pattern: {
+ mismatch: '{label}格式不匹配'
+ }
+ };
+}
+
+
+SchemaValidator.message = new message();
+
+export default SchemaValidator
diff --git a/src/uni_modules/uni-forms/package.json b/src/uni_modules/uni-forms/package.json
new file mode 100644
index 0000000..e69d39b
--- /dev/null
+++ b/src/uni_modules/uni-forms/package.json
@@ -0,0 +1,91 @@
+{
+ "id": "uni-forms",
+ "displayName": "uni-forms 表单",
+ "version": "1.4.6",
+ "description": "由输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据",
+ "keywords": [
+ "uni-ui",
+ "表单",
+ "校验",
+ "表单校验",
+ "表单验证"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": ""
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+ "dcloudext": {
+ "category": [
+ "前端组件",
+ "通用组件"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ },
+ "uni_modules": {
+ "dependencies": [
+ "uni-scss",
+ "uni-icons"
+ ],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "y"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y",
+ "京东": "u"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ },
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ }
+}
diff --git a/src/uni_modules/uni-forms/readme.md b/src/uni_modules/uni-forms/readme.md
new file mode 100644
index 0000000..63d5a04
--- /dev/null
+++ b/src/uni_modules/uni-forms/readme.md
@@ -0,0 +1,23 @@
+
+
+## Forms 表单
+
+> **组件名:uni-forms**
+> 代码块: `uForms`、`uni-forms-item`
+> 关联组件:`uni-forms-item`、`uni-easyinput`、`uni-data-checkbox`、`uni-group`。
+
+
+uni-app的内置组件已经有了 `